daily pastebin goal
82%
SHARE
TWEET

yts.js

Kafke Nov 4th, 2015 1,685 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (function (App) {
  2.     'use strict';
  3.  
  4.     var Q = require('q');
  5.     var request = require('request');
  6.     var inherits = require('util').inherits;
  7.  
  8.     function YTS() {
  9.         if (!(this instanceof YTS)) {
  10.             return new YTS();
  11.         }
  12.  
  13.         App.Providers.Generic.call(this);
  14.     }
  15.     inherits(YTS, App.Providers.Generic);
  16.  
  17.     YTS.prototype.extractIds = function (items) {
  18.         return _.pluck(items.results, 'imdb_id');
  19.     };
  20.  
  21.     var format = function (data, page, limit) {
  22.         console.log("data", data);
  23.         var results = _.chain(data)/*.filter(function (movie) {
  24.                 // Filter any 3D only movies
  25.                 return _.any(movie.torrents, function (torrent) {
  26.                     return torrent.quality !== '3D';
  27.                 });
  28.             })*/.map(function (movie) {
  29.                 return {
  30.                     type: 'movie',
  31.                     imdb_id: movie.imdb,
  32.                     title: movie.title,
  33.                     year: movie.year,
  34.                     genre: movie.genres,
  35.                     rating: movie.rating,
  36.                     runtime: movie.runtime,
  37.                     image: movie.poster_med,
  38.                     cover: movie.poster_med,
  39.                     backdrop: movie.poster_big,
  40.                     synopsis: movie.description,
  41.                     trailer: 'https://www.youtube.com/watch?v=' + movie.trailer || false,
  42.                     certification: movie.mpa_rating,
  43.                     torrents: _.reduce(movie.items, function (torrents, torrent) {
  44.                         console.log(torrent);
  45.                         if (torrent.quality !== '3D') {
  46.                             torrents[torrent.quality] = {
  47.                                 url: torrent.torrent_url,
  48.                                 magnet: torrent.torrent_magnet, //'magnet:?xt=urn:btih:' + torrent.hash + '&tr=udp://open.demonii.com:1337&tr=udp://tracker.coppersurfer.tk:6969',
  49.                                 size: torrent.size_bytes,
  50.                                 filesize: torrent.size_bytes,
  51.                                 seed: torrent.torrent_seeds,
  52.                                 peer: torrent.torrent_peers
  53.                             };
  54.                         }
  55.                         return torrents;
  56.                     }, {})
  57.                 };
  58.             }).value();
  59.         console.log("results", results);
  60.         return {
  61.             results: Common.sanitize(results),
  62.             hasMore: true // data.length > page * limit
  63.         };
  64.     };
  65.  
  66.     YTS.prototype.fetch = function (filters) {
  67.         var params = {
  68.             sort_by: 'seeds',
  69.             limit: 50,
  70.             with_rt_ratings: true
  71.         };
  72.  
  73.         if (filters.page) {
  74.             params.page = filters.page;
  75.         }
  76.  
  77.         if (filters.keywords) {
  78.             params.keywords = filters.keywords;
  79.         }
  80.  
  81.         if (filters.genre && filters.genre != 'All') {
  82.             params.genre = filters.genre;
  83.         }
  84.  
  85.         if (filters.order === 1) {
  86.             params.order_by = 'asc';
  87.         }
  88.  
  89.         if (filters.sorter && filters.sorter !== 'popularity') {
  90.             switch (filters.sorter) {
  91.             case 'last added':
  92.                 params.sort_by = 'date_added';
  93.                 break;
  94.             case 'trending':
  95.                 params.sort_by = 'trending_score';
  96.                 break;
  97.             default:
  98.                 params.sort_by = filters.sorter;
  99.             }
  100.         }
  101.  
  102.         if (Settings.movies_quality !== 'all') {
  103.             params.quality = Settings.movies_quality;
  104.         }
  105.  
  106.         if (Settings.translateSynopsis) {
  107.             params.lang = Settings.language;
  108.         }
  109.  
  110.         var defer = Q.defer();
  111.         function get(index) {
  112.             var options = {
  113.                 //uri: Settings.ytsAPI[index].uri + 'list',
  114.                 uri:"http://api.torrentsapi.com/list?",
  115.                 qs: params,
  116.                 json: true,
  117.                 timeout: 10000
  118.             };
  119.             console.log('test', params);
  120.  
  121.             /*var url = 'http://api.torrentsapi.com/list?';//sort=seeds&quality=720p&page=' + params.page + "&count=" + params.limit;
  122.             if(filters.keywords){ url+="&keywords="+filters.keywords; }
  123.             jQuery.getJSON(url, function(data) {
  124.                 return defer.resolve(format(data.MovieList), params.page, params.limit);
  125.  
  126.             }).fail(function( jqxhr, textStatus, error ) {
  127.                 console.log('Error loading data...');
  128.                 return defer.reject(textStatus);
  129.  
  130.             });*/
  131.             var req = jQuery.extend(true, {}, Settings.ytsAPI[index], options);
  132.             request(req, function (err, res, data) {
  133.                 if (err || res.statusCode >= 400 || (data && !data.MovieList)) {
  134.                     win.warn('YTS API endpoint \'%s\' failed.', Settings.ytsAPI[index].uri);
  135.                     if (index + 1 >= Settings.ytsAPI.length) {
  136.                         return defer.reject(err || 'Status Code is above 400');
  137.                     } else {
  138.                         get(index + 1);
  139.                     }
  140.                     return;
  141.                 } else if (!data || data.status === 'error') {
  142.                     err = data ? data.status_message : 'No data returned';
  143.                     return defer.reject(err);
  144.                 } else {
  145.                     console.log("data",data);
  146.                     return defer.resolve(format(data.MovieList));
  147.                 }
  148.             });
  149.  
  150.  
  151.         }
  152.         get(0);
  153.         return defer.promise;
  154.     };
  155.  
  156.     YTS.prototype.random = function () {
  157.         var defer = Q.defer();
  158.  
  159.         function get(index) {
  160.             var options = {
  161.                 uri: Settings.ytsAPI[index].uri + 'api/v2/get_random_movie.json?' + Math.round((new Date()).valueOf() / 1000),
  162.                 json: true,
  163.                 timeout: 10000
  164.             };
  165.             console.log('getting movies');
  166.             var req = jQuery.extend(true, {}, Settings.ytsAPI[index], options);
  167.             request(req, function (err, res, data) {
  168.                 if (err || res.statusCode >= 400 || (data && !data.data)) {
  169.                     win.warn('YTS API endpoint \'%s\' failed.', Settings.ytsAPI[index].uri);
  170.                     if (index + 1 >= Settings.ytsAPI.length) {
  171.                         return defer.reject(err || 'Status Code is above 400');
  172.                     } else {
  173.                         get(index + 1);
  174.                     }
  175.                     return;
  176.                 } else if (!data || data.status === 'error') {
  177.                     err = data ? data.status_message : 'No data returned';
  178.                     return defer.reject(err);
  179.                 } else {
  180.                     return defer.resolve(Common.sanitize(data.data));
  181.                 }
  182.             });
  183.         }
  184.         get(0);
  185.  
  186.         return defer.promise;
  187.     };
  188.  
  189.     YTS.prototype.detail = function (torrent_id, old_data) {
  190.         return Q(old_data);
  191.     };
  192.  
  193.     App.Providers.Yts = YTS;
  194.  
  195. })(window.App);
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top