feature: theater

feature: imageData.url
This commit is contained in:
wanxp 2023-08-30 18:10:37 +08:00
parent 240f71f635
commit 6c52606417
23 changed files with 248 additions and 17 deletions

@ -79,6 +79,7 @@
| type | 类型 | 类型 | 类型 | 类型 | 类型 | 类型 | - | | type | 类型 | 类型 | 类型 | 类型 | 类型 | 类型 | - |
| score | 评分 | 评分 | 评分 | 评分 | 评分 | 评分 | - | | score | 评分 | 评分 | 评分 | 评分 | 评分 | 评分 | - |
| image | 封面 | 封面 | 封面 | 封面 | 图片 | 封面 | - | | image | 封面 | 封面 | 封面 | 封面 | 图片 | 封面 | - |
| imageData.url | 封面url | 封面url | 封面url | 封面url | 封面url | 封面url | - |
| url | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | - | | url | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | 豆瓣网址 | - |
| desc | 简介 | 简介 | 内容简介 | 简介 | 简介 | 简介 | - | | desc | 简介 | 简介 | 内容简介 | 简介 | 简介 | 简介 | - |
| publisher | - | - | 出版社 | 出版者 | 发布者 | 发行商 | - | | publisher | - | - | 出版社 | 出版者 | 发布者 | 发行商 | - |

