1. add array spilt , start, end

This commit is contained in:
wanxp 2023-09-23 10:12:07 +08:00
parent 230733aa49
commit 0dd68ff8cb
11 changed files with 67 additions and 38 deletions

@ -13,7 +13,9 @@ export const DEFAULT_SETTINGS: DoubanPluginSetting = {
searchUrl: 'https://www.douban.com/search?q=', searchUrl: 'https://www.douban.com/search?q=',
dateFormat: "yyyy-MM-DD", dateFormat: "yyyy-MM-DD",
timeFormat: "HH:mm:ss", timeFormat: "HH:mm:ss",
arrayStart: "[",
arraySpilt: ", ", arraySpilt: ", ",
arrayEnd: "]",
personNameMode: PersonNameMode.CH_NAME, personNameMode: PersonNameMode.CH_NAME,
dataFilePath: "", dataFilePath: "",
dataFileNamePath: "/{{type}}/{{title}}", dataFileNamePath: "/{{type}}/{{title}}",

@ -112,7 +112,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
// result = array.map(YamlUtil.handleText).join(', '); // result = array.map(YamlUtil.handleText).join(', ');
// break; // break;
default: default:
result = array.join(context.settings.arraySpilt); result = this.handleArray(array, context);
} }
return result; return result;
} }
@ -535,4 +535,11 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
protected getPropertyValue(html: CheerioAPI, name: PropertyName): string { protected getPropertyValue(html: CheerioAPI, name: PropertyName): string {
return HtmlUtil.getHtmlText(html, this.doubanPlugin.settingsManager.getSelector(this.getSupportType(), name)); return HtmlUtil.getHtmlText(html, this.doubanPlugin.settingsManager.getSelector(this.getSupportType(), name));
} }
protected handleArray(arr: string[], context: HandleContext): string {
const {settings} = context;
let content :string = arr ? arr.join(settings.arraySpilt) : "";
content = settings.arrayStart + content + settings.arrayEnd;
return content;
}
} }

@ -25,8 +25,8 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
parseText(beforeContent: string, extract: DoubanGameSubject, context: HandleContext): string { parseText(beforeContent: string, extract: DoubanGameSubject, context: HandleContext): string {
const {settings} = context; const {settings} = context;
return beforeContent return beforeContent
.replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : "") .replaceAll("{{platform}}", this.handleArray(extract.platform, context))
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.join(settings.arraySpilt) : "") .replaceAll("{{aliases}}", this.handleArray(extract.aliases, context))
.replaceAll("{{developer}}", extract.developer ? extract.developer : ""); .replaceAll("{{developer}}", extract.developer ? extract.developer : "");
} }

@ -28,15 +28,15 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
parseText(beforeContent: string, extract: DoubanMovieSubject, context: HandleContext): string { parseText(beforeContent: string, extract: DoubanMovieSubject, context: HandleContext): string {
const {settings} = context; const {settings} = context;
return beforeContent return beforeContent
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") .replaceAll("{{originalTitle}}", extract.originalTitle ?? "")
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{director}}", this.handleArray(extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{actor}}", this.handleArray( extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{author}}", this.handleArray(extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')).join(settings.arraySpilt) : "") .replaceAll("{{aliases}}", this.handleArray(extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')), context))
.replaceAll("{{country}}", extract.country ? extract.country.join(settings.arraySpilt) : "") .replaceAll("{{country}}", this.handleArray( extract.country, context))
.replaceAll("{{language}}", extract.language ? extract.language.join(settings.arraySpilt) : "") .replaceAll("{{language}}",this.handleArray( extract.language, context))
.replaceAll("{{IMDb}}", extract.IMDb ? extract.IMDb : "") .replaceAll("{{IMDb}}", extract.IMDb ??"")
.replaceAll("{{time}}", extract.time ? extract.time : "") .replaceAll("{{time}}", extract.time ??"")
; ;
} }

@ -25,7 +25,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string { parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string {
const {settings} = context; const {settings} = context;
return beforeContent return beforeContent
.replaceAll("{{actor}}", extract.actor ? extract.actor.join(settings.arraySpilt) : "") .replaceAll("{{actor}}", this.handleArray(extract.actor, context ))
.replaceAll("{{barcode}}", extract.barcode ? extract.barcode : "") .replaceAll("{{barcode}}", extract.barcode ? extract.barcode : "")
.replaceAll("{{medium}}", extract.medium ? extract.medium : "") .replaceAll("{{medium}}", extract.medium ? extract.medium : "")
.replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "") .replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "")

@ -27,16 +27,16 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string { parseText(beforeContent: string, extract: DoubanTeleplaySubject, context: HandleContext): string {
const {settings} = context; const {settings} = context;
return beforeContent return beforeContent
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") .replaceAll("{{originalTitle}}", extract.originalTitle ?? "")
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{director}}", this.handleArray( extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{actor}}", this.handleArray( extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{author}}", this.handleArray( extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')).join(settings.arraySpilt) : "") .replaceAll("{{aliases}}", this.handleArray( extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')), context))
.replaceAll("{{country}}", extract.country ? extract.country.join(settings.arraySpilt) : "") .replaceAll("{{country}}", this.handleArray( extract.country, context))
.replaceAll("{{language}}", extract.language ? extract.language.join(settings.arraySpilt) : "") .replaceAll("{{language}}", this.handleArray(extract.language, context))
.replaceAll("{{IMDb}}", extract.IMDb ? extract.IMDb : "") .replaceAll("{{IMDb}}", extract.IMDb?? "")
.replaceAll("{{time}}", extract.time ? extract.time : "") .replaceAll("{{time}}", extract.time ?? "")
.replaceAll("{{episode}}", extract.episode ? extract.episode : "") .replaceAll("{{episode}}", extract.episode ?? "")
; ;
} }

