mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 16:48:44 +08:00
add douban book model
This commit is contained in:
parent
ee2dead393
commit
7ebf875b40
@ -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);
|
||||
};
|
||||
|
||||
Loading…
Reference in New Issue
Block a user