yts-commandline
Version:
CLI (command line interface) client for YTS
82 lines (72 loc) • 2.12 kB
JavaScript
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
}