@ -30,14 +30,14 @@ export default class DoubanTheaterLoadHandler extends DoubanAbstractLoadHandler<
const {settings} = context; const {settings} = context;
return beforeContent return beforeContent
.replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "") .replaceAll("{{originalTitle}}", extract.originalTitle ? extract.originalTitle : "")
.replaceAll("{{director}}", extract.director ? extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{director}}", this.handleArray( extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{actor}}", this.handleArray( extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "") .replaceAll("{{author}}", this.handleArray( extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')).join(settings.arraySpilt) : "") .replaceAll("{{aliases}}", this.handleArray( extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')), context))
.replaceAll("{{country}}", extract.country ? extract.country.join(settings.arraySpilt) : "") .replaceAll("{{country}}",this.handleArray( extract.country, context))
.replaceAll("{{language}}", extract.language ? extract.language.join(settings.arraySpilt) : "") .replaceAll("{{language}}",this.handleArray( extract.language, context))
.replaceAll("{{IMDb}}", extract.IMDb ? extract.IMDb : "") .replaceAll("{{IMDb}}", extract.IMDb ?? "")
.replaceAll("{{time}}", extract.time ? extract.time : "") .replaceAll("{{time}}", extract.time ?? "")
; ;
} }

@ -20,6 +20,14 @@ export function constructOutUI(containerEl: HTMLElement, manager: SettingsManage
new Setting(containerEl) new Setting(containerEl)
.setName(i18nHelper.getMessage('120601')) .setName(i18nHelper.getMessage('120601'))
.setDesc(i18nHelper.getMessage('120602')) .setDesc(i18nHelper.getMessage('120602'))
.addText((textField) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arrayStart)
.setValue(manager.plugin.settings.arrayStart)
.onChange(async (value) => {
manager.plugin.settings.arrayStart = value;
await manager.plugin.saveSettings();
});
})
.addText((textField) => { .addText((textField) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt) textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
.setValue(manager.plugin.settings.arraySpilt) .setValue(manager.plugin.settings.arraySpilt)
@ -27,7 +35,16 @@ export function constructOutUI(containerEl: HTMLElement, manager: SettingsManage
manager.plugin.settings.arraySpilt = value; manager.plugin.settings.arraySpilt = value;
await manager.plugin.saveSettings(); await manager.plugin.saveSettings();
}); });
}); })
.addText((textField) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arrayEnd)
.setValue(manager.plugin.settings.arrayEnd)
.onChange(async (value) => {
manager.plugin.settings.arrayEnd = value;
await manager.plugin.saveSettings();
});
})
;
new Setting(containerEl).setName(i18nHelper.getMessage('121201')).then((setting) => { new Setting(containerEl).setName(i18nHelper.getMessage('121201')).then((setting) => {
setting.addDropdown((dropdwon) => { setting.addDropdown((dropdwon) => {

@ -13,7 +13,9 @@ export interface DoubanPluginSetting {
dateFormat: string, dateFormat: string,
timeFormat: string, timeFormat: string,
searchUrl: string, searchUrl: string,
arrayStart: string,
arraySpilt: string, arraySpilt: string,
arrayEnd: string,
personNameMode: string, personNameMode: string,
dataFilePath: string, dataFilePath: string,
dataFileNamePath: string, dataFileNamePath: string,

@ -178,9 +178,9 @@ PS: This file could be delete if you want to.
'120507': `Your current syntax looks like this`, '120507': `Your current syntax looks like this`,
'120508': `format reference`, '120508': `format reference`,
'120601': `Array Spilt String`, '120601': `Array Spilt String`,
'120602': `string to join between array type, such as authors, actors. '120602': `string to join between array type, start、end string for array, such as authors, actors. .
example: ',' example: start:'[' spilt:',' end:']'
the list of actor's name will be shown as: 'actor1,actor2,actor3'`, the list of actor's name will be shown as: '[actor1,actor2,actor3]'`,
'120701': `Douban Request Headers`, '120701': `Douban Request Headers`,
'120801': `This type of import is not supported temporarily, please go to github to submit issues for help`, '120801': `This type of import is not supported temporarily, please go to github to submit issues for help`,
'120901': `Douban`, '120901': `Douban`,

@ -185,9 +185,10 @@ export default {
'120507': `时间参数时间格式预览`, '120507': `时间参数时间格式预览`,
'120508': `格式参考`, '120508': `格式参考`,
'120601': `数组分割字符串`, '120601': `数组分割字符串`,
'120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如演员列表等. '120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号以及起始与结束符号,比如演员列表等.
: ',' 举例: 开始字符'[', ',', ']',
: '演员1,演员2,演员3'`, : '[演员1,演员2,演员3]'`,
'120701': `豆瓣HTTP请求头`, '120701': `豆瓣HTTP请求头`,
'120702': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n '120702': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n
:\n :\n