|
@@ -30,49 +30,45 @@ async function aggregate() {
|
|
|
return [];
|
|
|
|
|
|
let rootNode = cheerio.load(mainPageRes.body);
|
|
|
-
|
|
|
- let diaryEntries = rootNode("div.blog_frame_middle ul.disc li a");
|
|
|
-
|
|
|
- if(diaryEntries.length == 0) {
|
|
|
+ let diaryEntryNames = rootNode("table.blog_frame_top");
|
|
|
+
|
|
|
+ if(diaryEntryNames.length == 0) {
|
|
|
console.log("[KISS DIARY] Failed to find listing!");
|
|
|
}
|
|
|
|
|
|
+ let diaryTexts = rootNode("div.blog_frame_middle");
|
|
|
+ let items = diaryEntryNames.map((i, e) => ({ table: e, content: diaryTexts.get(i) }));
|
|
|
let result : INewsItem[] = [];
|
|
|
let latestEntry = lastPost.newsId;
|
|
|
|
|
|
- for(let a of diaryEntries.get() as CheerioElement[]) {
|
|
|
- let matches = urlPattern.exec(a.attribs.href);
|
|
|
+ for(let {table, content} of items.get() as {table: CheerioElement, content: CheerioElement}[]) {
|
|
|
+ let a = cheerio(table).find("a");
|
|
|
+ let link = a.attr("href");
|
|
|
+ let matches = urlPattern.exec(link);
|
|
|
if(!matches)
|
|
|
continue;
|
|
|
|
|
|
let id = +matches[1];
|
|
|
-
|
|
|
if(id <= lastPost.newsId)
|
|
|
continue;
|
|
|
|
|
|
if(id > latestEntry)
|
|
|
latestEntry = id;
|
|
|
|
|
|
- let diaryLink = `${kissDiaryRoot}/${a.attribs.href}`;
|
|
|
- let res = await request(diaryLink, {resolveWithFullResponse: true}) as Response;
|
|
|
-
|
|
|
- if(res.statusCode != 200)
|
|
|
- continue;
|
|
|
-
|
|
|
- let node = cheerio.load(res.body);
|
|
|
-
|
|
|
- let title = node("table.blog_frame_top tr td a");
|
|
|
- let contents = node("div.blog_frame_middle");
|
|
|
- let bottomFrame = contents.find("div.blog_data");
|
|
|
+ let diaryLink = `${kissDiaryRoot}/${link}`;
|
|
|
+ let contentCh = cheerio(content);
|
|
|
+ let title = a.text();
|
|
|
+
|
|
|
+ let bottomFrame = contentCh.find("div.blog_data");
|
|
|
bottomFrame.remove();
|
|
|
|
|
|
result.push({
|
|
|
newsId: id,
|
|
|
feedId: FEED_NAME,
|
|
|
link: diaryLink,
|
|
|
- title: title.text(),
|
|
|
+ title: title,
|
|
|
author: "KISS BLOG",
|
|
|
- contents: contents.html(),
|
|
|
+ contents: contentCh.html(),
|
|
|
embedColor: 0xf4c100,
|
|
|
needsTranslation: true
|
|
|
});
|