UNPKG

yts-commandline

Version:

CLI (command line interface) client for YTS

82 lines (72 loc) 2.12 kB
const fetch = require('node-fetch'); const querystring = require('querystring'); const API = { list: 'https://yts.mx/api/v2/list_movies.json', detail: 'https://yts.mx/api/v2/movie_details.json', suggest: 'https://yts.mx/api/v2/movie_suggestions.json?movie_id=' } const TRACKERS = [ 'udp://open.demonii.com:1337', 'udp://tracker.istole.it:80', 'http://tracker.yify-torrents.com/announce', 'udp://tracker.publicbt.com:80', 'udp://tracker.openbittorrent.com:80', 'udp://tracker.coppersurfer.tk:6969', 'udp://exodus.desync.com:6969', 'http://exodus.desync.com:6969/announce', 'udp://glotorrents.pw:6969/announce', 'udp://tracker.opentrackr.org:1337/announce', 'udp://torrent.gresille.org:80/announce', 'udp://tracker.leechers-paradise.org:6969', 'udp://p4p.arenabg.ch:1337', 'udp://tracker.internetwarriors.net:1337', ].join('&tr=') const movies = async query_term => { const url = query_term ? `${API.list}?${query_term}` : API.list; const request = await fetch(url); const data = await request.json(); const { movie_count } = data.data; if (movie_count > 1 && data.data) { return data.data.movies } else if (movie_count === 1) { const mId = data.data.movies[0].id; return await getMovie(mId); } else { return false; } } const getSuggestions = async id => { const url = `${API.suggest}${id}`; const request = await fetch(url) const data = await request.json() const { movie_count } = data.data; if (movie_count > 1 && data.data) { return data.data.movies } else if (movie_count === 1) { const mId = data.data.movies[0].id; return await getMovie(mId); } else { return false; } } const getMovie = async movie_id => { const qs = querystring.stringify({ movie_id }); const request = await fetch(`${API.detail}?${qs}&with_cast=true`); const data = await request.json(); return data.data.movie; } const magnetURI = (hash, title) => { return `magnet:?xt=urn:btih:${hash}&dn=${encodeURIComponent(title)}&tr=${TRACKERS}` } module.exports = { movies, getMovie, getSuggestions, magnetURI }