forked from DebaucheryLibrarian/traxxx
Added configurable proxy to HTTP module (also used by qu). Added network and site URL to search documents.
This commit is contained in:
parent
e4b269956e
commit
4b310e9dfa
|
@ -139,6 +139,19 @@ module.exports = {
|
||||||
'freeones',
|
'freeones',
|
||||||
'freeonesLegacy',
|
'freeonesLegacy',
|
||||||
],
|
],
|
||||||
|
proxy: {
|
||||||
|
enable: false,
|
||||||
|
host: '',
|
||||||
|
port: 8888,
|
||||||
|
hostnames: [
|
||||||
|
'www.vixen.com',
|
||||||
|
'www.blacked.com',
|
||||||
|
'www.blackedraw.com',
|
||||||
|
'www.tushy.com',
|
||||||
|
'www.tushyraw.com',
|
||||||
|
'www.deeper.com',
|
||||||
|
],
|
||||||
|
},
|
||||||
fetchAfter: [1, 'week'],
|
fetchAfter: [1, 'week'],
|
||||||
nullDateLimit: 3,
|
nullDateLimit: 3,
|
||||||
media: {
|
media: {
|
||||||
|
|
|
@ -11050,6 +11050,11 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tunnel": {
|
||||||
|
"version": "0.0.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||||
|
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
||||||
|
},
|
||||||
"tunnel-agent": {
|
"tunnel-agent": {
|
||||||
"version": "0.6.0",
|
"version": "0.6.0",
|
||||||
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
|
||||||
|
|
|
@ -110,6 +110,7 @@
|
||||||
"template-format": "^1.2.5",
|
"template-format": "^1.2.5",
|
||||||
"tough-cookie": "^3.0.1",
|
"tough-cookie": "^3.0.1",
|
||||||
"tty-table": "^2.8.12",
|
"tty-table": "^2.8.12",
|
||||||
|
"tunnel": "0.0.6",
|
||||||
"url-pattern": "^1.0.3",
|
"url-pattern": "^1.0.3",
|
||||||
"v-tooltip": "^2.0.3",
|
"v-tooltip": "^2.0.3",
|
||||||
"vue": "^2.6.11",
|
"vue": "^2.6.11",
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -8,6 +8,7 @@ const knex = require('./knex');
|
||||||
const fetchUpdates = require('./updates');
|
const fetchUpdates = require('./updates');
|
||||||
const fetchDeep = require('./deep');
|
const fetchDeep = require('./deep');
|
||||||
const { storeReleases } = require('./store-releases');
|
const { storeReleases } = require('./store-releases');
|
||||||
|
const { updateReleasesSearch } = require('./releases');
|
||||||
// const { storeReleaseActors } = require('./actors');
|
// const { storeReleaseActors } = require('./actors');
|
||||||
|
|
||||||
async function init() {
|
async function init() {
|
||||||
|
@ -16,6 +17,12 @@ async function init() {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (argv.updateSearch) {
|
||||||
|
await updateReleasesSearch();
|
||||||
|
knex.destroy();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
const updateBaseReleases = (argv.scrape || argv.sites || argv.networks) && await fetchUpdates();
|
const updateBaseReleases = (argv.scrape || argv.sites || argv.networks) && await fetchUpdates();
|
||||||
|
|
||||||
const updateDeepReleases = updateBaseReleases && await fetchDeep(updateBaseReleases);
|
const updateDeepReleases = updateBaseReleases && await fetchDeep(updateBaseReleases);
|
||||||
|
|
|
@ -368,8 +368,10 @@ async function updateReleasesSearch(releaseIds) {
|
||||||
releases.title || ' ' ||
|
releases.title || ' ' ||
|
||||||
networks.name || ' ' ||
|
networks.name || ' ' ||
|
||||||
networks.slug || ' ' ||
|
networks.slug || ' ' ||
|
||||||
|
networks.url || ' ' ||
|
||||||
sites.name || ' ' ||
|
sites.name || ' ' ||
|
||||||
sites.slug || ' ' ||
|
sites.slug || ' ' ||
|
||||||
|
COALESCE(sites.url, '') || ' ' ||
|
||||||
COALESCE(sites.alias, '') || ' ' ||
|
COALESCE(sites.alias, '') || ' ' ||
|
||||||
COALESCE(releases.shoot_id, '') || ' ' ||
|
COALESCE(releases.shoot_id, '') || ' ' ||
|
||||||
COALESCE(TO_CHAR(releases.date, 'YYYY YY MM FMMM FMmonth mon DD FMDD'), '') || ' ' ||
|
COALESCE(TO_CHAR(releases.date, 'YYYY YY MM FMMM FMmonth mon DD FMDD'), '') || ' ' ||
|
||||||
|
@ -386,7 +388,7 @@ async function updateReleasesSearch(releaseIds) {
|
||||||
LEFT JOIN tags ON local_tags.tag_id = tags.id
|
LEFT JOIN tags ON local_tags.tag_id = tags.id
|
||||||
LEFT JOIN tags as tags_aliases ON local_tags.tag_id = tags_aliases.alias_for
|
LEFT JOIN tags as tags_aliases ON local_tags.tag_id = tags_aliases.alias_for
|
||||||
${releaseIds ? 'WHERE releases.id = ANY(?)' : ''}
|
${releaseIds ? 'WHERE releases.id = ANY(?)' : ''}
|
||||||
GROUP BY releases.id, sites.name, sites.slug, sites.alias, networks.name, networks.slug;
|
GROUP BY releases.id, sites.name, sites.slug, sites.alias, sites.url, networks.name, networks.slug, networks.url;
|
||||||
`, releaseIds && [releaseIds]);
|
`, releaseIds && [releaseIds]);
|
||||||
|
|
||||||
if (documents.rows?.length > 0) {
|
if (documents.rows?.length > 0) {
|
||||||
|
|
|
@ -1,10 +1,28 @@
|
||||||
'use strict';
|
'use strict';
|
||||||
|
|
||||||
|
const config = require('config');
|
||||||
|
const tunnel = require('tunnel');
|
||||||
const bhttp = require('bhttp');
|
const bhttp = require('bhttp');
|
||||||
const taskQueue = require('promise-task-queue');
|
const taskQueue = require('promise-task-queue');
|
||||||
|
|
||||||
const logger = require('../logger')(__filename);
|
const logger = require('../logger')(__filename);
|
||||||
|
|
||||||
|
const proxyAgent = tunnel.httpsOverHttp({
|
||||||
|
proxy: {
|
||||||
|
host: config.proxy.host,
|
||||||
|
port: config.proxy.port,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
function useProxy(url) {
|
||||||
|
if (!config.proxy.enable) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const { hostname } = new URL(url);
|
||||||
|
return config.proxy.hostnames.includes(hostname);
|
||||||
|
}
|
||||||
|
|
||||||
const queue = taskQueue();
|
const queue = taskQueue();
|
||||||
|
|
||||||
queue.on('concurrencyReached:httpGet', () => {
|
queue.on('concurrencyReached:httpGet', () => {
|
||||||
|
@ -15,47 +33,42 @@ queue.on('concurrencyReached:httpPost', () => {
|
||||||
logger.silly('Queueing POST requests');
|
logger.silly('Queueing POST requests');
|
||||||
});
|
});
|
||||||
|
|
||||||
queue.define('httpGet', async ({
|
queue.define('http', async ({
|
||||||
url,
|
|
||||||
timeout = 30000,
|
|
||||||
options = {},
|
|
||||||
}) => {
|
|
||||||
logger.silly(`GET ${url}`);
|
|
||||||
|
|
||||||
const res = await bhttp.get(url, {
|
|
||||||
responseTimeout: timeout,
|
|
||||||
...options,
|
|
||||||
});
|
|
||||||
|
|
||||||
res.code = res.statusCode;
|
|
||||||
|
|
||||||
return res;
|
|
||||||
}, {
|
|
||||||
concurrency: 20,
|
|
||||||
});
|
|
||||||
|
|
||||||
queue.define('httpPost', async ({
|
|
||||||
url,
|
url,
|
||||||
|
method = 'GET',
|
||||||
body,
|
body,
|
||||||
timeout = 30000,
|
timeout = 30000,
|
||||||
options = {},
|
options = {},
|
||||||
}) => {
|
}) => {
|
||||||
logger.silly(`POST ${url} with ${body}`);
|
if (body) {
|
||||||
|
logger.silly(`${method.toUpperCase()} ${url} with ${body}`);
|
||||||
|
} else {
|
||||||
|
logger.silly(`${method.toUpperCase()} ${url}`);
|
||||||
|
}
|
||||||
|
|
||||||
const res = await bhttp.post(url, body, {
|
const reqOptions = {
|
||||||
responseTimeout: timeout,
|
responseTimeout: timeout,
|
||||||
...options,
|
...options,
|
||||||
});
|
};
|
||||||
|
|
||||||
res.code = res.statusCode;
|
if (useProxy(url)) {
|
||||||
|
reqOptions.agent = proxyAgent;
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
const res = ['POST', 'PUT', 'PATCH'].includes(method.toUpperCase())
|
||||||
|
? await bhttp[method.toLowerCase()](url, body, reqOptions)
|
||||||
|
: await bhttp[method.toLowerCase()](url, reqOptions);
|
||||||
|
|
||||||
|
return {
|
||||||
|
...res,
|
||||||
|
code: res.statusCode,
|
||||||
|
};
|
||||||
}, {
|
}, {
|
||||||
concurrency: 20,
|
concurrency: 20,
|
||||||
});
|
});
|
||||||
|
|
||||||
async function get(url, options) {
|
async function get(url, options) {
|
||||||
return queue.push('httpGet', {
|
return queue.push('http', {
|
||||||
method: 'get',
|
method: 'get',
|
||||||
url,
|
url,
|
||||||
options,
|
options,
|
||||||
|
@ -63,7 +76,7 @@ async function get(url, options) {
|
||||||
}
|
}
|
||||||
|
|
||||||
async function post(url, body, options) {
|
async function post(url, body, options) {
|
||||||
return queue.push('httpPost', {
|
return queue.push('http', {
|
||||||
url,
|
url,
|
||||||
body,
|
body,
|
||||||
options,
|
options,
|
||||||
|
|
|
@ -287,7 +287,7 @@ function extractAll(htmlValue, selector) {
|
||||||
return initAll(window.document, selector, window);
|
return initAll(window.document, selector, window);
|
||||||
}
|
}
|
||||||
|
|
||||||
async function get(urlValue, selector, headers, queryAll = false) {
|
async function get(urlValue, selector, headers, options, queryAll = false) {
|
||||||
const res = await http.get(urlValue, {
|
const res = await http.get(urlValue, {
|
||||||
headers,
|
headers,
|
||||||
});
|
});
|
||||||
|
@ -315,8 +315,8 @@ async function get(urlValue, selector, headers, queryAll = false) {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
async function getAll(urlValue, selector, headers) {
|
async function getAll(urlValue, selector, headers, options) {
|
||||||
return get(urlValue, selector, headers, true);
|
return get(urlValue, selector, headers, options, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports = {
|
module.exports = {
|
||||||
|
|
Loading…
Reference in New Issue