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",
"version": "1.9.6",
"version": "2.0.0",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "obsidian-douban-plugin",
"version": "1.9.6",
"version": "2.0.0",
"license": "MIT",
"dependencies": {
"@notable/html2markdown": "^1.1.3",
"@popperjs/core": "^2.11.6",
"cheerio": "^1.0.0-rc.11",
"follow-redirects": "^1.15.3",
"iconv-lite": "^0.6.3",
"schema-dts": "^1.1.0"
},
"devDependencies": {
@ -3291,17 +3290,6 @@
"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": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@ -4884,11 +4872,6 @@
"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": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",
@ -7861,14 +7844,6 @@
"integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
"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": {
"version": "5.2.4",
"resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz",
@ -9045,11 +9020,6 @@
"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": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/schema-dts/-/schema-dts-1.1.0.tgz",

@ -1,11 +1,10 @@
import { log } from "./Logutil";
import { i18nHelper } from "../lang/helper";
import SettingsManager from "../douban/setting/SettingsManager";
import { request, RequestUrlParam } from "obsidian";
import {request, requestUrl, RequestUrlParam} from "obsidian";
import DoubanHumanCheckModel from "../douban/component/DoubanHumanCheckModel";
import {LoginUtil} from "./LoginUtil";
const {https} = require("follow-redirects");
// const {https} = require("follow-redirects");
export default class HttpUtil {
@ -25,31 +24,33 @@ export default class HttpUtil {
headers: headersInner
}
settingsManager.debug(`Obsidian-Douban:从网络获取网页开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
return new Promise((resolve, rejects) => {
https.get(url, { ...options }, function (response: any) {
let chunks: any = [],
size = 0;
if (response.status == 403) {
rejects(new Error(i18nHelper.getMessage('130106')));
}
response.on("data", function (chunk: any) {
chunks.push(chunk)
size += chunk.length
})
// return new Promise((resolve, rejects) => {
// https.get(url, { ...options }, function (response: any) {
// let chunks: any = [],
// size = 0;
// if (response.status == 403) {
// rejects(new Error(i18nHelper.getMessage('130106')));
// }
// response.on("data", function (chunk: any) {
// chunks.push(chunk)
// 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
}
settingsManager.debug(`Obsidian-Douban:从网络获取json开始:\nurl:${url}\nheaders:${JSON.stringify(headers)}`);
return new Promise((resolve, rejects) => {
https.get(url, { ...options }, function (response: any) {
const chunks: any = [];
let size = 0;
if (response.status == 403) {
rejects(new Error(i18nHelper.getMessage('130106')));
}
response.on("data", function (chunk: any) {
chunks.push(chunk)
size += chunk.length
})
// return new Promise((resolve, rejects) => {
// https.get(url, { ...options }, function (response: any) {
// const chunks: any = [];
// let size = 0;
// if (response.status == 403) {
// rejects(new Error(i18nHelper.getMessage('130106')));
// }
// response.on("data", function (chunk: any) {
// chunks.push(chunk)
// 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 = {
headers: headers
}
if (settingsManager) {
settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}`);
}
return new Promise((resolve, rejects) => {
https.get(url, { ...options }, function (response: any) {
let chunks: any = [],
size = 0;
if (response.status == 403) {
rejects(new Error(i18nHelper.getMessage('130106')));
}
response.on("data", function (chunk: any) {
chunks.push(chunk)
size += chunk.length
})
response.on("end", function () {
let data = Buffer.concat(chunks, size)
if (settingsManager) {
settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:\n${url}`);
}
resolve(data)
})
})
})
// if (settingsManager) {
// settingsManager.debug(`Obsidian-Douban:从网络获取文件开始:\n${url}`);
// }
// return new Promise((resolve, rejects) => {
// https.get(url, { ...options }, function (response: any) {
// let chunks: any = [],
// size = 0;
// if (response.status == 403) {
// rejects(new Error(i18nHelper.getMessage('130106')));
// }
// response.on("data", function (chunk: any) {
// chunks.push(chunk)
// size += chunk.length
// })
//
// response.on("end", function () {
// let data = Buffer.concat(chunks, size)
// if (settingsManager) {
// settingsManager.debug(`Obsidian-Douban:从网络获取文件完成:\n${url}`);
// }
// 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 settingsManager
*/
public static httpRequestGet1(url: string, headers: any, settingsManager?: SettingsManager): Promise<string> {
let requestUrlParam: RequestUrlParam = {
url: url,
method: "GET",
headers: headers,
throw: true
};
return request(requestUrlParam)
// .then(res => res.text)
.then(data => {
if (data && data.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${data}`);
return data;
})
.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)
}
})
public static httpRequestGet1(url: string, headers: any, settingsManager?: SettingsManager): Promise<string> {
return this.httpRequestGet1Inner(url, headers, 0, settingsManager);
}
private static httpRequestGet1Inner(url: string, headers: any, times:number, settingsManager?: SettingsManager): Promise<string> {
let requestUrlParam: RequestUrlParam = {
url: url,
method: "GET",
headers: headers,
throw: true
};
return requestUrl(requestUrlParam)
// .then(res => res.text)
.then(response => {
if (response && response.text.indexOf('https://sec.douban.com/a') > 0) {
log.notice(i18nHelper.getMessage('130105'))
if (settingsManager) {
settingsManager.debug(`Obsidian-Douban:获取异常网页如下:\n${response}`);
}
}
if (response.status == 301 || response.status == 302 || response.status == 303 || response.status == 307) {
if (times > 2) {
throw new Error('重定向次数过多');
}
let location = response.headers['location'];
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)
}
})
}