Torznab + fake qBittorrent proxy for Webshare.cz, with Compose/Docker packaging, MIT license, and tests.
59 lines
2.0 KiB
JavaScript
59 lines
2.0 KiB
JavaScript
function escapeXml(s) {
|
|
return String(s)
|
|
.replace(/&/g, '&')
|
|
.replace(/</g, '<')
|
|
.replace(/>/g, '>')
|
|
.replace(/"/g, '"');
|
|
}
|
|
|
|
function caps() {
|
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
<caps>
|
|
<server version="1.0" title="Webshare" strapline="Webshare.cz" url="https://webshare.cz"/>
|
|
<limits max="100" default="25"/>
|
|
<registration available="no" open="no"/>
|
|
<searching>
|
|
<search available="yes" supportedParams="q"/>
|
|
<tv-search available="yes" supportedParams="q,season,ep"/>
|
|
<movie-search available="yes" supportedParams="q"/>
|
|
<music-search available="no" supportedParams=""/>
|
|
<book-search available="no" supportedParams=""/>
|
|
</searching>
|
|
<categories>
|
|
<category id="2000" name="Movies"/>
|
|
<category id="5000" name="TV"/>
|
|
<category id="5040" name="TV/HD"/>
|
|
<category id="5030" name="TV/SD"/>
|
|
</categories>
|
|
</caps>`;
|
|
}
|
|
|
|
function feed(items, baseUrl) {
|
|
const pubDate = new Date().toUTCString();
|
|
const itemsXml = items.map(item => ` <item>
|
|
<title>${escapeXml(item.name)}</title>
|
|
<guid isPermaLink="false">${escapeXml(item.ident)}</guid>
|
|
<pubDate>${pubDate}</pubDate>
|
|
<category>5040</category>
|
|
<enclosure url="${escapeXml(baseUrl + '/download/' + item.ident)}" length="${item.size}" type="application/x-bittorrent"/>
|
|
<torznab:attr name="category" value="5040"/>
|
|
<torznab:attr name="size" value="${item.size}"/>
|
|
<torznab:attr name="seeders" value="1"/>
|
|
<torznab:attr name="peers" value="1"/>
|
|
<torznab:attr name="downloadvolumefactor" value="0"/>
|
|
<torznab:attr name="uploadvolumefactor" value="1"/>
|
|
</item>`).join('\n');
|
|
|
|
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
<rss version="2.0" xmlns:torznab="http://torznab.com/schemas/2015/feed">
|
|
<channel>
|
|
<title>Webshare</title>
|
|
<description>Webshare.cz API (Torznab façade)</description>
|
|
<link>https://webshare.cz</link>
|
|
${itemsXml}
|
|
</channel>
|
|
</rss>`;
|
|
}
|
|
|
|
module.exports = { caps, feed };
|