mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
70 lines
1.9 KiB
JavaScript
70 lines
1.9 KiB
JavaScript
const { pantsu } = require('nyaapi')
|
|
|
|
const Categories = {
|
|
ANIME: {
|
|
ALL: '3_',
|
|
ENGLISH: '3_5',
|
|
RAW: '3_6',
|
|
MUSIC_VIDEO: '3_12',
|
|
NON_ENGLISH: '3_13',
|
|
},
|
|
LIVE_ACTION: {
|
|
ALL: '5_',
|
|
ENGLISH: '5_9',
|
|
RAW: '5_11',
|
|
PROMOTIONAL_VIDEO: '5_10',
|
|
NON_ENGLISH: '5_18',
|
|
}
|
|
}
|
|
|
|
function torrent(torrentId) {
|
|
if (!torrentId) {
|
|
return Promise.reject(new Error(`Failed ${torrentId} search`));
|
|
}
|
|
|
|
return pantsu.infoRequest(torrentId)
|
|
.then(result => parseTorrent(result))
|
|
.catch(error => {
|
|
if (error.statusCode && error.statusCode >= 400) {
|
|
return Promise.reject(new Error(`${error.statusCode}: [${torrentId}] failed retrieval on NyaaPantsu`));
|
|
}
|
|
return Promise.reject(error);
|
|
});
|
|
}
|
|
|
|
function search(query) {
|
|
return pantsu.search(query)
|
|
.then(results => results.map(torrent => parseTorrent(torrent)));
|
|
}
|
|
|
|
function browse(config = {}) {
|
|
const page = config.page || 1;
|
|
const category = config.category || Categories.ANIME.ENGLISH;
|
|
|
|
return pantsu.list(category, page)
|
|
.then(results => results.map(torrent => parseTorrent(torrent)));
|
|
}
|
|
|
|
function parseTorrent(torrent) {
|
|
return {
|
|
title: torrent.name.replace(/\t|\s+/g, ' ').trim(),
|
|
torrentId: torrent.id,
|
|
infoHash: torrent.hash.trim().toLowerCase(),
|
|
magnetLink: torrent.magnet,
|
|
torrentLink: torrent.torrent,
|
|
seeders: torrent.seeders,
|
|
size: torrent.filesize,
|
|
uploadDate: new Date(torrent.date),
|
|
category: `${torrent.category}_${torrent.sub_category}`,
|
|
languages: torrent.languages ? torrent.languages.join(',') : undefined,
|
|
files: torrent.file_list && torrent.file_list.length ? torrent.file_list.map((file, fileId) => ({
|
|
fileIndex: fileId,
|
|
name: file.path.replace(/([^\/]+$)/, '$1'),
|
|
path: file.path,
|
|
size: file.filesize
|
|
})) : undefined
|
|
}
|
|
}
|
|
|
|
module.exports = { torrent, search, browse, Categories };
|