@fcc-cdc/it-events
Version:
IT Events Crawler of China
206 lines (205 loc) • 10.3 kB
JavaScript
;
var __asyncValues = (this && this.__asyncValues) || function (o) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var m = o[Symbol.asyncIterator], i;
return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
};
var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
var g = generator.apply(thisArg, _arguments || []), i, q = [];
return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
function fulfill(value) { resume("next", value); }
function reject(value) { resume("throw", value); }
function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.OSChina = exports.BaiGe = exports.JueJin = exports.SegmentFault = exports.HuoDongXing = void 0;
const jsdom_1 = require("jsdom");
const node_fetch_1 = __importDefault(require("node-fetch"));
const utility_1 = require("./utility");
function HuoDongXing(all) {
return __asyncGenerator(this, arguments, function* HuoDongXing_1() {
var _a, e_1, _b, _c;
for (let page = 1, empty = true;; page++) {
const URL = 'https://www.huodongxing.com/eventlist?' +
new URLSearchParams({
orderby: 'n',
status: all ? '' : '1',
tag: 'IT互联网',
city: '全部',
page: page + ''
});
try {
for (var _d = true, _e = (e_1 = void 0, __asyncValues((0, utility_1.eventList)(URL, '.search-tab-content-list .search-tab-content-item', '.item-title', '.item-data', '.item-dress', '.item-logo', '.item-title'))), _f; _f = yield __await(_e.next()), _a = _f.done, !_a;) {
_c = _f.value;
_d = false;
try {
const item = _c;
empty = false;
const [start, end] = item.start.split('-');
yield yield __await(Object.assign(Object.assign({}, item), { start: (0, utility_1.makeDate)(start), end: (0, utility_1.makeDate)(end) }));
}
finally {
_d = true;
}
}
}
catch (e_1_1) { e_1 = { error: e_1_1 }; }
finally {
try {
if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
}
finally { if (e_1) throw e_1.error; }
}
if (empty)
break;
}
});
}
exports.HuoDongXing = HuoDongXing;
function SegmentFault(all) {
return __asyncGenerator(this, arguments, function* SegmentFault_1() {
var _a, e_2, _b, _c;
for (let page = 1, empty = true;; page++) {
const URL = 'https://segmentfault.com/events?page=' + page, now = new Date();
try {
for (var _d = true, _e = (e_2 = void 0, __asyncValues((0, utility_1.eventList)(URL, '.all-event-list .widget-event', '.title', '.widget-event__meta > :first-child', '.widget-event__meta > :last-child', '.widget-event__banner', '.title > a'))), _f; _f = yield __await(_e.next()), _a = _f.done, !_a;) {
_c = _f.value;
_d = false;
try {
const item = _c;
empty = false;
const start = (0, utility_1.makeDate)(item.start.slice(3));
if (!all && now > start)
return yield __await(void 0);
yield yield __await(Object.assign(Object.assign({}, item), { start, end: null, address: item.address.slice(3) }));
}
finally {
_d = true;
}
}
}
catch (e_2_1) { e_2 = { error: e_2_1 }; }
finally {
try {
if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
}
finally { if (e_2) throw e_2.error; }
}
if (empty)
break;
}
});
}
exports.SegmentFault = SegmentFault;
function JueJin(all) {
return __asyncGenerator(this, arguments, function* JueJin_1() {
for (let page = 1;; page++) {
const URI = 'https://event-storage-api-ms.juejin.im/v2/getEventList?' +
new URLSearchParams({
src: 'web',
orderType: 'startTime',
pageNum: page + ''
}), now = new Date();
const { d: list } = yield __await((yield __await((0, node_fetch_1.default)(URI))).json());
if (!(list === null || list === void 0 ? void 0 : list[0]))
break;
console.warn(URI);
for (const { title, eventUrl, tagInfo, content, startTime, endTime, city, screenshot } of list) {
const start = (0, utility_1.makeDate)(startTime), end = (0, utility_1.makeDate)(endTime);
if (!all && now > start)
return yield __await(void 0);
yield yield __await({
title,
start,
end,
address: city,
tags: tagInfo.map(({ title }) => title),
summary: content,
link: new URL(eventUrl),
banner: new URL(screenshot)
});
}
}
});
}
exports.JueJin = JueJin;
function BaiGe(all) {
return __asyncGenerator(this, arguments, function* BaiGe_1() {
const { window: { document: { head } } } = yield __await(jsdom_1.JSDOM.fromURL('https://www.bagevent.com/eventlist.html?f=1&tag=17&r=orderByNew'));
const { paramMap, imgDomain, mainDomain } = new Function(`${[
...head.querySelectorAll('script:not(:empty)')
].find(code => /var param = \{[\s\S]+\}/.test(code.text)).text}
return param;`)();
for (let page = 1;; page++) {
paramMap.pagingPage = page;
const URI = `${mainDomain}/load/loadSearchEventList.do?${new URLSearchParams(paramMap)}`, now = new Date();
const { list } = (yield __await((yield __await((0, node_fetch_1.default)(URI))).json())).resultObject.valueList;
if (!(list === null || list === void 0 ? void 0 : list[0]))
break;
console.warn(URI);
for (const { event_name, start_time, address, logo, event_id } of list) {
const start = (0, utility_1.makeDate)(start_time);
if (!all && now > start)
return yield __await(void 0);
yield yield __await({
title: event_name,
start,
address,
banner: imgDomain + logo,
link: new URL(mainDomain + '/event/' + event_id)
});
}
}
});
}
exports.BaiGe = BaiGe;
function OSChina(all) {
return __asyncGenerator(this, arguments, function* OSChina_1() {
var _a, e_3, _b, _c;
for (let page = 1, empty = true;; page++) {
const body = new URLSearchParams({
tab: 'latest',
time: 'all',
p: page + ''
}), URL = 'https://www.oschina.net/action/ajax/get_more_event_list', now = new Date();
const data = yield __await((yield __await((0, node_fetch_1.default)(URL, { method: 'POST', body }))).text());
try {
for (var _d = true, _e = (e_3 = void 0, __asyncValues((0, utility_1.eventList)(new jsdom_1.JSDOM(data, { url: URL + '?' + body }), '.event-item', '.summary', '.when-where > label:first-of-type', '.when-where > label:last-of-type', '.item-banner img', '.item-banner > a'))), _f; _f = yield __await(_e.next()), _a = _f.done, !_a;) {
_c = _f.value;
_d = false;
try {
const item = _c;
empty = false;
const start = (0, utility_1.makeDate)(item.start);
if (!all && now > start)
return yield __await(void 0);
yield yield __await(Object.assign(Object.assign({}, item), { start, end: null }));
}
finally {
_d = true;
}
}
}
catch (e_3_1) { e_3 = { error: e_3_1 }; }
finally {
try {
if (!_d && !_a && (_b = _e.return)) yield __await(_b.call(_e));
}
finally { if (e_3) throw e_3.error; }
}
if (empty)
break;
}
});
}
exports.OSChina = OSChina;