UNPKG

node-subscene

Version:
113 lines (107 loc) 4.33 kB
const rxjs = require('rxjs'); const Observable = rxjs.Observable; const axios = require('axios'); const cheerio = require('cheerio'); class Subscene { search(q) { return Observable.create(observer => { q = q.replace(' ', '+'); let url = 'https://subscene.com/subtitles/title?q=' + q + '&l='; axios.get(url).then((body) => { var arr = []; let $ = cheerio.load(body.data); $('div.search-result').each((i, value) => { $(value).find('li').each((j, data) => { $(data).find('div.title').each((k, item) => { let link = $(item).find('a'); let title = link.text(); let url = link.attr('href'); let count = $(item).next().text().replace('\n\n\t\t', '').replace('\n\t', ''); let data = []; data[0] = title; data[1] = url; data[2] = count.replace(' subtitles', ''); arr.push(data); }); }); }); // Make it unique by url var result = []; arr.forEach((a) => { let ada = false; result.forEach((b) => { if (b[1] == a[1]) { ada = true; } }); if (ada == false) { result.push(a); } }); observer.next(result); }); }); } getSub(filmUrl) { return Observable.create(observer => { const url = 'https://subscene.com' + filmUrl; let poster; let language = []; axios.get(url).then((body) => { let arr = []; let $ = cheerio.load(body.data); $('div.poster').each((i, v) => { $(v).find('img').each((j, va) => { poster = $(va).attr('src'); }) }) $('table').each((i, val) => { $(val).find('tr').each((j, valu) => { $(valu).find('td.a1').each((k, value) => { $(value).find('a').each((l, v) => { let d = []; $(v).find('span').each((m, va) => { d.push($(va).text()); }); let data = []; data[0] = $(v).attr('href'); data[1] = d[0].slice(7, -6); data[2] = d[1].slice(7, -7); arr.push(data); }) }) }) }); arr.forEach((l) => { let ada = false; language.forEach((la) => { if (l[1] == la) { ada = true; } }); if (ada == false) { language.push(l[1]); } }); observer.next({poster: poster, lang: language, data: arr}) }); }); } getDownloadUrl(filmUrl) { const url = 'https://subscene.com' + filmUrl; return Observable.create(observer => { axios.get(url).then((body) => { let $ = cheerio.load(body.body); $('div.download').each((i,val) => { $(val).find('a').each((j,v) => { let link = $(v).attr('href'); link = 'https://subscene.com' + link; observer.next(link); }) }) }) }) } } sub = new Subscene; sub.search('avenger').subscribe(a => console.log(a))