mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 08:38:41 +08:00
Optimize internationalized text and remove some dependencies
This commit is contained in:
parent
ecffed6441
commit
1d4bee6281
14
main.ts
14
main.ts
@ -65,13 +65,13 @@ export default class DoubanPlugin extends Plugin {
|
|||||||
editorCallback: (editor: Editor) =>
|
editorCallback: (editor: Editor) =>
|
||||||
this.geDoubanTextForSearchTerm(editor),
|
this.geDoubanTextForSearchTerm(editor),
|
||||||
});
|
});
|
||||||
|
//TODO will support in future
|
||||||
this.addCommand({
|
// this.addCommand({
|
||||||
id: "sync-douban-broadcast-by-user-id",
|
// id: "sync-douban-broadcast-by-user-id",
|
||||||
name: i18nHelper.getMessage('110006'),
|
// name: i18nHelper.getMessage('110006'),
|
||||||
editorCallback: (editor: Editor) =>
|
// editorCallback: (editor: Editor) =>
|
||||||
this.geDoubanTextForSearchTerm(editor),
|
// this.geDoubanTextForSearchTerm(editor),
|
||||||
});
|
// });
|
||||||
|
|
||||||
this.addSettingTab(new DoubanSettingTab(this.app, this));
|
this.addSettingTab(new DoubanSettingTab(this.app, this));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,9 +5,10 @@ export interface DoubanPluginSettings {
|
|||||||
movieTemplate:string,
|
movieTemplate:string,
|
||||||
bookTemplate:string,
|
bookTemplate:string,
|
||||||
musicTemplate:string,
|
musicTemplate:string,
|
||||||
noteTemplate:string
|
noteTemplate:string,
|
||||||
|
gameTemplate:string,
|
||||||
dateFormat:string,
|
dateFormat:string,
|
||||||
dateTimeFormat:string,
|
timeFormat:string,
|
||||||
searchUrl:string,
|
searchUrl:string,
|
||||||
arraySpilt:string,
|
arraySpilt:string,
|
||||||
searchHeaders?:string,
|
searchHeaders?:string,
|
||||||
@ -29,9 +30,80 @@ export const doubanHeadrs = {
|
|||||||
|
|
||||||
export const DEFAULT_SETTINGS:DoubanPluginSettings = {
|
export const DEFAULT_SETTINGS:DoubanPluginSettings = {
|
||||||
movieTemplate:
|
movieTemplate:
|
||||||
|
`
|
||||||
|

|
||||||
|
|
||||||
|
doubanId: {{id}}
|
||||||
|
title: {{title}}
|
||||||
|
type: {{type}}
|
||||||
|
score: {{score}}
|
||||||
|
originalTitle: {{originalTitle}}
|
||||||
|
genre: {{genre}}
|
||||||
|
datePublished: {{datePublished}}
|
||||||
|
director: {{director}}
|
||||||
|
actor: {{actor}}
|
||||||
|
author: {{author}}
|
||||||
|
url: {{url}}
|
||||||
|
desc: {{desc}}
|
||||||
|
`,
|
||||||
|
bookTemplate:
|
||||||
|
`
|
||||||
|
|
||||||
|
doubanId: {{id}}
|
||||||
|
title: {{title}}
|
||||||
|
subTitle: {{subTitle}}
|
||||||
|
originalTitle: {{originalTitle}}
|
||||||
|
type: {{type}}
|
||||||
|
author: {{author}}
|
||||||
|
score: {{score}}
|
||||||
|
datePublished: {{datePublished}}
|
||||||
|
translator: {{translator}}
|
||||||
|
publisher: {{publisher}}
|
||||||
|
isbn: {{isbn}}
|
||||||
|
url: {{url}}
|
||||||
|
totalPage: {{totalPage}}
|
||||||
|
price: {{price}}
|
||||||
|
tags: Book
|
||||||
|
desc: {{desc}}
|
||||||
|
`,
|
||||||
|
musicTemplate:
|
||||||
|
`
|
||||||
|

|
||||||
|
|
||||||
|
doubanId: {{id}}
|
||||||
|
title: {{title}}
|
||||||
|
type: {{type}}
|
||||||
|
actor: {{actor}}
|
||||||
|
score: {{score}}
|
||||||
|
genre: {{genre}}
|
||||||
|
medium: {{medium}}
|
||||||
|
albumType: {{albumType}}
|
||||||
|
datePublished: {{datePublished}}
|
||||||
|
publisher: {{publisher}}
|
||||||
|
barcode: {{barcode}}
|
||||||
|
url: {{url}}
|
||||||
|
numberOfRecords: {{numberOfRecords}}
|
||||||
|
tags: Music
|
||||||
|
desc: {{desc}}
|
||||||
|
`,
|
||||||
|
noteTemplate:
|
||||||
`---
|
`---
|
||||||
doubanId: {{id}}
|
doubanId: {{id}}
|
||||||
title: {{title}}
|
title: {{title}}
|
||||||
|
type: {{type}}
|
||||||
|
author: [{{author}}]({{authorUrl}})
|
||||||
|
dateTimePublished: {{datePublished}} {{timePublished}}
|
||||||
|
url: {{url}}
|
||||||
|
tags: Article
|
||||||
|
desc: {{desc}}
|
||||||
|
---
|
||||||
|
|
||||||
|
{{content}}
|
||||||
|
`,
|
||||||
|
gameTemplate:
|
||||||
|
`
|
||||||
|
doubanId: {{id}}
|
||||||
|
title: {{title}}
|
||||||
originalTitle: {{originalTitle}}
|
originalTitle: {{originalTitle}}
|
||||||
type: {{type}}
|
type: {{type}}
|
||||||
score: {{score}}
|
score: {{score}}
|
||||||
@ -42,74 +114,13 @@ actor: {{actor}}
|
|||||||
author: {{author}}
|
author: {{author}}
|
||||||
url: {{url}}
|
url: {{url}}
|
||||||
desc: {{desc}}
|
desc: {{desc}}
|
||||||
---
|
|
||||||
|
|
||||||

|
|
||||||
`,
|
|
||||||
bookTemplate:
|
|
||||||
`---
|
|
||||||
doubanId: {{id}}
|
|
||||||
title: {{title}}
|
|
||||||
subTitle: {{subTitle}}
|
|
||||||
originalTitle: {{originalTitle}}
|
|
||||||
type: {{type}}
|
|
||||||
author: {{author}}
|
|
||||||
score: {{score}}
|
|
||||||
datePublished: {{datePublished}}
|
|
||||||
translator: {{translator}}
|
|
||||||
publish: {{publish}}
|
|
||||||
isbn: {{isbn}}
|
|
||||||
url: {{url}}
|
|
||||||
totalPage: {{totalPage}}
|
|
||||||
price: {{price}}
|
|
||||||
tags: Book
|
|
||||||
desc: {{desc}}
|
|
||||||
---
|
|
||||||
|
|
||||||

|
|
||||||
`,
|
|
||||||
musicTemplate:
|
|
||||||
`---
|
|
||||||
doubanId: {{id}}
|
|
||||||
title: {{title}}
|
|
||||||
type: {{type}}
|
|
||||||
actor: {{actor}}
|
|
||||||
score: {{score}}
|
|
||||||
genre: {{genre}}
|
|
||||||
medium: {{medium}}
|
|
||||||
albumType: {{albumType}}
|
|
||||||
datePublished: {{datePublished}}
|
|
||||||
publish: {{publish}}
|
|
||||||
barcode: {{barcode}}
|
|
||||||
url: {{url}}
|
|
||||||
numberOfRecords: {{numberOfRecords}}
|
|
||||||
tags: Music
|
|
||||||
desc: {{desc}}
|
|
||||||
---
|
|
||||||
|
|
||||||

|
|
||||||
`,
|
|
||||||
noteTemplate:
|
|
||||||
`---
|
|
||||||
doubanId: {{id}}
|
|
||||||
title: {{title}}
|
|
||||||
type: {{type}}
|
|
||||||
author: [{{author}}]({{authorUrl}})
|
|
||||||
timePublished: {{timePublished}}
|
|
||||||
url: {{url}}
|
|
||||||
tags: Article
|
|
||||||
desc: {{desc}}
|
|
||||||
---
|
|
||||||
|
|
||||||
- content
|
|
||||||
{{content}}
|
|
||||||
`,
|
`,
|
||||||
// totalWord: {{totalWord}}
|
// totalWord: {{totalWord}}
|
||||||
|
|
||||||
searchUrl: 'https://www.douban.com/search?q=',
|
searchUrl: 'https://www.douban.com/search?q=',
|
||||||
searchHeaders: JSON.stringify(doubanHeadrs),
|
searchHeaders: JSON.stringify(doubanHeadrs),
|
||||||
dateFormat: "yyyy-MM-DD",
|
dateFormat: "yyyy-MM-DD",
|
||||||
dateTimeFormat: "yyyy-MM-DD HH:mm:ss",
|
timeFormat: "HH:mm:ss",
|
||||||
arraySpilt: ", ",
|
arraySpilt: ", ",
|
||||||
personNameMode: PersonNameMode.CH_NAME
|
personNameMode: PersonNameMode.CH_NAME
|
||||||
|
|
||||||
|
|||||||
@ -243,7 +243,7 @@ export class DoubanSettingTab extends PluginSettingTab {
|
|||||||
setting.descEl.appendChild(
|
setting.descEl.appendChild(
|
||||||
createFragment((frag) => {
|
createFragment((frag) => {
|
||||||
frag.appendText(
|
frag.appendText(
|
||||||
i18nHelper.getMessage('120503')
|
i18nHelper.getMessage('120504')
|
||||||
);
|
);
|
||||||
frag.createEl('br');
|
frag.createEl('br');
|
||||||
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
frag.appendText(i18nHelper.getMessage('120506') + ' ');
|
||||||
@ -263,10 +263,10 @@ export class DoubanSettingTab extends PluginSettingTab {
|
|||||||
frag.createEl('br');
|
frag.createEl('br');
|
||||||
})
|
})
|
||||||
);
|
);
|
||||||
mf.setPlaceholder(DEFAULT_SETTINGS.dateTimeFormat);
|
mf.setPlaceholder(DEFAULT_SETTINGS.timeFormat);
|
||||||
mf.setValue(this.plugin.settings.dateTimeFormat)
|
mf.setValue(this.plugin.settings.timeFormat)
|
||||||
mf.onChange(async (value) => {
|
mf.onChange(async (value) => {
|
||||||
this.plugin.settings.dateTimeFormat = value;
|
this.plugin.settings.timeFormat = value;
|
||||||
await this.plugin.saveSettings();
|
await this.plugin.saveSettings();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@ -9,8 +9,12 @@ import DoubanSubject from 'src/douban/data/model/DoubanSubject';
|
|||||||
//TODO will support in future version
|
//TODO will support in future version
|
||||||
export default class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler<DoubanPageBroadcastSubject> {
|
export default class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler<DoubanPageBroadcastSubject> {
|
||||||
|
|
||||||
parseText(extract: DoubanNoteSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.bookTemplate ? null
|
return settings.bookTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
|
parseText(beforeContent:string, extract: DoubanNoteSubject, settings:DoubanPluginSettings): string {
|
||||||
|
return settings.bookTemplate ? null : "";
|
||||||
// settings.noteTemplate
|
// settings.noteTemplate
|
||||||
// .replaceAll("{{id}}", extract.id)
|
// .replaceAll("{{id}}", extract.id)
|
||||||
// .replaceAll("{{type}}", extract.type ? extract.type : "")
|
// .replaceAll("{{type}}", extract.type ? extract.type : "")
|
||||||
@ -23,9 +27,6 @@ export default class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHan
|
|||||||
// .replaceAll("{{url}}", extract.url ? extract.url : "")
|
// .replaceAll("{{url}}", extract.url ? extract.url : "")
|
||||||
// .replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "")
|
// .replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "")
|
||||||
// .replaceAll("{{author}}", extract.author ? extract.author : "")
|
// .replaceAll("{{author}}", extract.author ? extract.author : "")
|
||||||
|
|
||||||
|
|
||||||
: undefined;
|
|
||||||
}
|
}
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("广播") || extract.type.contains("Broadcast"));
|
return extract && extract.type && (extract.type.contains("广播") || extract.type.contains("Broadcast"));
|
||||||
|
|||||||
@ -3,7 +3,7 @@ import { DoubanPluginSettings, PersonNameMode } from "src/douban/Douban";
|
|||||||
import DoubanPlugin from "main";
|
import DoubanPlugin from "main";
|
||||||
import DoubanSubject from '../model/DoubanSubject';
|
import DoubanSubject from '../model/DoubanSubject';
|
||||||
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
||||||
import {Editor, request, requestUrl, RequestUrlParam, sanitizeHTMLToDom} from "obsidian";
|
import {Editor, moment, request, requestUrl, RequestUrlParam, sanitizeHTMLToDom} from "obsidian";
|
||||||
import { i18nHelper } from 'src/lang/helper';
|
import { i18nHelper } from 'src/lang/helper';
|
||||||
import { log } from "src/utils/Logutil";
|
import { log } from "src/utils/Logutil";
|
||||||
import {CheerioAPI, load} from "cheerio";
|
import {CheerioAPI, load} from "cheerio";
|
||||||
@ -17,7 +17,28 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
this.doubanPlugin = doubanPlugin;
|
this.doubanPlugin = doubanPlugin;
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract parseText(extract: T, settings:DoubanPluginSettings): string;
|
parse(extract: T, settings:DoubanPluginSettings): string {
|
||||||
|
let template:string = this.getTemplate(settings);
|
||||||
|
let resultContent = template ? template
|
||||||
|
.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("{{url}}", extract.url ? extract.url : "")
|
||||||
|
.replaceAll("{{score}}", extract.score ? extract.score + "": "")
|
||||||
|
.replaceAll("{{publisher}}", extract.publisher ? extract.publisher : "")
|
||||||
|
.replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "")
|
||||||
|
.replaceAll("{{timePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.timeFormat) : "")
|
||||||
|
.replaceAll("{{genre}}", extract.genre ? extract.genre.join(settings.arraySpilt) : "")
|
||||||
|
: ""
|
||||||
|
;
|
||||||
|
return this.parseText(resultContent, extract, settings);
|
||||||
|
}
|
||||||
|
|
||||||
|
abstract getTemplate(settings:DoubanPluginSettings):string;
|
||||||
|
|
||||||
|
abstract parseText(beforeContent:string, extract: T, settings:DoubanPluginSettings): string;
|
||||||
|
|
||||||
abstract support(extract: DoubanSubject): boolean;
|
abstract support(extract: DoubanSubject): boolean;
|
||||||
|
|
||||||
@ -29,7 +50,6 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
|
|||||||
throw: true
|
throw: true
|
||||||
};
|
};
|
||||||
request(requestUrlParam)
|
request(requestUrlParam)
|
||||||
.then(a => {log.trace(a.toString()); return a;})
|
|
||||||
.then(load)
|
.then(load)
|
||||||
.then(this.parseSubjectFromHtml)
|
.then(this.parseSubjectFromHtml)
|
||||||
.then(content => this.toEditor(editor, content))
|
.then(content => this.toEditor(editor, content))
|
||||||
|
|||||||
@ -9,28 +9,22 @@ 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 {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.bookTemplate ? settings.bookTemplate.replaceAll("{{id}}", extract.id)
|
return settings.bookTemplate;
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
}
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
parseText(beforeContent:string, extract: DoubanBookSubject, settings:DoubanPluginSettings): string {
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
return beforeContent
|
||||||
.replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "")
|
.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("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "")
|
.replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "")
|
||||||
.replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "")
|
.replaceAll("{{isbn}}", extract.isbn ? extract.isbn : "")
|
||||||
.replaceAll("{{publish}}", extract.publish ? extract.publish : "")
|
|
||||||
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
||||||
.replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "")
|
.replaceAll("{{subTitle}}", extract.subTitle ? extract.subTitle : "")
|
||||||
.replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "")
|
.replaceAll("{{totalPage}}", extract.totalPage ? extract.totalPage + "" : "")
|
||||||
.replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "")
|
.replaceAll("{{menu}}", extract.menu ? extract.menu.join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{price}}", extract.price ? extract.price + "" : "")
|
.replaceAll("{{price}}", extract.price ? extract.price + "" : "")
|
||||||
.replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "")
|
.replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : "");
|
||||||
|
|
||||||
: undefined;
|
|
||||||
}
|
}
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book"));
|
return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book"));
|
||||||
@ -80,7 +74,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : null,
|
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : null,
|
||||||
totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null,
|
totalWord: valueMap.has('totalWord') ? Number(valueMap.get('totalWord')) : null,
|
||||||
isbn: isbn,
|
isbn: isbn,
|
||||||
publish: valueMap.has('publish') ? valueMap.get('publish') : "",
|
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",
|
||||||
score: Number(score),
|
score: Number(score),
|
||||||
originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "",
|
originalTitle: valueMap.has('originalTitle') ? valueMap.get('originalTitle') : "",
|
||||||
subTitle: "",
|
subTitle: "",
|
||||||
@ -93,7 +87,8 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
type: "Book",
|
type: "Book",
|
||||||
title: title,
|
title: title,
|
||||||
desc: desc,
|
desc: desc,
|
||||||
url: url
|
url: url,
|
||||||
|
genre: []
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@ -104,7 +99,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
|
|
||||||
const BookKeyValueMap:Map<string, string> = new Map(
|
const BookKeyValueMap:Map<string, string> = new Map(
|
||||||
[['作者', 'author'],
|
[['作者', 'author'],
|
||||||
['出版社:', 'publish'],
|
['出版社:', 'publisher'],
|
||||||
['原作名:', 'originalTitle'],
|
['原作名:', 'originalTitle'],
|
||||||
['出版年:', 'datePublished'],
|
['出版年:', 'datePublished'],
|
||||||
['页数:', 'totalPage'],
|
['页数:', 'totalPage'],
|
||||||
|
|||||||
@ -7,24 +7,16 @@ import { moment } from "obsidian";
|
|||||||
import DoubanSubject from '../model/DoubanSubject';
|
import DoubanSubject from '../model/DoubanSubject';
|
||||||
import DoubanGameSubject from '../model/DoubanGameSubject';
|
import DoubanGameSubject from '../model/DoubanGameSubject';
|
||||||
|
|
||||||
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> {
|
export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<DoubanGameSubject> {
|
||||||
|
|
||||||
parseText(extract: DoubanGameSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id)
|
return settings.gameTemplate;
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
}
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
|
||||||
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
parseText(beforeContent:string, extract: DoubanGameSubject, settings:DoubanPluginSettings): string {
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
return beforeContent.replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : "");
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
}
|
||||||
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
|
||||||
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
|
||||||
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
|
||||||
.replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "")
|
|
||||||
.replaceAll("{{url}}", extract.url ? extract.url : "")
|
|
||||||
.replaceAll("{{score}}", extract.aggregateRating && extract.aggregateRating.ratingValue ? extract.aggregateRating.ratingValue + "" : "")
|
|
||||||
.replaceAll("{{genre}}", extract.genre ? extract.genre.join(settings.arraySpilt) : "")
|
|
||||||
|
|
||||||
: undefined; }
|
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("游戏") || extract.type.contains("Game") || extract.type.contains("game"));
|
return extract && extract.type && (extract.type.contains("游戏") || extract.type.contains("Game") || extract.type.contains("game"));
|
||||||
}
|
}
|
||||||
@ -52,22 +44,21 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
let title = titleExec?titleExec[0]:name;
|
let title = titleExec?titleExec[0]:name;
|
||||||
|
|
||||||
let originalTitleExec = /[a-zA-Z.\s\-]{2,50}/g.exec(name);
|
let originalTitleExec = /[a-zA-Z.\s\-]{2,50}/g.exec(name);
|
||||||
let originalTitle = originalTitleExec?originalTitleExec[0]:name;
|
|
||||||
|
|
||||||
const result:DoubanGameSubject = {
|
const result:DoubanGameSubject = {
|
||||||
id: id ? id[0] : '',
|
id: id ? id[0] : '',
|
||||||
type: 'Movie',
|
type: 'Game',
|
||||||
title: title,
|
title: title,
|
||||||
originalTitle: originalTitle,
|
|
||||||
desc: obj.description,
|
desc: obj.description,
|
||||||
url: "https://movie.douban.com" + obj.url,
|
url: "https://movie.douban.com" + obj.url,
|
||||||
director: obj.director,
|
|
||||||
author: obj.author,
|
|
||||||
actor: obj.actor,
|
|
||||||
aggregateRating: obj.aggregateRating,
|
|
||||||
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
||||||
image: obj.image,
|
image: obj.image,
|
||||||
genre:obj.genre
|
genre: obj.genre,
|
||||||
|
aliases: [],
|
||||||
|
developer: '',
|
||||||
|
platform: [],
|
||||||
|
score: undefined,
|
||||||
|
publisher: ''
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
})[0];
|
})[0];
|
||||||
|
|||||||
@ -9,22 +9,18 @@ import DoubanMovieSubject from '../model/DoubanMovieSubject';
|
|||||||
|
|
||||||
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {
|
export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {
|
||||||
|
|
||||||
parseText(extract: DoubanMovieSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id)
|
return settings.movieTemplate;
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
}
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
|
||||||
|
parseText(beforeContent:string, extract: DoubanMovieSubject, settings:DoubanPluginSettings): string {
|
||||||
|
return beforeContent
|
||||||
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
|
||||||
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "")
|
;
|
||||||
.replaceAll("{{url}}", extract.url ? extract.url : "")
|
}
|
||||||
.replaceAll("{{score}}", extract.aggregateRating && extract.aggregateRating.ratingValue ? extract.aggregateRating.ratingValue + "" : "")
|
|
||||||
.replaceAll("{{genre}}", extract.genre ? extract.genre.join(settings.arraySpilt) : "")
|
|
||||||
|
|
||||||
: undefined; }
|
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("电影") || extract.type.contains("Movie") || extract.type.contains("movie"));
|
return extract && extract.type && (extract.type.contains("电影") || extract.type.contains("Movie") || extract.type.contains("movie"));
|
||||||
}
|
}
|
||||||
@ -56,8 +52,9 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
|
|
||||||
const result:DoubanMovieSubject = {
|
const result:DoubanMovieSubject = {
|
||||||
id: id ? id[0] : '',
|
id: id ? id[0] : '',
|
||||||
type: 'Movie',
|
|
||||||
title: title,
|
title: title,
|
||||||
|
type: 'Movie',
|
||||||
|
score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined,
|
||||||
originalTitle: originalTitle,
|
originalTitle: originalTitle,
|
||||||
desc: obj.description,
|
desc: obj.description,
|
||||||
url: "https://movie.douban.com" + obj.url,
|
url: "https://movie.douban.com" + obj.url,
|
||||||
@ -67,7 +64,8 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
aggregateRating: obj.aggregateRating,
|
aggregateRating: obj.aggregateRating,
|
||||||
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
||||||
image: obj.image,
|
image: obj.image,
|
||||||
genre:obj.genre
|
genre: obj.genre,
|
||||||
|
publisher: ''
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
})[0];
|
})[0];
|
||||||
|
|||||||
@ -8,24 +8,18 @@ import DoubanSubject from '../model/DoubanSubject';
|
|||||||
|
|
||||||
export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> {
|
export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<DoubanMusicSubject> {
|
||||||
|
|
||||||
parseText(extract: DoubanMusicSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.bookTemplate ? settings.musicTemplate
|
return settings.musicTemplate;
|
||||||
.replaceAll("{{id}}", extract.id)
|
}
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
parseText(beforeContent:string, extract: DoubanMusicSubject, settings:DoubanPluginSettings): string {
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
return beforeContent
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
|
||||||
.replaceAll("{{actor}}", extract.actor ? extract.actor.join(settings.arraySpilt) : "")
|
.replaceAll("{{actor}}", extract.actor ? extract.actor.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("{{barcode}}", extract.barcode ? extract.barcode : "")
|
.replaceAll("{{barcode}}", extract.barcode ? extract.barcode : "")
|
||||||
.replaceAll("{{publish}}", extract.publish ? extract.publish : "")
|
|
||||||
.replaceAll("{{genre}}", extract.genre ? extract.genre : "")
|
|
||||||
.replaceAll("{{medium}}", extract.medium ? extract.medium : "")
|
.replaceAll("{{medium}}", extract.medium ? extract.medium : "")
|
||||||
.replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "")
|
.replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "")
|
||||||
.replaceAll("{{numberOfRecords}}", extract.numberOfRecords ? extract.numberOfRecords + "" : "")
|
.replaceAll("{{numberOfRecords}}", extract.numberOfRecords ? extract.numberOfRecords + "" : "")
|
||||||
: undefined;
|
;
|
||||||
}
|
}
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("音乐") || extract.type.contains("Music") || extract.type.contains("music"));
|
return extract && extract.type && (extract.type.contains("音乐") || extract.type.contains("Music") || extract.type.contains("music"));
|
||||||
@ -70,7 +64,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
const result:DoubanMusicSubject = {
|
const result:DoubanMusicSubject = {
|
||||||
image: image,
|
image: image,
|
||||||
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : null,
|
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : null,
|
||||||
publish: valueMap.has('publish') ? valueMap.get('publish') : "",
|
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",
|
||||||
score: Number(score),
|
score: Number(score),
|
||||||
numberOfRecords: valueMap.has('numberOfRecords') ? Number(valueMap.get('numberOfRecords')) : null,
|
numberOfRecords: valueMap.has('numberOfRecords') ? Number(valueMap.get('numberOfRecords')) : null,
|
||||||
id: id ? id[0] : "",
|
id: id ? id[0] : "",
|
||||||
@ -79,7 +73,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
|
|||||||
desc: desc,
|
desc: desc,
|
||||||
url: url,
|
url: url,
|
||||||
actor: [valueMap.has('actor') ? valueMap.get('actor') : null],
|
actor: [valueMap.has('actor') ? valueMap.get('actor') : null],
|
||||||
genre: valueMap.has('genre') ? valueMap.get('genre') : "",
|
genre: valueMap.has('genre') ? [valueMap.get('genre')] : [""],
|
||||||
albumType: valueMap.has('albumType') ? valueMap.get('albumType') : "",
|
albumType: valueMap.has('albumType') ? valueMap.get('albumType') : "",
|
||||||
medium: valueMap.has('medium') ? valueMap.get('medium') : "",
|
medium: valueMap.has('medium') ? valueMap.get('medium') : "",
|
||||||
barcode: valueMap.has('barcode') ? valueMap.get('barcode') : ""
|
barcode: valueMap.has('barcode') ? valueMap.get('barcode') : ""
|
||||||
@ -97,7 +91,7 @@ const BookKeyValueMap:Map<string, string> = new Map(
|
|||||||
['发行时间:', 'datePublished'],
|
['发行时间:', 'datePublished'],
|
||||||
['专辑类型:', 'albumType'],
|
['专辑类型:', 'albumType'],
|
||||||
['介质:', 'medium'],
|
['介质:', 'medium'],
|
||||||
['出版者:', 'publish'],
|
['出版者:', 'publisher'],
|
||||||
['唱片数:', 'numberOfRecords'],
|
['唱片数:', 'numberOfRecords'],
|
||||||
['条形码:', 'barcode']]
|
['条形码:', 'barcode']]
|
||||||
);
|
);
|
||||||
|
|||||||
@ -9,22 +9,16 @@ import { moment } from "obsidian";
|
|||||||
|
|
||||||
export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<DoubanNoteSubject> {
|
export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<DoubanNoteSubject> {
|
||||||
|
|
||||||
parseText(extract: DoubanNoteSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
return settings.bookTemplate ? settings.noteTemplate
|
return settings.noteTemplate;
|
||||||
.replaceAll("{{id}}", extract.id)
|
}
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
parseText(beforeContent:string, extract: DoubanNoteSubject, settings:DoubanPluginSettings): string {
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
return beforeContent
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
|
||||||
.replaceAll("{{timePublished}}", extract.timePublished ? moment(extract.timePublished).format(settings.dateTimeFormat) : "")
|
|
||||||
.replaceAll("{{url}}", extract.url ? extract.url : "")
|
|
||||||
.replaceAll("{{content}}", extract.content ? extract.content : "")
|
|
||||||
.replaceAll("{{url}}", extract.url ? extract.url : "")
|
|
||||||
.replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "")
|
.replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "")
|
||||||
|
.replaceAll("{{content}}", extract.content ? extract.content : "")
|
||||||
.replaceAll("{{author}}", extract.author ? extract.author : "")
|
.replaceAll("{{author}}", extract.author ? extract.author : "")
|
||||||
|
;
|
||||||
|
|
||||||
: undefined;
|
|
||||||
}
|
}
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("日记") || extract.type.contains("Note") || extract.type.contains("Article"));
|
return extract && extract.type && (extract.type.contains("日记") || extract.type.contains("Note") || extract.type.contains("Article"));
|
||||||
@ -52,7 +46,7 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
|
|
||||||
const result:DoubanNoteSubject = {
|
const result:DoubanNoteSubject = {
|
||||||
image: image,
|
image: image,
|
||||||
timePublished: timePublished ? new Date(timePublished) : null,
|
datePublished: timePublished ? new Date(timePublished) : null,
|
||||||
content: content ? html2markdown(content.toString()) : "",
|
content: content ? html2markdown(content.toString()) : "",
|
||||||
id: id ? id[0] : "",
|
id: id ? id[0] : "",
|
||||||
type: "Article",
|
type: "Article",
|
||||||
@ -61,6 +55,9 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
|
|||||||
url: url,
|
url: url,
|
||||||
author: authorA ? authorA.text() : null,
|
author: authorA ? authorA.text() : null,
|
||||||
authorUrl: authorA ? authorA.attr("href") : null,
|
authorUrl: authorA ? authorA.attr("href") : null,
|
||||||
|
score: 0,
|
||||||
|
publisher: '',
|
||||||
|
genre: []
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -11,7 +11,10 @@ import { log } from "src/utils/Logutil";
|
|||||||
* 默认的处理器
|
* 默认的处理器
|
||||||
*/
|
*/
|
||||||
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
|
export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<DoubanSubject> {
|
||||||
parseText(extract: DoubanSubject, settings:DoubanPluginSettings): string {
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
parseText(beforeContent:string, extract: DoubanSubject, settings:DoubanPluginSettings): string {
|
||||||
log.warn(i18nHelper.getMessage('140101'));
|
log.warn(i18nHelper.getMessage('140101'));
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,6 +10,7 @@ import { DoubanPluginSettings } from "src/douban/Douban";
|
|||||||
import DoubanSubject from "../model/DoubanSubject";
|
import DoubanSubject from "../model/DoubanSubject";
|
||||||
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler";
|
||||||
import { DoubanTeleplayLoadHandler } from "./DoubanTeleplayLoadHandler";
|
import { DoubanTeleplayLoadHandler } from "./DoubanTeleplayLoadHandler";
|
||||||
|
import DoubanGameLoadHandler from "./DoubanGameLoadHandler";
|
||||||
|
|
||||||
export class DoubanSearchChooseItemHandler {
|
export class DoubanSearchChooseItemHandler {
|
||||||
|
|
||||||
@ -28,6 +29,7 @@ export class DoubanSearchChooseItemHandler {
|
|||||||
new DoubanTeleplayLoadHandler(doubanPlugin),
|
new DoubanTeleplayLoadHandler(doubanPlugin),
|
||||||
new DoubanMusicLoadHandler(doubanPlugin),
|
new DoubanMusicLoadHandler(doubanPlugin),
|
||||||
new DoubanNoteLoadHandler(doubanPlugin),
|
new DoubanNoteLoadHandler(doubanPlugin),
|
||||||
|
new DoubanGameLoadHandler(doubanPlugin),
|
||||||
|
|
||||||
this._doubanSubjectHandlerDefault];
|
this._doubanSubjectHandlerDefault];
|
||||||
|
|
||||||
@ -53,14 +55,14 @@ export class DoubanSearchChooseItemHandler {
|
|||||||
let doubanSubjectHandlers:DoubanSubjectLoadHandler<DoubanSubject>[] = this._doubanSubjectHandlers
|
let doubanSubjectHandlers:DoubanSubjectLoadHandler<DoubanSubject>[] = this._doubanSubjectHandlers
|
||||||
.filter(h => h.support(extract));
|
.filter(h => h.support(extract));
|
||||||
if(doubanSubjectHandlers && doubanSubjectHandlers.length > 0) {
|
if(doubanSubjectHandlers && doubanSubjectHandlers.length > 0) {
|
||||||
let result = doubanSubjectHandlers.map(h => h.parseText(extract, settings));
|
let result = doubanSubjectHandlers.map(h => h.parse(extract, settings));
|
||||||
if(result && result.length > 0) {
|
if(result && result.length > 0) {
|
||||||
return result[0];
|
return result[0];
|
||||||
}else {
|
}else {
|
||||||
return "";
|
return "";
|
||||||
}
|
}
|
||||||
}else {
|
}else {
|
||||||
return this._doubanSubjectHandlerDefault.parseText(extract, settings);
|
return this._doubanSubjectHandlerDefault.parse(extract, settings);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -4,7 +4,7 @@ import { Editor } from "obsidian";
|
|||||||
|
|
||||||
export default interface DoubanSubjectLoadHandler<T extends DoubanSubject> {
|
export default interface DoubanSubjectLoadHandler<T extends DoubanSubject> {
|
||||||
|
|
||||||
parseText(extract: T, settings:DoubanPluginSettings): string;
|
parse(extract: T, settings:DoubanPluginSettings): string;
|
||||||
|
|
||||||
support(extract:DoubanSubject):boolean;
|
support(extract:DoubanSubject):boolean;
|
||||||
|
|
||||||
|
|||||||
@ -12,29 +12,22 @@ import { moment } from "obsidian";
|
|||||||
*/
|
*/
|
||||||
export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanTeleplaySubject>{
|
export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanTeleplaySubject>{
|
||||||
|
|
||||||
|
getTemplate(settings: DoubanPluginSettings): string {
|
||||||
|
return settings.movieTemplate;
|
||||||
|
}
|
||||||
|
|
||||||
constructor(doubanPlugin:DoubanPlugin) {
|
constructor(doubanPlugin:DoubanPlugin) {
|
||||||
super(doubanPlugin);
|
super(doubanPlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
parseText(extract: DoubanTeleplaySubject, settings:DoubanPluginSettings): string {
|
parseText(beforeContent:string, extract: DoubanTeleplaySubject, settings:DoubanPluginSettings): string {
|
||||||
return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id)
|
return beforeContent
|
||||||
.replaceAll("{{type}}", extract.type ? extract.type : "")
|
|
||||||
.replaceAll("{{title}}", extract.title ? extract.title : "")
|
|
||||||
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
|
||||||
.replaceAll("{{desc}}", extract.desc ? extract.desc : "")
|
|
||||||
.replaceAll("{{image}}", extract.image ? extract.image : "")
|
|
||||||
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
|
||||||
.replaceAll("{{datePublished}}", extract.datePublished ? moment(extract.datePublished).format(settings.dateFormat) : "")
|
}
|
||||||
.replaceAll("{{url}}", extract.url ? extract.url : "")
|
|
||||||
.replaceAll("{{score}}", extract.aggregateRating && extract.aggregateRating.ratingValue ? extract.aggregateRating.ratingValue + "" : "")
|
|
||||||
.replaceAll("{{genre}}", extract.genre ? extract.genre.join(settings.arraySpilt) : "")
|
|
||||||
|
|
||||||
: undefined; }
|
|
||||||
|
|
||||||
support(extract: DoubanSubject): boolean {
|
support(extract: DoubanSubject): boolean {
|
||||||
return extract && extract.type && (extract.type.contains("电视剧") || extract.type.contains("Teleplay") || extract.type.contains("teleplay"));
|
return extract && extract.type && (extract.type.contains("电视剧") || extract.type.contains("Teleplay") || extract.type.contains("teleplay"));
|
||||||
@ -71,7 +64,9 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
|
|||||||
aggregateRating: obj.aggregateRating,
|
aggregateRating: obj.aggregateRating,
|
||||||
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
|
||||||
image: obj.image,
|
image: obj.image,
|
||||||
genre:obj.genre
|
genre: obj.genre,
|
||||||
|
score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined,
|
||||||
|
publisher: ""
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
})[0];
|
})[0];
|
||||||
|
|||||||
@ -6,12 +6,8 @@ export default class DoubanBookSubject extends DoubanSubject {
|
|||||||
author:string[];
|
author:string[];
|
||||||
translator:string[];
|
translator:string[];
|
||||||
bookType:string;
|
bookType:string;
|
||||||
image:string;
|
|
||||||
datePublished:Date;
|
|
||||||
totalWord:number;
|
totalWord:number;
|
||||||
isbn:string;
|
isbn:string;
|
||||||
publish:string;
|
|
||||||
score:number;
|
|
||||||
originalTitle:string;
|
originalTitle:string;
|
||||||
subTitle:string;
|
subTitle:string;
|
||||||
totalPage:number
|
totalPage:number
|
||||||
|
|||||||
@ -1,15 +1,10 @@
|
|||||||
import {AggregateRating, Person} from 'schema-dts';
|
import {AggregateRating, Person} from 'schema-dts';
|
||||||
|
import DoubanSubject from './DoubanSubject';
|
||||||
|
|
||||||
import DoubanSubject from "./DoubanSubject";
|
|
||||||
|
|
||||||
export default class DoubanGameSubject extends DoubanSubject {
|
export default class DoubanGameSubject extends DoubanSubject {
|
||||||
director:Person[];
|
aliases:string[];
|
||||||
author:Person[];
|
developer:string;
|
||||||
actor:Person[];
|
platform:string[];
|
||||||
aggregateRating:AggregateRating;
|
|
||||||
datePublished:Date;
|
|
||||||
image:string;
|
|
||||||
genre:string[];
|
genre:string[];
|
||||||
originalTitle:string;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,8 +7,6 @@ export default class DoubanMovieSubject extends DoubanSubject {
|
|||||||
author:Person[];
|
author:Person[];
|
||||||
actor:Person[];
|
actor:Person[];
|
||||||
aggregateRating:AggregateRating;
|
aggregateRating:AggregateRating;
|
||||||
datePublished:Date;
|
|
||||||
image:string;
|
|
||||||
genre:string[];
|
genre:string[];
|
||||||
originalTitle:string;
|
originalTitle:string;
|
||||||
|
|
||||||
|
|||||||
@ -4,13 +4,8 @@ import DoubanSubject from "./DoubanSubject";
|
|||||||
|
|
||||||
export default class DoubanMusicSubject extends DoubanSubject {
|
export default class DoubanMusicSubject extends DoubanSubject {
|
||||||
actor:string[];
|
actor:string[];
|
||||||
datePublished:Date;
|
|
||||||
image:string;
|
|
||||||
genre:string;
|
|
||||||
albumType:string;
|
albumType:string;
|
||||||
medium:string;
|
medium:string;
|
||||||
publish:string;
|
|
||||||
numberOfRecords:number;
|
numberOfRecords:number;
|
||||||
barcode:string;
|
barcode:string;
|
||||||
score:number;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -5,7 +5,5 @@ import DoubanSubject from "./DoubanSubject";
|
|||||||
export default class DoubanNoteSubject extends DoubanSubject {
|
export default class DoubanNoteSubject extends DoubanSubject {
|
||||||
author:string;
|
author:string;
|
||||||
authorUrl:string;
|
authorUrl:string;
|
||||||
timePublished:Date;
|
|
||||||
image:string;
|
|
||||||
content:string;
|
content:string;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
import DoubanSubject from "./DoubanSubject";
|
import DoubanSubject from "./DoubanSubject";
|
||||||
|
|
||||||
export default class DoubanSearchResultSubject extends DoubanSubject {
|
export default class DoubanSearchResultSubject extends DoubanSubject {
|
||||||
score:string;
|
|
||||||
cast:string;
|
cast:string;
|
||||||
}
|
}
|
||||||
@ -1,7 +1,12 @@
|
|||||||
export default class DoubanExtract {
|
export default class DoubanExtract {
|
||||||
id: string;
|
id: string;
|
||||||
type: string;
|
|
||||||
title: string;
|
title: string;
|
||||||
desc: string;
|
type: string;
|
||||||
|
score:number;
|
||||||
|
image:string;
|
||||||
url: string;
|
url: string;
|
||||||
|
desc: string;
|
||||||
|
publisher:string;
|
||||||
|
datePublished:Date;
|
||||||
|
genre:string[];
|
||||||
}
|
}
|
||||||
|
|||||||
@ -13,14 +13,19 @@ export default class SearchParserHandler {
|
|||||||
let ececResult = idPattern.exec(linkValue);
|
let ececResult = idPattern.exec(linkValue);
|
||||||
let urlResult = urlPattern.exec(linkValue);
|
let urlResult = urlPattern.exec(linkValue);
|
||||||
let cast = item.find(".subject-cast").text();
|
let cast = item.find(".subject-cast").text();
|
||||||
|
let score = item.find(".rating_nums").text();
|
||||||
const result:DoubanSearchResultSubject = {
|
const result:DoubanSearchResultSubject = {
|
||||||
id: ececResult ? ececResult[0] : '',
|
id: ececResult ? ececResult[0] : '',
|
||||||
title: item.find("div.content > div > h3 > a").text(),
|
title: item.find("div.content > div > h3 > a").text(),
|
||||||
score: item.find(".rating_nums").text(),
|
score: score ? Number(score) : null,
|
||||||
cast: cast,
|
cast: cast,
|
||||||
type: item.find("div.content > div > h3 > span").text(),
|
type: item.find("div.content > div > h3 > span").text(),
|
||||||
desc: item.find("div.content > p").text(),
|
desc: item.find("div.content > p").text(),
|
||||||
url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com',
|
url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com',
|
||||||
|
image: "",
|
||||||
|
publisher: "",
|
||||||
|
datePublished: undefined,
|
||||||
|
genre: []
|
||||||
};
|
};
|
||||||
return result;
|
return result;
|
||||||
})
|
})
|
||||||
|
|||||||
@ -20,39 +20,39 @@ export default {
|
|||||||
'120101': `Movie Content Template`,
|
'120101': `Movie Content Template`,
|
||||||
'120102': `Set markdown Movie template for extract to be inserted.`,
|
'120102': `Set markdown Movie template for extract to be inserted.`,
|
||||||
'120103': `Available template variables are :`,
|
'120103': `Available template variables are :`,
|
||||||
'120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
|
'120104': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`,
|
||||||
'120105': `{{score}}, {{datePublished}}, {{director}},`,
|
'120105': `{{url}}, {{desc}}, {{datePublished}}, {{genre}}, `,
|
||||||
'120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
|
'120106': `{{originalTitle}},{{director}}, {{author}},`,
|
||||||
'120107': `{{image}}, {{url}}`,
|
'120107': ` {{actor}}`,
|
||||||
|
|
||||||
'120201': `Book Content Template`,
|
'120201': `Book Content Template`,
|
||||||
'120202': `Set markdown Book template for extract to be inserted.`,
|
'120202': `Set markdown Book template for extract to be inserted.`,
|
||||||
'120203': `Available Book template variables are :`,
|
'120203': `Available Book template variables are :`,
|
||||||
'120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
|
'120204': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`,
|
||||||
'120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
|
'120205': `{{url}}, {{desc}}, {{datePublished}}, {{publisher}}`,
|
||||||
'120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
|
'120206': `{{originalTitle}}, {{subTitle}}, {{author}},`,
|
||||||
'120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
|
'120207': `{{translator}}, {{isbn}}, {{price}}, {{totalPage}}`,
|
||||||
|
|
||||||
'120301': `Music Content Template`,
|
'120301': `Music Content Template`,
|
||||||
'120302': `Set markdown Music template for extract to be inserted.`,
|
'120302': `Set markdown Music template for extract to be inserted.`,
|
||||||
'120303': `Available Music template variables are :`,
|
'120303': `Available Music template variables are :`,
|
||||||
'120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
|
'120304': `{{id}}, {{title}}, {{type}}, {{image}},`,
|
||||||
'120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
|
'120305': `{{url}}, {{desc}}, {{datePublished}}`,
|
||||||
'120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
|
'120306': `{{genre}}, {{actor}}, {{medium}}, {{albumType}},`,
|
||||||
'120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
|
'120307': `{{barcode}}, {{numberOfRecords}}`,
|
||||||
|
|
||||||
'120401': `Article Content Template`,
|
'120401': `Article Content Template`,
|
||||||
'120402': `Set markdown Article template for extract to be inserted.`,
|
'120402': `Set markdown Article template for extract to be inserted.`,
|
||||||
'120403': `Available Article template variables are :`,
|
'120403': `Available Article template variables are :`,
|
||||||
'120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
|
'120404': `{{id}}, {{title}}, {{type}}, {{image}},`,
|
||||||
'120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
|
'120405': `{{url}}, {{desc}}, {{datePublished}}`,
|
||||||
'120406': `{{content}}`,
|
'120406': `{{author}}, {{authorUrl}}, {{content}}`,
|
||||||
|
|
||||||
'120501': `Date Format`,
|
'120501': `Date Format`,
|
||||||
'120502': `DateTime Format`,
|
'120502': `Time Format`,
|
||||||
|
|
||||||
'120503': `This format will be used when available template variables contain date.`,
|
'120503': `This format will be used when available template variables contain date.`,
|
||||||
'120504': `This format will be used when available template variables contain dateTime.`,
|
'120504': `This format will be used when available template variables contain time.`,
|
||||||
|
|
||||||
'120506': `For more syntax, refer to`,
|
'120506': `For more syntax, refer to`,
|
||||||
'120507': `Your current syntax looks like this`,
|
'120507': `Your current syntax looks like this`,
|
||||||
'120508': `format reference`,
|
'120508': `format reference`,
|
||||||
|
|||||||
@ -20,38 +20,38 @@ export default {
|
|||||||
'120101': `电影文本模板`,
|
'120101': `电影文本模板`,
|
||||||
'120102': `设置选择电影后导入的文本内容模板,`,
|
'120102': `设置选择电影后导入的文本内容模板,`,
|
||||||
'120103': `支持以下参数名称 :`,
|
'120103': `支持以下参数名称 :`,
|
||||||
'120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`,
|
'120104': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`,
|
||||||
'120105': `{{score}}, {{datePublished}}, {{director}},`,
|
'120105': `{{url}}, {{desc}}, {{datePublished}}, {{genre}}, `,
|
||||||
'120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`,
|
'120106': `{{originalTitle}},{{director}}, {{author}},`,
|
||||||
'120107': `{{image}}, {{url}}`,
|
'120107': ` {{actor}}`,
|
||||||
|
|
||||||
'120201': `书籍文本模板`,
|
'120201': `书籍文本模板`,
|
||||||
'120202': `设置选择书籍后导入的文本内容模板,`,
|
'120202': `设置选择书籍后导入的文本内容模板,`,
|
||||||
'120203': `支持以下参数名称 :`,
|
'120203': `支持以下参数名称 :`,
|
||||||
'120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`,
|
'120204': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`,
|
||||||
'120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`,
|
'120205': `{{url}}, {{desc}}, {{datePublished}}, {{publisher}}`,
|
||||||
'120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`,
|
'120206': `{{originalTitle}}, {{subTitle}}, {{author}},`,
|
||||||
'120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`,
|
'120207': `{{translator}}, {{isbn}}, {{price}}, {{totalPage}}`,
|
||||||
|
|
||||||
'120301': `音乐文本模板`,
|
'120301': `音乐文本模板`,
|
||||||
'120302': `设置选择音乐后导入的文本内容模板,`,
|
'120302': `设置选择音乐后导入的文本内容模板,`,
|
||||||
'120303': `支持以下参数名称 :`,
|
'120303': `支持以下参数名称 :`,
|
||||||
'120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`,
|
'120304': `{{id}}, {{title}}, {{type}}, {{image}},`,
|
||||||
'120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`,
|
'120305': `{{url}}, {{desc}}, {{datePublished}}`,
|
||||||
'120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`,
|
'120306': `{{genre}}, {{actor}}, {{medium}}, {{albumType}},`,
|
||||||
'120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`,
|
'120307': `{{barcode}}, {{numberOfRecords}}`,
|
||||||
|
|
||||||
'120401': `日记文本模板`,
|
'120401': `日记文本模板`,
|
||||||
'120402': `设置选择日记后导入的文本内容模板,`,
|
'120402': `设置选择日记后导入的文本内容模板,`,
|
||||||
'120403': `支持以下参数名称 :`,
|
'120403': `支持以下参数名称 :`,
|
||||||
'120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`,
|
'120404': `{{id}}, {{title}}, {{type}}, {{image}},`,
|
||||||
'120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`,
|
'120405': `{{url}}, {{desc}}, {{datePublished}}`,
|
||||||
'120406': `{{content}}`,
|
'120406': `{{author}}, {{authorUrl}}, {{content}}`,
|
||||||
|
|
||||||
|
|
||||||
'120501': `参数日期格式`,
|
'120501': `日期格式`,
|
||||||
'120503': `这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`,
|
'120503': `这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`,
|
||||||
'120502': `参数时间格式`,
|
'120502': `时间格式`,
|
||||||
'120504': `这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`,
|
'120504': `这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`,
|
||||||
'120506': `详细介绍请参考`,
|
'120506': `详细介绍请参考`,
|
||||||
'120507': `时间参数时间格式预览`,
|
'120507': `时间参数时间格式预览`,
|
||||||
|
|||||||
@ -27,7 +27,7 @@ class Logger {
|
|||||||
|
|
||||||
public traceN(notion:string, e:any):any {
|
public traceN(notion:string, e:any):any {
|
||||||
// return e;
|
// return e;
|
||||||
// console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`);
|
console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`);
|
||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user