Optimize internationalized text and remove some dependencies

This commit is contained in:
wanxp 2022-10-25 23:37:45 +08:00
parent ecffed6441
commit 1d4bee6281
25 changed files with 326 additions and 328 deletions

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,10 +5,11 @@ 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,
personNameMode:PersonNameMode, personNameMode:PersonNameMode,
@ -29,9 +30,80 @@ export const doubanHeadrs = {
export const DEFAULT_SETTINGS:DoubanPluginSettings = { export const DEFAULT_SETTINGS:DoubanPluginSettings = {
movieTemplate: 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}} doubanId: {{id}}
title: {{title}} 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}} originalTitle: {{originalTitle}}
type: {{type}} type: {{type}}
score: {{score}} score: {{score}}
@ -42,75 +114,14 @@ actor: {{actor}}
author: {{author}} author: {{author}}
url: {{url}} url: {{url}}
desc: {{desc}} 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}} // 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("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "")
.replaceAll("{{url}}", extract.url ? extract.url : "")
.replaceAll("{{score}}", extract.score && extract.score ? extract.score + "" : "")
.replaceAll("{{translator}}", extract.translator ? extract.translator.join(settings.arraySpilt) : "")
.replaceAll("{{totalWord}}", extract.totalWord ? extract.totalWord+"" : "") .replaceAll("{{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"));
@ -73,28 +67,29 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
let id = idPattern.exec(url); let id = idPattern.exec(url);
const result:DoubanBookSubject = { const result:DoubanBookSubject = {
author: [author], author: [author],
translator: [valueMap.get('translator')], translator: [valueMap.get('translator')],
bookType: "", bookType: "",
image: image, image: image,
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: "",
totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null, totalPage: valueMap.has('originalTitle') ? Number(valueMap.get('totalPage')) : null,
belong: "", belong: "",
menu: [], menu: [],
price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null, price: valueMap.has('price') ? Number(valueMap.get('price').replace('元', '')) : null,
labels: [], labels: [],
id: id ? id[0]:"", id: id ? id[0] : "",
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,23 +44,22 @@ 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, datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
director: obj.director, image: obj.image,
author: obj.author, genre: obj.genre,
actor: obj.actor, aliases: [],
aggregateRating: obj.aggregateRating, developer: '',
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined, platform: [],
image:obj.image, score: undefined,
genre:obj.genre 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"));
} }
@ -55,20 +51,22 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
let originalTitle = originalTitleExec?originalTitleExec[0]:name; let originalTitle = originalTitleExec?originalTitleExec[0]:name;
const result:DoubanMovieSubject = { const result:DoubanMovieSubject = {
id: id?id[0]:'', id: id ? id[0] : '',
type: 'Movie', title: title,
title: title, type: 'Movie',
originalTitle: originalTitle, score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined,
desc: obj.description, originalTitle: originalTitle,
url: "https://movie.douban.com" + obj.url, desc: obj.description,
director: obj.director, url: "https://movie.douban.com" + obj.url,
author: obj.author, director: obj.director,
actor: obj.actor, author: obj.author,
aggregateRating: obj.aggregateRating, actor: obj.actor,
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined, aggregateRating: obj.aggregateRating,
image:obj.image, datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
genre:obj.genre image: obj.image,
} 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"));
@ -51,17 +45,20 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
let id = idPattern.exec(url); let id = idPattern.exec(url);
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",
title: title, title: title,
desc: desc, desc: desc,
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,8 +29,9 @@ 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,11 +4,11 @@ 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;
handle(url:string, editor: Editor):void; handle(url:string, editor: Editor):void;
} }

@ -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("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
.replaceAll("{{title}}", extract.title ? extract.title : "") .replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") .replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).join(settings.arraySpilt) : "")
.replaceAll("{{desc}}", extract.desc ? extract.desc : "") .replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, settings)).filter(c => c).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("Teleplay") || extract.type.contains("teleplay")); return extract && extract.type && (extract.type.contains("电视剧") || extract.type.contains("Teleplay") || extract.type.contains("teleplay"));
@ -59,20 +52,22 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
let originalTitle = originalTitleExec?originalTitleExec[0]:name; let originalTitle = originalTitleExec?originalTitleExec[0]:name;
const result:DoubanTeleplaySubject = { const result:DoubanTeleplaySubject = {
id: id?id[0]:'', id: id ? id[0] : '',
type: 'Movie', type: 'Movie',
title: title, title: title,
originalTitle: originalTitle, 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, director: obj.director,
author: obj.author, author: obj.author,
actor: obj.actor, actor: obj.actor,
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,15 +13,20 @@ 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;
} }
} }