add douban book model

This commit is contained in:
wanxp 2022-06-18 23:11:52 +08:00
parent ee2dead393
commit 7ebf875b40
5 changed files with 21 additions and 15 deletions

@ -1,13 +1,11 @@
import { CheerioAPI, load } from 'cheerio';
import { DoubanPluginSettings, PersonNameMode } from "douban/Douban";
import cheerio, { CheerioAPI } from "cheerio";
import { get, readStream } from "tiny-network";
import DoubanPlugin from "main";
import DoubanSubject from "douban/model/DoubanSubject";
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
import { Editor } from "obsidian";
import HttpUtil from "utils/HttpUtil";
import { json } from "stream/consumers";
import { log } from "utils/Logutil";
export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject> implements DoubanSubjectLoadHandler<T> {
@ -26,8 +24,8 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
handle(url:string, editor:Editor):void {
Promise.resolve().then(() => get(log.traceN("GET URL", url + "/"), log.traceN("GET HEAD", {headers: JSON.parse(this.doubanPlugin.settings.searchHeaders)})))
.then(readStream)
.then(cheerio.load)
.then(log.trace)
.then(a => {log.trace(a.toString()); return a;})
.then(load)
.then(this.parseSubjectFromHtml)
.then(content => this.toEditor(editor, content))
// .then(content => content ? editor.replaceSelection(content) : content)
@ -35,7 +33,6 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
}
abstract parseSubjectFromHtml(data:CheerioAPI):T | undefined;
toEditor(editor:Editor, extract: T):T {

@ -1,7 +1,6 @@
import { Editor, moment, renderResults } from "obsidian";
import cheerio, { CheerioAPI } from 'cheerio';
import { get, readStream } from "tiny-network";
import { CheerioAPI } from 'cheerio';
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanBookSubject from "douban/model/DoubanBookSubject";
import DoubanPlugin from "main";

@ -1,5 +1,6 @@
import { App, Editor } from "obsidian";
import DoubanBookLoadHandler from "./DoubanBookLoadHandler";
import DoubanMovieLoadHandler from "./DoubanMovieLoadHandler";
import DoubanOtherLoadHandler from "./DoubanOtherLoadHandler";
import DoubanPlugin from "main";
@ -20,7 +21,7 @@ export class DoubanSearchChooseItemHandler {
this._app = app;
this._doubanPlugin = doubanPlugin;
this._doubanSubjectHandlerDefault = new DoubanOtherLoadHandler(doubanPlugin);
this._doubanSubjectHandlers = [new DoubanMovieLoadHandler(doubanPlugin),
this._doubanSubjectHandlers = [new DoubanMovieLoadHandler(doubanPlugin), new DoubanBookLoadHandler(doubanPlugin),
this._doubanSubjectHandlerDefault];
}

@ -3,8 +3,17 @@ import {AggregateRating, Person, WithContext} from 'schema-dts';
import DoubanSubject from "./DoubanSubject";
export default class DoubanMovieSubject extends DoubanSubject {
author:Person[];
aggregateRating:AggregateRating;
datePublished:Date;
image:string
author:string;
translator:string;
bookType:string;
image:string;
publishDate:string;
totalWord:number;
isbn:string;
press:string;
score:number;
originalName:string;
totalPage:number
belong:string;
menu:string;
}

@ -1,9 +1,9 @@
import { DoubanPluginSettings, doubanHeadrs } from 'douban/Douban';
import cheerio, { load } from 'cheerio';
import { get, readStream } from 'tiny-network';
import DoubanSearchResultSubject from 'douban/model/DoubanSearchResultSubject';
import SearchParserHandler from './SearchParser';
import cheerio from 'cheerio';
import { ensureStatusCode } from 'douban/ResponseHandle';
import { log } from 'utils/Logutil';
@ -17,7 +17,7 @@ export default class Searcher {
.then(() => get(log.traceN("GET", doubanSettings.searchUrl + searchItem), JSON.parse(doubanSettings.searchHeaders)))
.then(ensureStatusCode(200))
.then(readStream)
.then(cheerio.load)
.then(load)
.then(SearchParserHandler.parseSearch)
.then(log.trace);
};