From 405ae66da83d843e1bf7ff0af24ed6c5c8e40afd Mon Sep 17 00:00:00 2001 From: HughWan <977741432@qq.com> Date: Mon, 16 Oct 2023 23:18:37 +0800 Subject: [PATCH] support sync teleplay --- src/org/wanxp/constant/Constsant.ts | 11 ++++++++ src/org/wanxp/constant/DoubanUserState.ts | 9 ++++++ .../wanxp/douban/component/DoubanSyncModal.ts | 15 ++++++++-- .../sync/handler/DoubanTeleplaySyncHandler.ts | 28 +++++++++++++++++++ .../wanxp/douban/sync/handler/SyncHandler.ts | 2 ++ .../handler/list/DoubanAbstractListHandler.ts | 10 +++++-- .../handler/list/DoubanBookListHandler.ts | 4 +-- .../handler/list/DoubanMovieListHandler.ts | 2 +- .../handler/list/DoubanMusicListHandler.ts | 2 +- .../list/DoubanTeleplayCollectListHandler.ts | 11 ++++++++ .../list/DoubanTeleplayDoListHandler.ts | 11 ++++++++ .../handler/list/DoubanTeleplayListHandler.ts | 13 +++++++++ .../list/DoubanTeleplayWishListHandler.ts | 11 ++++++++ src/org/wanxp/lang/locale/en.ts | 1 + src/org/wanxp/lang/locale/zh-cn.ts | 1 + 15 files changed, 122 insertions(+), 9 deletions(-) create mode 100644 src/org/wanxp/douban/sync/handler/DoubanTeleplaySyncHandler.ts create mode 100644 src/org/wanxp/douban/sync/handler/list/DoubanTeleplayCollectListHandler.ts create mode 100644 src/org/wanxp/douban/sync/handler/list/DoubanTeleplayDoListHandler.ts create mode 100644 src/org/wanxp/douban/sync/handler/list/DoubanTeleplayListHandler.ts create mode 100644 src/org/wanxp/douban/sync/handler/list/DoubanTeleplayWishListHandler.ts diff --git a/src/org/wanxp/constant/Constsant.ts b/src/org/wanxp/constant/Constsant.ts index d5614d6..120b3a2 100644 --- a/src/org/wanxp/constant/Constsant.ts +++ b/src/org/wanxp/constant/Constsant.ts @@ -191,14 +191,25 @@ export enum SyncType { broadcast = 'broadcast', note = 'note', music = 'music', + teleplay = 'teleplay' } +export const SyncTypeUrlDomain: Map = new Map([ + [SyncType.movie , 'movie'], + [SyncType.book , 'book'], + [SyncType.broadcast , 'broadcast'], + [SyncType.note , 'note'], + [SyncType.music , 'music'], + [SyncType.teleplay , 'movie']] +) + /** * 同步模式选项 */ // @ts-ignore export const SyncTypeRecords: { [key in SyncType]: string } = { [SyncType.movie]: i18nHelper.getMessage('504103'), + [SyncType.teleplay]: i18nHelper.getMessage('504107'), [SyncType.book]: i18nHelper.getMessage('504102'), // [SyncType.broadcast]: i18nHelper.getMessage('504104'), // [SyncType.note]: i18nHelper.getMessage('504105'), diff --git a/src/org/wanxp/constant/DoubanUserState.ts b/src/org/wanxp/constant/DoubanUserState.ts index fb56f45..e9a1e1d 100644 --- a/src/org/wanxp/constant/DoubanUserState.ts +++ b/src/org/wanxp/constant/DoubanUserState.ts @@ -88,6 +88,15 @@ export const DoubanSubjectStateRecords_MOVIE_SYNC: { [key in DoubanSubjectState] [DoubanSubjectState.collect]: i18nHelper.getMessage('500204'), } +// @ts-ignore +export const DoubanSubjectStateRecords_TELEPLAY_SYNC: { [key in DoubanSubjectState]: string } = { + // @ts-ignore + [ALL]: i18nHelper.getMessage('500004'), + [DoubanSubjectState.wish]: i18nHelper.getMessage('500202'), + [DoubanSubjectState.do]: i18nHelper.getMessage('500203'), + [DoubanSubjectState.collect]: i18nHelper.getMessage('500204'), +} + // @ts-ignore export const DoubanSubjectStateRecords_BOOK_SYNC: { [key in DoubanSubjectState]: string } = { // @ts-ignore diff --git a/src/org/wanxp/douban/component/DoubanSyncModal.ts b/src/org/wanxp/douban/component/DoubanSyncModal.ts index 96c4936..7e51bdd 100644 --- a/src/org/wanxp/douban/component/DoubanSyncModal.ts +++ b/src/org/wanxp/douban/component/DoubanSyncModal.ts @@ -10,8 +10,12 @@ import HandleContext from "../data/model/HandleContext"; import {SyncType, SyncTypeRecords} from "../../constant/Constsant"; import { ALL, - DoubanSubjectStateRecords_BOOK_SYNC, DoubanSubjectStateRecords_BROADCAST_SYNC, - DoubanSubjectStateRecords_MOVIE_SYNC, DoubanSubjectStateRecords_MUSIC_SYNC, DoubanSubjectStateRecords_NOTE_SYNC + DoubanSubjectStateRecords_BOOK_SYNC, + DoubanSubjectStateRecords_BROADCAST_SYNC, + DoubanSubjectStateRecords_MOVIE_SYNC, + DoubanSubjectStateRecords_MUSIC_SYNC, + DoubanSubjectStateRecords_NOTE_SYNC, + DoubanSubjectStateRecords_TELEPLAY_SYNC } from "../../constant/DoubanUserState"; import {SyncConfig} from "../sync/model/SyncConfig"; import {clearInterval} from "timers"; @@ -189,6 +193,10 @@ ${syncStatus.getHandle() == 0? '...' : i18nHelper.getMessage('110042') + ':' + T case SyncType.music: this.showScopeDropdown(contentEl, DoubanSubjectStateRecords_MUSIC_SYNC, config, disable); break; + case SyncType.teleplay: + this.showScopeDropdown(contentEl, DoubanSubjectStateRecords_TELEPLAY_SYNC, config, disable); + break; + } } @@ -225,6 +233,9 @@ ${syncStatus.getHandle() == 0? '...' : i18nHelper.getMessage('110042') + ':' + T case SyncType.music: result = (settings.musicTemplateFile == '' || settings.musicTemplateFile == null) ? DEFAULT_SETTINGS.musicTemplateFile : settings.musicTemplateFile break; + case SyncType.teleplay: + result = (settings.teleplayTemplateFile == '' || settings.teleplayTemplateFile == null) ? DEFAULT_SETTINGS.teleplayTemplateFile : settings.teleplayTemplateFile + break; } return result; } diff --git a/src/org/wanxp/douban/sync/handler/DoubanTeleplaySyncHandler.ts b/src/org/wanxp/douban/sync/handler/DoubanTeleplaySyncHandler.ts new file mode 100644 index 0000000..17b1ad8 --- /dev/null +++ b/src/org/wanxp/douban/sync/handler/DoubanTeleplaySyncHandler.ts @@ -0,0 +1,28 @@ +import {DoubanAbstractSyncHandler} from "./DoubanAbstractSyncHandler"; +import {BasicConst, SyncType} from "../../../constant/Constsant"; +import DoubanPlugin from "../../../main"; +import DoubanTeleplaySubject from "../../data/model/DoubanTeleplaySubject"; +import {DoubanTeleplayLoadHandler} from "../../data/handler/DoubanTeleplayLoadHandler"; +import DoubanTeleplayCollectListHandler from "./list/DoubanTeleplayCollectListHandler"; +import DoubanTeleplayWishListHandler from "./list/DoubanTeleplayWishListHandler"; +import DoubanTeleplayDoListHandler from "./list/DoubanTeleplayDoListHandler"; + +//TODO will support in future version +export class DoubanTeleplaySyncHandler extends DoubanAbstractSyncHandler{ + + constructor(plugin:DoubanPlugin) { + super(plugin, new DoubanTeleplayLoadHandler(plugin),[ + new DoubanTeleplayCollectListHandler(), + new DoubanTeleplayWishListHandler(), + new DoubanTeleplayDoListHandler()]); + } + + + + getSyncType(): SyncType { + return SyncType.teleplay; + } + + + +} diff --git a/src/org/wanxp/douban/sync/handler/SyncHandler.ts b/src/org/wanxp/douban/sync/handler/SyncHandler.ts index 10a64c6..4cb419e 100644 --- a/src/org/wanxp/douban/sync/handler/SyncHandler.ts +++ b/src/org/wanxp/douban/sync/handler/SyncHandler.ts @@ -8,6 +8,7 @@ import { DoubanMovieSyncHandler } from "./DoubanMovieSyncHandler"; import { DoubanMusicSyncHandler } from "./DoubanMusicSyncHandler"; import { DoubanBookSyncHandler } from "./DoubanBookSyncHandler"; import {i18nHelper} from "../../../lang/helper"; +import {DoubanTeleplaySyncHandler} from "./DoubanTeleplaySyncHandler"; export default class SyncHandler { private app: App; @@ -30,6 +31,7 @@ export default class SyncHandler { // new DoubanBroadcastSyncHandler(plugin), // new DoubanNoteSyncHandler(plugin), new DoubanMusicSyncHandler(plugin), + new DoubanTeleplaySyncHandler(plugin), this.defaultSyncHandler ]; } diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanAbstractListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanAbstractListHandler.ts index 7d0bca1..658b4ed 100644 --- a/src/org/wanxp/douban/sync/handler/list/DoubanAbstractListHandler.ts +++ b/src/org/wanxp/douban/sync/handler/list/DoubanAbstractListHandler.ts @@ -4,7 +4,7 @@ import {log} from "src/org/wanxp/utils/Logutil"; import {CheerioAPI, load} from "cheerio"; import HandleContext from "../../../data/model/HandleContext"; import {doubanSubjectSyncListUrl} from "../../../../constant/Douban"; -import {BasicConst, PAGE_SIZE} from "../../../../constant/Constsant"; +import {BasicConst, PAGE_SIZE, SyncType, SyncTypeUrlDomain} from "../../../../constant/Constsant"; import {SubjectListItem} from "../../../data/model/SubjectListItem"; import {DoubanListHandler} from "./DoubanListHandler"; import {SyncConfig} from "../../model/SyncConfig"; @@ -38,12 +38,16 @@ export default abstract class DoubanAbstractListHandler implements DoubanListHan } private getUrl(context: HandleContext, start:number) { - return doubanSubjectSyncListUrl(this.getSyncType(), context.userComponent.getUserId(), this.getDoType(), start); + return doubanSubjectSyncListUrl(this.getSyncTypeDomain(), context.userComponent.getUserId(), this.getDoType(), start); } abstract getDoType():string; - abstract getSyncType():string; + abstract getSyncType():SyncType; + + getSyncTypeDomain():string { + return SyncTypeUrlDomain.get(this.getSyncType()); + } async getPageList(url: string, context: HandleContext):Promise { return HttpUtil.httpRequestGet(url, context.plugin.settingsManager.getHeaders(), context.plugin.settingsManager) diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanBookListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanBookListHandler.ts index 2c3bb8a..f87439f 100644 --- a/src/org/wanxp/douban/sync/handler/list/DoubanBookListHandler.ts +++ b/src/org/wanxp/douban/sync/handler/list/DoubanBookListHandler.ts @@ -1,8 +1,8 @@ import DoubanAbstractListHandler from "./DoubanAbstractListHandler"; -import { SyncType} from "../../../../constant/Constsant"; +import {SyncType, SyncTypeUrlDomain} from "../../../../constant/Constsant"; export abstract class DoubanBookListHandler extends DoubanAbstractListHandler { - getSyncType(): string { + getSyncType(): SyncType { return SyncType.book; } diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanMovieListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanMovieListHandler.ts index 66cd04c..fba87b2 100644 --- a/src/org/wanxp/douban/sync/handler/list/DoubanMovieListHandler.ts +++ b/src/org/wanxp/douban/sync/handler/list/DoubanMovieListHandler.ts @@ -2,7 +2,7 @@ import DoubanAbstractListHandler from "./DoubanAbstractListHandler"; import { SyncType} from "../../../../constant/Constsant"; export abstract class DoubanMovieListHandler extends DoubanAbstractListHandler { - getSyncType(): string { + getSyncType(): SyncType { return SyncType.movie; } diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanMusicListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanMusicListHandler.ts index 710f6d7..af0dd32 100644 --- a/src/org/wanxp/douban/sync/handler/list/DoubanMusicListHandler.ts +++ b/src/org/wanxp/douban/sync/handler/list/DoubanMusicListHandler.ts @@ -2,7 +2,7 @@ import DoubanAbstractListHandler from "./DoubanAbstractListHandler"; import { SyncType} from "../../../../constant/Constsant"; export abstract class DoubanMusicListHandler extends DoubanAbstractListHandler { - getSyncType(): string { + getSyncType(): SyncType { return SyncType.music; } diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayCollectListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayCollectListHandler.ts new file mode 100644 index 0000000..bfdae72 --- /dev/null +++ b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayCollectListHandler.ts @@ -0,0 +1,11 @@ +import { DoubanSubjectState} from "src/org/wanxp/constant/DoubanUserState"; +import { DoubanMovieListHandler } from "./DoubanMovieListHandler"; +import {DoubanTeleplayListHandler} from "./DoubanTeleplayListHandler"; + + +export default class DoubanTeleplayCollectListHandler extends DoubanTeleplayListHandler{ + getDoType(): string { + return DoubanSubjectState.collect; + } + +} diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayDoListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayDoListHandler.ts new file mode 100644 index 0000000..0ab4b95 --- /dev/null +++ b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayDoListHandler.ts @@ -0,0 +1,11 @@ +import { DoubanSubjectState} from "src/org/wanxp/constant/DoubanUserState"; +import { DoubanMovieListHandler } from "./DoubanMovieListHandler"; +import {DoubanTeleplayListHandler} from "./DoubanTeleplayListHandler"; + + +export default class DoubanTeleplayDoListHandler extends DoubanTeleplayListHandler{ + getDoType(): string { + return DoubanSubjectState.do; + } + +} diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayListHandler.ts new file mode 100644 index 0000000..e1ed913 --- /dev/null +++ b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayListHandler.ts @@ -0,0 +1,13 @@ +import DoubanAbstractListHandler from "./DoubanAbstractListHandler"; +import { SyncType} from "../../../../constant/Constsant"; + +export abstract class DoubanTeleplayListHandler extends DoubanAbstractListHandler { + getSyncType(): SyncType { + return SyncType.teleplay; + } + + abstract getDoType(): string; + +} + + diff --git a/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayWishListHandler.ts b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayWishListHandler.ts new file mode 100644 index 0000000..556fb25 --- /dev/null +++ b/src/org/wanxp/douban/sync/handler/list/DoubanTeleplayWishListHandler.ts @@ -0,0 +1,11 @@ +import { DoubanSubjectState} from "src/org/wanxp/constant/DoubanUserState"; +import { DoubanMovieListHandler } from "./DoubanMovieListHandler"; +import {DoubanTeleplayListHandler} from "./DoubanTeleplayListHandler"; + + +export default class DoubanTeleplayWishListHandler extends DoubanTeleplayListHandler{ + getDoType(): string { + return DoubanSubjectState.wish; + } + +} diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts index 6aaa822..43926e6 100644 --- a/src/org/wanxp/lang/locale/en.ts +++ b/src/org/wanxp/lang/locale/en.ts @@ -538,6 +538,7 @@ PS: This file could be delete if you want to. '500001': `Sync Config`, '504102': `My Book`, '504103': `My Movie`, + '504107': `My Teleplay`, '504104': `My Broadcast`, '504105': `My Note`, '504106': `My Music`, diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts index d7f50c4..62cc705 100644 --- a/src/org/wanxp/lang/locale/zh-cn.ts +++ b/src/org/wanxp/lang/locale/zh-cn.ts @@ -549,6 +549,7 @@ export default { '500001': `同步设置`, '504102': `我的书籍`, '504103': `我的电影`, + '504107': `我的电视剧`, '504104': `我的广播`, '504105': `我的日记`, '504106': `我的音乐`,