Update providers and deduplicate streams

This commit is contained in:
Dymas
2026-09-18 21:45:28 +02:00
parent 9c4c6437f4
commit c71f3db6a5
7 changed files with 387 additions and 65 deletions
+42
View File
@@ -5112,6 +5112,48 @@ provider.processServer({ name: "HD-2", type: "dub", linkId: "dub-link" }).then((
self.assertNotIn('mode === "dub"', bridge_js)
self.assertNotIn('fetchEpisodeSources(episodeId, "sub")', bridge_js)
def test_provider_bridge_deduplicates_identical_resolved_streams(self):
script = r"""
const Module = require("module");
const originalLoad = Module._load;
const provider = {
fetchEpisodeSources: async () => ({
sources: [
{ name: "HD-1", type: "dub", isUnresolved: true, rawServer: { name: "HD-1", referer: "https://player.example/" } },
{ name: "Vidstream-1", type: "dub", isUnresolved: true, rawServer: { name: "Vidstream-1", referer: "https://player.example/" } },
{ name: "Vidstream-2", type: "dub", isUnresolved: true, rawServer: { name: "Vidstream-2", referer: "https://other-player.example/" } },
],
}),
processServer: async (server) => ({
url: "https://cdn.example/master.m3u8",
isM3U8: true,
type: "dub",
headers: { Referer: server.referer },
}),
};
Module._load = function(request, parent, isMain) {
if (String(request).endsWith("/providers/extensions/Anime/anikoto.js")) return provider;
return originalLoad.call(this, request, parent, isMain);
};
process.argv = ["node", "bridge.js", "resolve-all", "anikoto", "ep1", "dub", "best"];
require("./providers/bridge.js");
"""
proc = subprocess.run(
["node", "-e", script],
cwd=ROOT,
text=True,
capture_output=True,
check=False,
)
self.assertEqual(proc.returncode, 0, proc.stderr)
sources = json.loads(proc.stdout)["sources"]
self.assertEqual(len(sources), 2)
self.assertEqual(
[source["headers"]["Referer"] for source in sources],
["https://player.example/", "https://other-player.example/"],
)
class DockerfilePackagingTests(unittest.TestCase):
def test_provider_updates_module_is_copied_into_image(self):