hexo-bilibili-bangumi
Version:
163 lines (162 loc) • 9.11 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
var pug = require('pug');
var path = require('path');
var _require = require('./util'),
i18n = _require.i18n;
var fs = require('hexo-fs');
var hexoLog = require('hexo-log');
var log = typeof hexoLog["default"] === 'function' ? hexoLog["default"]({
debug: false,
silent: false
}) : hexoLog({
debug: false,
silent: false
});
module.exports = function () {
var _ref = (0, _asyncToGenerator2["default"])(_regenerator["default"].mark(function _callee(locals) {
var _config$type, _config$type$lazyload, _config$type$source, _config$type$showMyCo, _config$type$paginati, _config$type$progress, _config$type$swup, _config$type2;
var type,
config,
full_url_for,
root,
wantWatch,
watching,
watched,
_JSON$parse,
_JSON$parse2,
wantWatchExtra,
watchingExtra,
watchedExtra,
__,
TEMPLATE_MAP,
pageTheme,
contents,
customPath,
_args = arguments;
return _regenerator["default"].wrap(function (_context) {
while (1) switch (_context.prev = _context.next) {
case 0:
type = _args.length > 1 && _args[1] !== undefined ? _args[1] : 'bangumi';
config = this.config;
if (config !== null && config !== void 0 && (_config$type = config[type]) !== null && _config$type !== void 0 && _config$type.enable) {
_context.next = 1;
break;
}
return _context.abrupt("return");
case 1:
full_url_for = this.extend.helper.get('full_url_for').bind(this);
root = config.root;
if (root.endsWith('/')) {
root = root.slice(0, root.length - 1);
}
wantWatch = [];
watching = [];
watched = [];
if (!fs.existsSync(path.join(this.source_dir, "/_data/".concat(type, "s.json")))) {
log.info("Can't find bilibili ".concat(type, " data, please use 'hexo ").concat(type, " -u' command to get data"));
} else {
_JSON$parse = JSON.parse(fs.readFileSync(path.join(this.source_dir, "/_data/".concat(type, "s.json"))));
wantWatch = _JSON$parse.wantWatch;
watching = _JSON$parse.watching;
watched = _JSON$parse.watched;
if (fs.existsSync(path.join(this.source_dir, "/_data/extra_".concat(type, "s.json")))) {
log.info("Found extra ".concat(type, "s data"));
_JSON$parse2 = JSON.parse(fs.readFileSync(path.join(this.source_dir, "/_data/extra_".concat(type, "s.json")))), wantWatchExtra = _JSON$parse2.wantWatchExtra, watchingExtra = _JSON$parse2.watchingExtra, watchedExtra = _JSON$parse2.watchedExtra;
if (wantWatchExtra) {
if (config[type].extraOrder === 1) {
wantWatch = [].concat((0, _toConsumableArray2["default"])(wantWatchExtra), (0, _toConsumableArray2["default"])(wantWatch));
} else {
wantWatch = [].concat((0, _toConsumableArray2["default"])(wantWatch), (0, _toConsumableArray2["default"])(wantWatchExtra));
}
}
if (watchingExtra) {
if (config[type].extraOrder === 1) {
watching = [].concat((0, _toConsumableArray2["default"])(watchingExtra), (0, _toConsumableArray2["default"])(watching));
} else {
watching = [].concat((0, _toConsumableArray2["default"])(watching), (0, _toConsumableArray2["default"])(watchingExtra));
}
}
if (watchedExtra) {
if (config[type].extraOrder === 1) {
watched = [].concat((0, _toConsumableArray2["default"])(watchedExtra), (0, _toConsumableArray2["default"])(watched));
} else {
watched = [].concat((0, _toConsumableArray2["default"])(watched), (0, _toConsumableArray2["default"])(watchedExtra));
}
}
}
log.info("".concat(wantWatch.length + watching.length + watched.length, " ").concat(type, "s have been loaded"));
}
__ = i18n.__(config.language);
TEMPLATE_MAP = {
bili: 'bili-template.pug',
bgmv0: 'bgmv0-template.pug',
bgm: 'bgm-template.pug',
bangumi: 'bgm-template.pug',
anilist: 'anilist-template.pug',
simkl: 'simkl-template.pug'
};
pageTheme = ['light', 'dark', 'auto'].includes(String(config[type].theme).toLowerCase()) ? String(config[type].theme).toLowerCase() : 'auto';
_context.next = 2;
return pug.renderFile(path.join(__dirname, 'templates/bangumi.pug'), {
quote: config[type].quote,
show: config[type].show || 1,
metaColor: config[type].metaColor,
color: config[type].color,
lazyload: (_config$type$lazyload = config[type].lazyload) !== null && _config$type$lazyload !== void 0 ? _config$type$lazyload : true,
srcValue: config[type].srcValue || '__image__',
source: (_config$type$source = config[type].source) !== null && _config$type$source !== void 0 ? _config$type$source : 'bili',
showMyComment: (_config$type$showMyCo = config[type].showMyComment) !== null && _config$type$showMyCo !== void 0 ? _config$type$showMyCo : false,
pagination: (_config$type$paginati = config[type].pagination) !== null && _config$type$paginati !== void 0 ? _config$type$paginati : false,
progressBar: (_config$type$progress = config[type].progressBar) !== null && _config$type$progress !== void 0 ? _config$type$progress : true,
swupCompatible: (_config$type$swup = config[type].swup) !== null && _config$type$swup !== void 0 ? _config$type$swup : false,
theme: fs.existsSync(path.join(__dirname, "templates/theme/".concat(config.theme, ".min.css"))) ? config.theme : null,
pageTheme: pageTheme,
pugTemplate: config[type].pagination ? fs.readFileSync(path.join(__dirname, "templates/".concat(TEMPLATE_MAP[config[type].source]))).toString().replace('.bangumi-item', '.bangumi-item.bangumi-hide').replace(/__\('(.+?)'\)/g, function (match, key) {
return "('".concat(__(key), "')");
}) : '',
wantWatch: ['score', '-score'].includes(config[type].order) ? wantWatch.sort(function (a, b) {
return config[type].order === 'score' ? a.score - b.score : b.score - a.score;
}) : wantWatch,
watched: ['score', '-score'].includes(config[type].order) ? watched.sort(function (a, b) {
return config[type].order === 'score' ? a.score - b.score : b.score - a.score;
}) : watched,
watching: ['score', '-score'].includes(config[type].order) ? watching.sort(function (a, b) {
return config[type].order === 'score' ? a.score - b.score : b.score - a.score;
}) : watching,
type: type,
__: __,
root: root,
basedir: process.cwd()
}, {
async: false
});
case 2:
contents = _context.sent;
customPath = config[type].path || "".concat(type, "s/index.html");
return _context.abrupt("return", {
path: customPath,
data: _objectSpread({
title: config[type].title,
content: contents,
type: 'page',
permalink: full_url_for(customPath)
}, config === null || config === void 0 || (_config$type2 = config[type]) === null || _config$type2 === void 0 ? void 0 : _config$type2.extra_options),
layout: ['page', 'post']
});
case 3:
case "end":
return _context.stop();
}
}, _callee, this);
}));
return function (_x) {
return _ref.apply(this, arguments);
};
}();