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=',
dateFormat: "yyyy-MM-DD",
timeFormat: "HH:mm:ss",
arrayStart: "[",
arraySpilt: ", ",
arrayEnd: "]",
personNameMode: PersonNameMode.CH_NAME,
dataFilePath: "",
dataFileNamePath: "/{{type}}/{{title}}",

@ -112,7 +112,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
// result = array.map(YamlUtil.handleText).join(', ');
// break;
default:
result = array.join(context.settings.arraySpilt);
result = this.handleArray(array, context);
}
return result;
}
@ -535,4 +535,11 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
protected getPropertyValue(html: CheerioAPI, name: PropertyName): string {
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 {
const {settings} = context;
return beforeContent
.replaceAll("{{platform}}", extract.platform ? extract.platform.join(settings.arraySpilt) : "")
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.join(settings.arraySpilt) : "")
.replaceAll("{{platform}}", this.handleArray(extract.platform, context))
.replaceAll("{{aliases}}", this.handleArray(extract.aliases, context))
.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 {
const {settings} = context;
return beforeContent
.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("{{actor}}", extract.actor ? extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "")
.replaceAll("{{author}}", extract.author ? extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c).join(settings.arraySpilt) : "")
.replaceAll("{{aliases}}", extract.aliases ? extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')).join(settings.arraySpilt) : "")
.replaceAll("{{country}}", extract.country ? extract.country.join(settings.arraySpilt) : "")
.replaceAll("{{language}}", extract.language ? extract.language.join(settings.arraySpilt) : "")
.replaceAll("{{IMDb}}", extract.IMDb ? extract.IMDb : "")
.replaceAll("{{time}}", extract.time ? extract.time : "")
.replaceAll("{{originalTitle}}", extract.originalTitle ?? "")
.replaceAll("{{director}}", this.handleArray(extract.director.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{actor}}", this.handleArray( extract.actor.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{author}}", this.handleArray(extract.author.map(SchemaOrg.getPersonName).map(name => super.getPersonName(name, context)).filter(c => c), context))
.replaceAll("{{aliases}}", this.handleArray(extract.aliases.map(a=>a.replace(TITLE_ALIASES_SPECIAL_CHAR_REG_G, '_')), context))
.replaceAll("{{country}}", this.handleArray( extract.country, context))
.replaceAll("{{language}}",this.handleArray( extract.language, context))
.replaceAll("{{IMDb}}", extract.IMDb ??"")
.replaceAll("{{time}}", extract.time ??"")
;
}

@ -25,7 +25,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
parseText(beforeContent: string, extract: DoubanMusicSubject, context: HandleContext): string {
const {settings} = context;
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("{{medium}}", extract.medium ? extract.medium : "")
.replaceAll("{{albumType}}", extract.albumType ? extract.albumType : "")

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

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

@ -20,6 +20,14 @@ export function constructOutUI(containerEl: HTMLElement, manager: SettingsManage
new Setting(containerEl)
.setName(i18nHelper.getMessage('120601'))
.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) => {
textField.setPlaceholder(DEFAULT_SETTINGS.arraySpilt)
.setValue(manager.plugin.settings.arraySpilt)
@ -27,7 +35,16 @@ export function constructOutUI(containerEl: HTMLElement, manager: SettingsManage
manager.plugin.settings.arraySpilt = value;
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) => {
setting.addDropdown((dropdwon) => {

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

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

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