diff --git a/src/background/api.js b/src/background/api.js index c3faa7c..a1946b5 100644 --- a/src/background/api.js +++ b/src/background/api.js @@ -24,7 +24,8 @@ module.exports = async ({ checkTorrent, setupTorrentRecord, p2pStore, - feed + feed, + remoteTrackers }) => { let torrentClientHashMap = {} diff --git a/src/background/mysql.js b/src/background/mysql.js index d45694e..6bfc910 100644 --- a/src/background/mysql.js +++ b/src/background/mysql.js @@ -155,7 +155,7 @@ const expand = (sphinx) => { queryCall(`SELECT * from ${table} WHERE \`${key}\` = ${sphinx.escape(values[key])}`, (err, row) => { if(err || row.length == 0) { - logTE('sql', 'error on sql replace request', row) + logTE('sql', 'error on sql replace request', err) resolve(undefined) callback(undefined) return diff --git a/src/background/sphinx.js b/src/background/sphinx.js index 8e0abbc..fda78ba 100644 --- a/src/background/sphinx.js +++ b/src/background/sphinx.js @@ -52,6 +52,7 @@ const writeSphinxConfig = async (path, dbPath) => { rt_attr_timestamp = trackersChecked rt_attr_uint = good rt_attr_uint = bad + rt_attr_json = info ngram_len = 1 ngram_chars = U+3000..U+2FA1F diff --git a/src/background/spider.js b/src/background/spider.js index 36ad716..b477cd9 100644 --- a/src/background/spider.js +++ b/src/background/spider.js @@ -39,6 +39,11 @@ const mime = require('mime'); //server.listen(config.httpPort); //console.log('Listening web server on', config.httpPort, 'port') + +const Rutracker = require('./strategies/rutracker') +const Nyaa = require('./strategies/nyaa') + + module.exports = function (send, recive, dataDirectory, version, env) { this.initialized = (async () => @@ -84,7 +89,38 @@ module.exports = function (send, recive, dataDirectory, version, env) p2p.info.torrents = (await sphinxSingle.query("SELECT COUNT(*) as cnt from torrents"))[0].cnt p2p.info.files = (await sphinxSingle.query("SELECT COUNT(*) as cnt from files"))[0].cnt const sphinxSingleAlternative = await single().waitConnection() - + + + class RemoteTrackers + { + constructor(sphinx) + { + this.sphinx = sphinx + this.trackers = [ + new Rutracker, + new Nyaa + ] + } + + findHash(hash, callback) + { + for(const tracker of this.trackers) + if(tracker.findHash) + tracker.findHash(hash).then(data => callback(tracker.name(), data)) + } + + update({hash, name}) + { + this.findHash(hash, (tracker, data) => { + if(!data) + return + + logT('tracker', 'found', name, 'on', tracker) + this.sphinx.replaceValues('torrents', {hash, info: data}, true, 'hash') + }) + } + } + const remoteTrackers = new RemoteTrackers(sphinxSingle) // start function baseRowData(row) @@ -462,6 +498,7 @@ module.exports = function (send, recive, dataDirectory, version, env) contentCategory: torrent.contentCategory, }); updateTorrentTrackers(torrent.hash); + remoteTrackers.update(torrent) } else { @@ -729,7 +766,8 @@ module.exports = function (send, recive, dataDirectory, version, env) checkTorrent, setupTorrentRecord, p2pStore, - feed + feed, + remoteTrackers }) if(config.indexer) { diff --git a/src/background/strategies/nyaa.js b/src/background/strategies/nyaa.js index bbc1838..6f17597 100644 --- a/src/background/strategies/nyaa.js +++ b/src/background/strategies/nyaa.js @@ -4,6 +4,8 @@ const cheerio = require('cheerio') module.exports = class Nyaa { + name() { return 'nyaa' } + async findHash(hash) { this.hash = hash diff --git a/src/background/strategies/rutracker.js b/src/background/strategies/rutracker.js index e29a5c8..79d4a94 100644 --- a/src/background/strategies/rutracker.js +++ b/src/background/strategies/rutracker.js @@ -4,6 +4,8 @@ const cheerio = require('cheerio') module.exports = class Rutracker { + name() { return 'rutracker' } + async findHash(hash) { this.hash = hash