123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- const html = require("node-html-parser");
- const axios = require("axios");
- const db = require("../../db.js");
- const urlPattern = /diary\.php\?no=(\d+)/i;
- const kissDiaryRoot = "http://www.kisskiss.tv/kiss";
- async function aggregate() {
- let lastDiary = db.get("latestKissDiaryEntry").value();
-
- try {
- let mainPageRes = await axios.get(`${kissDiaryRoot}/diary.php`);
-
- if(mainPageRes.status != 200)
- return [];
- let rootNode = html.parse(mainPageRes.data, {
- pre: true,
- script: false,
- style: false
- });
- let diaryEntries = rootNode.querySelectorAll("div.blog_frame_middle ul.disc li a");
- if(!diaryEntries) {
- console.log("[KISS DIARY] Failed to find listing!");
- }
- let result = [];
- let latestEntry = lastDiary;
- for(let a of diaryEntries) {
- let matches = urlPattern.exec(a.rawAttributes.href);
- if(!matches)
- continue;
-
- let id = +matches[1];
- if(id <= lastDiary)
- continue;
- if(id > latestEntry)
- latestEntry = id;
- let diaryLink = `${kissDiaryRoot}/${a.rawAttributes.href}`;
- let res = await axios.get(diaryLink);
- if(res.status != 200)
- continue;
- let node = html.parse(res.data, {
- pre: true,
- script: false,
- style: false
- });
- let title = node.querySelector("table.blog_frame_top tr td a");
- let contents = node.querySelector("div.blog_frame_middle");
- let bottomFrame = contents.querySelector("div.blog_data");
- if(bottomFrame)
- contents.childNodes[0].removeChild(bottomFrame);
- result.push({
- id: `kisskisstv-diary-${id}`,
- link: diaryLink,
- title: title.text,
- author: "KISS BLOG",
- contents: contents.innerHTML,
- embedColor: 0xf4c100
- });
- }
- db.set("latestKissDiaryEntry", latestEntry).write();
- return result;
- } catch(err) {
- return [];
- }
- }
- module.exports = {
- aggregate: aggregate
- };
|