hexo-blogger-xml
Version:
Import xml blogger to hexo
99 lines (98 loc) • 4.14 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var fs_1 = require("fs");
var path_1 = __importStar(require("path"));
var Blogger_1 = __importDefault(require("./parser/Blogger"));
var util_1 = require("./parser/util");
/**
* Hexo preprocessor
* @param hexo
*/
var hexoCore = function (hexo) {
var config = hexo.config;
// if config blogger_xml found, continue process otherwise cancel by return
if (!config['blogger_xml']) {
throw new Error('hexo blogger xml config not set, config_yml.blogger_xml');
}
var continueParse = true;
var cacheloc = (0, path_1.join)(config.source_dir.toString(), 'hexo-blogger-xml.json');
if ((0, fs_1.existsSync)(cacheloc)) {
var readDate = JSON.parse((0, fs_1.readFileSync)(cacheloc).toString());
if (readDate.lastWrite && readDate.paths.length) {
continueParse = false;
}
}
if (!continueParse)
return;
var bloggerConfig = config.blogger_xml;
if (!bloggerConfig.hostname) {
bloggerConfig.hostname = [];
}
if (!bloggerConfig.callback) {
bloggerConfig.callback = null;
}
var xmlList = bloggerConfig.input;
hexo.on('ready', function () {
console.log('blogger import xml started', bloggerConfig);
var createLog = {
lastWrite: undefined,
paths: []
};
var root = hexo.base_dir.toString();
for (var xmlKey in xmlList) {
var xmlPath = (0, path_1.join)(root.toString(), xmlList[xmlKey].toString());
if ((0, fs_1.existsSync)(xmlPath)) {
console.log('processing', xmlPath);
var parser = new Blogger_1.default(xmlPath);
parser.on('write-post', function (postPath) {
console.log('post written', postPath);
createLog.paths.push(postPath);
});
if (bloggerConfig.hostname.length > 0) {
parser.setHostname(bloggerConfig.hostname);
}
var parsed = parser.parseEntry().getJsonResult();
console.log(parsed.getParsedXml().length, 'total posts');
if (typeof bloggerConfig.callback == 'string') {
var scriptCall = path_1.default.resolve(path_1.default.join(root, bloggerConfig.callback));
if (!(0, fs_1.existsSync)(scriptCall)) {
scriptCall = path_1.default.resolve(path_1.default.join(process.cwd(), bloggerConfig.callback));
}
if ((0, fs_1.existsSync)(scriptCall)) {
parsed.export(bloggerConfig.output, require(scriptCall));
}
}
}
}
createLog.lastWrite = new Date(Date.now());
(0, util_1.writeFileSync)(cacheloc, JSON.stringify(createLog));
});
};
exports.default = hexoCore;
module.exports = hexoCore;