From f83a0b4c8ec6c73ad54a937ca45db76629f76eb5 Mon Sep 17 00:00:00 2001 From: wanxp <977741432@qq.com> Date: Sat, 3 Dec 2022 18:53:36 +0800 Subject: [PATCH] add function: import high quantity image from douban --- .../wanxp/douban/component/DoubanSyncModal.ts | 13 +++++++++++++ .../data/handler/DoubanAbstractLoadHandler.ts | 19 +++++++++++-------- .../data/handler/DoubanBookLoadHandler.ts | 4 ++++ .../data/handler/DoubanGameLoadHandler.ts | 3 +++ .../data/handler/DoubanMovieLoadHandler.ts | 4 ++++ .../data/handler/DoubanMusicLoadHandler.ts | 4 ++++ .../data/handler/DoubanNoteLoadHandler.ts | 4 ++++ .../data/handler/DoubanOtherLoadHandler.ts | 4 ++++ .../data/handler/DoubanTeleplayLoadHandler.ts | 4 ++++ .../handler/DoubanPageBroadcastLoadHandler.ts | 3 +++ src/org/wanxp/douban/sync/model/SyncConfig.ts | 2 ++ src/org/wanxp/lang/locale/en.ts | 2 +- src/org/wanxp/lang/locale/zh-cn.ts | 4 ++-- 13 files changed, 59 insertions(+), 11 deletions(-) diff --git a/src/org/wanxp/douban/component/DoubanSyncModal.ts b/src/org/wanxp/douban/component/DoubanSyncModal.ts index 7aba4ae..e00763e 100644 --- a/src/org/wanxp/douban/component/DoubanSyncModal.ts +++ b/src/org/wanxp/douban/component/DoubanSyncModal.ts @@ -114,6 +114,7 @@ ${syncStatus.getHandle() == 0? '...' : i18nHelper.getMessage('110042') + ':' + T dataFilePath: (settings.dataFilePath == '' || settings.dataFilePath == null) ? DEFAULT_SETTINGS.dataFilePath : settings.dataFilePath, dataFileNamePath: (settings.dataFileNamePath == '' || settings.dataFileNamePath == null) ? DEFAULT_SETTINGS.dataFileNamePath : settings.dataFileNamePath, cacheImage: ( settings.cacheImage == null) ? DEFAULT_SETTINGS.cacheImage : settings.cacheImage, + cacheHighQuantityImage: ( settings.cacheHighQuantityImage == null) ? DEFAULT_SETTINGS.cacheHighQuantityImage : settings.cacheHighQuantityImage, attachmentPath: (settings.attachmentPath == '' || settings.attachmentPath == null) ? DEFAULT_SETTINGS.attachmentPath : settings.attachmentPath, templateFile: (settings.movieTemplateFile == '' || settings.movieTemplateFile == null) ? DEFAULT_SETTINGS.movieTemplateFile : settings.movieTemplateFile, incrementalUpdate: true, @@ -370,6 +371,18 @@ ${syncStatus.getHandle() == 0? '...' : i18nHelper.getMessage('110042') + ':' + T }); }) .setDisabled(disable); + + new Setting(containerEl) + .setName(i18nHelper.getMessage('121435')) + .setDesc(i18nHelper.getMessage('121438')) + .addToggle((toggleComponent) => { + toggleComponent + .setValue(config.cacheHighQuantityImage) + .onChange(async (value) => { + config.cacheHighQuantityImage = value; + }); + }) + .setDisabled(disable); } showUpdateAllConfig(containerEl: HTMLElement, config: SyncConfig, disable:boolean) { diff --git a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts index 8e629ef..65055d7 100644 --- a/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanAbstractLoadHandler.ts @@ -458,14 +458,15 @@ export default abstract class DoubanAbstractLoadHandler if (!folder) { folder = DEFAULT_SETTINGS.attachmentPath; } - if (context.settings.cacheHighQuantityImage && context.userComponent.isLogin()) { + if ((syncConfig ? syncConfig.cacheHighQuantityImage : context.settings.cacheHighQuantityImage) && context.userComponent.isLogin()) { try { const fileNameSpilt = filename.split('.'); - const highImage = `https://img9.doubanio.com/view/photo/l/public/${fileNameSpilt.first()}.jpg` const highFilename = fileNameSpilt.first() + '.jpg'; - const {success, filepath} = await context.netFileHandler.downloadFile(highImage, folder, highFilename, context, false); - if (success) { - extract.image = filepath; + + const highImage = this.getHighQuantityImageUrl(highFilename); + const resultValue = await context.netFileHandler.downloadFile(highImage, folder, highFilename, context, false); + if (resultValue && resultValue.success) { + extract.image = resultValue.filepath; return; } }catch (e) { @@ -473,12 +474,14 @@ export default abstract class DoubanAbstractLoadHandler console.error('下载高清封面失败,将会使用普通封面') } } - const {success, filepath} = await context.netFileHandler.downloadFile(image, folder, filename, context, true); - if (success) { - extract.image = filepath; + const resultValue = await context.netFileHandler.downloadFile(image, folder, filename, context, true); + if (resultValue && resultValue.success) { + extract.image = resultValue.filepath; } } + abstract getHighQuantityImageUrl(fileName:string):string; + private async humanCheck(html:any, url:string):Promise { if (html && html.indexOf("禁止访问") != -1) { const loginModel = new DoubanHumanCheckModel(url); diff --git a/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts index 40831f9..5e9ea11 100644 --- a/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts @@ -19,6 +19,10 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler { + getHighQuantityImageUrl(fileName: string): string { + throw new Error('Method not implemented.'); + } constructor(doubanPlugin: DoubanPlugin) { super(doubanPlugin); diff --git a/src/org/wanxp/douban/sync/model/SyncConfig.ts b/src/org/wanxp/douban/sync/model/SyncConfig.ts index ad2b2f3..0f6ae1d 100644 --- a/src/org/wanxp/douban/sync/model/SyncConfig.ts +++ b/src/org/wanxp/douban/sync/model/SyncConfig.ts @@ -5,6 +5,8 @@ export interface SyncConfig { dataFilePath: string; dataFileNamePath: string; cacheImage:boolean; + + cacheHighQuantityImage:boolean; attachmentPath: string; templateFile: string; incrementalUpdate: boolean; diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts index dd6893b..30c279e 100644 --- a/src/org/wanxp/lang/locale/en.ts +++ b/src/org/wanxp/lang/locale/en.ts @@ -197,7 +197,7 @@ PS: This file could be delete if you want to. '121435': `Save High Definition Cover`, '121436': `High Definition Cover looks better but it will take more space, and you must login douban in this plugin`, '121437': `Please login first, Then this function could be enable`, - + '121438': `High Definition Cover looks better but it will take more space`, '121501': `Note folder`, diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts index 7fded72..a32742d 100644 --- a/src/org/wanxp/lang/locale/zh-cn.ts +++ b/src/org/wanxp/lang/locale/zh-cn.ts @@ -39,7 +39,7 @@ export default { '110040': `仅同步上面'笔记存放位置'目录中最近新增/同步失败/未同步的部分,不同步已同步的内容.若关闭则会全量同步.增量同步会更快,适合之前同步中途失败停止或最近有豆瓣新增了内容,全量同步适合修改了模板或修改了存放路径情况下进行.`, '110041': `使用增量`, '110042': `预计处理时间`, - '110043': `同步目录加载中`, + '110043': `正在获取需要同步的列表, 请稍后`, '110050': `类型`, '110051': `数量`, @@ -209,7 +209,7 @@ export default { '121435': `保存高清封面`, '121436': `高清封面图片质量更高清晰度更好,并且需要您在此插件登录豆瓣才能生效,若未登录则默认使用低精度版本封面`, '121437': `登录后此功能才会生效`, - + '121438': `高清封面图片质量更高, 清晰度更好, 但占用空间会比普通清晰度封面更多`, '121501': `笔记存放位置`, '121502': `创建的笔记将会存放至该文件夹中. 如果为空, 笔记将会存放到Obsidian的默认位置`,