diff --git a/src/org/wanxp/constant/DefaultSettings.ts b/src/org/wanxp/constant/DefaultSettings.ts index 98f1429..babe7ff 100644 --- a/src/org/wanxp/constant/DefaultSettings.ts +++ b/src/org/wanxp/constant/DefaultSettings.ts @@ -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}}", diff --git a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts index e33518a..250e809 100644 --- a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts @@ -112,7 +112,7 @@ export default abstract class DoubanAbstractLoadHandler // 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 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; + } } diff --git a/src/org/wanxp/douban/data/handler/DoubanGameLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanGameLoadHandler.ts index 11022df..5d43a26 100644 --- a/src/org/wanxp/douban/data/handler/DoubanGameLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanGameLoadHandler.ts @@ -25,8 +25,8 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler 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 ??"") ; } diff --git a/src/org/wanxp/douban/data/handler/DoubanMusicLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanMusicLoadHandler.ts index 3cb11a4..3505834 100644 --- a/src/org/wanxp/douban/data/handler/DoubanMusicLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanMusicLoadHandler.ts @@ -25,7 +25,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler 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 ?? "") ; } diff --git a/src/org/wanxp/douban/data/handler/DoubanTheaterLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanTheaterLoadHandler.ts index ec223a4..ac30371 100644 --- a/src/org/wanxp/douban/data/handler/DoubanTheaterLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanTheaterLoadHandler.ts @@ -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 ?? "") ; } diff --git a/src/org/wanxp/douban/setting/OutputSettingsHelper.ts b/src/org/wanxp/douban/setting/OutputSettingsHelper.ts index 78e13f7..4fc7e16 100644 --- a/src/org/wanxp/douban/setting/OutputSettingsHelper.ts +++ b/src/org/wanxp/douban/setting/OutputSettingsHelper.ts @@ -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) => { diff --git a/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts b/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts index 51789cb..c449122 100644 --- a/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts +++ b/src/org/wanxp/douban/setting/model/DoubanPluginSetting.ts @@ -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, diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts index 0dd513b..81fc275 100644 --- a/src/org/wanxp/lang/locale/en.ts +++ b/src/org/wanxp/lang/locale/en.ts @@ -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`, diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts index 1ee2051..0f42f2f 100644 --- a/src/org/wanxp/lang/locale/zh-cn.ts +++ b/src/org/wanxp/lang/locale/zh-cn.ts @@ -185,9 +185,10 @@ export default { '120507': `时间参数时间格式预览`, '120508': `格式参考`, '120601': `数组分割字符串`, - '120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号,比如演员列表等. - 举例: ',' - 则演员表将会显示为: '演员1,演员2,演员3'`, + '120602': `当模板中的变量存在数组, 则需要设定数组元素中的分割符号以及起始与结束符号,比如演员列表等. + 举例: 开始字符'[', 分隔符',', 结束字符']', + 则演员表将会显示为: '[演员1,演员2,演员3]'`, + '120701': `豆瓣HTTP请求头`, '120702': `如果豆瓣搜索或者获取数据失败,请尝试修改这个参数,\n 参数获取方式为:\n