use-on-demand
Version:
210 lines • 11 kB
JavaScript
import { __assign } from "tslib";
import request from 'request';
import path from 'path';
import { LowDB_Helper } from '../../base/lowdb/LowDB_Helper';
import { PythonShell } from 'python-shell';
var fetch = require('node-fetch');
var write = LowDB_Helper.write, read = LowDB_Helper.read;
export function bind_other_routes(r_db) {
// 测试
r_db.get('/', function (req, res, next) {
res.send(read.db.getAll());
});
/**
* MP4文件
* 1. 参考资料:[node.js - Using Nodejs to Serve an MP4 Video File - Stack Overflow](https://stackoverflow.com/a/60303389/6264260)
*/
r_db.get('/video/Alternate-Realities.mp4', function (req, res, next) {
res.setHeader('Content-Type', 'video/mp4');
var mp4_filename = 'Alternate Realities.mp4';
res.status(200).sendFile(path.join("I:\\Steam\\steamapps\\workshop\\content\\431960\\2516087390\\" + mp4_filename), function (err) {
if (err) {
console.log('第一次发送失败');
res.status(200).sendFile(path.join(__dirname, "../../assets/video/ar/" + mp4_filename), function (err) {
if (err) {
console.log('第二次发送失败');
}
else {
console.log('第二次发送成功');
}
});
}
else {
console.log('第一次发送成功');
}
});
});
/**
* 微博热搜条目
* 1. 参考资料:
* 1. 汇总:(https://www.zhihu.com/question/38155682)
* 2. 目前所使用的【源】:(https://weibo.zhaoyizhe.com/)
*
*
* 出现的一些问题:
* 1. 中间有一段时间,出现了【乱码】
* 1. 原因:
* 1. 后来猜测,应该是【gzip】这个环节,进行了编码的原因。
* 1. 我本地,之前一开始,并没有做解码操作。
* 2. 解决方案:
* 1. 后来,使用【node-fetch】+【resp.text()的Promise】,解决了这个问题。
*/
r_db.get('/resou/weibo', function (req, res, next) {
var query = req.query;
console.log('query', query);
var _date = query.date || '2021-08-07';
var use_fetch = true;
var convert = function (from, to) { return (function (str) { return (Buffer.from(str, from).toString(to)); }); };
var utf8ToHex = convert('utf8', 'hex');
var hexToUtf8 = convert('hex', 'utf8');
if (use_fetch) {
// 其实,就是从下面,粘贴过来的
var 从其它地方_粘过来的配置_似乎可行 = {
Host: 'google-api.zhaoyizhe.com',
Connection: 'keep-alive',
// 'sec-ch-ua' : `" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"`,
Accept: "application/json, text/plain, */*",
// 'sec-ch-ua-mobile': `?0`,
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
'Origin': "https://weibo.zhaoyizhe.com",
'Sec-Fetch-Site': "same-site",
'Sec-Fetch-Mode': "cors",
'Sec-Fetch-Dest': "empty",
'Referer': "https://weibo.zhaoyizhe.com/",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
};
// 从【Chrome】copy而来的。
fetch("https://google-api.zhaoyizhe.com/google-api/index/mon/sec?date=" + _date, {
'headers': __assign({ 'accept': 'application/json, text/plain, */*', 'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7', 'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"', 'sec-ch-ua-mobile': '?0', 'sec-fetch-dest': 'empty', 'sec-fetch-mode': 'cors', 'sec-fetch-site': 'same-site' }, 从其它地方_粘过来的配置_似乎可行),
'referrer': 'https://weibo.zhaoyizhe.com/',
'referrerPolicy': 'strict-origin-when-cross-origin',
'body': null,
'method': 'GET',
'mode': 'cors',
}).then(function (resp) {
console.log('resp', resp);
console.log('返回body', resp.body);
//
//
//
resp.text().then(function (text) {
console.log('返回text()', text);
res.send(text);
});
}, function (err) {
console.error('err', err);
});
}
else {
// 自己写的。
request({
uri: "https://google-api.zhaoyizhe.com/google-api/index/mon/sec?date=" + _date,
method: 'GET',
headers: {
Host: 'google-api.zhaoyizhe.com',
Connection: 'keep-alive',
'sec-ch-ua': "\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"",
Accept: "application/json, text/plain, */*",
'sec-ch-ua-mobile': "?0",
'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36",
'Origin': "https://weibo.zhaoyizhe.com",
'Sec-Fetch-Site': "same-site",
'Sec-Fetch-Mode': "cors",
'Sec-Fetch-Dest': "empty",
'Referer': "https://weibo.zhaoyizhe.com/",
'Accept-Encoding': "gzip, deflate, br",
'Accept-Language': "en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7",
},
}, function (err, resp) {
// WARN 之所以损坏,是不是因为【GZIP】了???
console.log('resp', resp);
console.log('body', resp.body);
var utf8_str = hexToUtf8(resp.body);
console.log('utf8_str', utf8_str);
res.send(utf8_str);
});
}
});
//
//
//
//
//
//
/**
*
*
*
*/
r_db.get('/resou/douyu', function (req, res, next) {
fetch('https://www.douyu.com/japi/search/api/getHotList', {
'headers': {
'accept': 'application/json, text/plain, */*',
'accept-language': 'en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7',
'sec-ch-ua': '" Not;A Brand";v="99", "Google Chrome";v="91", "Chromium";v="91"',
'sec-ch-ua-mobile': '?0',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'same-origin',
'x-requested-with': 'XMLHttpRequest',
'cookie': 'acf_did=86bad5d72d712a599efc551700071501; dy_did=86bad5d72d712a599efc551700071501; PHPSESSID=qvkk473g5g69qgnvs8cts6dt86; acf_avatar=https%3A%2F%2Fapic.douyucdn.cn%2Fupload%2Favatar%2Fdefault%2F12_; Hm_lvt_e99aee90ec1b2106afe7ec3b199020a7=1626241567; ext=1%257C1258%257C341%257Czb-jc; frm=zb-jc; fdata=zbj%7C%7C%3Bzb-jc%7C%7C%3B%7C%7C%3B4853748529lynx0702zl%7C%7C%3B5079%7C%7C%3B27050%7C%7C%3B1%7C1258%7C341%7Czb-jc; Hm_lpvt_e99aee90ec1b2106afe7ec3b199020a7=1626751087; _dys_lastPageCode=page_studio_normal,page_studio_normal; acf_auth=8693LkBpj3%2BhYvnaL8bOPQc16LS52K3vT4m6mkTfl5LFlhz%2Bjldusxx7itoPGsSig%2BOYzAeoPc4CXD35USprXAw%2BQFXZHwxOErreJYPEDttQTFB3uLWJ; dy_auth=bd19r%2FoXRoX1kSOpTC2OAh7dwPLfcgSgVfHhCMsqycjXhFzlUBMNzZ7tq%2FcG%2BC1xdaFF2XHNVdYzp3XJA0l2WXsmhW73nkdX5CgZI1TzsT6p7girCImy; wan_auth37wan=9b9a5c57b757sSjBadI1X8NhH65c6S09rcBqsbGncxMDP%2BW4iWGu2Btl4LTL7WYeB5NbrFis1HqpmpjuAxgBooLXyDX3oEh%2BJCXWdwHXTnCAgx%2Bh4w; acf_uid=54911929; acf_username=54911929; acf_nickname=%E5%93%AD%E5%90%A7%E5%96%8A%E5%90%A7%E7%84%B6%E5%90%8E%E5%8E%BB%E6%AD%BB%E5%90%A7; acf_own_room=1; acf_groupid=1; acf_phonestatus=1; acf_ct=0; acf_ltkid=11153443; acf_biz=1; acf_stk=7e322b9d140f17f4; acf_ccn=2aa4b40f64aa630c4aee8ff0351fb894',
},
'referrer': 'https://www.douyu.com/',
'referrerPolicy': 'strict-origin-when-cross-origin',
'body': null,
'method': 'GET',
'mode': 'cors',
}).then(function (resp) {
console.log('resp', resp);
console.log('返回body', resp.body);
//
//
//
resp.text().then(function (text) {
console.log('返回text()', text);
res.send(text);
});
}, function (err) {
console.error('err', err);
});
});
/**
* 发送邮件
* 1. 使用【Python-Shell】。
* 1. 报错【找不到目录或文件】
* 1. 很明显,因为【相对路径】所处的目录,错了
* 2. 官网的【scriptPath】选项,并不能解决问题。
* 1. [](https://github.com/extrabacon/python-shell#pythonshellscript-options-constructor)
* 3. 有人,提出了【working directory】的选项设置
* 1. [](https://github.com/extrabacon/python-shell/pull/61)
* 2. 但是,这个功能,一直没被理会。
* 4. 最后,我从另一处得到了灵感,并解决了问题。
* 1. 灵感来源:[](https://github.com/extrabacon/python-shell/issues/54)
* 2. 解决方案:
* 1. 我在Python脚本中,将所有的【相对路径】,都修改为了【绝对路径】,才解决了这个问题。
*/
r_db.get('/email/daily-task', function (req, res, next) {
var query = req.query;
console.log('query', query);
var msg = query['msg'];
//
var dir__path = 'D:\\Program_Files\\JetBrains\\projects\\WebStorm\\WangPan\\小工具-Python\\projects\\发送邮件';
var py_script = 'send_email.py';
PythonShell.run(py_script, {
scriptPath: dir__path,
args: [
msg,
],
}, function (err, results) {
if (err) {
console.error('发送邮件出错', err);
}
else {
console.log('结果', results);
res.send(results);
}
});
});
}
//# sourceMappingURL=others.js.map