diff --git a/src/org/wanxp/douban/setting/SettingsManager.ts b/src/org/wanxp/douban/setting/SettingsManager.ts index 10683c2..e5b064b 100644 --- a/src/org/wanxp/douban/setting/SettingsManager.ts +++ b/src/org/wanxp/douban/setting/SettingsManager.ts @@ -35,12 +35,22 @@ export default class SettingsManager { if (this.settings.loginHeadersContent) { // return StringUtil.parseHeaders(this.settings.loginHeadersContent); return JSON.parse(this.settings.loginHeadersContent); + }else if (this.settings.loginCookiesContent) { + return {Cookie: this.settings.loginCookiesContent, ...DEFAULT_DOUBAN_HEADERS}; }else { return DEFAULT_DOUBAN_HEADERS; } - } + getHeadersByCookie(cookie:string):object { + if (cookie) { + return {...DEFAULT_DOUBAN_HEADERS, Cookie: cookie}; + }else { + return DEFAULT_DOUBAN_HEADERS; + } + } + + async updateSetting(key: keyof DoubanPluginSetting, value:any) { diff --git a/src/org/wanxp/douban/user/UserComponent.ts b/src/org/wanxp/douban/user/UserComponent.ts index 73a9f75..3f8f21d 100644 --- a/src/org/wanxp/douban/user/UserComponent.ts +++ b/src/org/wanxp/douban/user/UserComponent.ts @@ -47,41 +47,15 @@ export default class UserComponent { needLogin() { const headers:any = this.settingsManager.getSetting('loginHeadersContent') ; - if(!headers) { + const cookies:any = this.settingsManager.getSetting('loginCookiesContent') ; + + if(!headers && !cookies) { return false; } return !this.isLogin(); } - async loginByCookie():Promise { - let cookie = this.settingsManager.getSetting('loginCookiesContent'); - if(!cookie) { - this.settingsManager.debug('主界面:loginByCookie:无豆瓣cookies信息,获取用户信息失败'); - return new User(); - } - this.settingsManager.debug('主界面:loginByCookie:豆瓣cookies信息正常,尝试获取用户信息'); - await this.loadUserInfo(cookie).then(user => { - this.user = user; - this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`); - }); - return this.user; - } - async loginByHeaders() { - // @ts-ignore - let headersStr:string = this.settingsManager.getSetting('loginHeadersContent'); - if(!headersStr) { - this.settingsManager.debug('主界面:loginByCookie:无豆瓣headers信息,获取用户信息失败'); - return new User(); - } - this.settingsManager.debug('主界面:loginByCookie:豆瓣cookies信息正常,尝试获取用户信息'); - const headers:object = JSON.parse(headersStr); - await this.loadUserInfoByHeaders(headers).then(user => { - this.user = user; - this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`); - }); - return this.user; - } async loginHeaders(headers: object):Promise { if(!headers) { @@ -105,18 +79,14 @@ export default class UserComponent { } async loginCookie(cookie: any):Promise { - if(!cookie) { - return new User(); - } - this.settingsManager.debug('配置界面:loginCookie:豆瓣cookies信息正常,尝试获取用户信息,cookie:' + cookie); - await this.loadUserInfo(cookie).then(user => { - this.user = user; - this.settingsManager.debug(`配置界面:loginCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`); - }); - if(this.user) { - this.settingsManager.updateSetting('loginCookiesContent', cookie); - } - return this.user; + const headers: object = this.settingsManager.getHeadersByCookie(cookie); + return this.loginHeaders(headers) + .then(user => { + if(this.user) { + this.settingsManager.updateSetting('loginCookiesContent', cookie); + } + return user; + }); } @@ -157,4 +127,17 @@ export default class UserComponent { }; + async login() { + let headers:object = this.settingsManager.getHeaders(); + if(!headers) { + this.settingsManager.debug('主界面:login:无豆瓣信息,获取用户信息失败'); + return new User(); + } + this.settingsManager.debug('主界面:login:豆瓣headers信息正常,尝试获取用户信息'); + await this.loadUserInfoByHeaders(headers).then(user => { + this.user = user; + this.settingsManager.debug(`主界面:loginByCookie:豆瓣cookies信息正常,${user&&user.id?'获取用户信息成功id:'+ StringUtil.confuse(user.id) + ',用户名:'+ StringUtil.confuse(user.name) :'获取用户信息失败'}`); + }); + return this.user; + } } diff --git a/src/org/wanxp/main.ts b/src/org/wanxp/main.ts index 48276d1..df1b599 100644 --- a/src/org/wanxp/main.ts +++ b/src/org/wanxp/main.ts @@ -209,7 +209,7 @@ export default class DoubanPlugin extends Plugin { this.netFileHandler = new NetFileHandler(this.fileHandler); if (this.userComponent.needLogin()) { try { - await this.userComponent.loginByCookie(); + await this.userComponent.login(); }catch (e) { log.debug(i18nHelper.getMessage('100101')); } @@ -280,38 +280,19 @@ export default class DoubanPlugin extends Plugin { } async checkLogin(context: HandleContext):Promise { - // return await this.checkLoginByCookie(context); - return await this.checkLoginByHeaders(context); - - } - - private async checkLoginByCookie(context: HandleContext) { this.settingsManager.debug('主界面:同步时的登录状态检测'); if (!context.userComponent.needLogin()) { - this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试使用cookie获取用户信息'); - await context.userComponent.loginByCookie(); + this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试获取用户信息'); + await context.userComponent.login(); } if (!context.userComponent.isLogin()) { - this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试使用cookie获取用户信息失败'); + this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试获取用户信息失败'); new Notice(i18nHelper.getMessage('140303')); return false; } return true; } - private async checkLoginByHeaders(context: HandleContext) { - this.settingsManager.debug('主界面:同步时的登录状态检测'); - if (!context.userComponent.needLogin()) { - this.settingsManager.debug('主界面:同步时的登录状态检测完成: 无用户信息, 尝试使用headers获取用户信息'); - await context.userComponent.loginByHeaders(); - } - if (!context.userComponent.isLogin()) { - this.settingsManager.debug('主界面:同步时的登录状态检测完成: 尝试使用headers获取用户信息失败'); - new Notice(i18nHelper.getMessage('140303')); - return false; - } - return true; - } private initSyncDefaultSettings(syncConfig: SyncConfig) { syncConfig.dataFilePath = syncConfig.dataFilePath ? syncConfig.dataFilePath : DEFAULT_SETTINGS.dataFilePath; diff --git a/src/org/wanxp/utils/HttpUtil.ts b/src/org/wanxp/utils/HttpUtil.ts index dc87334..dc8290c 100644 --- a/src/org/wanxp/utils/HttpUtil.ts +++ b/src/org/wanxp/utils/HttpUtil.ts @@ -39,7 +39,6 @@ export default class HttpUtil { response.on("end", function () { let data = Buffer.concat(chunks, size) let html = data.toString() - console.log(html) resolve(html) }) }) @@ -52,7 +51,6 @@ export default class HttpUtil { * @param headers 请求参数 * @param settingsManager 设置管理器 */ - // Cookie: 'll="108296"; bid=xHRJLeWBrjQ; _pk_id.100001.8cb4=f8f83e81ec224a1a.1691572669.; __utmv=30149280.13103; __yadk_uid=ce95W7OsgT0iKFceWgbMSUdw1oOqxNTk; __gads=ID=62585f60f3f637d0-2234f63fc6e200a5:T=1691572672:RT=1691572672:S=ALNI_MaIqTxSWHsfpnX9nAmMHcPQEsaezg; __gpi=UID=00000c29a9f98e5b:T=1691572672:RT=1691572672:S=ALNI_MbLAq8XNoKrRPKNqGCMdgXSPZvidw; ap_v=0,6.0; __utma=30149280.135860784.1691572641.1691572641.1694509646.2; __utmc=30149280; __utmz=30149280.1694509646.2.2.utmcsr=baidu|utmccn=(organic)|utmcmd=organic; _pk_ref.100001.8cb4=%5B%22%22%2C%22%22%2C1694509648%2C%22https%3A%2F%2Fmovie.douban.com%2Ftv%2F%22%5D; _pk_ses.100001.8cb4=1; __utmt=1; dbcl2="131038721:LUssju34QFw"; ck=dCQj; push_noty_num=0; push_doumail_num=0; __utmb=30149280.3.10.1694509646' public static httpRequestGetBuffer(url: string, headers: any, settingsManager?: SettingsManager): Promise { let options = { headers: headers