UNPKG

wakitsu

Version:

Hobby project for managing anime watch list on Kitsu through CLI

52 lines 1.62 kB
import { HTTP } from './http.js'; import { parseFansubFilename } from './utils.js'; const _nyaaURLStr = 'https://nyaa.si'; export async function getFansubRSS(searchString) { const url = new URL(_nyaaURLStr); url.searchParams.append('f', '0'); url.searchParams.append('c', '1_2'); url.searchParams.append('q', searchString); const resp = await HTTP.get(url); if (!resp.ok) { console.log(await resp.text()); process.exit(1); } const [entryCount, latestEntryName] = await getLatestAnimeEntry(await resp.text()); url.searchParams.append('page', 'rss'); if (!latestEntryName) { return [null, null]; } const [error, data] = parseFansubFilename(latestEntryName); if (error) { return [error, null]; } const { title, fansub, paddedEpNum, season } = data; const entry = { entryCount, raw: latestEntryName, fansub: `[${fansub}]`, title, episode: paddedEpNum, season, rss: url.toString(), }; return [null, entry]; } async function getLatestAnimeEntry(html) { const cheerio = await import('cheerio'); const $ = cheerio.load(html); const els = $('tr td + td > a'); const torrents = []; for (let i = 0; i < els.length; i++) { const elementText = els.eq(i).text().trim(); if (elementText.length > 10) { torrents.push(elementText); } } const latestEntryName = torrents[0]; if (!torrents.length) { return [0, null]; } return [torrents.length, latestEntryName]; } //# sourceMappingURL=rss.js.map