From 6c52606417121acbfc702d224695e76536b61163 Mon Sep 17 00:00:00 2001 From: wanxp <977741432@qq.com> Date: Wed, 30 Aug 2023 18:10:37 +0800 Subject: [PATCH] feature: theater feature: imageData.url --- README.md | 1 + manifest.json | 2 +- package.json | 2 +- src/org/wanxp/constant/Constsant.ts | 4 + src/org/wanxp/constant/DoubanUserState.ts | 8 + .../data/handler/DoubanAbstractLoadHandler.ts | 1 + .../data/handler/DoubanBookLoadHandler.ts | 1 + .../data/handler/DoubanGameLoadHandler.ts | 1 + .../data/handler/DoubanMovieLoadHandler.ts | 1 + .../data/handler/DoubanMusicLoadHandler.ts | 1 + .../data/handler/DoubanNoteLoadHandler.ts | 1 + .../data/handler/DoubanOtherLoadHandler.ts | 2 + .../handler/DoubanSearchChooseItemHandler.ts | 3 +- .../data/handler/DoubanTeleplayLoadHandler.ts | 1 + .../data/handler/DoubanTheaterLoadHandler.ts | 149 ++++++++++++++++++ .../wanxp/douban/data/model/DoubanSubject.ts | 2 + .../douban/data/model/DoubanTheaterSubject.ts | 13 ++ .../wanxp/douban/data/search/SearchParser.ts | 1 + .../setting/TemplateVariableSettingsHelper.ts | 10 ++ src/org/wanxp/douban/user/UserComponent.ts | 15 +- src/org/wanxp/lang/locale/en.ts | 20 ++- src/org/wanxp/lang/locale/zh-cn.ts | 22 ++- versions.json | 4 +- 23 files changed, 248 insertions(+), 17 deletions(-) create mode 100644 src/org/wanxp/douban/data/handler/DoubanTheaterLoadHandler.ts create mode 100644 src/org/wanxp/douban/data/model/DoubanTheaterSubject.ts diff --git a/README.md b/README.md index 2677164..1df867f 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ | type | 类型 | 类型 | 类型 | 类型 | 类型 | 类型 | - | | score | 评分 | 评分 | 评分 | 评分 | 评分 | 评分 | - | | image | 封面 | 封面 | 封面 | 封面 | 图片 | 封面 | - | +| imageData.url | 封面url | 封面url | 封面url | 封面url | 封面url | 封面url | - | | url | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | - | | desc | 简介 | 简介 | 内容简介 | 简介 | 简介 | 简介 | - | | publisher | - | - | 出版社 | 出版者 | 发布者 | 发行商 | - | diff --git a/manifest.json b/manifest.json index 6ccc0d4..4036a2a 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "obsidian-douban-plugin", "name": "Douban", - "version": "1.8.8", + "version": "1.8.9", "minAppVersion": "0.12.0", "description": "This is a plugin that can import movies/books/musics/notes/games info data from Douban for Obsidian .", "author": "Wanxp", diff --git a/package.json b/package.json index 7aefddd..c212675 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-douban-plugin", - "version": "1.8.8", + "version": "1.8.9", "description": "This is a plugin for Obsidian (https://obsidian.md) that can import data from Douban (https://www.douban.com/).", "main": "main.js", "scripts": { diff --git a/src/org/wanxp/constant/Constsant.ts b/src/org/wanxp/constant/Constsant.ts index 60ad27f..3242875 100644 --- a/src/org/wanxp/constant/Constsant.ts +++ b/src/org/wanxp/constant/Constsant.ts @@ -104,6 +104,7 @@ export enum SupportType { NOTE = 'NOTE', GAME = 'GAME', TELEPLAY = 'TELEPLAY', + THEATER = 'THEATER', } /** @@ -177,6 +178,7 @@ export const DoubanSearchResultSubjectPreviousPage:DoubanSearchResultSubject = { genre: [], id: "", image: "", + imageUrl: "", publisher: "", score: 0, title: i18nHelper.getMessage("150102"), @@ -191,6 +193,7 @@ export const DoubanSearchResultSubjectNextPage:DoubanSearchResultSubject = { genre: [], id: "", image: "", + imageUrl: "", publisher: "", score: 0, title: i18nHelper.getMessage("150103"), @@ -205,6 +208,7 @@ export const DoubanSearchResultSubjectNextPageNeedLogin:DoubanSearchResultSubjec genre: [], id: "", image: "", + imageUrl: "", publisher: "", score: 0, title: i18nHelper.getMessage("150104"), diff --git a/src/org/wanxp/constant/DoubanUserState.ts b/src/org/wanxp/constant/DoubanUserState.ts index 7182dee..fd5c724 100644 --- a/src/org/wanxp/constant/DoubanUserState.ts +++ b/src/org/wanxp/constant/DoubanUserState.ts @@ -58,6 +58,13 @@ export const DoubanSubjectStateRecords_TELEPLAY: { [key in DoubanSubjectState]: [DoubanSubjectState.collect]: i18nHelper.getMessage('500704'), } +export const DoubanSubjectStateRecords_THEATER: { [key in DoubanSubjectState]: string } = { + [DoubanSubjectState.not]: i18nHelper.getMessage('500701'), + [DoubanSubjectState.wish]: i18nHelper.getMessage('500702'), + [DoubanSubjectState.do]: i18nHelper.getMessage('500703'), + [DoubanSubjectState.collect]: i18nHelper.getMessage('500704'), +} + export const DoubanSubjectStateRecords: { [key in SupportType]: Record } = { [SupportType.ALL]:DoubanSubjectStateRecords_ALL, [SupportType.MOVIE]:DoubanSubjectStateRecords_MOVIE, @@ -66,6 +73,7 @@ export const DoubanSubjectStateRecords: { [key in SupportType]: Record .replaceAll(DoubanParameter.TYPE, extract.type) .replaceAll(DoubanParameter.SCORE, this.handleSpecialContent(extract.score)) .replaceAll(DoubanParameter.IMAGE, extract.image) + .replaceAll(DoubanParameter.IMAGE_URL, extract.imageUrl) .replaceAll(DoubanParameter.URL, extract.url) .replaceAll(DoubanParameter.DESC, this.handleSpecialContent(extract.desc, textMode)) .replaceAll(DoubanParameter.PUBLISHER, extract.publisher) diff --git a/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts b/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts index 5e9ea11..a5dc665 100644 --- a/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts +++ b/src/org/wanxp/douban/data/handler/DoubanBookLoadHandler.ts @@ -112,6 +112,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler { + + constructor(doubanPlugin: DoubanPlugin) { + super(doubanPlugin); + } + + getSupportType(): SupportType { + return SupportType.THEATER; + } + + getHighQuantityImageUrl(fileName:string):string{ + return `https://img9.doubanio.com/view/photo/l/public/${fileName}`; + } + + 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 : "") + ; + } + + support(extract: DoubanSubject): boolean { + return extract && extract.type && (extract.type.contains("舞台剧") || extract.type.contains("舞剧") || extract.type.contains("Theater") || extract.type.contains("theater")); + } + + analysisUser(html: CheerioAPI, context: HandleContext): {data:CheerioAPI , userState: UserStateSubject} { + let rate = html('input#n_rating').val(); + let tagsStr = html('div#interest_sect_level > div.a_stars > span.color_gray').text().trim(); + let tags = tagsStr ? tagsStr.replace('标签:', '').trim().split(' ') : null; + let stateWord = html('div#interest_sect_level > div.a_stars > span.mr10').text().trim(); + let collectionDateStr = html('div#interest_sect_level > div.a_stars > span.mr10 > span.collection_date').text().trim(); + let userState1 = DoubanAbstractLoadHandler.getUserState(stateWord); + let component = html('div#interest_sect_level > div.a_stars > span.color_gray').next().next().text().trim(); + + + const userState: UserStateSubject = { + tags: tags, + rate: rate?Number(rate):null, + state: userState1, + collectionDate: collectionDateStr?moment(collectionDateStr, 'YYYY-MM-DD').toDate():null, + comment: component + } + return {data: html, userState: userState}; + } + + + parseSubjectFromHtml(html: CheerioAPI, context: HandleContext): DoubanMovieSubject { + const movie:DoubanMovieSubject = html('script') + .get() + .filter(scd => "application/ld+json" == html(scd).attr("type")) + .map(i => { + let item = html(i).text(); + item = super.html_decode(item); + let obj = JSON.parse(item.replace(/[\r\n\s+]/g, '')); + let idPattern = /(\d){5,10}/g; + let id = idPattern.exec(obj.url); + let name = obj.name; + let title = super.getTitleNameByMode(name, PersonNameMode.CH_NAME, context)??name; + let originalTitle = super.getTitleNameByMode(name, PersonNameMode.EN_NAME, context) ?? name; + + const result: DoubanMovieSubject = { + id: id ? id[0] : '', + title: title, + type: 'Movie', + score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined, + originalTitle: originalTitle, + desc: obj.description, + url: "https://movie.douban.com" + obj.url, + director: obj.director, + author: obj.author, + actor: obj.actor, + aggregateRating: obj.aggregateRating, + datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined, + image: obj.image, + imageUrl: obj.image, + genre: obj.genre, + publisher: '', + aliases: [""], + language: [""], + country: [], + time: null, + IMDb: null, + } + return result; + })[0]; + this.handlePersonNameByMeta(html, movie, context, 'video:actor', 'actor'); + this.handlePersonNameByMeta(html, movie, context, 'video:director', 'director'); + + let detailDom = html(html("#info").get(0)); + let publish = detailDom.find("span.pl"); + + let valueMap = new Map(); + + publish.map((index, info) => { + let key = html(info).text().trim(); + let value; + if (key.indexOf('又名') >= 0 || key.indexOf('语言') >= 0 || key.indexOf('制片国家') >= 0) { + // value = html(info.next.next).text().trim(); + let vas = html(info.next).text().trim(); + value = vas.split("/").map((v) => v.trim()); + } else if(key.indexOf('片长') >= 0) { + value = html(info.next.next).text().trim() + } else { + value = html(info.next).text().trim(); + } + valueMap.set(MovieKeyValueMap.get(key), value); + }) + + movie.country = valueMap.has('country') ? valueMap.get('country') : []; + movie.language = valueMap.has('language') ? valueMap.get('language') : []; + movie.time = valueMap.has('time') ? valueMap.get('time') : ""; + movie.aliases = valueMap.has('aliases') ? valueMap.get('aliases') : []; + movie.IMDb = valueMap.has('IMDb') ? valueMap.get('IMDb') : ""; + return movie; + } + + +} + +const MovieKeyValueMap: Map = new Map( + [['制片国家/地区:', 'country'], + ['语言:', 'language'], + ['片长:', 'time'], + ['又名:', 'aliases'], + ['IMDb:', 'IMDb'] + ] +); diff --git a/src/org/wanxp/douban/data/model/DoubanSubject.ts b/src/org/wanxp/douban/data/model/DoubanSubject.ts index 5c13c6a..9e82d31 100644 --- a/src/org/wanxp/douban/data/model/DoubanSubject.ts +++ b/src/org/wanxp/douban/data/model/DoubanSubject.ts @@ -6,6 +6,7 @@ export default class DoubanSubject { type: string; score: number; image: string; + imageUrl: string; url: string; desc: string; publisher: string; @@ -24,6 +25,7 @@ export const DoubanParameter = { TYPE: '{{type}}', SCORE: '{{score}}', IMAGE: '{{image}}', + IMAGE_URL: '{{imageData.url}}', URL: '{{url}}', DESC: '{{desc}}', PUBLISHER: '{{publisher}}', diff --git a/src/org/wanxp/douban/data/model/DoubanTheaterSubject.ts b/src/org/wanxp/douban/data/model/DoubanTheaterSubject.ts new file mode 100644 index 0000000..8eaa1c4 --- /dev/null +++ b/src/org/wanxp/douban/data/model/DoubanTheaterSubject.ts @@ -0,0 +1,13 @@ +import {AggregateRating, Person} from 'schema-dts'; + +import DoubanSubject from "./DoubanSubject"; + +export default class DoubanTheaterSubject extends DoubanSubject { + director: string[]; + author: string[]; + actor: string[]; + aggregateRating: AggregateRating; + originalTitle: string; + aliases: string[]; + language: string[]; +} diff --git a/src/org/wanxp/douban/data/search/SearchParser.ts b/src/org/wanxp/douban/data/search/SearchParser.ts index 7ab51b1..60acbca 100644 --- a/src/org/wanxp/douban/data/search/SearchParser.ts +++ b/src/org/wanxp/douban/data/search/SearchParser.ts @@ -29,6 +29,7 @@ export default class SearchParserHandler { desc: desc ? desc : '-', url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com', image: "", + imageUrl: "", publisher: "", datePublished: undefined, genre: [] diff --git a/src/org/wanxp/douban/setting/TemplateVariableSettingsHelper.ts b/src/org/wanxp/douban/setting/TemplateVariableSettingsHelper.ts index 732678f..9041403 100644 --- a/src/org/wanxp/douban/setting/TemplateVariableSettingsHelper.ts +++ b/src/org/wanxp/douban/setting/TemplateVariableSettingsHelper.ts @@ -72,6 +72,16 @@ ${i18nHelper.getMessage('122004')} ${i18nHelper.getMessage('310605')} ${i18nHelper.getMessage('310705')} + + imageData.url + ${i18nHelper.getMessage('310121')} + ${i18nHelper.getMessage('310221')} + ${i18nHelper.getMessage('310321')} + ${i18nHelper.getMessage('310421')} + ${i18nHelper.getMessage('310521')} + ${i18nHelper.getMessage('310621')} + ${i18nHelper.getMessage('310721')} + url ${i18nHelper.getMessage('310106')} diff --git a/src/org/wanxp/douban/user/UserComponent.ts b/src/org/wanxp/douban/user/UserComponent.ts index a88dd3d..9c60ca8 100644 --- a/src/org/wanxp/douban/user/UserComponent.ts +++ b/src/org/wanxp/douban/user/UserComponent.ts @@ -5,6 +5,8 @@ import {log} from "../../utils/Logutil"; import {i18nHelper} from "../../lang/helper"; import User from "./User"; import StringUtil from "../../utils/StringUtil"; +import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings"; +import {doubanHeaders} from "../../constant/Douban"; export default class UserComponent { private settingsManager: SettingsManager; @@ -75,19 +77,30 @@ export default class UserComponent { return this.user; } + async loadUserInfo(cookie: any): Promise { + const headers1 = { + 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7', + 'Accept-Language': 'zh-CN,zh;q=0.9', + 'Cookie': 'll="118254"; bid=e3SJhuRaDoQ; _pk_id.100001.8cb4=0b044d4d91fdda7d.1689002992.; ap_v=0,6.0; __yadk_uid=7Eg5yv2X4YarGEeH16Tm4fYL49PdGNcN; push_noty_num=0; push_doumail_num=0; __utmv=30149280.16378; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1689007676%2C%22https%3A%2F%2Fwww.google.com%2F%22%5D; _pk_ses.100001.8cb4=1; __utma=30149280.2026487677.1689002992.1689002992.1689007676.2; __utmc=30149280; __utmz=30149280.1689007676.2.2.utmcsr=google|utmccn=(organic)|utmcmd=organic|utmctr=(not%20provided); __utmt=1; dbcl2="163783265:gitjSogzBf4"; ck=-hBQ; __gads=ID=df3cc2947f6dddaa-2255abc9a2e200c3:T=1689004292:RT=1689007691:S=ALNI_MZZ0HVSzWxK28Qd8yN2KGJNkdthHA; __gpi=UID=00000c1f8aeb6832:T=1689004292:RT=1689007691:S=ALNI_MYsS7sKea87clnkc-vWGArdV8O6gQ; __utmb=30149280.7.10.1689007676', + 'Referer': 'https://accounts.douban.com/', + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' + } + // Object.assign(headers, doubanHeaders, {'Cookie': cookie}, {'Referer': 'https://accounts.douban.com/'}) let requestUrlParam: RequestUrlParam = { url: 'https://www.douban.com/mine/', method: "GET", - headers: {'Cookie': cookie}, + headers: headers1, throw: true }; this.settingsManager.debug('loadUserInfo:尝试获取用户信息:https://www.douban.com/mine/'); return request(requestUrlParam) .then(requestUrlResponse => { if (requestUrlResponse.indexOf('https://sec.douban.com/a') > 0) { + this.settingsManager.debug(`loadUserInfo:登录Douban获取异常网页如下:\n${requestUrlResponse}`); throw new Error(i18nHelper.getMessage('130105')); } + this.settingsManager.debug(`loadUserInfo:登录Douban获取网页如下:\n${requestUrlResponse}`); return requestUrlResponse; }) .then(load) diff --git a/src/org/wanxp/lang/locale/en.ts b/src/org/wanxp/lang/locale/en.ts index 67606ad..91ac4b6 100644 --- a/src/org/wanxp/lang/locale/en.ts +++ b/src/org/wanxp/lang/locale/en.ts @@ -296,7 +296,7 @@ PS: This file could be delete if you want to. '310102': `书名`, '310103': `类型`, '310104': `评分`, - '310105': `封面URL`, + '310105': `封面路径`, '310106': `豆瓣网址`, '310107': `内容简介`, '310108': `出版社`, @@ -313,6 +313,8 @@ PS: This file could be delete if you want to. '310119': `-`, '310120': `-`, '310130': `出版年份`, + '310121': `封面URL`, + //电影 @@ -320,7 +322,7 @@ PS: This file could be delete if you want to. '310202': `电影名称`, '310203': `类型`, '310204': `评分`, - '310205': `封面`, + '310205': `封面路径`, '310206': `豆瓣网址`, '310207': `简介`, '310208': ``, @@ -337,13 +339,14 @@ PS: This file could be delete if you want to. '310219': `IMDb`, '310220': `-`, '310230': `上映年份`, + '310221': `封面URL`, //电视剧 '310301': `豆瓣ID`, '310302': `电视剧名称`, '310303': `类型`, '310304': `评分`, - '310305': `封面`, + '310305': `封面路径`, '310306': `豆瓣网址`, '310307': `简介`, '310308': ``, @@ -360,6 +363,7 @@ PS: This file could be delete if you want to. '310319': `IMDb`, '310320': `episode:集数`, '310330': `上映年份`, + '310321': `封面URL`, //音乐 @@ -367,7 +371,7 @@ PS: This file could be delete if you want to. '310402': `音乐名`, '310403': `类型`, '310404': `评分`, - '310405': `封面`, + '310405': `封面路径`, '310406': `豆瓣网址`, '310407': `简介`, '310408': `出版者`, @@ -384,13 +388,14 @@ PS: This file could be delete if you want to. '310419': `-`, '310420': `-`, '310430': `发行年份`, + '310421': `封面URL`, //日记 '310501': `豆瓣ID`, '310502': `日记标题`, '310503': `类型`, '310504': `评分`, - '310505': `图片`, + '310505': `封面路径`, '310506': `豆瓣网址`, '310507': `简介`, '310508': `发布者`, @@ -407,13 +412,14 @@ PS: This file could be delete if you want to. '310519': `-`, '310520': `-`, '310530': `发布年份`, + '310521': `封面URL`, //游戏 '310601': `豆瓣ID`, '310602': `游戏名称`, '310603': `类型`, '310604': `评分`, - '310605': `封面`, + '310605': `封面路径`, '310606': `豆瓣网址`, '310607': `简介`, '310608': `发行商`, @@ -430,6 +436,7 @@ PS: This file could be delete if you want to. '310619': `-`, '310620': `-`, '310630': `发行年份`, + '310621': `封面URL`, //广播 '310701': `待开发`, @@ -453,6 +460,7 @@ PS: This file could be delete if you want to. '310719': `-`, '310720': `-`, '310730': `-`, + '310721': `封面URL`, '320101': `扩展1`, diff --git a/src/org/wanxp/lang/locale/zh-cn.ts b/src/org/wanxp/lang/locale/zh-cn.ts index 789fe2a..051d20b 100644 --- a/src/org/wanxp/lang/locale/zh-cn.ts +++ b/src/org/wanxp/lang/locale/zh-cn.ts @@ -314,7 +314,7 @@ export default { '310102': `书名`, '310103': `类型`, '310104': `评分`, - '310105': `封面URL`, + '310105': `封面路径`, '310106': `豆瓣网址`, '310107': `内容简介`, '310108': `出版社`, @@ -329,13 +329,15 @@ export default { '310117': `binding:装帧`, '310118': `producer:出品方`, '310130': `出版年份`, + '310121': `封面URL`, + //电影 '310201': `豆瓣ID`, '310202': `电影名称`, '310203': `类型`, '310204': `评分`, - '310205': `封面`, + '310205': `封面路径`, '310206': `豆瓣网址`, '310207': `简介`, '310208': ``, @@ -352,13 +354,14 @@ export default { '310219': `IMDb`, '310220': `-`, '310230': `上映年份`, + '310221': `封面URL`, //电视剧 '310301': `豆瓣ID`, '310302': `电视剧名称`, '310303': `类型`, '310304': `评分`, - '310305': `封面`, + '310305': `封面路径`, '310306': `豆瓣网址`, '310307': `简介`, '310308': `(固定值:未知)`, @@ -375,6 +378,7 @@ export default { '310319': `IMDb`, '310320': `episode:集数`, '310330': `上映年份`, + '310321': `封面URL`, //音乐 @@ -382,7 +386,7 @@ export default { '310402': `音乐名`, '310403': `类型`, '310404': `评分`, - '310405': `封面`, + '310405': `封面路径`, '310406': `豆瓣网址`, '310407': `简介`, '310408': `出版者`, @@ -397,13 +401,15 @@ export default { '310417': `-`, '310418': `-`, '310430': `发行年份`, + '310421': `封面URL`, + //日记 '310501': `豆瓣ID`, '310502': `日记标题`, '310503': `类型`, '310504': `评分`, - '310505': `图片`, + '310505': `封面路径`, '310506': `豆瓣网址`, '310507': `简介`, '310508': `发布者`, @@ -418,13 +424,14 @@ export default { '310517': `-`, '310518': `-`, '310530': `发布年份`, + '310521': `封面URL`, //游戏 '310601': `豆瓣ID`, '310602': `游戏名称`, '310603': `类型`, '310604': `评分`, - '310605': `封面`, + '310605': `封面路径`, '310606': `豆瓣网址`, '310607': `简介`, '310608': `发行商`, @@ -439,6 +446,8 @@ export default { '310617': `-`, '310618': `-`, '310630': `发行年份`, + '310621': `封面URL`, + //广播 '310701': `待开发`, @@ -460,6 +469,7 @@ export default { '310717': `-`, '310718': `-`, '310730': `-`, + '310721': `封面URL`, '320101': `扩展1`, '320102': `扩展2`, diff --git a/versions.json b/versions.json index e6e630b..d33d807 100644 --- a/versions.json +++ b/versions.json @@ -32,6 +32,8 @@ "1.8.4": "0.12.0", "1.8.5": "0.12.0", "1.8.6": "0.12.0", - "1.8.7": "0.12.0" + "1.8.7": "0.12.0", + "1.8.8": "0.12.0", + "1.8.9": "0.12.0" }