Full overhaul of the repo please see changelog

This commit is contained in:
Inside4ndroid
2025-09-16 18:54:12 +01:00
parent 2119398460
commit e0ad35d2b1
115 changed files with 26066 additions and 6426 deletions
+49
View File
@@ -0,0 +1,49 @@
function parseQuality(qualityString) {
if (!qualityString || typeof qualityString !== 'string') return 0;
const q = qualityString.toLowerCase();
if (q.includes('auto')) return 1080;
if (q.includes('4k') || q.includes('2160')) return 2160;
if (q.includes('1440')) return 1440;
if (q.includes('1080')) return 1080;
if (q.includes('720')) return 720;
if (q.includes('576')) return 576;
if (q.includes('480')) return 480;
if (q.includes('360')) return 360;
if (q.includes('240')) return 240;
const kbps = q.match(/(\d+)k/); if (kbps) return parseInt(kbps[1],10)/1000;
if (q.includes('hd')) return 720;
if (q.includes('sd')) return 480;
if (q.includes('cam')) return 100;
if (q.includes('ts')) return 200;
if (q.includes('scr')) return 300;
if (q.includes('dvdscr')) return 350;
if (q.includes('r5') || q.includes('r6')) return 400;
if (q.includes('org')) return 4320;
return 0;
}
function filterByMinQuality(streams, minQualitySetting) {
if (!minQualitySetting || minQualitySetting.toLowerCase() === 'all') return streams;
const minNumeric = parseQuality(minQualitySetting);
if (minNumeric === 0 && minQualitySetting.toLowerCase() !== 'all') return streams;
return streams.filter(s => parseQuality(s.quality) >= minNumeric);
}
function filterByCodecs(streams, exclude) {
if (!exclude || (!exclude.excludeDV && !exclude.excludeHDR)) return streams;
return streams.filter(s => {
if (!Array.isArray(s.codecs)) return true;
if (exclude.excludeDV && s.codecs.includes('DV')) return false;
if (exclude.excludeHDR && s.codecs.some(c => ['HDR','HDR10','HDR10+'].includes(c))) return false;
return true;
});
}
function applyFilters(streams, providerName, minQualitiesConfig, excludeCodecsConfig) {
let minQuality = null;
if (minQualitiesConfig) {
if (typeof minQualitiesConfig === 'string') minQuality = minQualitiesConfig;
else if (minQualitiesConfig.default) minQuality = minQualitiesConfig.default;
}
let filtered = filterByMinQuality(streams, minQuality);
filtered = filterByCodecs(filtered, excludeCodecsConfig);
return filtered;
}
module.exports = { applyFilters };