diff --git a/main.ts b/main.ts index 37e295e..cf40a8c 100644 --- a/main.ts +++ b/main.ts @@ -65,13 +65,13 @@ export default class DoubanPlugin extends Plugin { editorCallback: (editor: Editor) => this.geDoubanTextForSearchTerm(editor), }); - - this.addCommand({ - id: "sync-douban-broadcast-by-user-id", - name: i18nHelper.getMessage('110006'), - editorCallback: (editor: Editor) => - this.geDoubanTextForSearchTerm(editor), - }); +//TODO will support in future + // this.addCommand({ + // id: "sync-douban-broadcast-by-user-id", + // name: i18nHelper.getMessage('110006'), + // editorCallback: (editor: Editor) => + // this.geDoubanTextForSearchTerm(editor), + // }); this.addSettingTab(new DoubanSettingTab(this.app, this)); } diff --git a/src/douban/Douban.ts b/src/douban/Douban.ts index c6b1182..7262181 100644 --- a/src/douban/Douban.ts +++ b/src/douban/Douban.ts @@ -5,10 +5,11 @@ export interface DoubanPluginSettings { movieTemplate:string, bookTemplate:string, musicTemplate:string, - noteTemplate:string + noteTemplate:string, + gameTemplate:string, dateFormat:string, - dateTimeFormat:string, - searchUrl:string, + timeFormat:string, + searchUrl:string, arraySpilt:string, searchHeaders?:string, personNameMode:PersonNameMode, @@ -29,9 +30,80 @@ export const doubanHeadrs = { export const DEFAULT_SETTINGS:DoubanPluginSettings = { movieTemplate: +` +![image]({{image}}) + +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: +`![image|150]({{image}}) + +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: +` +![image|150]({{image}}) + +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}} title: {{title}} +type: {{type}} +author: [{{author}}]({{authorUrl}}) +dateTimePublished: {{datePublished}} {{timePublished}} +url: {{url}} +tags: Article +desc: {{desc}} +--- + +{{content}} +`, + gameTemplate: + `![image]({{image}}) +doubanId: {{id}} +title: {{title}} originalTitle: {{originalTitle}} type: {{type}} score: {{score}} @@ -42,75 +114,14 @@ actor: {{actor}} author: {{author}} url: {{url}} desc: {{desc}} ---- - -![image]({{image}}) -`, - 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}} ---- - -![image|150]({{image}}) -`, - 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}} ---- - -![image|150]({{image}}) -`, -noteTemplate: -`--- -doubanId: {{id}} -title: {{title}} -type: {{type}} -author: [{{author}}]({{authorUrl}}) -timePublished: {{timePublished}} -url: {{url}} -tags: Article -desc: {{desc}} ---- - -- content -{{content}} `, // totalWord: {{totalWord}} searchUrl: 'https://www.douban.com/search?q=', searchHeaders: JSON.stringify(doubanHeadrs), dateFormat: "yyyy-MM-DD", - dateTimeFormat: "yyyy-MM-DD HH:mm:ss", - arraySpilt: ", ", + timeFormat: "HH:mm:ss", + arraySpilt: ", ", personNameMode: PersonNameMode.CH_NAME } diff --git a/src/douban/DoubanSettingTab.ts b/src/douban/DoubanSettingTab.ts index 5deb6e5..0db854e 100644 --- a/src/douban/DoubanSettingTab.ts +++ b/src/douban/DoubanSettingTab.ts @@ -243,7 +243,7 @@ export class DoubanSettingTab extends PluginSettingTab { setting.descEl.appendChild( createFragment((frag) => { frag.appendText( - i18nHelper.getMessage('120503') + i18nHelper.getMessage('120504') ); frag.createEl('br'); frag.appendText(i18nHelper.getMessage('120506') + ' '); @@ -263,10 +263,10 @@ export class DoubanSettingTab extends PluginSettingTab { frag.createEl('br'); }) ); - mf.setPlaceholder(DEFAULT_SETTINGS.dateTimeFormat); - mf.setValue(this.plugin.settings.dateTimeFormat) + mf.setPlaceholder(DEFAULT_SETTINGS.timeFormat); + mf.setValue(this.plugin.settings.timeFormat) mf.onChange(async (value) => { - this.plugin.settings.dateTimeFormat = value; + this.plugin.settings.timeFormat = value; await this.plugin.saveSettings(); }); diff --git a/src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts b/src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts index 3440f6b..3ae767a 100644 --- a/src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts +++ b/src/douban/broadcast/handler/DoubanPageBroadcatLoadHandler.ts @@ -9,8 +9,12 @@ import DoubanSubject from 'src/douban/data/model/DoubanSubject'; //TODO will support in future version export default class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanNoteSubject, settings:DoubanPluginSettings): string { - return settings.bookTemplate ? null + getTemplate(settings: DoubanPluginSettings): string { + return settings.bookTemplate; + } + + parseText(beforeContent:string, extract: DoubanNoteSubject, settings:DoubanPluginSettings): string { + return settings.bookTemplate ? null : ""; // settings.noteTemplate // .replaceAll("{{id}}", extract.id) // .replaceAll("{{type}}", extract.type ? extract.type : "") @@ -23,9 +27,6 @@ export default class DoubanPageBroadcatLoadHandler extends DoubanAbstractLoadHan // .replaceAll("{{url}}", extract.url ? extract.url : "") // .replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "") // .replaceAll("{{author}}", extract.author ? extract.author : "") - - - : undefined; } support(extract: DoubanSubject): boolean { return extract && extract.type && (extract.type.contains("广播") || extract.type.contains("Broadcast")); diff --git a/src/douban/data/handler/DoubanAbstractLoadHandler.ts b/src/douban/data/handler/DoubanAbstractLoadHandler.ts index 4e54f32..96b5003 100644 --- a/src/douban/data/handler/DoubanAbstractLoadHandler.ts +++ b/src/douban/data/handler/DoubanAbstractLoadHandler.ts @@ -3,7 +3,7 @@ import { DoubanPluginSettings, PersonNameMode } from "src/douban/Douban"; import DoubanPlugin from "main"; import DoubanSubject from '../model/DoubanSubject'; 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 { log } from "src/utils/Logutil"; import {CheerioAPI, load} from "cheerio"; @@ -17,7 +17,28 @@ export default abstract class DoubanAbstractLoadHandler 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; @@ -29,7 +50,6 @@ export default abstract class DoubanAbstractLoadHandler throw: true }; request(requestUrlParam) - .then(a => {log.trace(a.toString()); return a;}) .then(load) .then(this.parseSubjectFromHtml) .then(content => this.toEditor(editor, content)) diff --git a/src/douban/data/handler/DoubanBookLoadHandler.ts b/src/douban/data/handler/DoubanBookLoadHandler.ts index e9f8fad..7c629e0 100644 --- a/src/douban/data/handler/DoubanBookLoadHandler.ts +++ b/src/douban/data/handler/DoubanBookLoadHandler.ts @@ -9,28 +9,22 @@ 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) : "") + getTemplate(settings: DoubanPluginSettings): string { + return settings.bookTemplate; + } + + parseText(beforeContent:string, extract: DoubanBookSubject, settings:DoubanPluginSettings): string { + return beforeContent + .replaceAll("{{author}}", extract.author ? extract.author.join(settings.arraySpilt) : "") + .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; + .replaceAll("{{labels}}", extract.labels ? extract.labels.join(settings.arraySpilt) : ""); } support(extract: DoubanSubject): boolean { return extract && extract.type && (extract.type.contains("书籍") || extract.type.contains("Book") || extract.type.contains("book")); @@ -73,28 +67,29 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler = new Map( [['作者', 'author'], - ['出版社:', 'publish'], + ['出版社:', 'publisher'], ['原作名:', 'originalTitle'], ['出版年:', 'datePublished'], ['页数:', 'totalPage'], diff --git a/src/douban/data/handler/DoubanGameLoadHandler.ts b/src/douban/data/handler/DoubanGameLoadHandler.ts index 348d08b..1ccd7e6 100644 --- a/src/douban/data/handler/DoubanGameLoadHandler.ts +++ b/src/douban/data/handler/DoubanGameLoadHandler.ts @@ -7,24 +7,16 @@ import { moment } from "obsidian"; import DoubanSubject from '../model/DoubanSubject'; import DoubanGameSubject from '../model/DoubanGameSubject'; -export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler { +export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanGameSubject, settings:DoubanPluginSettings): string { - return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id) - .replaceAll("{{type}}", extract.type ? extract.type : "") - .replaceAll("{{title}}", extract.title ? extract.title : "") - .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("{{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) : "") + getTemplate(settings: DoubanPluginSettings): string { + return settings.gameTemplate; + } + + parseText(beforeContent:string, extract: DoubanGameSubject, settings:DoubanPluginSettings): string { + return beforeContent.replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : ""); + } - : undefined; } support(extract: DoubanSubject): boolean { return extract && extract.type && (extract.type.contains("游戏") || extract.type.contains("Game") || extract.type.contains("game")); } @@ -52,23 +44,22 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanMovieSubject, settings:DoubanPluginSettings): string { - return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id) - .replaceAll("{{type}}", extract.type ? extract.type : "") - .replaceAll("{{title}}", extract.title ? extract.title : "") + getTemplate(settings: DoubanPluginSettings): string { + return settings.movieTemplate; + } + + parseText(beforeContent:string, extract: DoubanMovieSubject, settings:DoubanPluginSettings): string { + return beforeContent .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("{{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 { return extract && extract.type && (extract.type.contains("电影") || extract.type.contains("Movie") || extract.type.contains("movie")); } @@ -55,20 +51,22 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanMusicSubject, settings:DoubanPluginSettings): string { - return settings.bookTemplate ? settings.musicTemplate - .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 : "") + getTemplate(settings: DoubanPluginSettings): string { + return settings.musicTemplate; + } + + parseText(beforeContent:string, extract: DoubanMusicSubject, settings:DoubanPluginSettings): string { + return beforeContent .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("{{publish}}", extract.publish ? extract.publish : "") - .replaceAll("{{genre}}", extract.genre ? extract.genre : "") .replaceAll("{{medium}}", extract.medium ? extract.medium : "") .replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "") .replaceAll("{{numberOfRecords}}", extract.numberOfRecords ? extract.numberOfRecords + "" : "") - : undefined; + ; } support(extract: DoubanSubject): boolean { 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 = new Map( ['发行时间:', 'datePublished'], ['专辑类型:', 'albumType'], ['介质:', 'medium'], - ['出版者:', 'publish'], + ['出版者:', 'publisher'], ['唱片数:', 'numberOfRecords'], ['条形码:', 'barcode']] ); diff --git a/src/douban/data/handler/DoubanNoteLoadHandler.ts b/src/douban/data/handler/DoubanNoteLoadHandler.ts index 9fc5dba..378ce29 100644 --- a/src/douban/data/handler/DoubanNoteLoadHandler.ts +++ b/src/douban/data/handler/DoubanNoteLoadHandler.ts @@ -9,22 +9,16 @@ import { moment } from "obsidian"; export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanNoteSubject, settings:DoubanPluginSettings): string { - return settings.bookTemplate ? settings.noteTemplate - .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("{{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 : "") + getTemplate(settings: DoubanPluginSettings): string { + return settings.noteTemplate; + } + + parseText(beforeContent:string, extract: DoubanNoteSubject, settings:DoubanPluginSettings): string { + return beforeContent .replaceAll("{{authorUrl}}", extract.authorUrl ? extract.authorUrl : "") + .replaceAll("{{content}}", extract.content ? extract.content : "") .replaceAll("{{author}}", extract.author ? extract.author : "") - - - : undefined; +; } support(extract: DoubanSubject): boolean { return extract && extract.type && (extract.type.contains("日记") || extract.type.contains("Note") || extract.type.contains("Article")); @@ -51,17 +45,20 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler { - parseText(extract: DoubanSubject, settings:DoubanPluginSettings): string { + getTemplate(settings: DoubanPluginSettings): string { + return ""; + } + parseText(beforeContent:string, extract: DoubanSubject, settings:DoubanPluginSettings): string { log.warn(i18nHelper.getMessage('140101')); return ""; } diff --git a/src/douban/data/handler/DoubanSearchChooseItemHandler.ts b/src/douban/data/handler/DoubanSearchChooseItemHandler.ts index afe5118..21186ec 100644 --- a/src/douban/data/handler/DoubanSearchChooseItemHandler.ts +++ b/src/douban/data/handler/DoubanSearchChooseItemHandler.ts @@ -10,6 +10,7 @@ import { DoubanPluginSettings } from "src/douban/Douban"; import DoubanSubject from "../model/DoubanSubject"; import DoubanSubjectLoadHandler from "./DoubanSubjectLoadHandler"; import { DoubanTeleplayLoadHandler } from "./DoubanTeleplayLoadHandler"; +import DoubanGameLoadHandler from "./DoubanGameLoadHandler"; export class DoubanSearchChooseItemHandler { @@ -28,8 +29,9 @@ export class DoubanSearchChooseItemHandler { new DoubanTeleplayLoadHandler(doubanPlugin), new DoubanMusicLoadHandler(doubanPlugin), new DoubanNoteLoadHandler(doubanPlugin), + new DoubanGameLoadHandler(doubanPlugin), - this._doubanSubjectHandlerDefault]; + this._doubanSubjectHandlerDefault]; } @@ -53,14 +55,14 @@ export class DoubanSearchChooseItemHandler { let doubanSubjectHandlers:DoubanSubjectLoadHandler[] = this._doubanSubjectHandlers .filter(h => h.support(extract)); 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) { return result[0]; }else { return ""; } }else { - return this._doubanSubjectHandlerDefault.parseText(extract, settings); + return this._doubanSubjectHandlerDefault.parse(extract, settings); } } diff --git a/src/douban/data/handler/DoubanSubjectLoadHandler.ts b/src/douban/data/handler/DoubanSubjectLoadHandler.ts index 8029dd3..7b013dd 100644 --- a/src/douban/data/handler/DoubanSubjectLoadHandler.ts +++ b/src/douban/data/handler/DoubanSubjectLoadHandler.ts @@ -4,11 +4,11 @@ import { Editor } from "obsidian"; export default interface DoubanSubjectLoadHandler { - parseText(extract: T, settings:DoubanPluginSettings): string; + parse(extract: T, settings:DoubanPluginSettings): string; support(extract:DoubanSubject):boolean; handle(url:string, editor: Editor):void; -} \ No newline at end of file +} diff --git a/src/douban/data/handler/DoubanTeleplayLoadHandler.ts b/src/douban/data/handler/DoubanTeleplayLoadHandler.ts index e480c28..9004410 100644 --- a/src/douban/data/handler/DoubanTeleplayLoadHandler.ts +++ b/src/douban/data/handler/DoubanTeleplayLoadHandler.ts @@ -12,29 +12,22 @@ import { moment } from "obsidian"; */ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler{ - + getTemplate(settings: DoubanPluginSettings): string { + return settings.movieTemplate; + } constructor(doubanPlugin:DoubanPlugin) { super(doubanPlugin); } - parseText(extract: DoubanTeleplaySubject, settings:DoubanPluginSettings): string { - return settings.movieTemplate ? settings.movieTemplate.replaceAll("{{id}}", extract.id) - .replaceAll("{{type}}", extract.type ? extract.type : "") - .replaceAll("{{title}}", extract.title ? extract.title : "") - .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("{{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; } + parseText(beforeContent:string, extract: DoubanTeleplaySubject, settings:DoubanPluginSettings): string { + return beforeContent + .replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") + .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) : "") + } support(extract: DoubanSubject): boolean { return extract && extract.type && (extract.type.contains("电视剧") || extract.type.contains("Teleplay") || extract.type.contains("teleplay")); @@ -59,20 +52,22 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler div > h3 > a").text(), - score: item.find(".rating_nums").text(), - cast: cast, - type: item.find("div.content > div > h3 > span").text(), - desc: item.find("div.content > p").text(), - url: urlResult?decodeURIComponent(urlResult[0]):'https://www.douban.com', - }; + id: ececResult ? ececResult[0] : '', + title: item.find("div.content > div > h3 > a").text(), + score: score ? Number(score) : null, + cast: cast, + type: item.find("div.content > div > h3 > span").text(), + desc: item.find("div.content > p").text(), + url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com', + image: "", + publisher: "", + datePublished: undefined, + genre: [] + }; return result; }) }; diff --git a/src/lang/locale/en.ts b/src/lang/locale/en.ts index 562e98d..6daf841 100644 --- a/src/lang/locale/en.ts +++ b/src/lang/locale/en.ts @@ -20,39 +20,39 @@ export default { '120101': `Movie Content Template`, '120102': `Set markdown Movie template for extract to be inserted.`, '120103': `Available template variables are :`, - '120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`, - '120105': `{{score}}, {{datePublished}}, {{director}},`, - '120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`, - '120107': `{{image}}, {{url}}`, + '120104': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`, + '120105': `{{url}}, {{desc}}, {{datePublished}}, {{genre}}, `, + '120106': `{{originalTitle}},{{director}}, {{author}},`, + '120107': ` {{actor}}`, '120201': `Book Content Template`, '120202': `Set markdown Book template for extract to be inserted.`, '120203': `Available Book template variables are :`, - '120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`, - '120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`, - '120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`, - '120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`, + '120204': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`, + '120205': `{{url}}, {{desc}}, {{datePublished}}, {{publisher}}`, + '120206': `{{originalTitle}}, {{subTitle}}, {{author}},`, + '120207': `{{translator}}, {{isbn}}, {{price}}, {{totalPage}}`, '120301': `Music Content Template`, '120302': `Set markdown Music template for extract to be inserted.`, '120303': `Available Music template variables are :`, - '120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`, - '120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`, - '120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`, - '120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`, + '120304': `{{id}}, {{title}}, {{type}}, {{image}},`, + '120305': `{{url}}, {{desc}}, {{datePublished}}`, + '120306': `{{genre}}, {{actor}}, {{medium}}, {{albumType}},`, + '120307': `{{barcode}}, {{numberOfRecords}}`, '120401': `Article Content Template`, '120402': `Set markdown Article template for extract to be inserted.`, '120403': `Available Article template variables are :`, - '120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`, - '120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`, - '120406': `{{content}}`, + '120404': `{{id}}, {{title}}, {{type}}, {{image}},`, + '120405': `{{url}}, {{desc}}, {{datePublished}}`, + '120406': `{{author}}, {{authorUrl}}, {{content}}`, '120501': `Date Format`, - '120502': `DateTime Format`, - + '120502': `Time Format`, '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`, '120507': `Your current syntax looks like this`, '120508': `format reference`, diff --git a/src/lang/locale/zh-cn.ts b/src/lang/locale/zh-cn.ts index 60aa358..fd4d60c 100644 --- a/src/lang/locale/zh-cn.ts +++ b/src/lang/locale/zh-cn.ts @@ -20,38 +20,38 @@ export default { '120101': `电影文本模板`, '120102': `设置选择电影后导入的文本内容模板,`, '120103': `支持以下参数名称 :`, - '120104': `{{id}}, {{type}}, {{title}}, {{originalTitle}},`, - '120105': `{{score}}, {{datePublished}}, {{director}},`, - '120106': `{{author}}, {{actor}}, {{desc}}, {{genre}},`, - '120107': `{{image}}, {{url}}`, + '120104': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`, + '120105': `{{url}}, {{desc}}, {{datePublished}}, {{genre}}, `, + '120106': `{{originalTitle}},{{director}}, {{author}},`, + '120107': ` {{actor}}`, '120201': `书籍文本模板`, '120202': `设置选择书籍后导入的文本内容模板,`, '120203': `支持以下参数名称 :`, - '120204': `{{id}}, {{title}}, {{originalTitle}}, {{subTitle}},`, - '120205': `{{score}}, {{author}}, {{datePublished}}, {{type}},`, - '120206': `{{publish}}, {{desc}}, {{translator}}, {{isbn}},`, - '120207': `{{image}}, {{url}}, {{price}}, {{desc}}, {{totalPage}}`, + '120204': `{{id}}, {{title}}, {{type}}, {{score}}, {{image}},`, + '120205': `{{url}}, {{desc}}, {{datePublished}}, {{publisher}}`, + '120206': `{{originalTitle}}, {{subTitle}}, {{author}},`, + '120207': `{{translator}}, {{isbn}}, {{price}}, {{totalPage}}`, '120301': `音乐文本模板`, '120302': `设置选择音乐后导入的文本内容模板,`, '120303': `支持以下参数名称 :`, - '120304': `{{id}}, {{title}}, {{actor}}, {{genre}},`, - '120305': `{{score}}, {{medium}}, {{datePublished}}, {{type}},`, - '120306': `{{publish}}, {{desc}}, {{albumType}}, {{barcode}},`, - '120307': `{{image}}, {{url}}, {{numberOfRecords}}, {{desc}}`, + '120304': `{{id}}, {{title}}, {{type}}, {{image}},`, + '120305': `{{url}}, {{desc}}, {{datePublished}}`, + '120306': `{{genre}}, {{actor}}, {{medium}}, {{albumType}},`, + '120307': `{{barcode}}, {{numberOfRecords}}`, '120401': `日记文本模板`, '120402': `设置选择日记后导入的文本内容模板,`, '120403': `支持以下参数名称 :`, - '120404': `{{id}}, {{title}}, {{author}}, {{authorUrl}},`, - '120405': `{{timePublished}}, {{url}}, {{desc}}, {{type}},`, - '120406': `{{content}}`, + '120404': `{{id}}, {{title}}, {{type}}, {{image}},`, + '120405': `{{url}}, {{desc}}, {{datePublished}}`, + '120406': `{{author}}, {{authorUrl}}, {{content}}`, - '120501': `参数日期格式`, + '120501': `日期格式`, '120503': `这个格式是给上面获取到的参数进行格式化日期时显示的内容 .`, - '120502': `参数时间格式`, + '120502': `时间格式`, '120504': `这个格式是给上面获取到的参数进行格式化时间时显示的内容 .`, '120506': `详细介绍请参考`, '120507': `时间参数时间格式预览`, diff --git a/src/utils/Logutil.ts b/src/utils/Logutil.ts index 18c8143..bd88e43 100644 --- a/src/utils/Logutil.ts +++ b/src/utils/Logutil.ts @@ -27,7 +27,7 @@ class Logger { public traceN(notion:string, e:any):any { // return e; - // console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`); + console.log(`${notion} ${typeof e == 'string' ? e : JSON.stringify(e)}`); return e; } }