@ -1,7 +1,7 @@
{ {
"id": "obsidian-douban-plugin", "id": "obsidian-douban-plugin",
"name": "Douban", "name": "Douban",
"version": "1.8.8", "version": "1.8.9",
"minAppVersion": "0.12.0", "minAppVersion": "0.12.0",
"description": "This is a plugin that can import movies/books/musics/notes/games info data from Douban for Obsidian .", "description": "This is a plugin that can import movies/books/musics/notes/games info data from Douban for Obsidian .",
"author": "Wanxp", "author": "Wanxp",

@ -1,6 +1,6 @@
{ {
"name": "obsidian-douban-plugin", "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/).", "description": "This is a plugin for Obsidian (https://obsidian.md) that can import data from Douban (https://www.douban.com/).",
"main": "main.js", "main": "main.js",
"scripts": { "scripts": {

@ -104,6 +104,7 @@ export enum SupportType {
NOTE = 'NOTE', NOTE = 'NOTE',
GAME = 'GAME', GAME = 'GAME',
TELEPLAY = 'TELEPLAY', TELEPLAY = 'TELEPLAY',
THEATER = 'THEATER',
} }
/** /**
@ -177,6 +178,7 @@ export const DoubanSearchResultSubjectPreviousPage:DoubanSearchResultSubject = {
genre: [], genre: [],
id: "", id: "",
image: "", image: "",
imageUrl: "",
publisher: "", publisher: "",
score: 0, score: 0,
title: i18nHelper.getMessage("150102"), title: i18nHelper.getMessage("150102"),
@ -191,6 +193,7 @@ export const DoubanSearchResultSubjectNextPage:DoubanSearchResultSubject = {
genre: [], genre: [],
id: "", id: "",
image: "", image: "",
imageUrl: "",
publisher: "", publisher: "",
score: 0, score: 0,
title: i18nHelper.getMessage("150103"), title: i18nHelper.getMessage("150103"),
@ -205,6 +208,7 @@ export const DoubanSearchResultSubjectNextPageNeedLogin:DoubanSearchResultSubjec
genre: [], genre: [],
id: "", id: "",
image: "", image: "",
imageUrl: "",
publisher: "", publisher: "",
score: 0, score: 0,
title: i18nHelper.getMessage("150104"), title: i18nHelper.getMessage("150104"),

@ -58,6 +58,13 @@ export const DoubanSubjectStateRecords_TELEPLAY: { [key in DoubanSubjectState]:
[DoubanSubjectState.collect]: i18nHelper.getMessage('500704'), [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<DoubanSubjectState, string> } = { export const DoubanSubjectStateRecords: { [key in SupportType]: Record<DoubanSubjectState, string> } = {
[SupportType.ALL]:DoubanSubjectStateRecords_ALL, [SupportType.ALL]:DoubanSubjectStateRecords_ALL,
[SupportType.MOVIE]:DoubanSubjectStateRecords_MOVIE, [SupportType.MOVIE]:DoubanSubjectStateRecords_MOVIE,
@ -66,6 +73,7 @@ export const DoubanSubjectStateRecords: { [key in SupportType]: Record<DoubanSub
[SupportType.NOTE]:DoubanSubjectStateRecords_NOTE, [SupportType.NOTE]:DoubanSubjectStateRecords_NOTE,
[SupportType.GAME]:DoubanSubjectStateRecords_GAME, [SupportType.GAME]:DoubanSubjectStateRecords_GAME,
[SupportType.TELEPLAY]:DoubanSubjectStateRecords_TELEPLAY, [SupportType.TELEPLAY]:DoubanSubjectStateRecords_TELEPLAY,
[SupportType.THEATER]:DoubanSubjectStateRecords_THEATER,
} }

@ -284,6 +284,7 @@ export default abstract class DoubanAbstractLoadHandler<T extends DoubanSubject>
.replaceAll(DoubanParameter.TYPE, extract.type) .replaceAll(DoubanParameter.TYPE, extract.type)
.replaceAll(DoubanParameter.SCORE, this.handleSpecialContent(extract.score)) .replaceAll(DoubanParameter.SCORE, this.handleSpecialContent(extract.score))
.replaceAll(DoubanParameter.IMAGE, extract.image) .replaceAll(DoubanParameter.IMAGE, extract.image)
.replaceAll(DoubanParameter.IMAGE_URL, extract.imageUrl)
.replaceAll(DoubanParameter.URL, extract.url) .replaceAll(DoubanParameter.URL, extract.url)
.replaceAll(DoubanParameter.DESC, this.handleSpecialContent(extract.desc, textMode)) .replaceAll(DoubanParameter.DESC, this.handleSpecialContent(extract.desc, textMode))
.replaceAll(DoubanParameter.PUBLISHER, extract.publisher) .replaceAll(DoubanParameter.PUBLISHER, extract.publisher)

@ -112,6 +112,7 @@ export default class DoubanBookLoadHandler extends DoubanAbstractLoadHandler<Dou
author: author, author: author,
translator: valueMap.has('translator') ? valueMap.get('translator') : [], translator: valueMap.has('translator') ? valueMap.get('translator') : [],
image: image, image: image,
imageUrl: image,
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined, datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined,
isbn: isbn, isbn: isbn,
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "", publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",

@ -95,6 +95,7 @@ export default class DoubanGameLoadHandler extends DoubanAbstractLoadHandler<Dou
url: url, url: url,
genre: valueMap.has('genre') ? valueMap.get('genre') : [], genre: valueMap.has('genre') ? valueMap.get('genre') : [],
image: image, image: image,
imageUrl: image,
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined, datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined,
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "", publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",
score: Number(score), score: Number(score),

@ -94,6 +94,7 @@ export default class DoubanMovieLoadHandler extends DoubanAbstractLoadHandler<Do
aggregateRating: obj.aggregateRating, aggregateRating: obj.aggregateRating,
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined, datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
image: obj.image, image: obj.image,
imageUrl: obj.image,
genre: obj.genre, genre: obj.genre,
publisher: '', publisher: '',
aliases: [""], aliases: [""],

@ -86,6 +86,7 @@ export default class DoubanMusicLoadHandler extends DoubanAbstractLoadHandler<Do
const result: DoubanMusicSubject = { const result: DoubanMusicSubject = {
image: image, image: image,
imageUrl: image,
datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined, datePublished: valueMap.has('datePublished') ? new Date(valueMap.get('datePublished')) : undefined,
publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "", publisher: valueMap.has('publisher') ? valueMap.get('publisher') : "",
score: Number(score), score: Number(score),

@ -53,6 +53,7 @@ export default class DoubanNoteLoadHandler extends DoubanAbstractLoadHandler<Dou
const result: DoubanNoteSubject = { const result: DoubanNoteSubject = {
image: image, image: image,
imageUrl: image,
datePublished: timePublished ? new Date(timePublished) : undefined, datePublished: timePublished ? new Date(timePublished) : undefined,
content: content ? html2markdown(content.toString()) : "", content: content ? html2markdown(content.toString()) : "",
id: id ? id[0] : "", id: id ? id[0] : "",

@ -29,10 +29,12 @@ export default class DoubanOtherLoadHandler extends DoubanAbstractLoadHandler<Do
} }
parseSubjectFromHtml(data: CheerioAPI, context: HandleContext): DoubanSubject { parseSubjectFromHtml(data: CheerioAPI, context: HandleContext): DoubanSubject {
log.notice(i18nHelper.getMessage('140101'));
return undefined; return undefined;
} }
analysisUser(html: CheerioAPI, context: HandleContext): { data: CheerioAPI; userState: UserStateSubject } { analysisUser(html: CheerioAPI, context: HandleContext): { data: CheerioAPI; userState: UserStateSubject } {
log.notice(i18nHelper.getMessage('140101'));
return {data: undefined, userState: undefined}; return {data: undefined, userState: undefined};
} }

@ -12,6 +12,7 @@ import {DoubanTeleplayLoadHandler} from "./DoubanTeleplayLoadHandler";
import DoubanGameLoadHandler from "./DoubanGameLoadHandler"; import DoubanGameLoadHandler from "./DoubanGameLoadHandler";
import HandleContext from "../model/HandleContext"; import HandleContext from "../model/HandleContext";
import HandleResult from "../model/HandleResult"; import HandleResult from "../model/HandleResult";
import DoubanTheaterLoadHandler from "./DoubanTheaterLoadHandler";
export class DoubanSearchChooseItemHandler { export class DoubanSearchChooseItemHandler {
@ -30,7 +31,7 @@ export class DoubanSearchChooseItemHandler {
new DoubanMusicLoadHandler(doubanPlugin), new DoubanMusicLoadHandler(doubanPlugin),
new DoubanNoteLoadHandler(doubanPlugin), new DoubanNoteLoadHandler(doubanPlugin),
new DoubanGameLoadHandler(doubanPlugin), new DoubanGameLoadHandler(doubanPlugin),
new DoubanTheaterLoadHandler(doubanPlugin),
this._doubanSubjectHandlerDefault]; this._doubanSubjectHandlerDefault];
} }

@ -94,6 +94,7 @@ export class DoubanTeleplayLoadHandler extends DoubanAbstractLoadHandler<DoubanT
aggregateRating: obj.aggregateRating, aggregateRating: obj.aggregateRating,
datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined, datePublished: obj.datePublished ? new Date(obj.datePublished) : undefined,
image: obj.image, image: obj.image,
imageUrl: obj.image,
genre: obj.genre, genre: obj.genre,
score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined, score: obj.aggregateRating ? obj.aggregateRating.ratingValue : undefined,
publisher: "", publisher: "",

@ -0,0 +1,149 @@
import {CheerioAPI} from 'cheerio';
import DoubanAbstractLoadHandler from "./DoubanAbstractLoadHandler";
import DoubanPlugin from "../../../main";
import SchemaOrg from "src/org/wanxp/utils/SchemaOrg";
import DoubanSubject from '../model/DoubanSubject';
import DoubanMovieSubject from '../model/DoubanMovieSubject';
import StringUtil from "../../../utils/StringUtil";
import HandleContext from "../model/HandleContext";
import {PersonNameMode, SupportType, TemplateKey} from "../../../constant/Constsant";
import {UserStateSubject} from "../model/UserStateSubject";
import {moment} from "obsidian";
import YamlUtil, {SPECIAL_CHAR_REG, TITLE_ALIASES_SPECIAL_CHAR_REG_G} from "../../../utils/YamlUtil";
import { Person } from 'schema-dts';
export default class DoubanTheaterLoadHandler extends DoubanAbstractLoadHandler<DoubanMovieSubject> {
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<string, any>();
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<string, string> = new Map(
[['制片国家/地区:', 'country'],
['语言:', 'language'],
['片长:', 'time'],
['又名:', 'aliases'],
['IMDb:', 'IMDb']
]
);

@ -6,6 +6,7 @@ export default class DoubanSubject {
type: string; type: string;
score: number; score: number;
image: string; image: string;
imageUrl: string;
url: string; url: string;
desc: string; desc: string;
publisher: string; publisher: string;
@ -24,6 +25,7 @@ export const DoubanParameter = {
TYPE: '{{type}}', TYPE: '{{type}}',
SCORE: '{{score}}', SCORE: '{{score}}',
IMAGE: '{{image}}', IMAGE: '{{image}}',
IMAGE_URL: '{{imageData.url}}',
URL: '{{url}}', URL: '{{url}}',
DESC: '{{desc}}', DESC: '{{desc}}',
PUBLISHER: '{{publisher}}', PUBLISHER: '{{publisher}}',

@ -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[];
}

@ -29,6 +29,7 @@ export default class SearchParserHandler {
desc: desc ? desc : '-', desc: desc ? desc : '-',
url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com', url: urlResult ? decodeURIComponent(urlResult[0]) : 'https://www.douban.com',
image: "", image: "",
imageUrl: "",
publisher: "", publisher: "",
datePublished: undefined, datePublished: undefined,
genre: [] genre: []

@ -72,6 +72,16 @@ ${i18nHelper.getMessage('122004')}
<td>${i18nHelper.getMessage('310605')}</td> <td>${i18nHelper.getMessage('310605')}</td>
<td>${i18nHelper.getMessage('310705')}</td> <td>${i18nHelper.getMessage('310705')}</td>
</tr> </tr>
<tr>
<td>imageData.url</td>
<td>${i18nHelper.getMessage('310121')}</td>
<td>${i18nHelper.getMessage('310221')}</td>
<td>${i18nHelper.getMessage('310321')}</td>
<td>${i18nHelper.getMessage('310421')}</td>
<td>${i18nHelper.getMessage('310521')}</td>
<td>${i18nHelper.getMessage('310621')}</td>
<td>${i18nHelper.getMessage('310721')}</td>
</tr>
<tr> <tr>
<td>url</td> <td>url</td>
<td>${i18nHelper.getMessage('310106')}</td> <td>${i18nHelper.getMessage('310106')}</td>

@ -5,6 +5,8 @@ import {log} from "../../utils/Logutil";
import {i18nHelper} from "../../lang/helper"; import {i18nHelper} from "../../lang/helper";
import User from "./User"; import User from "./User";
import StringUtil from "../../utils/StringUtil"; import StringUtil from "../../utils/StringUtil";
import {DEFAULT_SETTINGS} from "../../constant/DefaultSettings";
import {doubanHeaders} from "../../constant/Douban";
export default class UserComponent { export default class UserComponent {
private settingsManager: SettingsManager; private settingsManager: SettingsManager;
@ -75,19 +77,30 @@ export default class UserComponent {
return this.user; return this.user;
} }
async loadUserInfo(cookie: any): Promise<User> { async loadUserInfo(cookie: any): Promise<User> {
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 = { let requestUrlParam: RequestUrlParam = {
url: 'https://www.douban.com/mine/', url: 'https://www.douban.com/mine/',
method: "GET", method: "GET",
headers: {'Cookie': cookie}, headers: headers1,
throw: true throw: true
}; };
this.settingsManager.debug('loadUserInfo:尝试获取用户信息:https://www.douban.com/mine/'); this.settingsManager.debug('loadUserInfo:尝试获取用户信息:https://www.douban.com/mine/');
return request(requestUrlParam) return request(requestUrlParam)
.then(requestUrlResponse => { .then(requestUrlResponse => {
if (requestUrlResponse.indexOf('https://sec.douban.com/a') > 0) { if (requestUrlResponse.indexOf('https://sec.douban.com/a') > 0) {
this.settingsManager.debug(`loadUserInfo:登录Douban获取异常网页如下:\n${requestUrlResponse}`);
throw new Error(i18nHelper.getMessage('130105')); throw new Error(i18nHelper.getMessage('130105'));
} }
this.settingsManager.debug(`loadUserInfo:登录Douban获取网页如下:\n${requestUrlResponse}`);
return requestUrlResponse; return requestUrlResponse;
}) })
.then(load) .then(load)

@ -296,7 +296,7 @@ PS: This file could be delete if you want to.
'310102': `书名`, '310102': `书名`,
'310103': `类型`, '310103': `类型`,
'310104': `评分`, '310104': `评分`,
'310105': `封面URL`, '310105': `封面路径`,
'310106': `豆瓣网址`, '310106': `豆瓣网址`,
'310107': `内容简介`, '310107': `内容简介`,
'310108': `出版社`, '310108': `出版社`,
@ -313,6 +313,8 @@ PS: This file could be delete if you want to.
'310119': `-`, '310119': `-`,
'310120': `-`, '310120': `-`,
'310130': `出版年份`, '310130': `出版年份`,
'310121': `封面URL`,
//电影 //电影
@ -320,7 +322,7 @@ PS: This file could be delete if you want to.
'310202': `电影名称`, '310202': `电影名称`,
'310203': `类型`, '310203': `类型`,
'310204': `评分`, '310204': `评分`,
'310205': `封面`, '310205': `封面路径`,
'310206': `豆瓣网址`, '310206': `豆瓣网址`,
'310207': `简介`, '310207': `简介`,
'310208': ``, '310208': ``,
@ -337,13 +339,14 @@ PS: This file could be delete if you want to.
'310219': `IMDb`, '310219': `IMDb`,
'310220': `-`, '310220': `-`,
'310230': `上映年份`, '310230': `上映年份`,
'310221': `封面URL`,
//电视剧 //电视剧
'310301': `豆瓣ID`, '310301': `豆瓣ID`,
'310302': `电视剧名称`, '310302': `电视剧名称`,
'310303': `类型`, '310303': `类型`,
'310304': `评分`, '310304': `评分`,
'310305': `封面`, '310305': `封面路径`,
'310306': `豆瓣网址`, '310306': `豆瓣网址`,
'310307': `简介`, '310307': `简介`,
'310308': ``, '310308': ``,
@ -360,6 +363,7 @@ PS: This file could be delete if you want to.
'310319': `IMDb`, '310319': `IMDb`,
'310320': `episode:集数`, '310320': `episode:集数`,
'310330': `上映年份`, '310330': `上映年份`,
'310321': `封面URL`,
//音乐 //音乐
@ -367,7 +371,7 @@ PS: This file could be delete if you want to.
'310402': `音乐名`, '310402': `音乐名`,
'310403': `类型`, '310403': `类型`,
'310404': `评分`, '310404': `评分`,
'310405': `封面`, '310405': `封面路径`,
'310406': `豆瓣网址`, '310406': `豆瓣网址`,
'310407': `简介`, '310407': `简介`,
'310408': `出版者`, '310408': `出版者`,
@ -384,13 +388,14 @@ PS: This file could be delete if you want to.
'310419': `-`, '310419': `-`,
'310420': `-`, '310420': `-`,
'310430': `发行年份`, '310430': `发行年份`,
'310421': `封面URL`,
//日记 //日记
'310501': `豆瓣ID`, '310501': `豆瓣ID`,
'310502': `日记标题`, '310502': `日记标题`,
'310503': `类型`, '310503': `类型`,
'310504': `评分`, '310504': `评分`,
'310505': `图片`, '310505': `封面路径`,
'310506': `豆瓣网址`, '310506': `豆瓣网址`,
'310507': `简介`, '310507': `简介`,
'310508': `发布者`, '310508': `发布者`,
@ -407,13 +412,14 @@ PS: This file could be delete if you want to.
'310519': `-`, '310519': `-`,
'310520': `-`, '310520': `-`,
'310530': `发布年份`, '310530': `发布年份`,
'310521': `封面URL`,
//游戏 //游戏
'310601': `豆瓣ID`, '310601': `豆瓣ID`,
'310602': `游戏名称`, '310602': `游戏名称`,
'310603': `类型`, '310603': `类型`,
'310604': `评分`, '310604': `评分`,
'310605': `封面`, '310605': `封面路径`,
'310606': `豆瓣网址`, '310606': `豆瓣网址`,
'310607': `简介`, '310607': `简介`,
'310608': `发行商`, '310608': `发行商`,
@ -430,6 +436,7 @@ PS: This file could be delete if you want to.
'310619': `-`, '310619': `-`,
'310620': `-`, '310620': `-`,
'310630': `发行年份`, '310630': `发行年份`,
'310621': `封面URL`,
//广播 //广播
'310701': `待开发`, '310701': `待开发`,
@ -453,6 +460,7 @@ PS: This file could be delete if you want to.
'310719': `-`, '310719': `-`,
'310720': `-`, '310720': `-`,
'310730': `-`, '310730': `-`,
'310721': `封面URL`,
'320101': `扩展1`, '320101': `扩展1`,

@ -314,7 +314,7 @@ export default {
'310102': `书名`, '310102': `书名`,
'310103': `类型`, '310103': `类型`,
'310104': `评分`, '310104': `评分`,
'310105': `封面URL`, '310105': `封面路径`,
'310106': `豆瓣网址`, '310106': `豆瓣网址`,
'310107': `内容简介`, '310107': `内容简介`,
'310108': `出版社`, '310108': `出版社`,
@ -329,13 +329,15 @@ export default {
'310117': `binding:装帧`, '310117': `binding:装帧`,
'310118': `producer:出品方`, '310118': `producer:出品方`,
'310130': `出版年份`, '310130': `出版年份`,
'310121': `封面URL`,
//电影 //电影
'310201': `豆瓣ID`, '310201': `豆瓣ID`,
'310202': `电影名称`, '310202': `电影名称`,
'310203': `类型`, '310203': `类型`,
'310204': `评分`, '310204': `评分`,
'310205': `封面`, '310205': `封面路径`,
'310206': `豆瓣网址`, '310206': `豆瓣网址`,
'310207': `简介`, '310207': `简介`,
'310208': ``, '310208': ``,
@ -352,13 +354,14 @@ export default {
'310219': `IMDb`, '310219': `IMDb`,
'310220': `-`, '310220': `-`,
'310230': `上映年份`, '310230': `上映年份`,
'310221': `封面URL`,
//电视剧 //电视剧
'310301': `豆瓣ID`, '310301': `豆瓣ID`,
'310302': `电视剧名称`, '310302': `电视剧名称`,
'310303': `类型`, '310303': `类型`,
'310304': `评分`, '310304': `评分`,
'310305': `封面`, '310305': `封面路径`,
'310306': `豆瓣网址`, '310306': `豆瓣网址`,
'310307': `简介`, '310307': `简介`,
'310308': `(固定值:未知)`, '310308': `(固定值:未知)`,
@ -375,6 +378,7 @@ export default {
'310319': `IMDb`, '310319': `IMDb`,
'310320': `episode:集数`, '310320': `episode:集数`,
'310330': `上映年份`, '310330': `上映年份`,
'310321': `封面URL`,
//音乐 //音乐
@ -382,7 +386,7 @@ export default {
'310402': `音乐名`, '310402': `音乐名`,
'310403': `类型`, '310403': `类型`,
'310404': `评分`, '310404': `评分`,
'310405': `封面`, '310405': `封面路径`,
'310406': `豆瓣网址`, '310406': `豆瓣网址`,
'310407': `简介`, '310407': `简介`,
'310408': `出版者`, '310408': `出版者`,
@ -397,13 +401,15 @@ export default {
'310417': `-`, '310417': `-`,
'310418': `-`, '310418': `-`,
'310430': `发行年份`, '310430': `发行年份`,
'310421': `封面URL`,
//日记 //日记
'310501': `豆瓣ID`, '310501': `豆瓣ID`,
'310502': `日记标题`, '310502': `日记标题`,
'310503': `类型`, '310503': `类型`,
'310504': `评分`, '310504': `评分`,
'310505': `图片`, '310505': `封面路径`,
'310506': `豆瓣网址`, '310506': `豆瓣网址`,
'310507': `简介`, '310507': `简介`,
'310508': `发布者`, '310508': `发布者`,
@ -418,13 +424,14 @@ export default {
'310517': `-`, '310517': `-`,
'310518': `-`, '310518': `-`,
'310530': `发布年份`, '310530': `发布年份`,
'310521': `封面URL`,
//游戏 //游戏
'310601': `豆瓣ID`, '310601': `豆瓣ID`,
'310602': `游戏名称`, '310602': `游戏名称`,
'310603': `类型`, '310603': `类型`,
'310604': `评分`, '310604': `评分`,
'310605': `封面`, '310605': `封面路径`,
'310606': `豆瓣网址`, '310606': `豆瓣网址`,
'310607': `简介`, '310607': `简介`,
'310608': `发行商`, '310608': `发行商`,
@ -439,6 +446,8 @@ export default {
'310617': `-`, '310617': `-`,
'310618': `-`, '310618': `-`,
'310630': `发行年份`, '310630': `发行年份`,
'310621': `封面URL`,
//广播 //广播
'310701': `待开发`, '310701': `待开发`,
@ -460,6 +469,7 @@ export default {
'310717': `-`, '310717': `-`,
'310718': `-`, '310718': `-`,
'310730': `-`, '310730': `-`,
'310721': `封面URL`,
'320101': `扩展1`, '320101': `扩展1`,
'320102': `扩展2`, '320102': `扩展2`,

@ -32,6 +32,8 @@
"1.8.4": "0.12.0", "1.8.4": "0.12.0",
"1.8.5": "0.12.0", "1.8.5": "0.12.0",
"1.8.6": "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"
} }