fix import error

This commit is contained in:
wanxp 2022-10-24 20:41:02 +08:00
parent 49be403b23
commit f651a851c9
10 changed files with 126 additions and 122 deletions

@ -2,7 +2,7 @@ import {AggregateRating, Person, WithContext} from 'schema-dts';
import DoubanSubject from 'src/douban/data/model/DoubanSubject'; import DoubanSubject from 'src/douban/data/model/DoubanSubject';
export default class DoubanPageBroadcastSubject { export default class DoubanPageBroadcastSubject extends DoubanSubject {
pageNumber:number; pageNumber:number;
broadcast:DoubanPageBroadcastSubject[]; broadcast:DoubanPageBroadcastSubject[];
pageSize:number; pageSize:number;

@ -1,116 +1,117 @@
import { Editor, moment, renderResults } from "obsidian"; import { Editor, moment, renderResults } from "obsidian";
import { CheerioAPI } from 'cheerio'; import { CheerioAPI } from 'cheerio';
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanBookSubject from "../model/DoubanBookSubject"; import DoubanBookSubject from "../model/DoubanBookSubject";
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import { DoubanPluginSettings } from "src/douban/Douban";
import DoubanSubject from "../model/DoubanSubject";
export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<DoubanBookSubject> {
export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<DoubanBookSubject> {
parseText(extract: DoubanBookSubject, settings:DoubanPluginSettings): string {
return settings.bookTemplate ? settings.bookTemplate.replaceAll("{{id}}", extract.id) parseText(extract: DoubanBookSubject, settings:DoubanPluginSettings): string {
.replaceAll("{{type}}", extract.type ? extract.type : "") return settings.bookTemplate ? settings.bookTemplate.replaceAll("{{id}}", extract.id)
.replaceAll("{{title}}", extract.title ? extract.title : "") .replaceAll("{{type}}", extract.type ? extract.type : "")
.replaceAll("{{desc}}", extract.desc ? extract.desc : "") .replaceAll("{{title}}", extract.title ? extract.title : "")
.replaceAll("{{image}}", extract.image ? extract.image : "") .replaceAll("{{desc}}", extract.desc ? extract.desc : "")
.replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "") .replaceAll("{{image}}", extract.image ? extract.image : "")
.replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "") .replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "")
.replaceAll("{{url}}", extract.url ? extract.url : "") .replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "")
.replaceAll("{{score}}", extract.score && extract.score ? extract.score + "" : "") .replaceAll("{{url}}", extract.url ? extract.url : "")
.replaceAll("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "") .replaceAll("{{score}}", extract.score && extract.score ? extract.score + "" : "")
.replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "") .replaceAll("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "")
.replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "") .replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "")
.replaceAll("{{publish}}", extract.publish ? extract.publish : "") .replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "")
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") .replaceAll("{{publish}}", extract.publish ? extract.publish : "")
.replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "") .replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
.replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "") .replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "")
.replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "") .replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "")
.replaceAll("{{price}}", extract.price ? extract.price + "" : "") .replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "")
.replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "") .replaceAll("{{price}}", extract.price ? extract.price + "" : "")
.replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "")
: undefined;
} : undefined;
support(extract: DoubanSubject): boolean { }
return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book")); support(extract: DoubanSubject): boolean {
} return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book"));
}
constructor(doubanPlugin:DoubanPlugin) {
super(doubanPlugin); constructor(doubanPlugin:DoubanPlugin) {
} super(doubanPlugin);
}
parseSubjectFromHtml(html: CheerioAPI): DoubanBookSubject {
var title = html(html("head > meta[property= 'og:title']").get(0)).attr("content"); parseSubjectFromHtml(html: CheerioAPI): DoubanBookSubject {
var desc = html(html("head > meta[property= 'og:description']").get(0)).attr("content"); var title = html(html("head > meta[property= 'og:title']").get(0)).attr("content");
var url = html(html("head > meta[property= 'og:url']").get(0)).attr("content"); var desc = html(html("head > meta[property= 'og:description']").get(0)).attr("content");
var image = html(html("head > meta[property= 'og:image']").get(0)).attr("content"); var url = html(html("head > meta[property= 'og:url']").get(0)).attr("content");
var type = html(html("head > meta[property= 'og:type']").get(0)).attr("content"); var image = html(html("head > meta[property= 'og:image']").get(0)).attr("content");
var author = html(html("head > meta[property= 'book:author']").get(0)).attr("content"); var type = html(html("head > meta[property= 'og:type']").get(0)).attr("content");
var isbn = html(html("head > meta[property= 'book:isbn']").get(0)).attr("content"); var author = html(html("head > meta[property= 'book:author']").get(0)).attr("content");
var score = html(html("#interest_sectl > div > div.rating_self.clearfix > strong[property= 'v:average']").get(0)).text(); var isbn = html(html("head > meta[property= 'book:isbn']").get(0)).attr("content");
var detailDom = html(html("#info").get(0)); var score = html(html("#interest_sectl > div > div.rating_self.clearfix > strong[property= 'v:average']").get(0)).text();
var publish = detailDom.find("span.pl"); var detailDom = html(html("#info").get(0));
var publish = detailDom.find("span.pl");
var valueMap = new Map<string, string>();
var valueMap = new Map<string, string>();
publish.map((index, info) => {
let key = html(info).text().trim(); publish.map((index, info) => {
let value = '' let key = html(info).text().trim();
if(key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('译者') >= 0 || key.indexOf('出版社') >= 0){ let value = ''
value = html(info.next.next).text().trim(); if(key.indexOf('作者') >= 0 || key.indexOf('丛书') >= 0 || key.indexOf('译者') >= 0 || key.indexOf('出版社') >= 0){
}else{ value = html(info.next.next).text().trim();
value = html(info.next).text().trim(); }else{
} value = html(info.next).text().trim();
valueMap.set(BookKeyValueMap.get(key), value); }
}) valueMap.set(BookKeyValueMap.get(key), value);
})
var idPattern = /(\d){5,10}/g;
var id = idPattern.exec(url); var idPattern = /(\d){5,10}/g;
var id = idPattern.exec(url);
const result:DoubanBookSubject = {
author: [author], const result:DoubanBookSubject = {
translator: [valueMap.get('translator')], author: [author],
bookType: "", translator: [valueMap.get('translator')],
image: image, bookType: "",
datePublished: valueMap.has('datePublished')?new Date(valueMap.get('datePublished')) : null, image: image,
totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null, datePublished: valueMap.has('datePublished')?new Date(valueMap.get('datePublished')) : null,
isbn: isbn, totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null,
publish: valueMap.has('publish') ? valueMap.get('publish') : "", isbn: isbn,
score: Number(score), publish: valueMap.has('publish') ? valueMap.get('publish') : "",
originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "", score: Number(score),
subTitle: "", originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "",
totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null, subTitle: "",
belong: "", totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null,
menu: [], belong: "",
price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null, menu: [],
labels: [], price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null,
id: id ? id[0]:"", labels: [],
type: "Book", id: id ? id[0]:"",
title: title, type: "Book",
desc: desc, title: title,
url: url desc: desc,
}; url: url
return result; };
} return result;
}
}
}
const BookKeyValueMap:Map<string, string> = new Map(
[['作者', 'author'], const BookKeyValueMap:Map<string, string> = new Map(
['出版社:', 'publish'], [['作者', 'author'],
['原作名:', 'originalTitle'], ['出版社:', 'publish'],
['出版年:', 'datePublished'], ['原作名:', 'originalTitle'],
['页数:', 'totalPage'], ['出版年:', 'datePublished'],
['定价:', 'price'], ['页数:', 'totalPage'],
['装帧:', 'binding'], ['定价:', 'price'],
['丛书:', 'bush'], ['装帧:', 'binding'],
['ISBN:', 'isbn'], ['丛书:', 'bush'],
['译者', 'translator'], ['ISBN:', 'isbn'],
] ['译者', 'translator'],
); ]
);

