From 6d5a511cb4d2e778debcfcba3bc4de7b30913663 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Mon, 22 Sep 2025 09:30:14 +0000 Subject: [PATCH] chore: remove XPrime backend API responses are encrypted and use webassembly for decryption --- src/extractor/XPrime.test.ts | 28 ------- src/extractor/XPrime.ts | 62 --------------- ...rkers.dev-6ae5d55a8b01771d15179bec3f6f4a85 | 1 - ...rkers.dev-8bdd9716c071a7e90440c3c7b9021d4b | 1 - ...rkers.dev-d8e35b17ea1e13625fcb14cba8dad8e8 | 1 - ...rkers.dev-f400dba830135cfe83e2ade98c5286e6 | 1 - ...7239andimdbtt13623632andseason1andepisode1 | 1 - ...cpercent20Worldpercent20Rebirthandyear2025 | 1 - ...nandyear2025andid1061474andimdbIdtt5950044 | 1 - .../__snapshots__/XPrime.test.ts.snap | 79 ------------------- src/extractor/index.ts | 2 - src/index.ts | 2 - src/source/XPrime.test.ts | 23 ------ src/source/XPrime.ts | 47 ----------- .../https:api.themoviedb.org3movie1061474 | 1 - ...pi.themoviedb.org3movie1061474external_ids | 1 - .../XPrime/https:api.themoviedb.org3tv157239 | 1 - ...ps:api.themoviedb.org3tv157239external_ids | 1 - src/source/__snapshots__/XPrime.test.ts.snap | 29 ------- src/source/index.ts | 2 - src/utils/__snapshots__/manifest.test.ts.snap | 4 +- 21 files changed, 2 insertions(+), 287 deletions(-) delete mode 100644 src/extractor/XPrime.test.ts delete mode 100644 src/extractor/XPrime.ts delete mode 100644 src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-6ae5d55a8b01771d15179bec3f6f4a85 delete mode 100644 src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-8bdd9716c071a7e90440c3c7b9021d4b delete mode 100644 src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-d8e35b17ea1e13625fcb14cba8dad8e8 delete mode 100644 src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-f400dba830135cfe83e2ade98c5286e6 delete mode 100644 src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameAlienpercent3Apercent20Earthandyear2025andid157239andimdbtt13623632andseason1andepisode1 delete mode 100644 src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameJurassicpercent20Worldpercent20Rebirthandyear2025 delete mode 100644 src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameSupermanandyear2025andid1061474andimdbIdtt5950044 delete mode 100644 src/extractor/__snapshots__/XPrime.test.ts.snap delete mode 100644 src/source/XPrime.test.ts delete mode 100644 src/source/XPrime.ts delete mode 100644 src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474 delete mode 100644 src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474external_ids delete mode 100644 src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239 delete mode 100644 src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239external_ids delete mode 100644 src/source/__snapshots__/XPrime.test.ts.snap diff --git a/src/extractor/XPrime.test.ts b/src/extractor/XPrime.test.ts deleted file mode 100644 index 7b0f3c6..0000000 --- a/src/extractor/XPrime.test.ts +++ /dev/null @@ -1,28 +0,0 @@ -import winston from 'winston'; -import { createTestContext } from '../test'; -import { FetcherMock } from '../utils'; -import { ExtractorRegistry } from './ExtractorRegistry'; -import { XPrime } from './XPrime'; - -const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); -const extractorRegistry = new ExtractorRegistry(logger, [new XPrime(new FetcherMock(`${__dirname}/__fixtures__/XPrime`))]); - -const ctx = createTestContext(); - -describe('XPrime', () => { - test('unknown backend is ignored', async () => { - expect(await extractorRegistry.handle(ctx, new URL('https://backend.xprime.tv/unknown?name=Superman&year=2025&id=1061474&imdbId=tt5950044'))).toMatchSnapshot(); - }); - - test('primebox Superman', async () => { - expect(await extractorRegistry.handle(ctx, new URL('https://backend.xprime.tv/primebox?name=Superman&year=2025&id=1061474&imdbId=tt5950044'))).toMatchSnapshot(); - }); - - test('primebox Alien: Earth', async () => { - expect(await extractorRegistry.handle(ctx, new URL('https://backend.xprime.tv/primebox?name=Alien%3A%20Earth&year=2025&id=157239&imdb=tt13623632&season=1&episode=1'))).toMatchSnapshot(); - }); - - test('primebox not found', async () => { - expect(await extractorRegistry.handle(ctx, new URL('https://backend.xprime.tv/primebox?name=Jurassic%20World%20Rebirth&year=2025'))).toMatchSnapshot(); - }); -}); diff --git a/src/extractor/XPrime.ts b/src/extractor/XPrime.ts deleted file mode 100644 index 77eb5290..0000000 --- a/src/extractor/XPrime.ts +++ /dev/null @@ -1,62 +0,0 @@ -import { Context, Format, Meta, UrlResult } from '../types'; -import { guessSizeFromMp4 } from '../utils/size'; -import { Extractor } from './Extractor'; - -interface XPrimePrimeboxResponsePartial { - streams: Record; - series_info?: { - episode: number; - season: number; - title: string; - year: string; - }; - title?: string; -} - -export class XPrime extends Extractor { - public readonly id = 'xprime'; - - public readonly label = 'XPrime'; - - public override readonly ttl: number = 21600000; // 6h - - public supports(_ctx: Context, url: URL): boolean { - return null !== url.host.match(/xprime/); - } - - protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise { - const urlResults: UrlResult[] = []; - - const headers = { - Referer: url.protocol + '//' + url.hostname.split('.').slice(-2).join('.'), // Strip subdomains - }; - - if (url.href.includes('primebox')) { - const jsonResponse = JSON.parse(await this.fetcher.text(ctx, url)) as XPrimePrimeboxResponsePartial; - - for (const [resolution, stream] of Object.entries(jsonResponse.streams)) { - const url = new URL(stream); - const title = jsonResponse.series_info - ? `${jsonResponse.series_info.title} ${jsonResponse.series_info.season}x${jsonResponse.series_info.episode} (${jsonResponse.series_info.year})` - : jsonResponse.title; - - urlResults.push({ - url, - format: Format.mp4, - label: `${this.label} Primebox`, - sourceId: `${this.id}_primebox_${meta.countryCodes?.join('_')}`, - ttl: this.ttl, - meta: { - ...meta, - bytes: await guessSizeFromMp4(ctx, this.fetcher, url, { headers, minCacheTtl: this.ttl }), - height: parseInt(resolution), - title, - }, - requestHeaders: headers, - }); - } - } - - return urlResults; - }; -} diff --git a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-6ae5d55a8b01771d15179bec3f6f4a85 b/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-6ae5d55a8b01771d15179bec3f6f4a85 deleted file mode 100644 index b43c17e..0000000 --- a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-6ae5d55a8b01771d15179bec3f6f4a85 +++ /dev/null @@ -1 +0,0 @@ -{"accept-ranges":"bytes","access-control-allow-headers":"*","access-control-allow-origin":"https://xprime.tv","alt-svc":"h3=\":443\"; ma=86400","cache-control":"public, max-age=31536000, immutable","cdn-cache-control":"public, max-age=31536000, immutable","cf-ray":"97d1622e3ad44d26-FRA","connection":"close","content-length":"896638128","content-type":"video/mp4","date":"Wed, 10 Sep 2025 19:38:03 GMT","nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=FzrMqwYe6qwzeh76DC9F4xwUbJJIwR3NLN%2BXEdKyul1Lv6zBocsQrsZtj%2F3mRAtOkr1R3fTuSSVikTLF3GqLes6idwSj2KRFSNQYB2qg%2BaS72v2SjbfnuEWL0eroypJ2346tnFninrVROOjBDB4vkwOI2e0tOyQ%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","server-timing":"cfL4;desc=\"?proto=TCP&rtt=0&min_rtt=0&rtt_var=0&sent=0&recv=0&lost=0&retrans=0&sent_bytes=0&recv_bytes=0&delivery_rate=0&cwnd=0&unsent_bytes=0&cid=0ab2b8c6b809570f&ts=85&x=0\"","vary":"Accept-Encoding"} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-8bdd9716c071a7e90440c3c7b9021d4b b/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-8bdd9716c071a7e90440c3c7b9021d4b deleted file mode 100644 index db51965..0000000 --- a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-8bdd9716c071a7e90440c3c7b9021d4b +++ /dev/null @@ -1 +0,0 @@ -{"accept-ranges":"bytes","access-control-allow-headers":"*","access-control-allow-origin":"https://xprime.tv","alt-svc":"h3=\":443\"; ma=86400","cache-control":"public, max-age=31536000, immutable","cdn-cache-control":"public, max-age=31536000, immutable","cf-ray":"97d1622daa5b4d26-FRA","connection":"close","content-length":"401394599","content-type":"video/mp4","date":"Wed, 10 Sep 2025 19:38:03 GMT","nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=gs1y2VcEagyahSUbca2EMr5ZaVaQapIixbj3Mcgu4FGR8iUd5Sc0z8rXXo%2B2gVs6VpYrYqpTwv9ErfpTGbPrUc1Sc%2FYWrqfvE49d3MXKzCXu8LiDLj6Ap1q732n8DNyM8CUnpTt5559%2Bs1OsGhHzsfUqo646vhk%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","server-timing":"cfL4;desc=\"?proto=TCP&rtt=0&min_rtt=0&rtt_var=0&sent=0&recv=0&lost=0&retrans=0&sent_bytes=0&recv_bytes=0&delivery_rate=0&cwnd=0&unsent_bytes=0&cid=ee1864c7dc839181&ts=77&x=0\"","vary":"Accept-Encoding"} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-d8e35b17ea1e13625fcb14cba8dad8e8 b/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-d8e35b17ea1e13625fcb14cba8dad8e8 deleted file mode 100644 index 7c94134..0000000 --- a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-d8e35b17ea1e13625fcb14cba8dad8e8 +++ /dev/null @@ -1 +0,0 @@ -{"accept-ranges":"bytes","access-control-allow-headers":"*","access-control-allow-origin":"https://xprime.tv","alt-svc":"h3=\":443\"; ma=86400","cache-control":"public, max-age=31536000, immutable","cdn-cache-control":"public, max-age=31536000, immutable","cf-ray":"97d1622f5bbf4d26-FRA","connection":"close","content-length":"871281904","content-type":"video/mp4","date":"Wed, 10 Sep 2025 19:38:04 GMT","nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=KlG4q7%2FQZ7c2zxVghnbfh2TtHUadFAQfG%2F2MRX9YZS6lceSdjj93MyYssn7%2FJcnAWVtcR%2BlQ%2FuQHz7lp0PW0%2B1WIfBXn5mbLxMotY7mWWBS58JCSTZlDc2huJ8MZUuFCQiLLRO2o3IJhPCOVK%2FtkTrVqthc57AY%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","server-timing":"cfL4;desc=\"?proto=TCP&rtt=0&min_rtt=0&rtt_var=0&sent=0&recv=0&lost=0&retrans=0&sent_bytes=0&recv_bytes=0&delivery_rate=0&cwnd=0&unsent_bytes=0&cid=32fc89755f2b0f98&ts=110&x=0\"","vary":"Accept-Encoding"} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-f400dba830135cfe83e2ade98c5286e6 b/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-f400dba830135cfe83e2ade98c5286e6 deleted file mode 100644 index 3967039..0000000 --- a/src/extractor/__fixtures__/XPrime/head-https:oca.flutch05.workers.dev-f400dba830135cfe83e2ade98c5286e6 +++ /dev/null @@ -1 +0,0 @@ -{"accept-ranges":"bytes","access-control-allow-headers":"*","access-control-allow-origin":"https://xprime.tv","alt-svc":"h3=\":443\"; ma=86400","cache-control":"public, max-age=31536000, immutable","cdn-cache-control":"public, max-age=31536000, immutable","cf-ray":"97d162302c654d26-FRA","connection":"close","content-length":"420170402","content-type":"video/mp4","date":"Wed, 10 Sep 2025 19:38:04 GMT","nel":"{\"success_fraction\":0,\"report_to\":\"cf-nel\",\"max_age\":604800}","report-to":"{\"endpoints\":[{\"url\":\"https:\\/\\/a.nel.cloudflare.com\\/report\\/v4?s=fmqjV4Q2%2FjwPS%2F78MMmXHqgH9ibjI9QnwLkXiaGHmstwNDlLe0qOxfoKb2DvobWxarVPzYAxoyB3GdKKZ3GO%2B4KnNX5MHkDVgVFLVhUB04lqEHJTHwb4aG34yMdI5uziLuLxjz2t7BIprl4UFt%2BOinEinax4WH8%3D\"}],\"group\":\"cf-nel\",\"max_age\":604800}","server":"cloudflare","server-timing":"cfL4;desc=\"?proto=TCP&rtt=0&min_rtt=0&rtt_var=0&sent=0&recv=0&lost=0&retrans=0&sent_bytes=0&recv_bytes=0&delivery_rate=0&cwnd=0&unsent_bytes=0&cid=935db57878fc96c4&ts=62&x=0\"","vary":"Accept-Encoding"} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameAlienpercent3Apercent20Earthandyear2025andid157239andimdbtt13623632andseason1andepisode1 b/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameAlienpercent3Apercent20Earthandyear2025andid157239andimdbtt13623632andseason1andepisode1 deleted file mode 100644 index 779f5e9..0000000 --- a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameAlienpercent3Apercent20Earthandyear2025andid157239andimdbtt13623632andseason1andepisode1 +++ /dev/null @@ -1 +0,0 @@ -{"available_qualities":["1080P","480P"],"has_subtitles":true,"series_info":{"episode":1,"season":1,"title":"Alien: Earth","type":"series","year":"2025"},"status":"ok","streams":{"1080P":"https://oca.flutch05.workers.dev/?v=mOwlY2kjThQa8NCWs32mchoiQHzclPNneNoDGQPimK%2B3Bp%2F1cqnza7Leu1hSMqLl6oRqOYEWTcx2WwszBsdBABFyqhRv8OpdZrGuGaoeNaiBFA5Ugx5%2BfwVDxx8kgPmu9hg8UjpwPo4B49s92Z%2BC5%2FfUJFGbJOp60JaP5NFEbfaIIdgqnUc0xUrUBfZPTOW%2FYAmi4D7C86WqUnPjCOh5RMYV3tWbwJ2LaZfJw%2Bfe7PAF9En4SRvsYmKGt8w6VCWzuxCCtpmRQr1E8PILpi%2Fr%2BkZOXtm%2B01mGCzY5Cv0OYAcVdqqtIylF%2FBQDbzxOuLnoXVz1QWSrroL1OiZ7dOT6TUilA5v%2F8T5ujpRy%2FDgwOvyYav%2BoiZud%2FOiY4eL%2F9UckLsgka85QlOmvvnXVzsvg%2BX1u4R02UWmJ6xlHGp5pTkRImbhERu0fJmGOjtrgDsjKy7DPVTHWPHr83nJC8dnDpw%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","480P":"https://oca.flutch05.workers.dev/?v=67b6sL674qhHEUcDMks3X12qkFala9ovis0QX%2F35qibiyzDOJ8IWc8yIS6kHsxUNW1x9MCx3DC79NiJLW7S86tNy94b7iW7Ec8tOalViCMsASELZnMo9lTzq08PXalRsC6E78VInBlJW5L50sTXmzBS83meFSenCqIO1VS70n1p9Q1tt%2B7frpHSdfvuQV%2FrZiWKCPsHS%2F8b3qC630HIopHQfd9tvdzCHKgtTLXJUKBdz%2BYAQBeD2T%2FovyhHLZDawtlOjqBC6w19xw1m1%2FZsVymS%2FJPFoNgCtSQf47iSKVdeDOEyLyD8vl675LxaQB0LXgjJL1JbRhqR6IbPTvNfDK1cWAeGZZybsxWM4t%2FC9bOZZAmhT3At7Vm3WFYRwWawK2YiV3Rl84umGFELYq%2BTYUstaDm6EJnu%2F8S56A92ELLJ7beFzfHjdGkEuxjhVF6me7v3awmcysmGfAw%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe"},"subtitles":[{"file":"https://oca.flutch05.workers.dev/?v=3YAhUFZuYLmpk59%2FYNapQMOc6YnqFiqNixSS3ALGyBQZ%2BZrI4QUk5%2B1%2FThuFFUSy%2B3LmmSB4JSLgVdGyKg9uqrR12TSEMAZz3MdYx5luH7owCeEmly1Vys7LLMjuK3wCOtBwGJVKKncPK1ZouhbRBjGhBhRnZkIDyLRC0I%2FnIGeS9pKfnGwnvl%2FWqk%2FPZrS2BTsU94wAp9I3k2Y0fW3P8Q6u7kHIxQecX2uEYzeV2omSPduYUgxy3fov9smcVxWuvOwQp84F4fvhwOYO1hKDGSQpwLBRE5lrKb5%2BZINpw7x5mOIbUA8LCj7QjVyOW7Gidr%2Fie3o57xUphyciUgLl0CwnIX1eFNgmC6c7B0uMeJ3KzwylwW1M9mhrzbC5SruZj4e5AXxeTqvjiifLflXILY%2FlzZ33FJHF4y4w5GMxMgIRRJlsfsEPff3eWxnfHB%2BmdOiUaJzzM9lvKLRBsTd5U38svBEYElQHq4VXGsU0lJ1J2B9eHOyHAwgyJ9WQiub7j%2Bkf1tIBbHH3%2BLnyQcExb7D7Yh5yl1vDehiQhzEePP2t9e%2FRPURmFKI7nm2Ce%2BgCVwl2WygPtbCNkJuV2UvJ1vLcqq%2B2%2FRDXxeeKY0rKr3MLaf3LoRUkgAYv%2FVDs7mfMahKfGw0Y4NJYL884G12HW%2B8XepFfzr64e6dHoVh6WHDkyaWEPOC4X%2FugjnOWq5wTG2HT1r4hP91ObP%2BWpTqugphHns6B47GUhrh1GC7gc2dVEgfpcl%2BklvyPuiLJXDKXlwtSL65N9AaY3kUbH9fSyyfcjTdcli0litqu3M38bMwZlbnb%2BrEvBnEpZMcmLpgBwyz1VoXwqV8p2Qwd1cehr2oSEBsrnPWVR7QB5p6szJvRCr4%2B93gu76jVR9DHI4mAfrx9YsiGmvpJpwhCyUoyNcjggx7WszCf0PaB6GgUWAkS%2BA%2BcQA1L4FuiSm8FAszZ7UhOyEw%2FkCNMLY5EvQABXalZcNUJzdG8IqTlaN2AslvNMsxXbNweMwoAGeZOGLULh0vbM9Dwk4RmgZiQQaDH7ouqzsm3bXirpgnHWn00JpnH8FU5Crhwo%2F%2BHr%2BSzL%2BuQsTNvzazumhEbXSeJKR7Q%2FTBesnK%2B5bERRYuNg4YTABHlf3eRGlDUrKY0tz9xnVM%2BZkBXOjilBQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"اَلْعَرَبِيَّةُ"},{"file":"https://oca.flutch05.workers.dev/?v=j%2FMJ2QuSe%2Bi%2F5XyeKHINusHeF76pZOzym72RDp1UgTRs2iEACdnQVnNBI%2BJrfUiGmu11i5GdlSEARGs3iRaAEEj4irmoijIIplNsE%2B9xjAX3wmJJburwvnIpAWEaKjDIZndiBCfa12df3Gbz7cT05nBjHyrRz9lbCC13lpZemo%2B7436Okf4664t3cnlc%2Ffr%2Fv63Ld7i07yURDHP0zuQ1lVf5KUpD%2BDKUlFc%2BYQdCr0NwIkhCaI4RIQyL%2BUykmsUvnVMtz%2ByRdnQE3HrXPbDyCi%2B3JAX1bSM9Pfq6K%2B5%2FWMOUpIE4MSESqLtHoiWcUqvMjIPdQEZ6z69xtYLaSKGsswhucUInKdRS0KWJoy%2BHqAHiqbsaFFlMtpQaXzQCj88G1FYJm2mJn1wGBB3IWWfQ3zltiCekPobYWPcU%2FTCjx%2BLYFL1sB%2BShqamIIWXIgIbeMTUxaqNYpdKUMwbyai1Y0%2BBoiNdCyFwoxQcxBl7W4QI1TtCDTDPGMfgEk6d%2FnPcvenv%2FkQjCjUlvwMaBSCrrei2LFBuz3sI7tmjGlRW75szxeDVWs4im4EFeUnH3jGOeGBs47jpfJQ4b6NVWXMr5G2IcaiCV4%2F69NSQaubZCwPX0gYW0CF5TgrEmCgztsuhj5aLvr611Z7R8mTWtb8Im48vqxf5hwrS0dlgMacNhS3HuVSHWlQmymPz2lcB4Y%2FI3fthaBYBYOeeZIyy%2BCHi3PICYLzabLMpajEYn67878pQO5TiHHJFx%2FpHJ57H6%2FUuXqVroejcNbZFiNPTbyjpg%2BYZYSZ3dizZagPGTazlB3vAx2IS8GuLt32tqmh8Yrj%2BXPA0w7fGS1kCouJOZ7DGjRkErOKsvq1WsXQF%2BjZss8q8ECWcyJDpSdUEe7JRl4SJ%2Fw7NQPpaEv4PPPrfzLEWCnKiVxxUv9mWwfV%2FNr3eTIEyEWYUIFNOhP1mAkSjmsKYAIP6WwwwpszUZqYGNSMmU2m61%2F5gL1l8Y6UWKp2AokVqfPy6vCcIRURuLk5EUDYSwVbxUZCCMiHnl5B0hWCA7fK3a%2BfyXibLGmxm3swwmlqhXkN7EnGAvVnxjqDvOlBf74mr1nZQ0iNjpuLsb09%2FY%2FL%2BB315pChI1AXO4PwwH2hFj300W6TvA%2FeUN5p4%2BsX71&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"বাংলা"},{"file":"https://oca.flutch05.workers.dev/?v=K9uPc9ukaY2ZTKkgLLTGo8J2N2yYKV%2Bf3dGjJaXnhJC5kzPm%2BY%2FPDOiV8VTQf0MUG%2B8PmcA7A55MdKXzGXENE4UcSOGsyknq0EZSXT9JPHsSnMFBNoR5RRoxrRFJLlp%2BmRwyR4ijx%2B5bzCDxmj%2BUi%2F6QFf9xwy6f69dl69TNm8huDGrTgtcriR6uIx8hSuA07TMoaiRGHa9L%2BZCYsKDbtTJbLj%2B2v7vN1ARioLtuyku5Og8CbSDKHJq8WF792Up%2FN8z6LHX5eUycXqKT0J6hbZ33SWTTaiJ6NjhicjvsX3YqM1B26t7XOKvMjsa4PHTwONywPWKDczghF3UXfAYlwYc0YpGQjIryjtnCmyssZ2rz7TkPw3LR4CYwAlK39cNH6sZszjLmE2bZ2FGxJOT4Ps0xsd14Gow6GE%2BBDPrAkZSlIcrVZoRbHNTNRoU921ZPKRlRkdpkY4NZGUSwZcHUn817%2BO%2FI%2FZWaA2xE7p6s5wUlvv1e4Ra0A6t70R%2BJ3GmXppJ7teNTDGlOcejdNTKXSxXkDnZ8qoVtNXrKWwyBLgclqU3cDV2%2F0T%2FKH39vMzcG1G1WX0KE33laftIhncwzJCnkZ98ooqCG0MLhM%2BlE4yu5Hz4y7TUd37cnzVM9xO%2BZvphMYbSN70aW6g3XyhB67puC6UrgxEYbMh%2Bo58FM4HshTj7%2F39UloS3N693tQoXubZ8YWeUD6pvj%2FKN2oqI7cHh93um2D8RRPSK1NBG3gLhNV8lrxbV2%2F7YPEHJIDs8wqVfFagw0cipazCcfhvREClS83Kv6EvDWU6e6Pu0YvNt50LyebRITL0THZjNSnkcEafeFef0Lp44FYim5Bq8e%2BEf9MrKjchS%2BA3U1Eq5Tm0KYA8KOTIJjm%2BpuarkhKY1SoxSsTDQnO3KKNNzAaqL%2BWr9CQd0bIZNhwKMzI1DrAd%2FrUoAFP4PdnrbFool6NVmEH0RKVN025CDyA%2BlsLmOIIIX3EUoD%2Bth9dWSWLAyPr0aDFBe7eKGAoeUJBaf%2FICsv6hUai0gBA%2F99Z26b6ZDMtyQLsX4N3QROszDXxIMkliZG0svDlzQtvv4U%2BmgEwESGayJuOC%2BYZv%2Fqh94qiB3VdyRBPIDXbgbnPlC0q%2FvqxUWfVuKBips2UyxPMgB4a0AoMTsYBdH6Dg%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"English"},{"file":"https://oca.flutch05.workers.dev/?v=46W4%2FwjnZsFsf34BgdBIf9Qg38Z3rFqeUpe5SvIhR6MUM%2BtQfbYPf7V2DCSazpQMy3zq3iaYvMm2y8JYvlPhdUphEaSQZM623WsZfnoCjF3k%2FC1hAsLsv9gqOOLfyFTZ%2BqsNspp4k9JCT0Z48GvIYqpItbWEo5bFmQtPym9hjqsgp0yHZS2FgYfLw%2Ba8zkhrF00kqzCm23wAWrajebHraSX6PSPv3nJxTRasyKX7rwfrREipB1cRRcuPVXreFHks%2Bpmsm49uyjc502h6Zbjv02%2BX6lpxUVAIRhQ7k2MpaosDt%2BcW0nS7HcjjeAfK%2FGLmoHHS3oG7VyIP6xFT%2Fa047NDdQk1ftWV16ZDG0yTgJsC0NhJ%2B9LUDMJiRAUnZg56SF7C%2FO0SDHD4YKxQEMRRc0M5Senyj13Mugas5LmkHyvJSxdLFOLrYGaT%2FlyDhDZBbM%2FtFAoROONI8ny7Oop7bSnzx6jW96Uko6zKsAGMk4ePK5QdEGt6cAodx0E66O9hFKpQU4AzOFVoyHmctn5DuMOcYJxHhlKvLAGH9EeWFVn5dsl5xKLvV8aNPizGIY2tER1PkLzPiN2CSXkDgw5fGYx%2BFlvKuRF%2ByoY3QUjyX6soxqgBp%2F8N8VYyOOO5MPKRrad6IhSDznr11InlvaM1HnyKVOn5tuwFtRmDP0qPrRjmFedytDCxjEEwl%2BT4u3WW35TPbA9RNQVIq3hKhWW83LEoFHRYuQo9RDLvX4x7Q%2BpTN9Y93gljNzIzj0Ma5lbGC4ADLBz66IKojYGsjTCTG2y4q0er1rECs9M2zxcWdXTnfJgW6tTKrt8vnzmdpBO9ugp9uxErEaeOiWg4BtQfJtOHFMcDfevu%2B93yq7dkIlOjxtpHZG9efx8xKf2dmXt9nNgRfBmLZYdrHx90iWyDYNEdBAnGxTNzLS0BU4vxTqcd55%2BKyIaSlNwt3PMjLC1F6RoCb79%2FHycgcdxbeG28C6zFg3z0Av23l4KpUKLFtiVfmX0EWgqMUAHknH6dZL0cSslx7%2BfYBzISOSjye5NiN1McZP6cOYEYw%2B7GFTZ%2Bg6I4N4LDSipKS3reU00ye05DhnCpD0A8%2Bjk88csGzaVXoKIjfhwlAFGZi0N0Ow5Mvk5h68rFXhSEmFJkzwA5VbuZw&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Filipino"},{"file":"https://oca.flutch05.workers.dev/?v=FFcLzZKeRz1V9JCTYchXbZHN6DUvNGTJALH2y5vkOciGiotNVAm%2BJKNHuSCb7PxLnxBlxLNIYTf%2Ff4UwkuTvO%2BjGOR2bJMKYU7%2FAjGwRSIfu6KhbCXIz%2FCXkj8zxYz%2BScoSQFFQ00eYI5tsFnJzcgR9ygqHeSyFkTfkOeURoTn4m1tKHYQ2AyzeUumBt3iiIITEcqHovw1M78ubpfWIRai5Oz89Gq%2BR4NILzPuLc62o1iFzY%2Fla4jlq8QHf8tpp1Cs2EANQ%2F1Ku3TWVU4kiAzfnCkeB7FvN4jnxeXBxfJ2h2Eq4LarmwWJwu9Q37IZDUahXXaSzH8pwENbepE69ofNw82eT02LY%2B2tUReAr3wBE2dJx4uCTuPODUZkYzlXoAenwz0Fd7fkCMKx%2FAlOKSZqFOFVcF%2F%2Frt0OrBD1bQLsyReScI%2Bb%2FojQFlo20KeMqN56YPtyVymNozhY501yiUqSif4zQTKG1iBQAyA8KORPq0tbCpowCxrXBbtBAuwPMSCcfC5Quj8uDBY0rfyUNB0ntOHzAMIPcpH2dq23706QcweStGW%2FqAnyQ6RnT3IjUbUq7pBq%2F2jPpUyge9iAVKJ7WnFL4AFNeKoejzSQ4NWhNWOp4d2y5%2BZLvWImktWe1T4KqeNzs4ITu%2FpnEfkeeJbzLfVUjlXtddS1pGeDVrcUQbTZqT%2FMLW7ADn0j0x5xQHjBcO8IrcqVc5qhyI4%2FMThh10gjyaVMlDkYdM%2FUMIMu6UPwg6yB1WsbV4Sqdzi2JQVx8JzlF8zpzRrlzW57fjIBTc%2FNtwcAwmcEm6SpKw75IfBd6RgE5osGxsTJr7n1nKtvSFfDJkfpuN%2FeO0wiJIjWTxeRGzbUF51PpRVvww8aqEmu79LdR2LU%2BwbhKoHAv0EI9xEwMr5ayH75ufx7xiYPcsssqdvyF0sq2pcgci8%2FarqtgTYlRam8yz9o8zBscWEi77oqSV8Gjol842qTQpStkfDKJzmBtZmscLRYR0O1W9%2Fus64vtaRRKEwbeEJlaLxaaslbQLD6U0wfcLISRh4js7yxx2yMYPmRsISbVx0oZ6lGfAjrEK4cIEEgdfIUOWPzEv%2FOypPwSm4RUA9WuCwBjc%2BH4kBP51SNSDSEJ5%2Fm4HC6Z4P4qYQ2j7zabuwfep&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Français"},{"file":"https://oca.flutch05.workers.dev/?v=FiG0dKLBhINJc%2FPXLI0xTjbr3fLn1S6EoXWlpqfG1zX%2FpHNLmSMPVROH6q4dOnPsQ4tvkOU%2FZcv4OLRMjGqRcpwxHgSVS9KNvc5u1wUOcjXGsvRAysFM3t8NazqNoNuKk2Z2BhbUNF9FjLpp3s%2FOxJi0VQpRt9kujNs6l0AR13IpuVdSicq%2FubgNcbLJp%2BNqAKAF97luOi9%2FK6Y1xksw9G%2FI1LyNPsT9u64lqK87PdH9yn%2Bg%2F61W1CyIZvXL6hMbKw9J29GUvP00lDvWeWcojsrqKG5IKoGSAipcufz7bql1sHSrcNQF58ItjOXxSe7EfG%2BWo315RY6AuMzhXE9VaS1icz0kNXOxkzRI9fbclGwCrDaCtxL7GNJ%2BPlHSPeP8k4hwI9mAPyl%2FsGv%2B5VxoSxlz1aNrDFn4dzDwUHCoXT8k5LBlczgrYkj9UbkeNpDg6PZ4Y1xdSUvbQwRW3D21vi0AQMhjsaCTb4A18VFVXdNGlItrjonNd85IXwt1UjvpxSkCr2W1%2BMEn4lzjLFiBB2fmYD1n0xekczdnRF1k33zhUyeePHMu3zs0Hmfp8JkL0N6iKZ%2Bv54hNF8B2mlAT%2B5Nec0AStdTpyFWc33J1Un96vj38ehrFBSgbRqHo8PWRdnIbJXu235ARP67FCt1DPRD2fSNbXfRVQ%2FYtS3fW6mLeSZN9594D5eqhAL2Bfwh2DLuDcdmErbfN82ecmVky5tTeBElK7s%2F5mihUo0YwtSKJzv36Zo4SuIfhX4wQ1QA5iG5M5sotbcOWhEm4SUXvW%2F7YFGjYF93uO8ONfZ8FsSSymSfovPdtk78ln1nsaUdcr3mPZWmdWnTKb6Jms0aHtmwTr3rj8cUQ1R4Xv9FeFXUASuHTWfAl0BZlDkER33vcI0e3XZHnVVN8q1XH36K6wWA1qoHXzLnt2mSvlR5QmA%2BCm7gyoMJAAIhlPE6BpBuSSOvSNfXv56O5ehVHqr2ZdjqzxM5ZOuLayTC%2FUDrol9BGQ4opgVO7DTekKlCalOLxYaqtRX%2FxdNAT4iez5oweMvWBnJL7sjj5UPumRV5LOoRjhom37tSy8ggeXktMp0iYwl%2BLcJd2NH9s6JS9bUyGpPNQt5SfLFM2MZoOiNxeN5FQA89R%2FgoNSlUGd3RjXmWEJ75pkL%2B%2FRQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Indonesian"},{"file":"https://oca.flutch05.workers.dev/?v=vld1h2gqZM%2BnYhwmhns%2Bj4HeQ321Nh6AutitwtY5hbPU%2Ffn648mm9uqYZNwRV9%2FG58CKVfFVTUGwfWws%2BwdY2Uq2V4J2Spq9i9%2BQh52np4FSK7Nw9NHsHzrNSKicBeB32g7XLPgBM%2BTnFE1J7MRLOW5%2BI0DB6%2FUMcZoAp6%2Bl2FCgjIzwVVpWXg1jako3lWVZf78JqPjNDQtpRHGdkyxpZI8QszMhs%2Frv9PofPAE3r2rCeQ87irbbu4bk4WzWljNJDTOvFjtc9ZCBMZBO2RBIgCa37K3t%2BoFQH5gj3qPtgjLroRm0yvC5LDNoyec3Nro2UMpqGOuAqFdgotWWJFlrhYV1UgBW0xrueTLG7R0NOhd5n5OFSgfP1oEDO4w204M%2BpR%2BGdlsqxcItZVDriF%2BCPkqLPumyxzzhX7zDvcjvduGKeg0oOdHoktwZr3cccxjbrr0qKpjkqPN4zFY9xAxn2SqzW6hLGMQQmbMlep1xoVxpwloyH%2FM1MaYgkLsIEdRVZLG49lGziRQu5%2BWd4DXKJ%2Fbvi8op43QKbGANDT9r9%2Fyrz%2FxnN28chtbWiFMZ4wzx2r0oC%2BXvY%2BVDbx4rPLSHY9P1lY%2B5GdwJEJJ%2F%2BJ%2FTD7Jps3eCkud3iLRE30nQ8WiRFpcDAc1FwEWC79sA6n4x%2FcnQ%2FhG9czHIBJeAF2m2eLjfprKLOMVTxeORqaFSp2VCZarMTdEZ1tO0nVLmfn8VRmc6Sd%2B4gAmOfX5OuOe7mpS5bvCB8UTHFKYRKkanGWN98%2BqDQ0sumMv7qrvvuT71hhoXb%2BtszQRYtboyqdVAFRzTM5gZDz%2BFunDbvv9UYiDx8%2F9MtD0itC3hCbTcSIOMgZPPUdUsVeGB4hSa0aSIlHaSrcnOdzl0gDayvPCMFbGcaZLSbwJWSRnDT4yutJE0pMZJ032PrvyfCV9hVX%2BBB5dwgJTkT8UyY%2B6VN%2BFZ0NI1mmOtHSWgy88DNIo0yLWLGthg4ZseFaxCdaaCb3jBewneQ5%2BUXrdO296U%2Buu7ixTyRtKcc5nhB7frFuok5wwtL8Ddnwm95J%2FjpX7EbsjsML6DU%2B8ioGUN%2BuTvBr%2BRIs8AU5vERuq%2F0xY%2F%2Fn1QfWbCNNSlkJlcf%2FNy0XpUHDWf3Trgv3EG8SorQVH9VPkgPz%2BfufcrWhrK0A%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Malay"},{"file":"https://oca.flutch05.workers.dev/?v=CE5kfMSczoVvIDjeWV5128RBWwnIPQMiKE9BgZMtGISxV7UMa79ceB5Aw7uC0wxLfKsFUj%2BFthLH%2BPRJDMToDIu%2Fj6uto4TwH0zB3%2BTdpziuMp6TXlxDcNFs2M%2BgxXWnTCY%2FxTmj%2FURXXD4pdlOA6zxvuOrQPOy3Hfvx2Nj9Aiub%2BlsJNj9eCdMzeDOFBQuDg1THw3h%2BKaQS5yh7i0FIni3LYegsPmfC5n4dLbicDASSQvmXbMkQzIO7AKneMF3hUKO9pq5Vsb6hTJGQ0xp6zgshSlq0UgPCpmUdUoL%2FzDcS6EQS2c0F6HFu5mYWlnovE5je%2BPWc4Cc5u98wvy5WV0%2BFCiM2je09TF8F7s1V6GFS4xInPsxq%2F0sLBJEQKr7V3EK1iJ9EJEBRMd4Z97vz%2FrkAitf7cLFH5J5Om22UkZtseM68St1Zt%2BtbZvrslaVGTb%2BXl%2BR%2B%2BWsdMMSCqbsk5rh%2FK5ejaHZ%2BwDsIvNRndmbPmrZlFPu1QDgn%2BkE%2BmnJQtQ3orR9XBkOArKOo9mA3LKqwlvV%2FJ5blGy7n2hbPWh2X5kdMkVp3vq8m7o2e4sOpcehl96t6OMLg2WbNmdfUBdUkkTh6OxjEsD0jDuWYkeYvlCa4H2%2Fj8Set7iaaPGYprFtFQv2xJz3N4YXNrja0jl5Gmi0B7rkEpoEjtYGqBDjXANgSegWrOq4MGuNdTCtBd%2FAN%2Fs0GCANmVAzj31Vj2Q4UPCwHcDGgbErt8EbLtqTxlX16weZrBl2xf5tdXUiOop%2FV2oXsv%2FxXiFwdTgt5mJWjnvcrnW8SBsMhjMRC7L0l2iWRkT9XeZdlcPIUx9oWylUn9F22K24FwSXY0Iey5NZjc1q6KazYGLbFFr9Hda18m2l0yVUBMdXevOQY%2BDeZBHutONeRFtQrFNOahIQF8sEHTmy6IXLsC%2F%2BiYqR985e0gZzcab2ktsXlCc9CAGqe32EwNJPOaLJaKpdbAwU3wm7MpGrdsnIPjiU2DvkyYO9VMnJe0o%2BeESz2foqoajy8zeir0MdB1OkOmUPTIPEaKbpLQ%2FbWM%2F%2BBtCrq7UfGC5XOXl4lQGWVnJ4GuyTJ2t%2BG0dBz1VME5VrLaRPgXkdIYN%2FLrLyYnf%2BRG9LCjD9MnQtwEbXMjmx4ppv25OPnC7dI&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Русский"},{"file":"https://oca.flutch05.workers.dev/?v=AKiwPy61mwJLQQYkEX149Q8MAuS3dD9VLxdjGQNgZBxwcPSmxNSEyxVipmzY%2Fz4saaQxie%2ByDCoGDVqWeeXZ4QkZ0ta5dH13opmFq2zd7gkypwTaS6HCEg0%2FFHzyh1gGAwXlm%2B62RE01dN44TUhMAVP2P%2F8aJfvwXLeUmcUhyJwu0%2FtDNImp3HEt4NHF17yX87ZwZ1WvAHFulKjbbDN4npPv0dHacVchEdykoqpc1BLN2Ew60cxqDgeoGcJsyh0If8zK4DfXoFUpmoIUi9aPHY0QAPS19g2FSxyjdJWUCTZRC0dlgmI17%2BFtFe8XABBuDSe7XGOVOKqa0O8W0L%2BbZKnV%2B2GLa5WG3t%2F5P3PgKOL8UY7tM1SVL%2FZ1j2gYsZUnw4Rw6tFMuq5D6Ug6k1BJ%2FFSkp3Q%2BSrDj2If%2FY4MRtSkhYP5ww0FJUAfPYwYmKO5ft2OM57Jjliom0mFSeWHn4M2aKZcPA8S%2BHMEhmHyP7f6iqfjZh5mzlAPspyBdbAPo%2FmYyQNcKIyArtX3%2B0e4PxwArLphaeNdagZa8YC%2FldPF2cW2OyMIyoMmGloQ0%2FbI9MHAoYV%2F4oIR8ngnhBQXED8JnmH6SJhRq6h4jldrFFHTnoWCFlWkiSGT64JptP8usjT3C4wsQ7zlFt7z%2B9MfY3ik2AvK64XeUChQKs3EZODkNUHXu2OebKkK8X7K60xqDih%2FWv5ccicJya0lNjyuw2V%2BcyRDL4R6WpEJbfYBf919Gj%2FPvFgQHQ32m4AHFRmsG%2FA6%2FE4ALOl0f0s8onr%2FIew2SrVu9gYKq0Qq9omczHpsV3lZ0jbkjgrwkzdXJqELhQRoy%2BvbIz2RoAwK%2BPi6UjQcaJDQ5fj68m9l1gEfOPQjjklp6g%2FfDshOCyzBQrNtLJ%2Bkt9LnwzTu7UpHAMIvNMAV%2FD5b4ZONw0E7YzPMaUx0z4fWowPPXT7Nu5yrbYimqzx525HxynTPUjaBbYgW2rO3DE8FafeEVrdrXH%2F%2FPPso%2FlD%2BAZVJZ2fZ8sZOq%2F37ilIuZJRQAxowRZcfa2hUZ7%2FUj9mVBwJlmQkXHjq0KPpg5fGtFITygY0NqLGh7nRtDY1udk5aWQ%2Bxd88tsSW%2FofdIP1M2Kijfh%2FlFn3RbEmdFDOrBupDtLgK%2FGnG%2BSU0Gf&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"اُردُو"}],"title":"Alien: Earth"} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameJurassicpercent20Worldpercent20Rebirthandyear2025 b/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameJurassicpercent20Worldpercent20Rebirthandyear2025 deleted file mode 100644 index 14644be..0000000 --- a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameJurassicpercent20Worldpercent20Rebirthandyear2025 +++ /dev/null @@ -1 +0,0 @@ -{"available_qualities":[],"has_subtitles":false,"message":"No exact match found for Jurassic World Rebirth (2025)","status":"not_found","streams":{},"subtitles":[]} \ No newline at end of file diff --git a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameSupermanandyear2025andid1061474andimdbIdtt5950044 b/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameSupermanandyear2025andid1061474andimdbIdtt5950044 deleted file mode 100644 index a05de22..0000000 --- a/src/extractor/__fixtures__/XPrime/https:backend.xprime.tvprimeboxnameSupermanandyear2025andid1061474andimdbIdtt5950044 +++ /dev/null @@ -1 +0,0 @@ -{"available_qualities":["720P","480P"],"has_subtitles":true,"status":"ok","streams":{"480P":"https://oca.flutch05.workers.dev/?v=AM%2FpjvLx5HEQnDENoM67g5My54wbHl3T7s3ATEfiGXU8bibIkxZ0FXSYF3rjcs1EhAuU4hj%2BgV7pVNvSPKcMn6CEJsOqF9uhHXvgLwZBpBXgh15P2EBL6V01xWTYjRlxBBQ%2B7cCae4ZM4xDY1A7AQ9Ss7nTSydP8CBMpQSW7f0ia1kHvfSr9MGtMuXQfQbPdBmgPGwONotzQSwoqfTvXoKvYV2KO00wc%2BMdYo0AIpsvQ%2B9ATjOar0kplFsIoNMBuZdbFsXn3AMVmEvUmGJ8s6O0dwZsa%2F4k3j0Id%2F3egMnl2uHyFwP3PFIZUCk8kmJq%2FL4DscSij9M9%2B%2F4dbRCN0EV5bTMHmTAWmB%2FZVOkLQGNQyMKCV1m9Ynodh%2F%2BDgkVXd%2FvekQ%2BZLdGL7rhD9s6%2BeRo3FrpySv%2BMaChLwF%2FvA0D%2FASO3jxZ533tWWBWZMIxeVfb5GvowKNuZVMYEmzCdceQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","720P":"https://oca.flutch05.workers.dev/?v=UNkCgqoMa91gkb8oj4GjENnh0sf4IVcpm0knnDuHACk2rVfVyotHGJiSuTGoCXPtwXIk0rYh8mmEQpHKklZBH%2FPWKk6OPytymZB4rTF6CtFCTIu8uvFChPm%2BidnA9yIXdehDBKNV37LQY9jBze6CYdOuHA7NFEAAwbp4wi%2FzuCkLCEnvSrkqUa8n%2FxJpjjz3ftZjR3jtrqFPU3r7kyGinkMYYbGZIHBDLM3r%2F72mpuzqpXrrlUig%2FEPOkUKPoUWJEAbR34TRDi1M1S1hSLUswluTSeN5BRt5SQfBZU6RA6f4Wkd5x0ua5yF1z69qfoBluu%2BEjbd83BRb%2Fo8p%2B8oMKeNJkv54Z48dmKXQDmAteRWF6uwPRmpIQfjggl%2B%2Bagp17nXhjufCgz23EY11qBR5%2B3AN074A016DbiGv4sXA%2FA2fKQ8I5NBFCCOsFqv4b03PVJCLoMPEMHY7eFfNF3N%2BsQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe"},"subtitles":[{"file":"https://oca.flutch05.workers.dev/?v=BunxKkUdfgslnZlKyx0PRB6DtApQ0Jn1g0aj4V4r%2BGvN80X1Rngs0CuDmwAqoOno%2Fl2UYGuAS2LxBZX%2B%2FxH0gxKm%2B6E%2FpKTbvEmgKo4bgMd1AliEx5VFSgkH9v2Kh2NS%2BNoGS5BNKTxSUZGgS90dWBGiVZWOfvkf6nQ0BE1n3PMPRA%2FYjDnaPqhYroCHzGfXkDryKFchT0VOrDpIeuATRAVqiXE%2F0VVNWofg5jHJOIo9Iq3vvlztmp0JH2HldTnrcwpRtbCFheZU2HXIY5ojHMUk3NePbOnkKAmTmYIRrIu6AY1ESG9FgBM7D73hKRreidivImL6FnzwecjNxLa%2FBDqXGQP%2BrRLJ3Ov8raEXR8DNtt%2F82M1it2UhmfS6BndilRbjF38Y5h3Jhzgz6HsLmRWkvqd3f1HTIPJoBqu5mnQZsmc6VVl%2BaymP5CGBpa72ZEEJ2zJil8chuPjp5zXzQtl%2FWYgxKP%2F5c1h47h4EmpoWgzHdfu2Uv4GJxeNueBOkSWhLnNklG0jF59Hswj1BDVl3othogVMxNJlIDnC0h1g%2FHnTdMpN0dYJDWf2ksaRMVDB5VN%2FS%2BJI21MHVY6EzWzl6lVh%2B2VrM9FOfutWa7Olgde6EAB9cR0P%2BznowwtATFnp4eYOqG3iT7lymkFa%2BPWb1UdTLM1I7R7X2pGMXxY2Hr0KjdHTspkp9ARM8nxTFencIlT1l62%2FEKZzJ%2FJ%2ByHSU2nPlXz3yMQBxA8c6R2GstvXdurs2iydhIs74tvK54gGaPRfWCRofJYgKaazFgN2LJxYMvnzfLcQl7VRgmQFvp04o3B6bbcSJUkxvX0C0zrcYfUstEwQ8VQLfJbZh9SbRO4YRd7YcaD7riu67kDMd9ab2QdhBb5PBFe7x%2Fg%2FYKdXr3yRK9k6tBhArAcf0qDDAL8rJ2VqDV7RSDcHsazuF7%2BXXBSjeYsoyEgDj0lOo%2BvZT4J9WZG2%2FcxVdx2SXNDJh53E209s5jd5DHwvDVTVZ6Tf5da9k0fj%2BDfxzsyOAhsLsn4OEtakoCPv60dcFIahhYqvF%2Fr2k6e5%2F4hU2eBpIryk5auDabb8oPOMk3wlh3U9nbX3Y2yuckCW1MVjilrq%2BfqiB3231RI6Hb9ZrCfxvxW3n4yfoBm4WY9JuHC5YkmOI6nrwFCA%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"اَلْعَرَبِيَّةُ"},{"file":"https://oca.flutch05.workers.dev/?v=Se5m%2Fq2Q9eJWh5WNdPRkPjBlKGYCc1UVRm7EtzvwhkUpw13psIW0Kq20fmBKVsgGjgRiltVnXF9Jt1OglQmavG6Rwr%2FnGbnqa2ztlFrp0p7VhOl%2F6TvJ3csU2VnXakC7hSYK8RlQKC8CyfTrxKhCxWd4TCFx6C%2FH1mVfM4aIGffxLu2o9KLjlPNrA2qnyukZ3TXUxfqQc47YvaznTNrcyWY0aoUaq9i2CFwqA0Ypi3a3MC3rL%2Fva8mQ3hjfX18CBpEdTpmK1YzjIFI0Eo7eYGZt68gdm%2B2updv225uzmtcurbRzs8GRGt%2FQeXNc%2BkOIX%2Fz3rHCrdSRK%2BhQk%2Bpv7NqV3QYktsP1bp1kiqTgzONWoNjR9YgzZUTIq4yulnSDB0sFAyXhEZ7da%2FeIOc5sZKO5m1skkEFtppGtFMI6OA6AARhk6yAezonoBJI9y6hF33zqujEm2mUQfrEPMI8ABu4bRjQ3%2F2wduarSrKAHBlTisclXFKA2SC46MUjB5WN%2BKOa8j%2Fn0VwFgiS2VIUEXdAI%2FgnhqTkjEQAmb%2B59ZPr8QDMF7ouZog7q4K8FuLXem81WYLaSKPVvJ%2BBetW4CDCR8hFAtfmHGgXTSm55Jj6GayR%2B1AyQb7ueAH3%2F%2BTZ3hBmzWFUCu1nn5h%2B2pLgcUBPwiSmr6YYQco4PsvXdiLw7i%2FpF%2BOItt52e9t3wBsLkzldHqK6iRUuuLKHurYDsmPNVkKo0Gbj9oMra61e%2B7i0k8xiiYcBAWOUf%2Fgq6YSkMPHwLEveZliRCWAQA4DaPKeB80MoE%2F8IZ6lUlcdg0aFB9VorQkGIKvZxVelIrOwfvdROxzvAg1%2FY7zhCTK19A65WwM8UWcNIHKalbXg7F%2FixqKQMKcy9BKacnsNMxSAngoNk6bHD16r9%2Bylb1AFotWqVjKFT97eUAmFBMViOU6mqsTerRqz%2BoQyQVah%2FkCW83lJfaaN69ihEF3177OMnyrzhRyG9IGunaAOo7pCpQ1Iv8nv7ZzC9irRPEFe6DB4zzdgMn%2FOOwCc3fryKjZ5k8aAkumLgno8ieoXQwcgKpa1R2CJQvsAy%2BPVbZnA1oWoNTCoNY0zPOUlF1KEGCks9uQsBH84iq3nTl%2BGhLnOimaJ9Hwe6OxqJorEbc17Vew57vQr66&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"বাংলা"},{"file":"https://oca.flutch05.workers.dev/?v=IaFIYK0QzE5uFn06ffT5XRFmeB3yS8vqcERy0uR5lOsAxqacQt0Ydx7sHoZ0sYUpG2u%2FIwfEmZuLHfk8jNUEcnQWcYp6pxHvQ1Icvg7UyJOpBwtDzGMTbBR%2B3RywZWOhGr%2B21HiTSjBeL13y13ApPWcUF6NvldUL2m%2Bt6d3ioxMOfShP3Zotz4OxLsJb5kjgvhF4y4jRTl7QPdq%2FlppovBwlAn%2B%2FanH0dF7nVcf3PhYH2pyMZGtEKFczqBuDge1T8Ol8xSqccXf9yHW2U5D5m0F8Km%2F2LOjsAG14BS7jt%2FcNfB7hqVIAmKpSMhnf6OIwytuqyYfcSGJLq6vREReMo2x4cuYoi8FdRU8PQk0YsOCxbS%2F%2FSPdSSGvjFNdeLx7qGAOqdbrOKbB%2FTaRCP1w%2BJaCpdMWrLk2Q6p3C4E4SAtJPXL2BZJ9LSGRsj16fg26aE8pXI3W9JjDocUXGShMAm8gPJaa8myHPCOjRrWjNHrGOdf6I9zXB5vUbsyFP6XQ9WQ3CwN5zrwJXUsisnYX3gIYy4PVphZwAefETQUPSIpRstrVKzjtTAi%2B5gvVLl4omh9z9XdA7cT5fXhXF7MgVdgecVtEuOtJdyX%2B%2BbPZ7MO786CALYHdj9Vr5fId5SASvZ75iFObWsPFEdnY7LdJnwZ%2FLOYMY%2B6%2BmRmwXz7mqWjt%2BthhxtXqwQgpcFhIYMTVP1u4PTPfPDBhmwYXgwxx2iVYIg1Sw5aPuv%2FdCtgAcFVPWFgzcfXW38ehyY9W1nih1QuJDexPadV0O6ODowxaHwHJv7ArJxyaMvNJuWyp40KcmYn0sge%2BD0%2FsrodxGwfw4LDBB6cT%2FKorhH1gmS9spKAN3qkdJ3ui6I486VqfFmi9J2SnwSW9Wn2V7K8u3N3advEJWJw%2F2p0CxsU4UwSls47qQlSyddpfMvxHoyJN56LG7Wa%2BiCw8sgAmfgvCc61oDO4C6MgY3RAKmeRs16OdZZEzctXDMMseZn3M5egPH%2FrO631%2F321hh4SeOnU0ttMdhFtB4u9053licbxCbwNTOb3VY9YRxizT0sgg4rCLB%2Fq3dFVzi78CNCnRFC7Ai8yUMdIogXa2rVyCwNtVYLbYGKbSTLBJzkcIuI5scb2H7TvFAx99JNwvUaFnZfwaQSmlOjJQ%2B22HmOg%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"English"},{"file":"https://oca.flutch05.workers.dev/?v=Apjr3nmaIRFAnSzKXbF9xVXzJpvEqjazrlHmU3p5bZWSOY5SE%2BcKUOl%2FvEaZ2YkALSbpS1%2BZiFHmsOpBxLetUUKw0zI0O%2BsGlr5Hr%2Fo4J7AdVxz9gg2PpfURYU7oU0RGgKG0Tn0L9XWBZ5rf76Cba8xIXuAN7IZnLhwu6KpG7vP2WQ6qjwyOQkuLbuowuR7xPU%2Brn428DGqRGhAPQ73zL9DCXcH8UuDZuBcq9dyWhuH9uBT9VLLCwGUCI4lqIXMIBPrDEXMJh9MNYjA6Xfy6F2n8IbRYjnlttLnxAZyT7a8%2FU3KcaObhC9DDAbcFGnw47rd0AuPfJyMNjaQEtdymChPTL0o8Ypyg219361oaMUQF%2FUx6n%2F0qpr25rPpDQAQo%2Bdz2gBB8XRty8zasrt3Ts9hrWg8evjJzxYjLjQRs0GwJ%2Bkn0HKRgh1XbNBRTD0fISKss4bZkXh3S0trVQIH2gdZMHmOeZul9lIKtpAKnPgyK%2FKDgCh9yiZRKc8w8vMkqzg901nQ%2Fcryy9d2tfBhIhipGPzMQGCTAhf%2BXvk4bsKaKvMJ6j8skoVOI8LQeTv%2Fu%2BAg9O9L3g38KhfMmljDYnY5qhmSOc59gScKATsk7XuuktWqeDyexRUyypreA%2FL8GL5z3jUMz37FJad%2BcRFhcz1zS%2F4I%2FMio0aZRflgetIbLdLGstU%2FAKFsMppydS9VwdtmUdckSckx8lDHptj1Kawz%2Frdr0vonsyHlup7oHDvkibrfOR2d%2FR085tZiTN5Jp4i2bUOF%2FxZAzVHw9yhTgauDuR4%2FEP0LlpSyNrNulfj4L%2BmZLq1Ohpv5Dgd4H5wlBnw6OJzZdsma6DUGXD3ykhKU1aOHoXLx8Vr66yJzdvy5sHqf%2BStdwdb2W%2FrkmBR8GUJ9sJeOBE1kuqAITooltEM8h3b0bbYPSKplAKhmO6mvbI6TTwDFZjyJBInQxV7Wo2IoUNSSbMaMYj06%2FF7MXOEAg84aJbnAquS0JInrRpXzJtP22zQIb4ara7uxBVUoaGm4Ebqk%2F6HnJpKr%2F%2BF4ATgj38Q9b6%2BZu8pplz%2BP3RgIHI%2BXiT%2F%2FfTpi21sjtxTjxXlW4Vcs0rnWw4wZtH9W01pm1iM1tq5ulkHHZjZdqmTiNea9oREySbgcvXKbmwv%2FHR&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Filipino"},{"file":"https://oca.flutch05.workers.dev/?v=R23ViBv4x9qzHZw7aC6b2rRCl6U6Jl7ElTx4ZGp%2BzdVzRoRczyXcSegqYXunud%2FbCYM1epqarPTgR6pyBYfdSaCMNzxdT44ijytIAk2xDng0BrVOA7eHnZRo9lQq51wYBZQ3Oa%2B0xoVWFj%2FEy6sepTv%2BLD2oREQnli%2FjYYqKbMmBRkylCZHwItLNd9MDs5d9JzItvo26rvNGicUOGBB4RGPiuEH0JM3WsPw%2BIrsy4mr5w8rauYJr5sjGVaOgrRb9wZt1KEd0gMhADo4jrAz1gtMnginNEu%2BOYJjJD5JsWXccGPEvibKQyyCEZb6t%2BkmBhPdnsExBv%2B3SPckgZp3y7JhuIvnTa75m2eAP7SiD%2FtlrUFQWAPzlcHVOaDTkQDtE5Yrfa5UlgDugdeaifXHrSvKZx9Xwq9Hjj8ZX7Rh2qLZ2oTfg54xblSSOBiE38tyGCn8bq%2BqrZeYJjk99EIRAX0RC%2Byct9EVK5lKgedbQ3fKCOXwkPx24bPD2Bj9yQfpyeF6bgUKhhIJZdqk0IpYEQZ94FDtqSMJZe8FnaT%2B8cxj%2F21tn05py8l1gi%2FhTBv1afVdwlcSTxygAcoOi5h4s%2FFQRnKhqyr2elR%2BaW1ZWwQiGPnn8bdE7hseyB83U12KQwCB30BIBXIRHdzMdUq3x%2F2HSuQ7Vvr7OfMQtgSxU73JE9JYtGSxUo30j3jVaczrK%2FLwex2Pyn6N8zG0FZr%2FHTvOrAoCaGq9PVggMhUQt%2FLkFhPhSR7oD%2FuC59P417Jd1CLS5UIiua47OhqXoLrLa1NqERg%2BwEGa7YKLlClxxblnkWBoMHfOcxZ2%2BSx1Y30JqfvnlA1yb0sViF1QeCk60%2BdSI6dRuuYeBVAAdF6ejEFSfZXTjXsph5PS4sLcm9ePlJHB03CK9xywjTDQQcAkbVT%2FXF1XHDXkm%2FKSqtdHHyQVW6dsApRAkCAcojLPA9e6VU7UZo1%2FtNJI%2FyFneGY3cRLAyrHA%2FVvRDmc2FdFRf50bDq26Ng9kgetmrIA%2B7QhbgwGlDMTZ%2BXjKDsTCk0AEBf49wlmTyub3bBzFTp1tAS1nSxIAo4g3kF%2FHH7S%2B84Apeu5AQQtjGoAtYmjd4U4p%2FQmSg1wkka08Ejb6AxEQNhS5U2Cms3R17bjPqKGqK%2Bl8T9tGSTeHd%2FA%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Français"},{"file":"https://oca.flutch05.workers.dev/?v=92Y28Z%2FkgZvz3YvSAreD5w6xuAgbFUxA9uTznBb4yFibb0plc0Yj7NHNNe%2BxkiOVKOrQllPEtdWI5Tf%2BsiIno80nIcqQca9YWUoPtQ9iMQ9OsjOkaJ6l3n0Sli5GrB8qdH1b8LVzaGJI7a3eSd%2F5zgkZwRgwU8lwOzJRaSBPok7IepLx5bts3C9iwXdvLNG6IuL4onv2V%2F8kdPToCwGFCGBSzF9Nnh3ESDrP2G6C78oXu3jtcpsLrgvy4LCSDzqiYf0glhDU4hjJT%2Bampmy%2F6HcHNfA4Lflp0v4eSF%2FZO2%2B4r5pWy379Cm5qjrbuNbImfjwh4NZwMDymDHiuflAduWSDrJgyBjmZGHmXutW0r5pkqMd0Q1JKXhoh3z9tqkaDLV0Qsk2xZ12Gv6X8RVqE6zu4XwadHNBkcaCdmN3o%2FXPHx3hse%2BZJiTyKQF4fi32LTvTenajniJRhaG149B0bSod3%2FB2RyIECpQIgye7qf2DaNz9si9x6Isk1ed3T55%2BXUVtIcYY7jHGeQBXmkUF6M2%2BRCQhYNFfI7FTfK23AMG%2F0PkCijCDR6adxLOH%2BL8IYiFuHtTYnFV5hs%2BfA34aocprZbTYkq4wBXa1gRknnY6OUDA6hdeAzfTAGw8YMtH%2Bp9CejgA1FEM47vqAgmlTW3QsgSt2OrkhchqydllhD%2FJ4UNTBGrwkpWkbkTn7khKd9QRHPMI9LY8aYaHgoAKKOvuzerSHs%2B%2BZWVZ2HVs9wkPsutBSwEpTQB0HeDdk4h7rzvkECNC50f31yOhSCxP%2B6wjgFJaOSsjVGT8QOOb6rJO%2BBQ5RhOrdb8t64SdFhFIypBFXDwHtnPUvgo9CKNEGIfH%2BTD4QVd%2BYJQOZLIImTOymazX9USgg3TwiJkg83F9TAaWO%2BE5tYDWxtLPw857TnwMoBmY9qX36LoVQxTFcugUMN96%2Bu3WxFLjVjGtYjdA6YrHl4E5jUV6jQR117%2FiQOJ7AnpLft%2F98jFOIgEBSeOg81VE0xMWeNqEmGjy4urBTx%2Bdbz%2Bz6PfwBRXRduXtHWJ12ax%2FOMr7cI1ZJgbw415Q5GReKa%2FRj3Zy2P2zU31VP2W0iqJl4XqFq3w2qqk948ty%2BP809BGx02gLcVqOLZwHoJRWfQ8WlTWDm9muOh%2B49rIUS5p2iefQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"هَرْشٜن هَوْس"},{"file":"https://oca.flutch05.workers.dev/?v=zoJOcW29bvSYY6pV4aaq7KdQN33L3Rn21OM7LAH%2BMbSqG0xIxjNDgh5%2ByjkyDWWpj6WJviLLF7jSFc%2BOIxfIIeDqQbg7u2KebcpIJjx5Y72dZ2ty0npTrcOJNRjva2FIPFZ6HajGsHGFqYIsAI4v5cCFnjyOJ%2F1N8EuTlnO1phm2MLSwd%2FBI6J8w8Kt4Q%2BDyh0r7F%2Fuda7wpyrzPAvO7ZCOknJ1owhUykfsQWnHh79B3CBnPV5OBcGKbeT5lCAEvUej2ADrQYZfdk%2FfVzWGPWH1pTXazOvp6C8laBpwz%2FbYZMVarzVP1GZ2E%2FCcQJn3ue%2BugtCMg0laHaY5CjGQ9UiftDUKklxu0Uuaru8CoJiGRw1WCjaQBYs2nuYoCcDbh0ek9gujhtZ1iUjo8uk%2BthgOFiV1EXNmddm1sYrkPuGELul%2By8uZxOg5konVQgdoflWOJ%2BoJHrz7ocfG0Z2QsmpHSRt1ADRrg1rTiD4Q%2FYnRZDsrLkxQqsB%2Bwx1qtkSuXx2pLXLhE4%2Bfdm0VWsRM8p2Az%2F122t5ZMMw%2B20YwET2DKUWaE5AgSVeVl8pKMw3h3C%2Bi1IMZNM0j6NOY4S9Pb9ZR0OcmDtgDzbEHB5dewAgX%2B6D4EUFSbOeAnAB5FNY8HNacDnecRyuwHsnOjowp7JNSuDY5n2J3GCzSbeNih8L%2BuxabtU1Erlfe0V44ZbQ1YtKPCyMAzmRv%2B%2Fiw9ioNkJx8SFF1VTuLGA%2F41MsxHmR0Bn%2B0TNSbwzC%2FfDybfwXZXtji7GDxyZ8K4fijWxuCCZJvQU%2BS%2BqVyNiRi7yTnmcPmbWE40J3prFri%2F0fNUxisEMEYlXqCeXnOLQDGT5VhGGQCYTQwBhmOtUKFBvFAZXpkEjYV%2F%2FrJy%2F9UGTiFR3MtUr5ZgKIUjpFzoWQEwcRV6In49Ja1mRDfb2G%2Bo1uyWTlSdljhsx6v8YHEF%2BfJZLmCUCj4UXzum5IpfXlrSsE6Ziyqx6sXambbYcGPoeFyNYucnIAiy2%2FyAkvHy0LZw2aHuLqr7wp%2BDz4jL9zgsi0J4GmX2J6lx9IowNi5GxABS00v2tKlXeT0Cf%2BHwG5qhGqZiHJ9WKl70B9cj%2FUOWYPTES7cmNId%2F7B4f6QlLVbxFlVEKI9z4%2BdjgpXyZCLozRv%2B5&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Indonesian"},{"file":"https://oca.flutch05.workers.dev/?v=8vuaZ0RXIoYmW%2FF8BIKxbppsoDORuxpUFnFM8JYD81RV7CEzx3UYU5JbSrj3O%2BZsF0OIzCH4MeOAUYebTx3E8SqJLPFcd5uGuhD7ktSqRcgRnFXpAKmZnCLaz8Qp8p93WB5RmnL9CP6HbRnzbn%2F%2FCnvy6KkpwUBX45wXGjPaL8dKFstF6Vm%2BWb9G1SIN%2Bs8%2Bx0BgixjinEJkZhkwmvvf8wg6mZtAnFVHE6SZrSqLu9mHiq41nILfAGntZZ7wtDmM2vK1Tr6T7Zqkaw%2FpVo8BLdfWI5UkX5KC3XPHZtwyzEo8QjAi6uCI18eYH3VzPqWAD7hkyz%2BaZsLmkmDKSuLFHSstbmmBqQjyU129S9KO5wF%2FsncluOHVLncVhfcQBB%2BjDPKrnkSSelWcha5ucpg9koZC1c1x9i0OiTdsUHYif1eYN4xJxIJVcnuqnKpknWI9719Xoea8uYF%2Bc4dbRRIzqEL3BcUP0Ww%2For4qWSpB6OISa%2Bi5s4yHOndpYwQsIInTrouwGkt6raeyE%2FfuXbM8T3DwJ2XtpmRIjKDrP5kkgsB4%2Bvz%2FPHI9u1ZqSNeMoNH2xgrERTt9vgvfnA7FAFsTRFrSOSVEbukecf9e3EqfqqsxKouSr4aTcVOBRf0Nq94kVUJSuBDbYVDOlVo5rZD%2FaPJUHj38fvB8A4nfoeUVfwqAK0ZSTJzwc8m2NF5XXX35lni5yO5oZL8kn%2BrxbcO3wsJoey6OU2HN1FKVJIt%2BMeYZ71DRtc%2BxsaiVOAjp7hGh1Sg94vdpEmT15yMF98sr%2FoyT79j0BkJ0msnsdASW%2B0tuxDBNvHOUeFob77GVGg4xFpjPq6hL6EsDwgq0ra8%2BN46830Lk9NiB%2BVNK8kmNcNS55HnD7lQQMF9QViqL7D1ysXrQbPvbnrut8%2FqLYJ3ED%2FL1iWTqSUJy8NyEaa9m7ndN9prFcVQrDSkIESeBsLE8mdjHiV3TFyAAJ5hZQs17tA%2FZyIkjGqaAcurgPpnTVTY3ha3fnqtBzJPofgKm9xyCNP4eMxw3uniEjVRTc%2FzNdNJvyBfftVjDxBiuEuUnVoKa%2BA7PbErasj4OQKtF7qka768DeA7%2F3xU7tvLR%2BeCngUQDeJSb4nSNrI%2FeV8Ze7oARhisJBWJCatXsHQoVS4et&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"ਪੰਜਾਬੀ"},{"file":"https://oca.flutch05.workers.dev/?v=y9tfFElmKDsMr%2FsqDw4njw%2B7LmSv%2BozHjl62TQ7X7AA%2BUlLmoVhyWjVMJ9K6k9GD0ja1k7yr2HnYIlQZSOXHSoo2rEKPlJW7RQ8k7X%2BYNNcanJbxIZ45lwUxiZd8peQNBBS%2F%2Ftjb8FTQdfyJsTG8eKfNTvKmfevuI5pC0WpgcvOczTiFL%2B8dkSX1FV9BNFDi%2B1DOHopZfyaeD9SoCUDd7tylruJUcWb%2FmCgiC%2BbXrVyBdA%2FsneGjDehHkehV9iJjUjUvCrKN%2B55iHkBVd6MYo1L6UVb5Zvx0yOrDiA1w6taBGJ9SKzp7VOVBveG1pgXyHmLbeer6pBs7vmf4Oag69E4vgLqBxSfXMKgeSM5mYfa0ZjbAzXQTqQKXTEA1j%2B08WY1jqMwxjA23j%2BLbaRcB05hLcnQuE5QGkCeS%2B22mJ0qxuT1QYXjCkDbW2rWKj0R2qMrNVwyiAgyFkr17aWj8tN1g2rYZfTYuM6%2Fj4c%2FjFEVswnp%2FOmgbtg%2BCX82L7461NBn8DP%2BFJA1%2BGlmXoPJgdM%2Bmfg6zQ%2B6S12Q59STaqL71384A1CwHmstUqcyp2e41tBaw%2FFmdgv3U89zOaUJGE4JzCaomYYWJyQxaqFMPFtfAqIO0FqoytJtuzFZGD3RVY%2BC8EkmQ%2BaEjmnIIgOp0piUp%2FWXmWlnGHselk%2B4qTOY%2BYGLqM90wpSZwCh1Fog1Wze9jrlDk9TWJEgmDBbc3op39aXulJErRUW0Ycg8MFbuOXnHJ7%2Fg9T8OXkSIV5n7i0zzDd8mVTIzHRrm9ycn%2B7fLfm3TcLrEJTMafzHBZE1pCyNOiym34NlB7KS60d5BeTe3P9t%2FHR0MxkFCvummIH2gURLyg5E0pMZTO7zQiZKBEzLgryH35whb5xPoSsyJeUueWVn45OMXM%2BMwHPZjux6S%2BJfMNRMFmhq56fsa85b7%2FxHDDrIONwhnAq21Pmny4nO2FGljeKjZjnw8x3xE3sGXwnLp4gweAtirxXBpDCCAcw%2BV5VZZnSxY9jJqQXVbzbJ8LfzXU7D%2BjuXxnAU0P8TNWhy%2BGJgeUrTRiQMMPrExUL72YjgbIdPIvE%2BvqY9j2FtLXCv88B9WGrK6SkNMvxnApzEry0rTbVXTo9dk7%2FzDbd3QJCgdvUpXWsBZMIvg0z4cRwTAEHw%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Português"},{"file":"https://oca.flutch05.workers.dev/?v=GG7QxoKrNn3uIqYq6F61WcCV4PHBJePHf1hXbGpRMduDBjfshJL88kGLPiWYIA1Sfevz6l%2BUmPdvGuwT24j8oCOlNm4TVF%2F4FznYgr1rH%2BqAScT7RnBpHbzueEe9N%2FLsbkT9I%2Bb96%2FtrL1FO1Ehjpz8b9ExxyxtSp80Q9ZUBlKaxAMYXQHK%2FiGOMTEKh03f1Te393roWAjteKPsBQdkYCcJhi8%2Bl55Y%2BA46VF7i3ioXbcTHVRakOhrjhoppnMWXXYB88qiBmNMu6BmhXmlBoGKzLMRpyW1UIOvCwiQQbztjHobh97ONLRNcob1lQ5oePClZ9XDEMQqEa3R%2FmOuyB%2FuxY7xutN9sUdxZL%2FLkD96i7BrmlWGZoLOYryEv8j5HMiyqIh1Zwz2UYTVlVitLIzSi0rNhbQuHwMHB39UnMgA5E5h%2BebtFJ9HphZNTtOwfOdNI%2FAKiiX89fSOtmCOawgqb60ZISFsh1dESTtUyJQVJo16C4a3UtyPczA%2B4guxRRq1Ou0NfpIZqapv8cBFGaQ2JlMknewmJZgW8IqGFFg5kfLkah0QHu0TRdvgu8GvPHvv%2Bd4q%2B3cJpRQrE2HhoV7oItnebuFk358tJryFmk%2BUZLZrTVvTP9fNjkSliVjjKL0k8QVbUU857pU5Ab6ryrpXMr57bDkAKqncQYrt9zF30ex%2BeOeL5kbFMCdxhhRa6EgFN8GOcEyvrUzCN9VhhoGhDJh%2FNae2sA19utgwIqwzm0Z%2BdYDK49gRK4D68E3P1r5jds3u96%2B1BGyL1TXJSyhzBI24a2%2FgY3TSbnaBqjy4EJdZ2vtQG%2F8s1%2FcRmHrPoXojEsK2JL9mzfgocmUr1s6%2FOPfpSWGB9S94AFayildJ96GMD3DtCTn2dAR0D9BSk1cR%2BIJLIBebwM4aAYIlxor7GNw3WBcJABG8zcIUNblTKOuox%2FnOOTkvNpIkfdIHSKZHXOhOY36le60Z7p%2BKipPkEzDuX7sE8GW7mv1OuegMtpkdjgykYiKHiwv8ElREygCYfak%2FrboWH4FyjOcKGNmfaXA681SVBcXvnsXxUw8IW%2FhH1Dz%2FVbnh1TsJAfB3JnHWlaTVgg46FYzYfWuu2TP99uRnnedo91VxrYQG2%2Fk98%2FJdvpWx3wWkPQiSfBSRF6&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Русский"},{"file":"https://oca.flutch05.workers.dev/?v=WNFeLF55qqZTaIfKLoti%2BVlp%2BOsi6cXboF0Ey2Prba3iT3xbrFRKbiWyHXnlRvX81Rc650IODr802R78A5Dy1vwISM6eGeba4QS56kH0XGBc5yIdX%2FMd0zbliCS0nqrq%2FaBn5Dh%2BQ5u1C0%2F4F1QKFoNaD%2FzYOrV77fQNXJSPDiNC%2BYPNHurRDET26R8tK8Pmv7k339P0x0Ojr3JqHSDApjp30AuTt9%2BcUkhM3Uo0M9LmthYev7b%2BiB0BL5CRSM6AriqKkvu9tsJ%2Bs0oNbUQEZ%2FOlruYczmN7p2fJ7Bd6l0dMqu0gVX9FU3R9i%2B3NFrpO%2BZbn%2F4jEzA8FZ3r0z%2FxDS8OWAzX40uJYBwHHHl1aZKF%2BKiXiuFbBwCfb5XCepT%2Fgfn6EbpF2NrSHW4ivZ6WiPn5hhZ81gdD1i1CZKLTcJyfAyxIVT80F3CL3fflmABk096T%2FpjGYxQ01lRnutldK5Ix3jm%2BXHDSqQgaPFW%2FgBHnI9csMyAuBNVs9Amg30njaSTSunzWNpCLCHty6CLrRFcxlmq0hW8CbJzbgUPspS420zg8eFSud5ht6yNUluwAwleHdcZQP%2BicFbGY4E%2F%2BsN0YMfEQVDVGpx9kBzl5LbDUt3AZ2nNv1oM38LFK%2FGgTiUpTFQ2N62fEWa6KhgHN5fh58q1WnYLtyJGfHOPnTc2WtHECvzJusaGs00pZDjJbup7RjC2XQ8p4jcvG6On5J4VkxoZWMMx1uY7Emydw7E%2FPWOmpPI%2FtZo9JkYKAF7WfntshKp7EjqsL4f7RDGp23tv7DUvloshbzQxvxt1uoFfsZH8RTeVDNfregNcaUnkI6BIY%2B1tzCqWTi%2BsBrY%2Fjt%2F96B5trcRTd93HJ8BOxPMOWd6PCMOJsrI%2BWCp4eLJsWWQlXPrWguxLCDcYoDRh9vNGsNeB5bSGXg3lSjIr797PJRzv8DT678TGtub8duWPqL90AY7vQ5shFUEoRHVGuoMT1r5zt%2FAWG8CxIuzm1z7DwzCMoYipqIFVcrKjeQSDMexGrHly9ciXcUvg1ewoDoSB6gkoectpXwfvzLMGUGvO2lOjCK8ezjs8cg%2FVRSNNtfnN%2BaOgm0rjIzQvkQOWInqvZt1hZn3qCWkbqDw1X14SPe50kX2b%2FEAMDQpkQ3VowfLkit7XiY7w%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"Kiswahili"},{"file":"https://oca.flutch05.workers.dev/?v=K97uLEq2JRwhouOH0aSqKX3Wcjbdtx8owmH%2FJ2rvXTC3xhfJEjGPWfxjtJ1LuYyC8P7GoA6KAAxvhi3c27u%2BESZlOWGw0aiFFpdcFlf873sw3y0q%2F2ZJYAn9swUhLYy73GuVtEGg5W82PyZ80m%2FMrB%2BD2tfj%2FY%2Ff3ItKFbktPuCttjxU8RMYYaxforYA3kywBkqbDpwBN1c0QgpSPdw6BGk4VKqRe41AFglqWhPc4NBHhmHPoJi%2Bk9aa0g%2FfJHjfsYAF7OoIqkVjt1rMJgD7XqSJAQHFUMxcoCWb1XX4pwq9ZJLDxhDVcFSxIq1bxdPS0vQ5HVVp%2FzUhGUiI1nF5DP8CB3i3RvglUMQu17F%2FymboL3kUCjvvBD2V0opl%2BYD3hSQ7slbzF9oIvweG1PMRjSuy9kNkfxrQgfzN%2BodMtIV35cb92ttWwE7oR%2FC4Vz8j8bOj4%2BBrOsV8eEYS04iujkdWKQfa48tn%2FV1E%2BurppVwZqhAyt%2FL6IpRGP7rYj0cykIpTgduwk%2BBCcmqWyUI0%2BrlIDnJ8gMQto4gf6rnXztY1rgCOgZZgxJ4q2krd9vx%2FfOd0CM%2Fmr%2FtmiM%2F7K2hHZH2AFBYzTMPipqYQAccYC9UhC8u3mqz7DiReBgPJ6PbdAvG4jnOM54JowQJ72n16uhvX3H7VRM%2B%2BZH8Kjp%2FkrB9ycqITBJ4OozGI524GN8K%2Ftzy9tJQsiiHZWoRLbY%2Bax4dw%2Fxb4XfLG3sdj9GhU418GewD43SoeomVUeNZL1C4HrBKsnHsq7Qf5665BUqiY1raw1QsNZFBB0V7uXD3ZIactLT0LIzofruf%2FNdAIaEsLS%2B3AlWTdq4hCm4%2FnWDANzb2de5wkYVCPHbGXCuGSUyuR6SVwvLE0htxkWiYuvcEFqlZbLRNfBJ2aaChs5KNng5W9LwBEjPLGG28Qvgsk5t5qcVezf0LRktgpkz5XjdYOWxrehiQqPcTEdkI9ov0ehBct6qwCp6DPOoyjjQTyoWqU6K0uQeaj%2Bmhtm%2FrULhjerD2eoxFDppyj38BeudYO12uldeM7LgmQ4t6uurGXStMh%2B%2BM6f6nMGcb4qYpg1ofEXqzpvaTfLk45RG8ThMDu71CW7ZCXEwRyOdfJrlJbX0L1BBx88H1tcH5Yh95W6Cch&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"اُردُو"},{"file":"https://oca.flutch05.workers.dev/?v=gy%2F0Pe0zjnqAuxLjssC0%2B2uYXOlMei0fhzIGdJzYZ4Cl7kXxL%2FqN%2BMeR1TlYj0qha08bCxKGVvK7xyuM%2F8IDXGI5kD5BQclwsOc%2Fq%2Fjb8uSzWtq7c0VNV3ZgSKeJxlA5Ybvmu94VtXUX6aW8jr9qvzYyTfTfgF8aYUTCUCOxKhottKT2ataQd8LuqIdadbqnLb1c8LSHVZubJaP%2FOiaI21%2FPMrYeBJvPjpcixhRQTLiLP0v62SCtbhkIwZK9%2FSU32l9NSlR7gFn5RFvfHIVD6sK4aVOgpRbQc5eq8steDHZl22GOjCDd4E7KKdNOxDASOCV99j5a00pD1tCQ8ghOZySFI8%2BXitm4PGetgF4PTc4GNBwR9EqioUFrwFlsBFhgTYc4tQaZnu%2Fv5atSiR%2Fkn3m4wHgOfRNJ0u0JWgJWueGol0s60GNjVD0Q2iqRVutHuX2WLoowVmVSRNSGr0RPvVzYwx9CJ8xB9ZNws2AZWRpiySpQ9cr27uDtVtlP3dmbpld0XKCfE%2F%2BXFUcH8BvNe5VbRNlwQEOk9OV6hYBfwk56SJUKLMVA1Nbqw8KJ2cGgBdPtnLilhf62O3Qgh734uDCORYJNHHUiTUt8Iu7wYx6OQwP5sCaJXtqd%2FQfx8iODEM8pLQbBerpLmry%2FWnnPtHEYwmtdtlKdrwrHwzmPyO2%2BqpM473PtbNWeeYaVMiY%2B0oFHuTaTATPKEf%2FjgS28hKaE7pX6wHGTbgvUk%2F9y5vLXVUKBeMPOXWHdQhrCFDJqFM%2B2DNy7BqnuaAgLWHPs4QuILd2q5hHxJBWXn3HlCSQS7QHb78rm87CxH9ITWHo9V2zxiEoyrraJcBvG9BEnc5Nzt8dfbDEGwtn4LCjUjZizyQzwXZLJVASH0Nw0KhIuf1kwjDGzKHBp9%2FFK5NS3WFg2oCeipMl8Yfzrp5lnekDDySpwJIiXxwnWUG1un2Ch0JkTTt036zbiPEeKAnf3HV%2BbCzUcZtRJec367%2BZg91aORgqY%2BNmdNr23BWR9BJfHqLr4trr20FLtcAQLFW4qAPq%2BwPgV3Qih9h4%2BQ9OSNCdsLiNmOdYjVrDF%2Bh2QNbnylahikPGsD4CM55RH%2FOS2cT%2BeKKWwY%2BDYrK5QjDaaqRBNgsqPWeSboar4uo34HUWM&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe","label":"中文"}],"title":"Superman"} \ No newline at end of file diff --git a/src/extractor/__snapshots__/XPrime.test.ts.snap b/src/extractor/__snapshots__/XPrime.test.ts.snap deleted file mode 100644 index c683575..0000000 --- a/src/extractor/__snapshots__/XPrime.test.ts.snap +++ /dev/null @@ -1,79 +0,0 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`XPrime primebox Alien: Earth 1`] = ` -[ - { - "format": "mp4", - "label": "XPrime Primebox", - "meta": { - "bytes": 871281904, - "countryCodes": [], - "height": 1080, - "title": "Alien: Earth 1x1 (2025)", - }, - "requestHeaders": { - "Referer": "https://xprime.tv", - }, - "sourceId": "xprime_primebox_", - "ttl": 21600000, - "url": "https://oca.flutch05.workers.dev/?v=mOwlY2kjThQa8NCWs32mchoiQHzclPNneNoDGQPimK%2B3Bp%2F1cqnza7Leu1hSMqLl6oRqOYEWTcx2WwszBsdBABFyqhRv8OpdZrGuGaoeNaiBFA5Ugx5%2BfwVDxx8kgPmu9hg8UjpwPo4B49s92Z%2BC5%2FfUJFGbJOp60JaP5NFEbfaIIdgqnUc0xUrUBfZPTOW%2FYAmi4D7C86WqUnPjCOh5RMYV3tWbwJ2LaZfJw%2Bfe7PAF9En4SRvsYmKGt8w6VCWzuxCCtpmRQr1E8PILpi%2Fr%2BkZOXtm%2B01mGCzY5Cv0OYAcVdqqtIylF%2FBQDbzxOuLnoXVz1QWSrroL1OiZ7dOT6TUilA5v%2F8T5ujpRy%2FDgwOvyYav%2BoiZud%2FOiY4eL%2F9UckLsgka85QlOmvvnXVzsvg%2BX1u4R02UWmJ6xlHGp5pTkRImbhERu0fJmGOjtrgDsjKy7DPVTHWPHr83nJC8dnDpw%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe", - }, - { - "format": "mp4", - "label": "XPrime Primebox", - "meta": { - "bytes": 420170402, - "countryCodes": [], - "height": 480, - "title": "Alien: Earth 1x1 (2025)", - }, - "requestHeaders": { - "Referer": "https://xprime.tv", - }, - "sourceId": "xprime_primebox_", - "ttl": 21600000, - "url": "https://oca.flutch05.workers.dev/?v=67b6sL674qhHEUcDMks3X12qkFala9ovis0QX%2F35qibiyzDOJ8IWc8yIS6kHsxUNW1x9MCx3DC79NiJLW7S86tNy94b7iW7Ec8tOalViCMsASELZnMo9lTzq08PXalRsC6E78VInBlJW5L50sTXmzBS83meFSenCqIO1VS70n1p9Q1tt%2B7frpHSdfvuQV%2FrZiWKCPsHS%2F8b3qC630HIopHQfd9tvdzCHKgtTLXJUKBdz%2BYAQBeD2T%2FovyhHLZDawtlOjqBC6w19xw1m1%2FZsVymS%2FJPFoNgCtSQf47iSKVdeDOEyLyD8vl675LxaQB0LXgjJL1JbRhqR6IbPTvNfDK1cWAeGZZybsxWM4t%2FC9bOZZAmhT3At7Vm3WFYRwWawK2YiV3Rl84umGFELYq%2BTYUstaDm6EJnu%2F8S56A92ELLJ7beFzfHjdGkEuxjhVF6me7v3awmcysmGfAw%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe", - }, -] -`; - -exports[`XPrime primebox Superman 1`] = ` -[ - { - "format": "mp4", - "label": "XPrime Primebox", - "meta": { - "bytes": 401394599, - "countryCodes": [], - "height": 480, - "title": "Superman", - }, - "requestHeaders": { - "Referer": "https://xprime.tv", - }, - "sourceId": "xprime_primebox_", - "ttl": 21600000, - "url": "https://oca.flutch05.workers.dev/?v=AM%2FpjvLx5HEQnDENoM67g5My54wbHl3T7s3ATEfiGXU8bibIkxZ0FXSYF3rjcs1EhAuU4hj%2BgV7pVNvSPKcMn6CEJsOqF9uhHXvgLwZBpBXgh15P2EBL6V01xWTYjRlxBBQ%2B7cCae4ZM4xDY1A7AQ9Ss7nTSydP8CBMpQSW7f0ia1kHvfSr9MGtMuXQfQbPdBmgPGwONotzQSwoqfTvXoKvYV2KO00wc%2BMdYo0AIpsvQ%2B9ATjOar0kplFsIoNMBuZdbFsXn3AMVmEvUmGJ8s6O0dwZsa%2F4k3j0Id%2F3egMnl2uHyFwP3PFIZUCk8kmJq%2FL4DscSij9M9%2B%2F4dbRCN0EV5bTMHmTAWmB%2FZVOkLQGNQyMKCV1m9Ynodh%2F%2BDgkVXd%2FvekQ%2BZLdGL7rhD9s6%2BeRo3FrpySv%2BMaChLwF%2FvA0D%2FASO3jxZ533tWWBWZMIxeVfb5GvowKNuZVMYEmzCdceQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe", - }, - { - "format": "mp4", - "label": "XPrime Primebox", - "meta": { - "bytes": 896638128, - "countryCodes": [], - "height": 720, - "title": "Superman", - }, - "requestHeaders": { - "Referer": "https://xprime.tv", - }, - "sourceId": "xprime_primebox_", - "ttl": 21600000, - "url": "https://oca.flutch05.workers.dev/?v=UNkCgqoMa91gkb8oj4GjENnh0sf4IVcpm0knnDuHACk2rVfVyotHGJiSuTGoCXPtwXIk0rYh8mmEQpHKklZBH%2FPWKk6OPytymZB4rTF6CtFCTIu8uvFChPm%2BidnA9yIXdehDBKNV37LQY9jBze6CYdOuHA7NFEAAwbp4wi%2FzuCkLCEnvSrkqUa8n%2FxJpjjz3ftZjR3jtrqFPU3r7kyGinkMYYbGZIHBDLM3r%2F72mpuzqpXrrlUig%2FEPOkUKPoUWJEAbR34TRDi1M1S1hSLUswluTSeN5BRt5SQfBZU6RA6f4Wkd5x0ua5yF1z69qfoBluu%2BEjbd83BRb%2Fo8p%2B8oMKeNJkv54Z48dmKXQDmAteRWF6uwPRmpIQfjggl%2B%2Bagp17nXhjufCgz23EY11qBR5%2B3AN074A016DbiGv4sXA%2FA2fKQ8I5NBFCCOsFqv4b03PVJCLoMPEMHY7eFfNF3N%2BsQ%3D%3D&headers=%7B%22Referer%22%3A%22https%3A%2F%2Frivestream.org%22%2C%22Origin%22%3A%22https%3A%2F%2Frivestream.org%22%7D&safe", - }, -] -`; - -exports[`XPrime primebox not found 1`] = `[]`; - -exports[`XPrime unknown backend is ignored 1`] = `[]`; diff --git a/src/extractor/index.ts b/src/extractor/index.ts index 942c925..baac8df 100644 --- a/src/extractor/index.ts +++ b/src/extractor/index.ts @@ -16,7 +16,6 @@ import { SuperVideo } from './SuperVideo'; import { Uqload } from './Uqload'; import { VidSrc } from './VidSrc'; import { VixSrc } from './VixSrc'; -import { XPrime } from './XPrime'; import { YouTube } from './YouTube'; export * from './Extractor'; @@ -41,7 +40,6 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => { new Uqload(fetcher), new VidSrc(fetcher, ['in', 'net', 'xyz', 'io', 'vc']), // https://vidsrc.domains/ new VixSrc(fetcher), - new XPrime(fetcher), new YouTube(fetcher), new ExternalUrl(fetcher), // fallback extractor which must come last ].filter(extractor => !disabledExtractors.includes(extractor.id)); diff --git a/src/index.ts b/src/index.ts index 0f60826..1bd7a2b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -8,7 +8,6 @@ import { createSources, Source } from './source'; import { HomeCine } from './source/HomeCine'; import { MeineCloud } from './source/MeineCloud'; import { MostraGuarda } from './source/MostraGuarda'; -import { XPrime } from './source/XPrime'; import { contextFromRequestAndResponse, envGet, envIsProd, Fetcher, StreamResolver } from './utils'; if (envIsProd()) { @@ -82,7 +81,6 @@ addon.get('/live', async (req: Request, res: Response) => { new HomeCine(fetcher), new MeineCloud(fetcher), new MostraGuarda(fetcher), - new XPrime(fetcher), ]; const hrefs = [ ...sources.map(source => source.baseUrl), diff --git a/src/source/XPrime.test.ts b/src/source/XPrime.test.ts deleted file mode 100644 index 5d96548..0000000 --- a/src/source/XPrime.test.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { createTestContext } from '../test'; -import { FetcherMock, TmdbId } from '../utils'; -import { XPrime } from './XPrime'; - -const ctx = createTestContext(); - -describe('XPrime', () => { - let source: XPrime; - - beforeEach(() => { - source = new XPrime(new FetcherMock(`${__dirname}/__fixtures__/XPrime`)); - }); - - test('handle alien: earth 1x1', async () => { - const streams = await source.handle(ctx, 'series', new TmdbId(157239, 1, 1)); - expect(streams).toMatchSnapshot(); - }); - - test('handle superman', async () => { - const streams = await source.handle(ctx, 'series', new TmdbId(1061474, undefined, undefined)); - expect(streams).toMatchSnapshot(); - }); -}); diff --git a/src/source/XPrime.ts b/src/source/XPrime.ts deleted file mode 100644 index 3ed154a..0000000 --- a/src/source/XPrime.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { ContentType } from 'stremio-addon-sdk'; -import { Context, CountryCode } from '../types'; -import { Fetcher, getImdbId, getTmdbId, getTmdbNameAndYear, Id } from '../utils'; -import { Source, SourceResult } from './Source'; - -export class XPrime extends Source { - public readonly id = 'xprime'; - - public readonly label = 'XPrime'; - - public readonly contentTypes: ContentType[] = ['movie', 'series']; - - public readonly countryCodes: CountryCode[] = [CountryCode.en]; - - public readonly baseUrl = 'https://backend.xprime.tv'; - - private readonly fetcher: Fetcher; - - public constructor(fetcher: Fetcher) { - super(); - - this.fetcher = fetcher; - } - - public async handleInternal(ctx: Context, _type: string, id: Id): Promise { - const imdbId = await getImdbId(ctx, this.fetcher, id); - const tmdbId = await getTmdbId(ctx, this.fetcher, id); - - const [name, year] = await getTmdbNameAndYear(ctx, this.fetcher, tmdbId); - - const servers = ['primebox']; - - return servers.map((server) => { - const url = new URL(`/${server}?name=${encodeURIComponent(name)}&year=${year}&id=${tmdbId.id}&imdbId=${imdbId.id}`, this.baseUrl); - if (tmdbId.season) { - url.searchParams.set('season', `${tmdbId.season}`); - url.searchParams.set('episode', `${tmdbId.episode}`); - } - - const title = tmdbId.season - ? `${name} ${tmdbId.season}x${tmdbId.episode}` - : `${name} (${year})`; - - return { url, meta: { countryCodes: [CountryCode.en], title } }; - }); - }; -} diff --git a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474 b/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474 deleted file mode 100644 index ca9fc4c..0000000 --- a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474 +++ /dev/null @@ -1 +0,0 @@ -{"adult":false,"backdrop_path":"/eU7IfdWq8KQy0oNd4kKXS0QUR08.jpg","belongs_to_collection":null,"budget":225000000,"genres":[{"id":878,"name":"Science Fiction"},{"id":12,"name":"Adventure"},{"id":28,"name":"Action"}],"homepage":"https://www.superman.com","id":1061474,"imdb_id":"tt5950044","origin_country":["US"],"original_language":"en","original_title":"Superman","overview":"Superman, a journalist in Metropolis, embarks on a journey to reconcile his Kryptonian heritage with his human upbringing as Clark Kent.","popularity":168.8676,"poster_path":"/ombsmhYUqR4qqOLOxAyr5V8hbyv.jpg","production_companies":[{"id":184898,"logo_path":"/2Z2hiM1ERqFOWRxNxWoJZ8lTxhb.png","name":"DC Studios","origin_country":"US"},{"id":94218,"logo_path":"/kxuhS8wyKtVprOn5nckdHyNuSg1.png","name":"Troll Court Entertainment","origin_country":"US"},{"id":11565,"logo_path":"/odU3l6csuBmXUrzFm6araUgEUHQ.png","name":"The Safran Company","origin_country":"US"},{"id":216687,"logo_path":"/kKVYqekveOvLK1IgqdJojLjQvtu.png","name":"Domain Entertainment","origin_country":"US"}],"production_countries":[{"iso_3166_1":"US","name":"United States of America"}],"release_date":"2025-07-09","revenue":581086143,"runtime":130,"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Released","tagline":"Look up.","title":"Superman","video":false,"vote_average":7.7,"vote_count":1684} \ No newline at end of file diff --git a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474external_ids b/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474external_ids deleted file mode 100644 index 62bf0ac..0000000 --- a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3movie1061474external_ids +++ /dev/null @@ -1 +0,0 @@ -{"id":1061474,"imdb_id":"tt5950044","wikidata_id":"Q116547790","facebook_id":"superman","instagram_id":"superman","twitter_id":"Superman"} \ No newline at end of file diff --git a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239 b/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239 deleted file mode 100644 index ad2f1b1..0000000 --- a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239 +++ /dev/null @@ -1 +0,0 @@ -{"adult":false,"backdrop_path":"/25g7mthXoJFcNZhAKz0evk17Bsx.jpg","created_by":[{"id":202816,"credit_id":"620bdfc73e01ea002b2f90b1","name":"Noah Hawley","original_name":"Noah Hawley","gender":2,"profile_path":"/pxVP1lywEBA9y8x5Xe3kM7m4ai3.jpg"}],"episode_run_time":[],"first_air_date":"2025-08-12","genres":[{"id":10765,"name":"Sci-Fi & Fantasy"},{"id":18,"name":"Drama"}],"homepage":"https://www.fxnetworks.com/shows/alien-earth","id":157239,"in_production":true,"languages":["en"],"last_air_date":"2025-08-12","last_episode_to_air":{"id":6231083,"name":"Mr. October","overview":"Tensions rise between rival corporations, a reunion takes place, and a secret is revealed.","vote_average":8.5,"vote_count":10,"air_date":"2025-08-12","episode_number":2,"episode_type":"standard","production_code":"XWYV1002","runtime":56,"season_number":1,"show_id":157239,"still_path":"/hZclNGZx4pjOx6MNdJfTZid113f.jpg"},"name":"Alien: Earth","next_episode_to_air":{"id":6231084,"name":"Metamorphosis","overview":"The team returns home with unexpected cargo. An unsettling experiment occurs, and a new talent is discovered.","vote_average":0.0,"vote_count":0,"air_date":"2025-08-19","episode_number":3,"episode_type":"standard","production_code":"","runtime":54,"season_number":1,"show_id":157239,"still_path":null},"networks":[{"id":88,"logo_path":"/aexGjtcs42DgRtZh7zOxayiry4J.png","name":"FX","origin_country":"US"},{"id":453,"logo_path":"/pqUTCleNUiTLAVlelGxUgWn1ELh.png","name":"Hulu","origin_country":"US"}],"number_of_episodes":8,"number_of_seasons":1,"origin_country":["US"],"original_language":"en","original_name":"Alien: Earth","overview":"When the mysterious deep space research vessel USCSS Maginot crash-lands on Earth, Wendy and a ragtag group of tactical soldiers make a fateful discovery that puts them face-to-face with the planet's greatest threat.","popularity":395.6075,"poster_path":"/yueXS3q8BtoWekcHOATFHicLl3e.jpg","production_companies":[{"id":15990,"logo_path":"/5cT4zwHA66uNAr2p3CcBDLddXu2.png","name":"FX Productions","origin_country":"US"},{"id":221347,"logo_path":"/6Ry6uNBaa0IbbSs1XYIgX5DkA9r.png","name":"Scott Free Productions","origin_country":"US"},{"id":20814,"logo_path":null,"name":"26 Keys Productions","origin_country":"US"}],"production_countries":[{"iso_3166_1":"US","name":"United States of America"}],"seasons":[{"air_date":null,"episode_count":2,"id":469846,"name":"Specials","overview":"","poster_path":null,"season_number":0,"vote_average":0.0},{"air_date":"2025-08-12","episode_count":8,"id":243129,"name":"Season 1","overview":"As members of the crash recovery crew search for survivors among the wreckage of a mysterious crashed space vessel, they encounter mysterious predatory life forms more terrifying than they could have ever imagined.With this new threat unlocked, the search crew must fight for survival and what they choose to do with this discovery could change planet Earth as they know it.","poster_path":"/dJ7lUdzZ98AlhZ38BpfG6jy3UDa.jpg","season_number":1,"vote_average":8.3}],"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Returning Series","tagline":"We were safer in space.","type":"Scripted","vote_average":8.26,"vote_count":96} \ No newline at end of file diff --git a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239external_ids b/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239external_ids deleted file mode 100644 index 5fba5d2..0000000 --- a/src/source/__fixtures__/XPrime/https:api.themoviedb.org3tv157239external_ids +++ /dev/null @@ -1 +0,0 @@ -{"id":157239,"imdb_id":"tt13623632","freebase_mid":null,"freebase_id":null,"tvdb_id":458912,"tvrage_id":null,"wikidata_id":"Q116200246","facebook_id":"alienearthfx","instagram_id":"alienearthfx","twitter_id":null} \ No newline at end of file diff --git a/src/source/__snapshots__/XPrime.test.ts.snap b/src/source/__snapshots__/XPrime.test.ts.snap deleted file mode 100644 index 814eda9..0000000 --- a/src/source/__snapshots__/XPrime.test.ts.snap +++ /dev/null @@ -1,29 +0,0 @@ -// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing - -exports[`XPrime handle alien: earth 1x1 1`] = ` -[ - { - "meta": { - "countryCodes": [ - "en", - ], - "title": "Alien: Earth 1x1", - }, - "url": "https://backend.xprime.tv/primebox?name=Alien%3A+Earth&year=2025&id=157239&imdbId=tt13623632&season=1&episode=1", - }, -] -`; - -exports[`XPrime handle superman 1`] = ` -[ - { - "meta": { - "countryCodes": [ - "en", - ], - "title": "Superman (2025)", - }, - "url": "https://backend.xprime.tv/primebox?name=Superman&year=2025&id=1061474&imdbId=tt5950044", - }, -] -`; diff --git a/src/source/index.ts b/src/source/index.ts index d4063f1..66bcc73 100644 --- a/src/source/index.ts +++ b/src/source/index.ts @@ -18,7 +18,6 @@ import { StreamKiste } from './StreamKiste'; import { VerHdLink } from './VerHdLink'; import { VidSrc } from './VidSrc'; import { VixSrc } from './VixSrc'; -import { XPrime } from './XPrime'; export * from './Source'; @@ -33,7 +32,6 @@ export const createSources = (fetcher: Fetcher): Source[] => { new PrimeWire(fetcher), // new Soaper(fetcher), // "temporarily" rate-limited for over a week new VidSrc(fetcher), - new XPrime(fetcher), // ES / MX new CineHDPlus(fetcher), new Cuevana(fetcher), diff --git a/src/utils/__snapshots__/manifest.test.ts.snap b/src/utils/__snapshots__/manifest.test.ts.snap index e1a58a7..1f200db 100644 --- a/src/utils/__snapshots__/manifest.test.ts.snap +++ b/src/utils/__snapshots__/manifest.test.ts.snap @@ -21,7 +21,7 @@ exports[`buildManifest default manifest 1`] = ` }, { "key": "en", - "title": "English 🇺🇸 (PrimeWire, VidSrc, XPrime)", + "title": "English 🇺🇸 (PrimeWire, VidSrc)", "type": "checkbox", }, { @@ -82,7 +82,7 @@ exports[`buildManifest default manifest 1`] = ` Supported languages: German, English, Castilian Spanish, French, Italian, Latin American Spanish -Supported sources: 4KHDHub, VixSrc, PrimeWire, VidSrc, XPrime, CineHDPlus, Cuevana, HomeCine, VerHdLink, Einschalten, KinoGer, MegaKino, MeineCloud, StreamKiste, Frembed, FrenchCloud, Movix, Eurostreaming, MostraGuarda +Supported sources: 4KHDHub, VixSrc, PrimeWire, VidSrc, CineHDPlus, Cuevana, HomeCine, VerHdLink, Einschalten, KinoGer, MegaKino, MeineCloud, StreamKiste, Frembed, FrenchCloud, Movix, Eurostreaming, MostraGuarda Supported extractors: ", "id": "webstreamr",