Update providers and deduplicate streams
This commit is contained in:
+42
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user