@ -1,10 +1,11 @@
import { CheerioAPI } from 'cheerio'; import { CheerioAPI } from 'cheerio';
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanMovieSubject from '../model/DoubanBookSubject';
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import { DoubanPluginSettings } from "src/douban/Douban";
import SchemaOrg from "src/utils/SchemaOrg"; import SchemaOrg from "src/utils/SchemaOrg";
import { moment } from "obsidian"; import { moment } from "obsidian";
import DoubanSubject from '../model/DoubanSubject';
import DoubanMovieSubject from '../model/DoubanMovieSubject';
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> { export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {

@ -4,6 +4,7 @@ import DoubanMusicSubject from '../model/DoubanMusicSubject';
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import { DoubanPluginSettings } from "src/douban/Douban";
import { moment } from "obsidian"; import { moment } from "obsidian";
import DoubanSubject from '../model/DoubanSubject';
export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> { export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> {

@ -3,6 +3,7 @@ import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanNoteSubject from '../model/DoubanNoteSubject'; import DoubanNoteSubject from '../model/DoubanNoteSubject';
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import { DoubanPluginSettings } from "src/douban/Douban";
import DoubanSubject from '../model/DoubanSubject';
import html2markdown from '@notable/html2markdown'; import html2markdown from '@notable/html2markdown';
import { moment } from "obsidian"; import { moment } from "obsidian";

@ -2,6 +2,7 @@ import { CheerioAPI } from "cheerio";
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler"; import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { DoubanPluginSettings } from "src/douban/Douban"; import { DoubanPluginSettings } from "src/douban/Douban";
import DoubanSubject from "../model/DoubanSubject";
import DoubanTeleplaySubject from "../model/DoubanTeleplaySubject"; import DoubanTeleplaySubject from "../model/DoubanTeleplaySubject";
import SchemaOrg from "src/utils/SchemaOrg"; import SchemaOrg from "src/utils/SchemaOrg";
import { moment } from "obsidian"; import { moment } from "obsidian";

@ -2,7 +2,7 @@ import {AggregateRating, Person, WithContext} from 'schema-dts';
import DoubanSubject from "./DoubanSubject"; import DoubanSubject from "./DoubanSubject";
export default class DoubanMovieSubject extends DoubanSubject { export default class DoubanBookSubject extends DoubanSubject {
author:string[]; author:string[];
translator:string[]; translator:string[];
bookType:string; bookType:string;

@ -2,7 +2,6 @@ import { App, Editor, Modal, TextComponent } from "obsidian";
import DoubanPlugin from "main"; import DoubanPlugin from "main";
import { i18nHelper } from "src/lang/helper"; import { i18nHelper } from "src/lang/helper";
import { log } from "src/utils/Logutil";
export class DoubanSearchModal extends Modal { export class DoubanSearchModal extends Modal {
searchTerm: string; searchTerm: string;

@ -2,7 +2,7 @@ import { DoubanPluginSettings, doubanHeadrs } from 'src/douban/Douban';
import cheerio, { load } from 'cheerio'; import cheerio, { load } from 'cheerio';
import { get, readStream } from 'tiny-network'; import { get, readStream } from 'tiny-network';
import DoubanSearchResultSubject from 'src/douban/model/DoubanSearchResultSubject'; import DoubanSearchResultSubject from '../model/DoubanSearchResultSubject';
import SearchParserHandler from './SearchParser'; import SearchParserHandler from './SearchParser';
import { ensureStatusCode } from 'src/douban/ResponseHandle'; import { ensureStatusCode } from 'src/douban/ResponseHandle';
import { log } from 'src/utils/Logutil'; import { log } from 'src/utils/Logutil';

@ -1,5 +1,5 @@
import { CheerioAPI } from "cheerio"; import { CheerioAPI } from "cheerio";
import DoubanSearchResultSubject from "src/douban/model/DoubanSearchResultSubject"; import DoubanSearchResultSubject from "../model/DoubanSearchResultSubject";
export default class SearchParserHandler { export default class SearchParserHandler {
static parseSearch(dataHtml:CheerioAPI):DoubanSearchResultSubject[] { static parseSearch(dataHtml:CheerioAPI):DoubanSearchResultSubject[] {