mirror of
https://github.com/Wanxp/obsidian-douban.git
synced 2026-04-05 01:28:46 +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",
|
||||
"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)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user