mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-04 16:48:44 +08:00
custom lib
This commit is contained in:
parent
ba5e6a8ee2
commit
6b047b595c
34
package-lock.json
generated
34
package-lock.json
generated
@ -1,19 +1,18 @@
|
|||||||
{
|
{
|
||||||
"name": "obsidian-douban-plugin",
|
"name": "obsidian-douban-plugin",
|
||||||
"version": "1.9.6",
|
"version": "2.0.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "obsidian-douban-plugin",
|
"name": "obsidian-douban-plugin",
|
||||||
"version": "1.9.6",
|
"version": "2.0.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@notable/html2markdown": "^1.1.3",
|
"@notable/html2markdown": "^1.1.3",
|
||||||
"@popperjs/core": "^2.11.6",
|
"@popperjs/core": "^2.11.6",
|
||||||
"cheerio": "^1.0.0-rc.11",
|
"cheerio": "^1.0.0-rc.11",
|
||||||
"follow-redirects": "^1.15.3",
|
"follow-redirects": "^1.15.3",
|
||||||
"iconv-lite": "^0.6.3",
|
|
||||||
"schema-dts": "^1.1.0"
|
"schema-dts": "^1.1.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
@ -3291,17 +3290,6 @@
|
|||||||
"node": ">=10.17.0"
|
"node": ">=10.17.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/iconv-lite": {
|
|
||||||
"version": "0.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
|
||||||
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
|
|
||||||
"dependencies": {
|
|
||||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.10.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/ignore": {
|
"node_modules/ignore": {
|
||||||
"version": "5.2.4",
|
"version": "5.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
||||||
@ -4884,11 +4872,6 @@
|
|||||||
"queue-microtask": "^1.2.2"
|
"queue-microtask": "^1.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/safer-buffer": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
|
||||||
},
|
|
||||||
"node_modules/schema-dts": {
|
"node_modules/schema-dts": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",
|
||||||
@ -7861,14 +7844,6 @@
|
|||||||
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"iconv-lite": {
|
|
||||||
"version": "0.6.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
|
|
||||||
"integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
|
|
||||||
"requires": {
|
|
||||||
"safer-buffer": ">= 2.1.2 < 3.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"ignore": {
|
"ignore": {
|
||||||
"version": "5.2.4",
|
"version": "5.2.4",
|
||||||
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
|
||||||
@ -9045,11 +9020,6 @@
|
|||||||
"queue-microtask": "^1.2.2"
|
"queue-microtask": "^1.2.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"safer-buffer": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
|
|
||||||
},
|
|
||||||
"schema-dts": {
|
"schema-dts": {
|
||||||
"version": "1.1.0",
|
"version": "1.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import { log } from "./Logutil";
|
import { log } from "./Logutil";
|
||||||
import { i18nHelper } from "../lang/helper";
|
import { i18nHelper } from "../lang/helper";
|
||||||
import SettingsManager from "../douban/setting/SettingsManager";
|
import SettingsManager from "../douban/setting/SettingsManager";
|
||||||
import { request, RequestUrlParam } from "obsidian";
|
import {request, requestUrl, RequestUrlParam} from "obsidian";
|
||||||
import DoubanHumanCheckModel from "../douban/component/DoubanHumanCheckModel";
|
import DoubanHumanCheckModel from "../douban/component/DoubanHumanCheckModel";
|
||||||
import {LoginUtil} from "./LoginUtil";
|
|
||||||
|
|
||||||
const {https} = require("follow-redirects");
|
// const {https} = require("follow-redirects");
|
||||||
|
|
||||||
export default class HttpUtil {
|
export default class HttpUtil {
|
||||||
|
|
||||||
@ -25,31 +24,33 @@ export default class HttpUtil {
|
|||||||
headers: headersInner
|
headers: headersInner
|
||||||
}
|
}
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取网页开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
settingsManager.debug(`Obsidian-Douban:从网络获取网页开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
||||||
return new Promise((resolve, rejects) => {
|
// return new Promise((resolve, rejects) => {
|
||||||
https.get(url, { ...options }, function (response: any) {
|
// https.get(url, { ...options }, function (response: any) {
|
||||||
let chunks: any = [],
|
// let chunks: any = [],
|
||||||
size = 0;
|
// size = 0;
|
||||||
if (response.status == 403) {
|
// if (response.status == 403) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
// rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
}
|
// }
|
||||||
response.on("data", function (chunk: any) {
|
// response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
// chunks.push(chunk)
|
||||||
size += chunk.length
|
// size += chunk.length
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
|
// response.on("end", function () {
|
||||||
|
// const data = Buffer.concat(chunks, size)
|
||||||
|
// const html = data.toString()
|
||||||
|
// if (settingsManager) {
|
||||||
|
// settingsManager.debug(`Obsidian-Douban:从网络获取网页完成:\nhtml:\n${html}`);
|
||||||
|
// }
|
||||||
|
// if (LoginUtil.contentNeedLogin(html)) {
|
||||||
|
// rejects(new Error(i18nHelper.getMessage('140304')));
|
||||||
|
// }
|
||||||
|
// resolve(html)
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
return this.httpRequestGet1Inner(url, headers, 0, settingsManager);
|
||||||
|
|
||||||
response.on("end", function () {
|
|
||||||
const data = Buffer.concat(chunks, size)
|
|
||||||
const html = data.toString()
|
|
||||||
if (settingsManager) {
|
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取网页完成:\nhtml:\n${html}`);
|
|
||||||
}
|
|
||||||
if (LoginUtil.contentNeedLogin(html)) {
|
|
||||||
rejects(new Error(i18nHelper.getMessage('140304')));
|
|
||||||
}
|
|
||||||
resolve(html)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -65,31 +66,33 @@ export default class HttpUtil {
|
|||||||
headers: headersInner
|
headers: headersInner
|
||||||
}
|
}
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取json开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
settingsManager.debug(`Obsidian-Douban:从网络获取json开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
|
||||||
return new Promise((resolve, rejects) => {
|
// return new Promise((resolve, rejects) => {
|
||||||
https.get(url, { ...options }, function (response: any) {
|
// https.get(url, { ...options }, function (response: any) {
|
||||||
const chunks: any = [];
|
// const chunks: any = [];
|
||||||
let size = 0;
|
// let size = 0;
|
||||||
if (response.status == 403) {
|
// if (response.status == 403) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
// rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
}
|
// }
|
||||||
response.on("data", function (chunk: any) {
|
// response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
// chunks.push(chunk)
|
||||||
size += chunk.length
|
// size += chunk.length
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
|
// response.on("end", function () {
|
||||||
|
// const data = Buffer.concat(chunks, size)
|
||||||
|
// const html = data.toString()
|
||||||
|
// if (settingsManager) {
|
||||||
|
// settingsManager.debug(`Obsidian-Douban:从网络获取网页完成:\nhtml:\n${html}`);
|
||||||
|
// }
|
||||||
|
// if (LoginUtil.contentNeedLogin(html)) {
|
||||||
|
// rejects(new Error(i18nHelper.getMessage('140304')));
|
||||||
|
// }
|
||||||
|
// resolve(html)
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
// })
|
||||||
|
return this.httpRequestGet1Inner(url, headers, 0, settingsManager);
|
||||||
|
|
||||||
response.on("end", function () {
|
|
||||||
const data = Buffer.concat(chunks, size)
|
|
||||||
const html = data.toString()
|
|
||||||
if (settingsManager) {
|
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取网页完成:\nhtml:\n${html}`);
|
|
||||||
}
|
|
||||||
if (LoginUtil.contentNeedLogin(html)) {
|
|
||||||
rejects(new Error(i18nHelper.getMessage('140304')));
|
|
||||||
}
|
|
||||||
resolve(html)
|
|
||||||
})
|
|
||||||
})
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -102,30 +105,34 @@ export default class HttpUtil {
|
|||||||
let options = {
|
let options = {
|
||||||
headers: headers
|
headers: headers
|
||||||
}
|
}
|
||||||
if (settingsManager) {
|
// if (settingsManager) {
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}`);
|
// settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}`);
|
||||||
}
|
// }
|
||||||
return new Promise((resolve, rejects) => {
|
// return new Promise((resolve, rejects) => {
|
||||||
https.get(url, { ...options }, function (response: any) {
|
// https.get(url, { ...options }, function (response: any) {
|
||||||
let chunks: any = [],
|
// let chunks: any = [],
|
||||||
size = 0;
|
// size = 0;
|
||||||
if (response.status == 403) {
|
// if (response.status == 403) {
|
||||||
rejects(new Error(i18nHelper.getMessage('130106')));
|
// rejects(new Error(i18nHelper.getMessage('130106')));
|
||||||
}
|
// }
|
||||||
response.on("data", function (chunk: any) {
|
// response.on("data", function (chunk: any) {
|
||||||
chunks.push(chunk)
|
// chunks.push(chunk)
|
||||||
size += chunk.length
|
// size += chunk.length
|
||||||
})
|
// })
|
||||||
|
//
|
||||||
response.on("end", function () {
|
// response.on("end", function () {
|
||||||
let data = Buffer.concat(chunks, size)
|
// let data = Buffer.concat(chunks, size)
|
||||||
if (settingsManager) {
|
// if (settingsManager) {
|
||||||
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:\n${url}`);
|
// settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:\n${url}`);
|
||||||
}
|
// }
|
||||||
resolve(data)
|
// resolve(data)
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
})
|
// })
|
||||||
|
// return this.httpRequestGet1Inner(url, headers, 0, settingsManager);
|
||||||
|
return this.httpRequestGet1Inner(url, headers, 0, settingsManager).then(s => {
|
||||||
|
return new TextEncoder().encode(s);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -138,33 +145,48 @@ export default class HttpUtil {
|
|||||||
* @param headers 请求参数
|
* @param headers 请求参数
|
||||||
* @param settingsManager 设置管理器
|
* @param settingsManager 设置管理器
|
||||||
*/
|
*/
|
||||||
public static httpRequestGet1(url: string, headers: any, settingsManager?: SettingsManager): Promise<string> {
|
public static httpRequestGet1(url: string, headers: any, settingsManager?: SettingsManager): Promise<string> {
|
||||||
let requestUrlParam: RequestUrlParam = {
|
return this.httpRequestGet1Inner(url, headers, 0, settingsManager);
|
||||||
url: url,
|
}
|
||||||
method: "GET",
|
private static httpRequestGet1Inner(url: string, headers: any, times:number, settingsManager?: SettingsManager): Promise<string> {
|
||||||
headers: headers,
|
let requestUrlParam: RequestUrlParam = {
|
||||||
throw: true
|
url: url,
|
||||||
};
|
method: "GET",
|
||||||
return request(requestUrlParam)
|
headers: headers,
|
||||||
// .then(res => res.text)
|
throw: true
|
||||||
.then(data => {
|
};
|
||||||
if (data && data.indexOf('https://sec.douban.com/a') > 0) {
|
return requestUrl(requestUrlParam)
|
||||||
log.notice(i18nHelper.getMessage('130105'))
|
// .then(res => res.text)
|
||||||
if (settingsManager) {
|
.then(response => {
|
||||||
settingsManager.debug(`Obsidian-Douban:获取异常网页如下:\n${data}`);
|
if (response && response.text.indexOf('https://sec.douban.com/a') > 0) {
|
||||||
}
|
log.notice(i18nHelper.getMessage('130105'))
|
||||||
}
|
if (settingsManager) {
|
||||||
settingsManager.debug(`Obsidian-Douban:获取网页如下:\n${data}`);
|
settingsManager.debug(`Obsidian-Douban:获取异常网页如下:\n${response}`);
|
||||||
return data;
|
}
|
||||||
})
|
}
|
||||||
.then(s => this.humanCheck(s, url, settingsManager))
|
if (response.status == 301 || response.status == 302 || response.status == 303 || response.status == 307) {
|
||||||
.catch(e => {
|
if (times > 2) {
|
||||||
if (e.toString().indexOf('403') > 0) {
|
throw new Error('重定向次数过多');
|
||||||
throw log.error(i18nHelper.getMessage('130105'), e)
|
}
|
||||||
} else {
|
let location = response.headers['location'];
|
||||||
throw log.error(i18nHelper.getMessage('130101').replace('{0}', e.toString()), e)
|
settingsManager.debug(`Obsidian-Douban:获取重定向地址如下:\n${location}`);
|
||||||
}
|
if (location.indexOf('http') != 0) {
|
||||||
})
|
return this.httpRequestGet1Inner(location, headers, times + 1, settingsManager);
|
||||||
|
} else {
|
||||||
|
throw new Error('重定地址错误');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
settingsManager.debug(`Obsidian-Douban:获取网页如下:\n${response}`);
|
||||||
|
return response.text;
|
||||||
|
})
|
||||||
|
.then(s => this.humanCheck(s, url, settingsManager))
|
||||||
|
.catch(e => {
|
||||||
|
if (e.toString().indexOf('403') > 0) {
|
||||||
|
throw log.error(i18nHelper.getMessage('130105'), e)
|
||||||
|
} else {
|
||||||
|
throw log.error(i18nHelper.getMessage('130101').replace('{0}', e.toString()), e)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user