custom lib

This commit is contained in:
wanxp 2024-03-15 20:11:27 +08:00
parent ba5e6a8ee2
commit 6b047b595c
2 changed files with 126 additions and 134 deletions

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)
}
})
} }