mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-07 10:58:42 +08:00
37 lines
1.3 KiB
TypeScript
37 lines
1.3 KiB
TypeScript
import {CheerioAPI} from "cheerio";
|
|
import DoubanSearchResultSubject from "../model/DoubanSearchResultSubject";
|
|
|
|
export default class SearchParserHandler {
|
|
static parseSearch(dataHtml: CheerioAPI): DoubanSearchResultSubject[] {
|
|
return dataHtml('.result')
|
|
.get()
|
|
.map((i: any) => {
|
|
const item = dataHtml(i);
|
|
let idPattern = /(\d){5,10}/g;
|
|
let urlPattern = /(https%3A%2F%2F)\S+(\d){5,10}/g;
|
|
let linkValue = item.find("div.content > div > h3 > a").attr("href");
|
|
let ececResult = idPattern.exec(linkValue);
|
|
let urlResult = urlPattern.exec(linkValue);
|
|
let cast = item.find(".subject-cast").text();
|
|
let score = item.find(".rating_nums").text();
|
|
let title = item.find("div.content > div > h3 > a").text();
|
|
let type = item.find("div.content > div > h3 > span").text();
|
|
let desc = item.find("div.content > p").text();
|
|
const result: DoubanSearchResultSubject = {
|
|
id: ececResult ? ececResult[0] : '',
|
|
title: title ? title : '-',
|
|
score: score ? Number(score) : null,
|
|
cast: cast,
|
|
type: type ? type : '-',
|
|
desc: desc ? desc : '-',
|
|
url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com',
|
|
image: "",
|
|
publisher: "",
|
|
datePublished: undefined,
|
|
genre: []
|
|
};
|
|
return result;
|
|
})
|
|
};
|
|
}
|