From f651a851c905537049011db663dde929fe5e3e1f Mon Sep 17 00:00:00 2001 From: wanxp <977741432@qq.com> Date: Mon, 24 Oct 2022 20:41:02 +0800 Subject: [PATCH] fix import error --- .../model/DoubanPageBroadcastSubject.ts | 2 +- .../data/handler/DoubanBookLoadHandler.ts | 233 +++++++++--------- .../data/handler/DoubanMovieLoadHandler.ts | 3 +- .../data/handler/DoubanMusicLoadHandler.ts | 1 + .../data/handler/DoubanNoteLoadHandler.ts | 1 + .../data/handler/DoubanTeleplayLoadHandler.ts | 1 + src/douban/data/model/DoubanBookSubject.ts | 2 +- src/douban/data/search/DoubanSearchModal.ts | 1 - src/douban/data/search/Search.ts | 2 +- src/douban/data/search/SearchParser.ts | 2 +- 10 files changed, 126 insertions(+), 122 deletions(-) diff --git a/src/douban/broadcast/model/DoubanPageBroadcastSubject.ts b/src/douban/broadcast/model/DoubanPageBroadcastSubject.ts index 49d3cca..b4fe1b8 100644 --- a/src/douban/broadcast/model/DoubanPageBroadcastSubject.ts +++ b/src/douban/broadcast/model/DoubanPageBroadcastSubject.ts @@ -2,7 +2,7 @@ import {AggregateRating, Person, WithContext} from 'schema-dts'; import DoubanSubject from 'src/douban/data/model/DoubanSubject'; -export default class DoubanPageBroadcastSubject { +export default class DoubanPageBroadcastSubject extends DoubanSubject { pageNumber:number; broadcast:DoubanPageBroadcastSubject[]; pageSize:number; diff --git a/src/douban/data/handler/DoubanBookLoadHandler.ts b/src/douban/data/handler/DoubanBookLoadHandler.ts index f9966cf..6311f15 100644 --- a/src/douban/data/handler/DoubanBookLoadHandler.ts +++ b/src/douban/data/handler/DoubanBookLoadHandler.ts @@ -1,116 +1,117 @@ -import { Editor, moment, renderResults } from "obsidian"; - -import { CheerioAPI } from 'cheerio'; -import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; -import DoubanBookSubject from "../model/DoubanBookSubject"; -import DoubanPlugin from "main"; -import { DoubanPluginSettings } from "src/douban/Douban"; - -export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler { - - parseText(extract: DoubanBookSubject, settings:DoubanPluginSettings): string { - return settings.bookTemplate ? settings.bookTemplate.replaceAll("{{id}}", extract.id) - .replaceAll("{{type}}", extract.type ? extract.type : "") - .replaceAll("{{title}}", extract.title ? extract.title : "") - .replaceAll("{{desc}}", extract.desc ? extract.desc : "") - .replaceAll("{{image}}", extract.image ? extract.image : "") - .replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "") - .replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "") - .replaceAll("{{url}}", extract.url ? extract.url : "") - .replaceAll("{{score}}", extract.score && extract.score ? extract.score + "" : "") - .replaceAll("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "") - .replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "") - .replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "") - .replaceAll("{{publish}}", extract.publish ? extract.publish : "") - .replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") - .replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "") - .replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "") - .replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "") - .replaceAll("{{price}}", extract.price ? extract.price + "" : "") - .replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "") - - : undefined; - } - support(extract: DoubanSubject): boolean { - return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book")); - } - - - - - - constructor(doubanPlugin:DoubanPlugin) { - super(doubanPlugin); - } - - parseSubjectFromHtml(html: CheerioAPI): DoubanBookSubject { - var title = html(html("head > meta[property= 'og:title']").get(0)).attr("content"); - var desc = html(html("head > meta[property= 'og:description']").get(0)).attr("content"); - var url = html(html("head > meta[property= 'og:url']").get(0)).attr("content"); - var image = html(html("head > meta[property= 'og:image']").get(0)).attr("content"); - var type = html(html("head > meta[property= 'og:type']").get(0)).attr("content"); - var author = html(html("head > meta[property= 'book:author']").get(0)).attr("content"); - var isbn = html(html("head > meta[property= 'book:isbn']").get(0)).attr("content"); - var score = html(html("#interest_sectl > div > div.rating_self.clearfix > strong[property= 'v:average']").get(0)).text(); - var detailDom = html(html("#info").get(0)); - var publish = detailDom.find("span.pl"); - - var valueMap = new Map(); - - publish.map((index, info) => { - let key = html(info).text().trim(); - let value = '' - if(key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('译者') >= 0 || key.indexOf('出版社') >= 0){ - value = html(info.next.next).text().trim(); - }else{ - value = html(info.next).text().trim(); - } - valueMap.set(BookKeyValueMap.get(key), value); - }) - - var idPattern = /(\d){5,10}/g; - var id = idPattern.exec(url); - - const result:DoubanBookSubject = { - author: [author], - translator: [valueMap.get('translator')], - bookType: "", - image: image, - datePublished: valueMap.has('datePublished')?new Date(valueMap.get('datePublished')) : null, - totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null, - isbn: isbn, - publish: valueMap.has('publish') ? valueMap.get('publish') : "", - score: Number(score), - originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "", - subTitle: "", - totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null, - belong: "", - menu: [], - price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null, - labels: [], - id: id ? id[0]:"", - type: "Book", - title: title, - desc: desc, - url: url - }; - return result; -} - - -} - - -const BookKeyValueMap:Map = new Map( - [['作者', 'author'], - ['出版社:', 'publish'], - ['原作名:', 'originalTitle'], - ['出版年:', 'datePublished'], - ['页数:', 'totalPage'], - ['定价:', 'price'], - ['装帧:', 'binding'], - ['丛书:', 'bush'], - ['ISBN:', 'isbn'], - ['译者', 'translator'], - ] -); \ No newline at end of file +import { Editor, moment, renderResults } from "obsidian"; + +import { CheerioAPI } from 'cheerio'; +import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; +import DoubanBookSubject from "../model/DoubanBookSubject"; +import DoubanPlugin from "main"; +import { DoubanPluginSettings } from "src/douban/Douban"; +import DoubanSubject from "../model/DoubanSubject"; + +export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler { + + parseText(extract: DoubanBookSubject, settings:DoubanPluginSettings): string { + return settings.bookTemplate ? settings.bookTemplate.replaceAll("{{id}}", extract.id) + .replaceAll("{{type}}", extract.type ? extract.type : "") + .replaceAll("{{title}}", extract.title ? extract.title : "") + .replaceAll("{{desc}}", extract.desc ? extract.desc : "") + .replaceAll("{{image}}", extract.image ? extract.image : "") + .replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "") + .replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "") + .replaceAll("{{url}}", extract.url ? extract.url : "") + .replaceAll("{{score}}", extract.score && extract.score ? extract.score + "" : "") + .replaceAll("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "") + .replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "") + .replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "") + .replaceAll("{{publish}}", extract.publish ? extract.publish : "") + .replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") + .replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "") + .replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "") + .replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "") + .replaceAll("{{price}}", extract.price ? extract.price + "" : "") + .replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "") + + : undefined; + } + support(extract: DoubanSubject): boolean { + return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book")); + } + + + + + + constructor(doubanPlugin:DoubanPlugin) { + super(doubanPlugin); + } + + parseSubjectFromHtml(html: CheerioAPI): DoubanBookSubject { + var title = html(html("head > meta[property= 'og:title']").get(0)).attr("content"); + var desc = html(html("head > meta[property= 'og:description']").get(0)).attr("content"); + var url = html(html("head > meta[property= 'og:url']").get(0)).attr("content"); + var image = html(html("head > meta[property= 'og:image']").get(0)).attr("content"); + var type = html(html("head > meta[property= 'og:type']").get(0)).attr("content"); + var author = html(html("head > meta[property= 'book:author']").get(0)).attr("content"); + var isbn = html(html("head > meta[property= 'book:isbn']").get(0)).attr("content"); + var score = html(html("#interest_sectl > div > div.rating_self.clearfix > strong[property= 'v:average']").get(0)).text(); + var detailDom = html(html("#info").get(0)); + var publish = detailDom.find("span.pl"); + + var valueMap = new Map(); + + publish.map((index, info) => { + let key = html(info).text().trim(); + let value = '' + if(key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('译者') >= 0 || key.indexOf('出版社') >= 0){ + value = html(info.next.next).text().trim(); + }else{ + value = html(info.next).text().trim(); + } + valueMap.set(BookKeyValueMap.get(key), value); + }) + + var idPattern = /(\d){5,10}/g; + var id = idPattern.exec(url); + + const result:DoubanBookSubject = { + author: [author], + translator: [valueMap.get('translator')], + bookType: "", + image: image, + datePublished: valueMap.has('datePublished')?new Date(valueMap.get('datePublished')) : null, + totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null, + isbn: isbn, + publish: valueMap.has('publish') ? valueMap.get('publish') : "", + score: Number(score), + originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "", + subTitle: "", + totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null, + belong: "", + menu: [], + price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null, + labels: [], + id: id ? id[0]:"", + type: "Book", + title: title, + desc: desc, + url: url + }; + return result; +} + + +} + + +const BookKeyValueMap:Map = new Map( + [['作者', 'author'], + ['出版社:', 'publish'], + ['原作名:', 'originalTitle'], + ['出版年:', 'datePublished'], + ['页数:', 'totalPage'], + ['定价:', 'price'], + ['装帧:', 'binding'], + ['丛书:', 'bush'], + ['ISBN:', 'isbn'], + ['译者', 'translator'], + ] +); diff --git a/src/douban/data/handler/DoubanMovieLoadHandler.ts b/src/douban/data/handler/DoubanMovieLoadHandler.ts index 23e3f82..8288cc3 100644 --- a/src/douban/data/handler/DoubanMovieLoadHandler.ts +++ b/src/douban/data/handler/DoubanMovieLoadHandler.ts @@ -1,10 +1,11 @@ import { CheerioAPI } from 'cheerio'; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; -import DoubanMovieSubject from '../model/DoubanBookSubject'; import DoubanPlugin from "main"; import { DoubanPluginSettings } from "src/douban/Douban"; import SchemaOrg from "src/utils/SchemaOrg"; import { moment } from "obsidian"; +import DoubanSubject from '../model/DoubanSubject'; +import DoubanMovieSubject from '../model/DoubanMovieSubject'; export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler { diff --git a/src/douban/data/handler/DoubanMusicLoadHandler.ts b/src/douban/data/handler/DoubanMusicLoadHandler.ts index 7cf8ed0..7fd4d44 100644 --- a/src/douban/data/handler/DoubanMusicLoadHandler.ts +++ b/src/douban/data/handler/DoubanMusicLoadHandler.ts @@ -4,6 +4,7 @@ import DoubanMusicSubject from '../model/DoubanMusicSubject'; import DoubanPlugin from "main"; import { DoubanPluginSettings } from "src/douban/Douban"; import { moment } from "obsidian"; +import DoubanSubject from '../model/DoubanSubject'; export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler { diff --git a/src/douban/data/handler/DoubanNoteLoadHandler.ts b/src/douban/data/handler/DoubanNoteLoadHandler.ts index 23f9982..8689bfe 100644 --- a/src/douban/data/handler/DoubanNoteLoadHandler.ts +++ b/src/douban/data/handler/DoubanNoteLoadHandler.ts @@ -3,6 +3,7 @@ import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanNoteSubject from '../model/DoubanNoteSubject'; import DoubanPlugin from "main"; import { DoubanPluginSettings } from "src/douban/Douban"; +import DoubanSubject from '../model/DoubanSubject'; import html2markdown from '@notable/html2markdown'; import { moment } from "obsidian"; diff --git a/src/douban/data/handler/DoubanTeleplayLoadHandler.ts b/src/douban/data/handler/DoubanTeleplayLoadHandler.ts index f410234..40c88f9 100644 --- a/src/douban/data/handler/DoubanTeleplayLoadHandler.ts +++ b/src/douban/data/handler/DoubanTeleplayLoadHandler.ts @@ -2,6 +2,7 @@ import { CheerioAPI } from "cheerio"; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanPlugin from "main"; import { DoubanPluginSettings } from "src/douban/Douban"; +import DoubanSubject from "../model/DoubanSubject"; import DoubanTeleplaySubject from "../model/DoubanTeleplaySubject"; import SchemaOrg from "src/utils/SchemaOrg"; import { moment } from "obsidian"; diff --git a/src/douban/data/model/DoubanBookSubject.ts b/src/douban/data/model/DoubanBookSubject.ts index c0287c2..052af13 100644 --- a/src/douban/data/model/DoubanBookSubject.ts +++ b/src/douban/data/model/DoubanBookSubject.ts @@ -2,7 +2,7 @@ import {AggregateRating, Person, WithContext} from 'schema-dts'; import DoubanSubject from "./DoubanSubject"; -export default class DoubanMovieSubject extends DoubanSubject { +export default class DoubanBookSubject extends DoubanSubject { author:string[]; translator:string[]; bookType:string; diff --git a/src/douban/data/search/DoubanSearchModal.ts b/src/douban/data/search/DoubanSearchModal.ts index 3f90458..ee0f9b0 100644 --- a/src/douban/data/search/DoubanSearchModal.ts +++ b/src/douban/data/search/DoubanSearchModal.ts @@ -2,7 +2,6 @@ import { App, Editor, Modal, TextComponent } from "obsidian"; import DoubanPlugin from "main"; import { i18nHelper } from "src/lang/helper"; -import { log } from "src/utils/Logutil"; export class DoubanSearchModal extends Modal { searchTerm: string; diff --git a/src/douban/data/search/Search.ts b/src/douban/data/search/Search.ts index a622440..f65f562 100644 --- a/src/douban/data/search/Search.ts +++ b/src/douban/data/search/Search.ts @@ -2,7 +2,7 @@ import { DoubanPluginSettings, doubanHeadrs } from 'src/douban/Douban'; import cheerio, { load } from 'cheerio'; import { get, readStream } from 'tiny-network'; -import DoubanSearchResultSubject from 'src/douban/model/DoubanSearchResultSubject'; +import DoubanSearchResultSubject from '../model/DoubanSearchResultSubject'; import SearchParserHandler from './SearchParser'; import { ensureStatusCode } from 'src/douban/ResponseHandle'; import { log } from 'src/utils/Logutil'; diff --git a/src/douban/data/search/SearchParser.ts b/src/douban/data/search/SearchParser.ts index 60fe283..775918a 100644 --- a/src/douban/data/search/SearchParser.ts +++ b/src/douban/data/search/SearchParser.ts @@ -1,5 +1,5 @@ import { CheerioAPI } from "cheerio"; -import DoubanSearchResultSubject from "src/douban/model/DoubanSearchResultSubject"; +import DoubanSearchResultSubject from "../model/DoubanSearchResultSubject"; export default class SearchParserHandler { static parseSearch(dataHtml:CheerioAPI):DoubanSearchResultSubject[] {