Advertisement
Kafke

yts.js

Nov 4th, 2015
2,132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.02 KB | None | 0 0
  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);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement