完成文件上传之后的解析
This commit is contained in:
parent
5456d3eb1d
commit
31bdd2bf44
|
|
@ -0,0 +1,59 @@
|
||||||
|
var jsdom = require("jsdom");
|
||||||
|
var fs = require("fs");
|
||||||
|
|
||||||
|
var parsehtml = function(file, callback) {
|
||||||
|
// var html = fs.readFileSync(file).toString();
|
||||||
|
|
||||||
|
fs.readFile(file, (err, data) => {
|
||||||
|
if (err) throw err;
|
||||||
|
var html = data.toString();
|
||||||
|
jsdom.env({
|
||||||
|
html: html,
|
||||||
|
scripts: ["./public/scripts/externe/jquery-3.1.1.min.js"],
|
||||||
|
done: function(errors, window) {
|
||||||
|
var $, anchors, itemdoubleclick, results, allTags, bookmarks;
|
||||||
|
$ = window.$;
|
||||||
|
itemdoubleclick = "";
|
||||||
|
allTags = [];
|
||||||
|
bookmarks = [];
|
||||||
|
results = {};
|
||||||
|
|
||||||
|
anchors = $("dl").find("a");
|
||||||
|
anchors.each(function(i, e) {
|
||||||
|
var add_date, name, bookmark, tags, url;
|
||||||
|
url = $(e).attr("href");
|
||||||
|
name = $(e).text();
|
||||||
|
add_date = $(e).attr("add_date");
|
||||||
|
tags = new Array();
|
||||||
|
$(e).parents("dl").each(function(ii, ee) {
|
||||||
|
var folder, tag;
|
||||||
|
folder = $(ee).prev();
|
||||||
|
tag = folder.text().replace(/(^\s*)|(\s*$)/g, '').replace(/\s+/g, ' ');
|
||||||
|
if (allTags.indexOf(tag) == -1) {
|
||||||
|
allTags.push(tag);
|
||||||
|
}
|
||||||
|
if (tag != "Bookmarks" && tag != "书签栏") {
|
||||||
|
return tags.push(tag);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
bookmark = {
|
||||||
|
url: url,
|
||||||
|
name: name,
|
||||||
|
add_date: add_date,
|
||||||
|
tags: tags
|
||||||
|
};
|
||||||
|
return bookmarks.push(bookmark);
|
||||||
|
});
|
||||||
|
if (typeof callback === "function") {
|
||||||
|
results.tags = allTags;
|
||||||
|
results.bookmarks = bookmarks;
|
||||||
|
return callback(results);
|
||||||
|
} else {
|
||||||
|
return console.warn("Callback isn't a function.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
module.exports = parsehtml;
|
||||||
|
|
@ -14,6 +14,7 @@
|
||||||
"ejs": "~2.4.1",
|
"ejs": "~2.4.1",
|
||||||
"express": "~4.13.4",
|
"express": "~4.13.4",
|
||||||
"express-session": "^1.14.1",
|
"express-session": "^1.14.1",
|
||||||
|
"jsdom": "^9.10.0",
|
||||||
"morgan": "~1.7.0",
|
"morgan": "~1.7.0",
|
||||||
"multer": "^1.3.0",
|
"multer": "^1.3.0",
|
||||||
"mysql": "^2.11.1",
|
"mysql": "^2.11.1",
|
||||||
|
|
|
||||||
165
routes/api.js
165
routes/api.js
|
|
@ -3,6 +3,7 @@ var mysql = require('mysql');
|
||||||
var crypto = require('crypto');
|
var crypto = require('crypto');
|
||||||
var read = require('node-readability');
|
var read = require('node-readability');
|
||||||
var db = require('../database/db.js');
|
var db = require('../database/db.js');
|
||||||
|
var parseHtml = require('../common/parse_html.js');
|
||||||
var multer = require('multer');
|
var multer = require('multer');
|
||||||
|
|
||||||
var storage = multer.diskStorage({
|
var storage = multer.diskStorage({
|
||||||
|
|
@ -463,7 +464,11 @@ api.post('/addAdvice', function(req, res) {
|
||||||
})
|
})
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
var jsdom = require("jsdom");
|
||||||
|
var fs = require("fs");
|
||||||
|
parseHtml('./uploads/luchenqun-20170210161830.html', function(data) {
|
||||||
|
// console.log(data);
|
||||||
|
})
|
||||||
api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) {
|
api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) {
|
||||||
console.log('hello uploadBookmarkFile');
|
console.log('hello uploadBookmarkFile');
|
||||||
if (!req.session.user) {
|
if (!req.session.user) {
|
||||||
|
|
@ -472,95 +477,77 @@ api.post('/uploadBookmarkFile', upload.single('bookmark'), function(req, res) {
|
||||||
}
|
}
|
||||||
|
|
||||||
var file = req.file;
|
var file = req.file;
|
||||||
// var bookmarks = [{
|
parseHtml(file.path, function(data){
|
||||||
// "url": "https://www.163.com/",
|
console.log(data);
|
||||||
// "name": "Bookmarks",
|
var bookmarks = data.bookmarks;
|
||||||
// "add_date": "1432116178",
|
var tagsName = data.tags;
|
||||||
// "tags": []
|
|
||||||
// }, {
|
|
||||||
// "url": "https://github.com/aponxi/npm-bookmark-parser",
|
|
||||||
// "name": "aponxi/npm-bookmark-parser: Node plugin to parse Chrome bookmarks into usable JSON format, via javascript.",
|
|
||||||
// "add_date": "1486615941",
|
|
||||||
// "tags": ["测试栏目2", "测试栏目1"]
|
|
||||||
// }, {
|
|
||||||
// "url": "http://stackoverflow.com/questions/26673837/parsing-bookmark-html-in-node-js",
|
|
||||||
// "name": "parsing bookmark.html in node.js - Stack Overflow",
|
|
||||||
// "add_date": "1486614926",
|
|
||||||
// "tags": ["测试栏目1"]
|
|
||||||
// }, {
|
|
||||||
// "url": "http://stackoverflow.com/",
|
|
||||||
// "name": "dddddddddddddd",
|
|
||||||
// "add_date": "1486614926",
|
|
||||||
// "tags": ["测试栏目3"]
|
|
||||||
// }];
|
|
||||||
|
|
||||||
// var tagsName = ['测试栏目1', '测试栏目2', '测试栏目3'];
|
var userId = req.session.user.id;
|
||||||
// var userId = req.session.user.id;
|
var addTagNames = [];
|
||||||
// var addTagNames = [];
|
|
||||||
//
|
db.getTags(userId)
|
||||||
// db.getTags(userId)
|
// 先插入分类
|
||||||
// // 先插入分类
|
.then((tags) => {
|
||||||
// .then((tags) => {
|
// 需要插入的书签是该用户在数据库不存在的书签
|
||||||
// // 需要插入的书签是该用户在数据库不存在的书签
|
addTagNames = tagsName.filter((name) => {
|
||||||
// addTagNames = tagsName.filter((name) => {
|
for (var i = 0; i < tags.length; i++) {
|
||||||
// for (var i = 0; i < tags.length; i++) {
|
if (tags[i].name.toLowerCase() === name.toLowerCase()) {
|
||||||
// if (tags[i].name.toLowerCase() === name.toLowerCase()) {
|
return false;
|
||||||
// return false;
|
}
|
||||||
// }
|
}
|
||||||
// }
|
return true;
|
||||||
// return true;
|
});
|
||||||
// });
|
return Promise.resolve(addTagNames);
|
||||||
// return Promise.resolve(addTagNames);
|
})
|
||||||
// })
|
.then((newTagNames) => {
|
||||||
// .then((newTagNames) => {
|
if (newTagNames.length > 0) {
|
||||||
// if (newTagNames.length > 0) {
|
return db.addTags(userId, newTagNames)
|
||||||
// return db.addTags(userId, newTagNames)
|
} else {
|
||||||
// } else {
|
return Promise.resolve();
|
||||||
// return Promise.resolve();
|
}
|
||||||
// }
|
})
|
||||||
// })
|
.then(() => db.getTags(userId))
|
||||||
// .then(() => db.getTags(userId))
|
.then((allTags) => {
|
||||||
// .then((allTags) => {
|
bookmarks.forEach((item, index) => {
|
||||||
// bookmarks.forEach((item, index) => {
|
var count = 0;
|
||||||
// var count = 0;
|
|
||||||
//
|
var bookmark = {};
|
||||||
// var bookmark = {};
|
bookmark.title = item.name;
|
||||||
// bookmark.title = item.name;
|
bookmark.description = "";
|
||||||
// bookmark.description = "";
|
bookmark.url = item.url;
|
||||||
// bookmark.url = item.url;
|
bookmark.public = '1';
|
||||||
// bookmark.public = '1';
|
if (item.tags.length == 0) {
|
||||||
// if (item.tags.length == 0) {
|
item.tags.push("未分类")
|
||||||
// item.tags.push("未分类")
|
}
|
||||||
// }
|
|
||||||
//
|
var tags = [];
|
||||||
// var tags = [];
|
item.tags.forEach((tag) => {
|
||||||
// item.tags.forEach((tag) => {
|
allTags.forEach((at) => {
|
||||||
// allTags.forEach((at) => {
|
if (at.name == tag) {
|
||||||
// if (at.name == tag) {
|
tags.push(at.id);
|
||||||
// tags.push(at.id);
|
}
|
||||||
// }
|
})
|
||||||
// })
|
})
|
||||||
// })
|
// 插入书签
|
||||||
// // 插入书签
|
db.addBookmark(userId, bookmark) // 插入书签
|
||||||
// db.addBookmark(userId, bookmark) // 插入书签
|
.then((bookmark_id) => {
|
||||||
// .then((bookmark_id) => {
|
db.delBookmarkTags(bookmark_id); // 不管3721,先删掉旧的分类
|
||||||
// db.delBookmarkTags(bookmark_id); // 不管3721,先删掉旧的分类
|
return bookmark_id;
|
||||||
// return bookmark_id;
|
}) // 将之前所有的书签分类信息删掉
|
||||||
// }) // 将之前所有的书签分类信息删掉
|
.then((bookmark_id) => db.addTagsBookmarks(tags, bookmark_id)) // 插入分类
|
||||||
// .then((bookmark_id) => db.addTagsBookmarks(tags, bookmark_id)) // 插入分类
|
.then(() => db.updateLastUseTags(userId, tags)) // 更新最新使用的分类
|
||||||
// .then(() => db.updateLastUseTags(userId, tags)) // 更新最新使用的分类
|
.then(() => {
|
||||||
// .then(() => {
|
count++
|
||||||
// count++
|
}) // 运气不错
|
||||||
// }) // 运气不错
|
.catch((err) => console.log('uploadBookmarkFile addBookmark err', err)); // oops!
|
||||||
// .catch((err) => console.log('uploadBookmarkFile addBookmark err', err)); // oops!
|
if ((index + 1) == bookmarks.length) {
|
||||||
// if ((index + 1) == bookmarks.length) {
|
// 通知前台
|
||||||
// // 通知前台
|
}
|
||||||
// }
|
})
|
||||||
// })
|
})
|
||||||
// })
|
.catch((err) => console.log('uploadBookmarkFile err', err));
|
||||||
// .catch((err) => console.log('uploadBookmarkFile err', err));
|
})
|
||||||
console.log("file", file);
|
res.json(file);
|
||||||
res.json({});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
api.post('/addBookmark', function(req, res) {
|
api.post('/addBookmark', function(req, res) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue