导入的书签只允许一个分类

This commit is contained in:
luchenqun 2019-05-17 16:12:50 +08:00
parent 6aef48306d
commit 784658fe56
1 changed files with 61 additions and 52 deletions

View File

@ -1,52 +1,61 @@
var cheerio = require("cheerio"); var cheerio = require("cheerio");
var fs = require("fs"); var fs = require("fs");
var parsehtml = function(file, callback) { var parsehtml = function (file, callback) {
// var html = fs.readFileSync(file).toString(); // var html = fs.readFileSync(file).toString();
fs.readFile(file, (err, data) => { fs.readFile(file, (err, data) => {
if (err) throw err; if (err) throw err;
var html = data.toString(); var html = data.toString();
var $, anchors, itemdoubleclick, results, allTags, bookmarks; var $, anchors, itemdoubleclick, results, allTags, bookmarks;
$ = cheerio.load(html); $ = cheerio.load(html);
itemdoubleclick = ""; itemdoubleclick = "";
allTags = []; allTags = [];
bookmarks = []; bookmarks = [];
results = {}; results = {};
anchors = $("dl").find("a"); anchors = $("dl").find("a");
anchors.each(function(i, e) { anchors.each(function (i, e) {
var add_date, name, bookmark, tags, url; var add_date, name, bookmark, tags, url;
url = $(e).attr("href"); url = $(e).attr("href");
name = $(e).text() || "无标题"; name = $(e).text() || "无标题";
add_date = $(e).attr("add_date"); add_date = $(e).attr("add_date");
tags = new Array();
$(e).parents("dl").each(function(ii, ee) { // 只允许用一个标签
var folder, tag; // 只允许用一个标签
folder = $(ee).prev(); tags = new Array();
tag = folder.text().replace(/(^\s*)|(\s*$)/g, '').replace(/\s+/g, ' '); var tag = "未分类";
if (tag != "Bookmarks" && tag != "书签栏" && tag != "") { $(e).parents("dl").each(function (ii, ee) {
if (allTags.indexOf(tag) == -1) { var folder = $(ee).prev();
allTags.push(tag); var temp = folder.text().replace(/(^\s*)|(\s*$)/g, '').replace(/\s+/g, ' ');
} if (temp != "Bookmarks" && temp != "书签栏" && temp != "" && temp != undefined) {
return tags.push(tag); tag = temp;
} }
}); });
bookmark = { if (allTags.indexOf(tag) == -1) {
url: url, allTags.push(tag);
name: name, }
add_date: add_date, tags.push(tag);
tags: tags
}; if (name.length > 255) {
return bookmarks.push(bookmark); name = name.substring(255);
}); }
if (typeof callback === "function") { name = name.replace(/\uD83C[\uDF00-\uDFFF]|\uD83D[\uDC00-\uDE4F]/gi, "");
results.tags = allTags; bookmark = {
results.bookmarks = bookmarks; url: url,
return callback(results); name: name,
} else { add_date: add_date,
return console.warn("Callback isn't a function."); tags: tags
} };
}) return bookmarks.push(bookmark);
}; });
if (typeof callback === "function") {
module.exports = parsehtml; results.tags = allTags;
results.bookmarks = bookmarks;
return callback(results);
} else {
return console.warn("Callback isn't a function.");
}
})
};
module.exports = parsehtml;