diff --git a/src/app/trackers-images.js b/src/app/trackers-images.js index ff118de..3389526 100644 --- a/src/app/trackers-images.js +++ b/src/app/trackers-images.js @@ -32,6 +32,11 @@ export default (props) => { && } + { + info.trackers.includes('1337x') + && + + } ) } \ No newline at end of file diff --git a/src/background/spider.js b/src/background/spider.js index c6cf6e4..da835d5 100644 --- a/src/background/spider.js +++ b/src/background/spider.js @@ -144,7 +144,7 @@ module.exports = function (send, recive, dataDirectory, version, env) { for(const tracker of this.trackers) if(tracker.findHash) - tracker.findHash(hash).then(data => callback(tracker.name(), data)) + tracker.findHash(hash).then(data => callback(tracker.name, data)) } async close() diff --git a/src/background/strategies/1337x.js b/src/background/strategies/1337x.js new file mode 100644 index 0000000..7bc1724 --- /dev/null +++ b/src/background/strategies/1337x.js @@ -0,0 +1,59 @@ + +const fetch = require('node-fetch') +const cheerio = require('cheerio') + +module.exports = class Stragegie +{ + get name() { return '1337x' } + + async findHash(hash) + { + let html; + try { + html = await fetch(`https://1337x.to/srch?search=${hash}`) + } catch(err) { + return + } + if(!html) + return + html = await html.textConverted() + const $ = cheerio.load(html) + + this.href = $($('.table-list tr td a').get(1)).attr('href') + if(this.href) + this.id = this.href.match(/\/torrent\/([0-9]+)\//)[1]; + + return await this.parse(); + } + + async parse() + { + let html; + try { + html = await fetch('https://1337x.to' + this.href) + } catch(err) { + return + } + if(!html) + return + html = await html.textConverted() + const $ = cheerio.load(html) + const topicTitle = $('h1').text() + if(!topicTitle) + return + + let contentCategory; + try { + contentCategory = $('.torrent-category-detail .list li').first().find('span').text() + } catch(er) {} + + return { + name: topicTitle.trim(), + poster: $('#description img').attr('data-original'), + description: $('#description').text(), + x1337ThreadId: parseInt(this.id), + x1337Href: this.href, + contentCategory + } + } +} \ No newline at end of file diff --git a/src/background/strategies/nyaa.js b/src/background/strategies/nyaa.js index 3772a44..38c6acf 100644 --- a/src/background/strategies/nyaa.js +++ b/src/background/strategies/nyaa.js @@ -3,7 +3,7 @@ const cheerio = require('cheerio') module.exports = class Nyaa { - name() { return 'nyaa' } + get name() { return 'nyaa' } async findHash(hash) { diff --git a/src/background/strategies/rutor.js b/src/background/strategies/rutor.js index ee7f3b2..0574e2e 100644 --- a/src/background/strategies/rutor.js +++ b/src/background/strategies/rutor.js @@ -18,7 +18,7 @@ module.exports = class Rutor t.unref() } - name() { return 'rutor' } + get name() { return 'rutor' } async findHash(hash) { diff --git a/src/background/strategies/rutracker.js b/src/background/strategies/rutracker.js index 0493b0d..8ca4ade 100644 --- a/src/background/strategies/rutracker.js +++ b/src/background/strategies/rutracker.js @@ -4,7 +4,7 @@ const cheerio = require('cheerio') module.exports = class Rutracker { - name() { return 'rutracker' } + get name() { return 'rutracker' } async findHash(hash) { diff --git a/tests/strategies/1337x.test.js b/tests/strategies/1337x.test.js new file mode 100644 index 0000000..82fee1a --- /dev/null +++ b/tests/strategies/1337x.test.js @@ -0,0 +1,19 @@ +const { assert } = require('chai') +const Strategy = require('../../src/background/strategies/1337x.js') + +describe("1337x", () => { + let strategy = new Strategy(); + + it("findHash", async function() { + const data = await strategy.findHash('1734BCCAA7B05BD4D77B86E17820C840BF0C2EF5') + assert.equal(data.name, 'DEgITx - Discography (01.10.2016) FLAC') + assert.equal(data.poster, 'http://i58.fastpic.ru/big/2014/0224/62/eec1c9dc98892d5a88b46ade2edc7662.jpg') + assert.equal(data.x1337ThreadId, 1821018) + assert(data.description.includes('licensed under Creative Commons')) + assert.equal(data.contentCategory, 'Music') + }) + + it("notFound", async function() { + assert(!await strategy.findHash('1734BCCAA7B05BD4D77B86E17820C840BF0C2EF6')) + }) +});