@fcc-cdc/it-events
Version:
IT Events Crawler of China
115 lines (114 loc) • 6.03 kB
JavaScript
;
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.push(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.push(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __rest = (this && this.__rest) || function (s, e) {
var t = {};
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
t[p] = s[p];
if (s != null && typeof Object.getOwnPropertySymbols === "function")
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
t[p[i]] = s[p[i]];
}
return t;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.AgendaCrawler = void 0;
const file_type_1 = require("file-type");
const node_fetch_1 = __importDefault(require("node-fetch"));
const path_1 = require("path");
const yaml_1 = require("yaml");
const Crawler_1 = require("../core/Crawler");
const utility_1 = require("../utility");
exports.AgendaCrawler = (() => {
var _a;
let _instanceExtraInitializers = [];
let _saveCSV_decorators;
let _saveImagesTo_decorators;
return _a = class AgendaCrawler extends Crawler_1.DataCrawler {
constructor() {
super(...arguments);
this.mentors = (__runInitializers(this, _instanceExtraInitializers), []);
this.forums = [];
}
makeYAML(agendas) {
return (0, yaml_1.stringify)({
mentors: this.mentors,
forums: this.forums,
agendas
});
}
makeCSV(agendas) {
const { mentors, forums } = this;
return {
mentors,
forums,
agendas: agendas.map((_a) => {
var { mentor, forum } = _a, agenda = __rest(_a, ["mentor", "forum"]);
return (Object.assign(Object.assign({}, agenda), { mentor: mentor === null || mentor === void 0 ? void 0 : mentor.name, forum: forum === null || forum === void 0 ? void 0 : forum.name }));
})
};
}
async saveCSV(agendas, folder) {
for (const [name, rows] of Object.entries(this.makeCSV(agendas)))
await (0, utility_1.saveFile)((0, utility_1.stringifyCSV)(rows), folder, `${name}.csv`);
}
async saveImagesTo(folder) {
for (const { avatar } of this.mentors)
if (avatar) {
const response = await (0, node_fetch_1.default)(avatar);
const buffer = Buffer.from(await response.arrayBuffer());
const { ext } = await (0, file_type_1.fromBuffer)(buffer);
await (0, utility_1.saveFile)(buffer, folder, 'image', `${(0, path_1.parse)(avatar).name}.${ext}`);
}
}
async saveList(URI) {
const { list, folder, file } = await super.saveList(URI);
await this.saveCSV(list, folder);
await this.saveImagesTo(folder);
return { list, folder, file };
}
},
(() => {
_saveCSV_decorators = [utility_1.logTime];
_saveImagesTo_decorators = [utility_1.logTime];
__esDecorate(_a, null, _saveCSV_decorators, { kind: "method", name: "saveCSV", static: false, private: false, access: { has: obj => "saveCSV" in obj, get: obj => obj.saveCSV } }, null, _instanceExtraInitializers);
__esDecorate(_a, null, _saveImagesTo_decorators, { kind: "method", name: "saveImagesTo", static: false, private: false, access: { has: obj => "saveImagesTo" in obj, get: obj => obj.saveImagesTo } }, null, _instanceExtraInitializers);
})(),
_a;
})();