mirror of
https://github.com/knightcrawler-stremio/knightcrawler.git
synced 2024-12-20 03:29:51 +00:00
89 lines
3.1 KiB
JavaScript
89 lines
3.1 KiB
JavaScript
import { MochOptions } from '../moch/moch.js';
|
|
import { Providers } from './filter.js';
|
|
import { showDebridCatalog } from '../moch/options.js';
|
|
import { getManifestOverride } from './configuration.js';
|
|
import { Type } from './types.js';
|
|
|
|
const DefaultProviders = Providers.options.map(provider => provider.key);
|
|
const CatalogMochs = Object.values(MochOptions).filter(moch => moch.catalog);
|
|
|
|
export function manifest(config = {}) {
|
|
const overrideManifest = getManifestOverride(config);
|
|
const baseManifest = {
|
|
id: 'com.stremio.torrentio.addon',
|
|
version: '0.0.14',
|
|
name: getName(overrideManifest, config),
|
|
description: getDescription(config),
|
|
catalogs: getCatalogs(config),
|
|
resources: getResources(config),
|
|
types: [Type.MOVIE, Type.SERIES, Type.ANIME, Type.OTHER],
|
|
background: `https://i.ibb.co/VtSfFP9/t8wVwcg.jpg`,
|
|
logo: `https://i.ibb.co/w4BnkC9/GwxAcDV.png`,
|
|
behaviorHints: {
|
|
configurable: true,
|
|
configurationRequired: false
|
|
}
|
|
};
|
|
return Object.assign(baseManifest, overrideManifest);
|
|
}
|
|
|
|
export function dummyManifest() {
|
|
const manifestDefault = manifest();
|
|
manifestDefault.catalogs = [{ id: 'dummy', type: Type.OTHER }];
|
|
manifestDefault.resources = ['stream', 'meta'];
|
|
return manifestDefault;
|
|
}
|
|
|
|
function getName(manifest, config) {
|
|
const rootName = manifest?.name || 'Torrentio';
|
|
const mochSuffix = Object.values(MochOptions)
|
|
.filter(moch => config[moch.key])
|
|
.map(moch => moch.shortName)
|
|
.join('/');
|
|
return [rootName, mochSuffix].filter(v => v).join(' ');
|
|
}
|
|
|
|
function getDescription(config) {
|
|
const providersList = config[Providers.key] || DefaultProviders;
|
|
const enabledProvidersDesc = Providers.options
|
|
.map(provider => `${provider.label}${providersList.includes(provider.key) ? '(+)' : '(-)'}`)
|
|
.join(', ')
|
|
const enabledMochs = Object.values(MochOptions)
|
|
.filter(moch => config[moch.key])
|
|
.map(moch => moch.name)
|
|
.join(' & ');
|
|
const possibleMochs = Object.values(MochOptions).map(moch => moch.name).join('/')
|
|
const mochsDesc = enabledMochs ? ` and ${enabledMochs} enabled` : '';
|
|
return 'Provides torrent streams from scraped torrent providers.'
|
|
+ ` Currently supports ${enabledProvidersDesc}${mochsDesc}.`
|
|
+ ` To configure providers, ${possibleMochs} support and other settings visit https://torrentio.strem.fun`
|
|
}
|
|
|
|
function getCatalogs(config) {
|
|
return CatalogMochs
|
|
.filter(moch => showDebridCatalog(config) && config[moch.key])
|
|
.map(moch => ({
|
|
id: `torrentio-${moch.key}`,
|
|
name: `${moch.name}`,
|
|
type: 'other',
|
|
extra: [{ name: 'skip' }],
|
|
}));
|
|
}
|
|
|
|
function getResources(config) {
|
|
const streamResource = {
|
|
name: 'stream',
|
|
types: [Type.MOVIE, Type.SERIES],
|
|
idPrefixes: ['tt', 'kitsu']
|
|
};
|
|
const metaResource = {
|
|
name: 'meta',
|
|
types: [Type.OTHER],
|
|
idPrefixes: CatalogMochs.filter(moch => config[moch.key]).map(moch => moch.key)
|
|
};
|
|
if (showDebridCatalog(config) && CatalogMochs.filter(moch => config[moch.key]).length) {
|
|
return [streamResource, metaResource];
|
|
}
|
|
return [streamResource];
|
|
}
|