diff --git a/src/source/XDMovies.test.ts b/src/source/XDMovies.test.ts new file mode 100644 index 0000000..b75ba31 --- /dev/null +++ b/src/source/XDMovies.test.ts @@ -0,0 +1,28 @@ +import { createTestContext } from '../test'; +import { FetcherMock, TmdbId } from '../utils'; +import { XDMovies } from './XDMovies'; + +const ctx = createTestContext(); + +describe('XDMovies', () => { + let source: XDMovies; + + beforeEach(() => { + source = new XDMovies(new FetcherMock(`${__dirname}/__fixtures__/XDMovies`)); + }); + + test('handle non-existent devil\'s bath 2024 gracefully', async () => { + const streams = await source.handle(ctx, 'movie', new TmdbId(931944, undefined, undefined)); + expect(streams).toMatchSnapshot(); + }); + + test('handle rathnam 2024', async () => { + const streams = await source.handle(ctx, 'series', new TmdbId(1171532, undefined, undefined)); + expect(streams).toMatchSnapshot(); + }); + + test('handle stranger things s05e08', async () => { + const streams = await source.handle(ctx, 'series', new TmdbId(66732, 5, 8)); + expect(streams).toMatchSnapshot(); + }); +}); diff --git a/src/source/XDMovies.ts b/src/source/XDMovies.ts new file mode 100644 index 0000000..4e3a474 --- /dev/null +++ b/src/source/XDMovies.ts @@ -0,0 +1,108 @@ +import bytes from 'bytes'; +import * as cheerio from 'cheerio'; +import { BasicAcceptedElems, CheerioAPI } from 'cheerio'; +import { AnyNode } from 'domhandler'; +import memoize from 'memoizee'; +import { ContentType } from 'stremio-addon-sdk'; +import { Context, CountryCode, Meta } from '../types'; +import { Fetcher, findCountryCodes, getTmdbId, getTmdbNameAndYear, Id, TmdbId } from '../utils'; +import { Source, SourceResult } from './Source'; + +interface GetTokenResponse { + token: string; +} + +interface SearchResponsePartial { + tmdb_id: number; + path: string; + audio_languages: string; +} + +export class XDMovies extends Source { + public readonly id = 'xdmovies'; + + public readonly label = 'XDMovies'; + + public readonly contentTypes: ContentType[] = ['movie', 'series']; + + public readonly countryCodes: CountryCode[] = [CountryCode.multi, CountryCode.hi, CountryCode.ta, CountryCode.te, CountryCode.ml, CountryCode.bl, CountryCode.mr, CountryCode.kn, CountryCode.ja, CountryCode.ko, CountryCode.pa, CountryCode.gu]; + + public readonly baseUrl = 'https://new.xdmovies.wtf'; + + private readonly fetcher: Fetcher; + + public constructor(fetcher: Fetcher) { + super(); + + this.fetcher = fetcher; + + this.getToken = memoize(this.getToken, { + maxAge: 3600000, // 1 hour + normalizer: () => 'getToken', + }); + } + + public async handleInternal(ctx: Context, _type: string, id: Id): Promise { + const tmdbId = await getTmdbId(ctx, this.fetcher, id); + + const token = await this.getToken(ctx); + + const searchResponseEntry = await this.search(ctx, tmdbId, token); + if (!searchResponseEntry) { + return []; + } + + const html = await this.fetcher.text(ctx, new URL(searchResponseEntry.path, this.baseUrl)); + const $ = cheerio.load(html); + + if (tmdbId.season) { + return Promise.all( + $(`#season-episodes-${tmdbId.season} .quality-section .episode-card:nth-child(${tmdbId.episode})`) + .map(async (_i, el) => await this.extractSourceResults(ctx, $, el, searchResponseEntry)) + .toArray(), + ); + } + + return Promise.all( + $(`.download-item`) + .map(async (_i, el) => await this.extractSourceResults(ctx, $, el, searchResponseEntry)) + .toArray(), + ); + }; + + private readonly getToken = async (ctx: Context): Promise => { + const getTokenUrl = new URL('/php/get_token.php', this.baseUrl); + const getTokenResponse = (await this.fetcher.json(ctx, getTokenUrl)) as GetTokenResponse; + + return getTokenResponse.token; + }; + + private readonly search = async (ctx: Context, tmdbId: TmdbId, token: string): Promise => { + const [name] = await getTmdbNameAndYear(ctx, this.fetcher, tmdbId); + + const searchUrl = new URL(`/php/search_api.php?query=${encodeURIComponent(name)}&fuzzy=true`, this.baseUrl); + const searchResponse = (await this.fetcher.json(ctx, searchUrl, { headers: { 'X-Auth-Token': token, 'X-Requested-With': 'XMLHttpRequest' } })) as SearchResponsePartial[]; + + return searchResponse.find(searchResponseEntry => searchResponseEntry.tmdb_id === tmdbId.id); + }; + + private readonly extractSourceResults = async (ctx: Context, $: CheerioAPI, el: BasicAcceptedElems, searchResponse: SearchResponsePartial): Promise => { + const localHtml = $(el).html() as string; + + const sizeMatch = localHtml.match(/([\d.]+ ?[GM]B)/); + const heightMatch = localHtml.match(/\d{3,}p/) as string[]; + + const meta: Meta = { + countryCodes: [CountryCode.multi, ...findCountryCodes(searchResponse.audio_languages), ...findCountryCodes(localHtml)], + height: parseInt(heightMatch[0] as string), + title: $('.custom-title, .episode-title', el).text().trim(), + ...(sizeMatch && { bytes: bytes.parse(sizeMatch[1] as string) as number }), + }; + + const url = $('a', el) + .map((_i, el) => new URL($(el).attr('href') as string)) + .get(0) as URL; + + return { url: await this.fetcher.getFinalRedirectUrl(ctx, url, undefined, 1), meta }; + }; +} diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload238Imokv33hC9nehrVWaxNzC7kz54SMaqKq95YTJdB4 b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload238Imokv33hC9nehrVWaxNzC7kz54SMaqKq95YTJdB4 new file mode 100644 index 0000000..35d4dd0 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload238Imokv33hC9nehrVWaxNzC7kz54SMaqKq95YTJdB4 @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/njntlayllkcrtb1","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=YBYEFkMbTA4iMW8GC6eRz4QlqQBopkAZwm%2FXkEGGQfLxQbKw6jXvy20LfqkfyZXDMoK7v%2B5aZm2ii%2FwxYHgKA%2FvQENffFAhA8gHhAIP2JP6f\"}]}","server":"cloudflare","cf-ray":"9c7a3929fdddd260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload9Ooil2yHkzXuOkmMpIxEVDg5gPrJRWd8_Jz4GDWOnBY b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload9Ooil2yHkzXuOkmMpIxEVDg5gPrJRWd8_Jz4GDWOnBY new file mode 100644 index 0000000..0c0495d --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownload9Ooil2yHkzXuOkmMpIxEVDg5gPrJRWd8_Jz4GDWOnBY @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/ft5h778dgcot8yd","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=lqIDpDMkvXJQ5dkF70SqrWsI8XImbtVOjGPNXInqqkAy%2ByiCIrxYo1fRWKnnJXNQ5GEl0MDKhkbmibVWZqUtLDcXgdhGMlvK9EY4ONU8TFQ%2B\"}]}","server":"cloudflare","cf-ray":"9c7a3929eda8d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN5XQL_zP50ho1lSoqBaA1HcFjvwTlc6f9pXGcLZ_UZ8 b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN5XQL_zP50ho1lSoqBaA1HcFjvwTlc6f9pXGcLZ_UZ8 new file mode 100644 index 0000000..23f1131 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN5XQL_zP50ho1lSoqBaA1HcFjvwTlc6f9pXGcLZ_UZ8 @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/d140ytrad4r228o","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=l%2BNnPWvf9ij7mPQdO8%2BHxtgPOQJHQ%2FGlIIrBbYj3cOIMwZJAtCXKZ%2FLQFQFPBVfX9YXc2CA6perTIbqkd7NUQ71DcyLHQLohNxxA7YbCPf0m\"}]}","server":"cloudflare","cf-ray":"9c7a3929ed81d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN7UeLH7ls0Eo2sRzKB6HnrDvJFkOCUfYoTOjoGSox9A b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN7UeLH7ls0Eo2sRzKB6HnrDvJFkOCUfYoTOjoGSox9A new file mode 100644 index 0000000..ffae2dc --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadN7UeLH7ls0Eo2sRzKB6HnrDvJFkOCUfYoTOjoGSox9A @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/bzxqjl1vkvdxsvy","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=q8jtF8CzKNn9J%2FBYloLn5t478p27MxGets2ArRdDzcU7ug4AiaiN1yQd7zbBAs7t5UwIfl3o0JgvUEB8BJn5quVMvifvAl0%2Bi%2F4tmS6SY9Yj\"}]}","server":"cloudflare","cf-ray":"9c7a3929fdefd260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadYHbqYlMcSKtmw8aTccl621fRFqJWXxeGHAstPRuA0E4 b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadYHbqYlMcSKtmw8aTccl621fRFqJWXxeGHAstPRuA0E4 new file mode 100644 index 0000000..b5ea11c --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadYHbqYlMcSKtmw8aTccl621fRFqJWXxeGHAstPRuA0E4 @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:54 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/qgdndi5j1rvil2l","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=CndX24Z%2F5xNQioSyD6GPCEcdQ9y2OX2BH82NA1ebxp%2BT5AUwWgHQMQF8vRwVXqfu9rLEGSB0uyy2UvuhN%2FY8XN2H22BuN6%2F9ZRUvQ%2F3coopk\"}]}","server":"cloudflare","cf-ray":"9c7a3923becad260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadjRGOio1u-fKY3xkz5TKZ4T0goMjdch7D_uzn7561LMo b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadjRGOio1u-fKY3xkz5TKZ4T0goMjdch7D_uzn7561LMo new file mode 100644 index 0000000..dbe5c59 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadjRGOio1u-fKY3xkz5TKZ4T0goMjdch7D_uzn7561LMo @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/k7sgskvmmzppzap","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FCm7UXGA9B03WO0EYOxtIOqNkrCO4McPd%2Fc9VOwIXPKVu31CQO2Ln9VIMc8kicF0gRW5I9K8DfZ1UGxB3r7%2Bk4qww6edjGeVekfvYrIf365C\"}]}","server":"cloudflare","cf-ray":"9c7a3929ed93d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadp1Z-Ii4P-ohUxG4Tc93JP_3jl9-7I5ZOifOf0mDT__4 b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadp1Z-Ii4P-ohUxG4Tc93JP_3jl9-7I5ZOifOf0mDT__4 new file mode 100644 index 0000000..d9b912b --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadp1Z-Ii4P-ohUxG4Tc93JP_3jl9-7I5ZOifOf0mDT__4 @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:54 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/iy7587kppeg6b6p","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=6XMv9bJamwNxTeB52HAJpQ08oeKPf%2B2u1RiFLYNupdQ8jKH8A%2FIaNqcra%2BJgZpJ%2BZrF6ukAfSUDTyUUeFOjIwQ7ibuGk0QwQ70atGJ%2BnPQSZ\"}]}","server":"cloudflare","cf-ray":"9c7a3923bea8d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadspgEvICetLWnULbCYnmAM0gB_7pNtkDGI-chtTjOteM b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadspgEvICetLWnULbCYnmAM0gB_7pNtkDGI-chtTjOteM new file mode 100644 index 0000000..92c6772 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadspgEvICetLWnULbCYnmAM0gB_7pNtkDGI-chtTjOteM @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:54 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/dn5g8g5drixrrl1","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=d9hgkpK%2BBaxmEdaTfnVUQQ4f9wimIa1aVmEUOITdFc6uI%2FrhlhMapqM5dKhNcPFAO0zv%2BRox0dCBqhE3SkQj1%2BXbagiJoxsEoXSY49HJnPLc\"}]}","server":"cloudflare","cf-ray":"9c7a3923bed5d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloaduDqZLyd4df9KZiYQt_NQWfhE-jABCL_F8Um9H8MiGcM b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloaduDqZLyd4df9KZiYQt_NQWfhE-jABCL_F8Um9H8MiGcM new file mode 100644 index 0000000..d2762b6 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloaduDqZLyd4df9KZiYQt_NQWfhE-jABCL_F8Um9H8MiGcM @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/vfhor1uv59jkrha","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=pVuXO1Q3Hlt%2F7W8RndGEqTmf%2F7emrgBHbj8avfgD%2FaX7H57KeI8gDfuUTczuM2vJIB7rrcGM9np9Emccer9iUTy4pjWPGsuYJYZOMKjA%2FChb\"}]}","server":"cloudflare","cf-ray":"9c7a3929fdc8d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadwmalyd5onKbfr1gLYnnDbReIeSL2zLC2xAjjlk9Wnkw b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadwmalyd5onKbfr1gLYnnDbReIeSL2zLC2xAjjlk9Wnkw new file mode 100644 index 0000000..0ab8b2b --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadwmalyd5onKbfr1gLYnnDbReIeSL2zLC2xAjjlk9Wnkw @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:55 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/8mxktxm8ho4ib44","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=78P8cxuwo%2F1QFBjF3Opd9tV5atvAgV5fS5uQ6nxdTCdxiDFvXZ9r1ksV3oe81m5MNbfdK2MmtvJCzHSMJiboeK18DRrksg6z9THJHMxl%2F%2FVR\"}]}","server":"cloudflare","cf-ray":"9c7a3929fdb9d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadxUChy50yiRXZgCF-_8FbzG46XEGYm13LO2JcZMvY5HE b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadxUChy50yiRXZgCF-_8FbzG46XEGYm13LO2JcZMvY5HE new file mode 100644 index 0000000..08577c6 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/head-https:link.xdmovies.wtfdownloadxUChy50yiRXZgCF-_8FbzG46XEGYm13LO2JcZMvY5HE @@ -0,0 +1 @@ +{"date":"Mon, 02 Feb 2026 14:01:54 GMT","content-type":"text/html; charset=utf-8","connection":"close","access-control-allow-origin":"*","location":"https://hubcloud.foo/drive/oae0mzzzje1xrvy","vary":"Accept","x-powered-by":"Express","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Gnyqle3rvoos3APD9mqtMsTNzfJdNZzyohGec%2BxDaPewpwya87zoH5jG8yG5ouV1akQjnRdrX5o1ukf6Av3W6Pl4MrukRCkwGtDLrBW6DSYF\"}]}","server":"cloudflare","cf-ray":"9c7a3923cee1d260-FRA","alt-svc":"h3=\":443\"; ma=86400"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie1171532 b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie1171532 new file mode 100644 index 0000000..f174d46 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie1171532 @@ -0,0 +1 @@ +{"adult":false,"backdrop_path":"/u2dKiAl7UQ9sTwhqzFxVpCnjyYT.jpg","belongs_to_collection":null,"budget":0,"genres":[{"id":28,"name":"Action"},{"id":10749,"name":"Romance"}],"homepage":"","id":1171532,"imdb_id":"tt27577888","origin_country":["IN"],"original_language":"ta","original_title":"ரத்னம்","overview":"Rathnam, a henchmen working for MLA Panneer Selvam in Vellore, protects Malliga, a medical student who bears a resemblance to Rathnam's late mother, from the relentless pursuit of land grabbers Rayudu brothers and becomes her guardian angel.","popularity":0.6786,"poster_path":"/j35uUmrMgWNQHrs0Obi8ll0OVfe.jpg","production_companies":[{"id":95823,"logo_path":"/guoPHeFGMZSXvMnF8zNnOgWPuGO.png","name":"Stone Bench Creations","origin_country":"IN"},{"id":86347,"logo_path":"/ir79iQBhrXk9PJ5Pr9vlLjM4viO.png","name":"Zee Studios","origin_country":"IN"}],"production_countries":[{"iso_3166_1":"IN","name":"India"}],"release_date":"2024-04-26","revenue":0,"runtime":159,"spoken_languages":[{"english_name":"Tamil","iso_639_1":"ta","name":"தமிழ்"}],"status":"Released","tagline":"","title":"Rathnam","video":false,"vote_average":5.273,"vote_count":11} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie931944 b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie931944 new file mode 100644 index 0000000..a894124 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3movie931944 @@ -0,0 +1 @@ +{"adult":false,"backdrop_path":"/9oD95lebaaSNQHnLTLjjfITaCg7.jpg","belongs_to_collection":null,"budget":0,"genres":[{"id":18,"name":"Drama"},{"id":9648,"name":"Mystery"},{"id":36,"name":"History"},{"id":27,"name":"Horror"}],"homepage":"","id":931944,"imdb_id":"tt29141112","origin_country":["AT","DE"],"original_language":"de","original_title":"Des Teufels Bad","overview":"In 1750 Austria, a deeply religious woman named Agnes has just married her beloved, but her mind and heart soon grow heavy as her life becomes a long list of chores and expectations. Day after day, she is increasingly trapped in a murky and lonely path leading to evil thoughts, until the possibility of committing a shocking act of violence seems like the only way out of her inner prison.","popularity":4.649,"poster_path":"/txVfrmwFOKB5qczM0ENYSqKMnSv.jpg","production_companies":[{"id":25523,"logo_path":"/hVnHNJUHSxaTpQdWPzC8B5CRvns.png","name":"Ulrich Seidl Filmproduktion","origin_country":"AT"},{"id":23406,"logo_path":"/BTYR4mdM8dQxK0cK0gPVhkXd8j.png","name":"Heimatfilm","origin_country":"DE"},{"id":122,"logo_path":"/pbRxJ8oia1MypvLbukeamObtYr2.png","name":"Coop99 Filmproduktion","origin_country":"AT"}],"production_countries":[{"iso_3166_1":"AT","name":"Austria"},{"iso_3166_1":"DE","name":"Germany"}],"release_date":"2024-03-08","revenue":0,"runtime":121,"spoken_languages":[{"english_name":"German","iso_639_1":"de","name":"Deutsch"}],"status":"Released","tagline":"","title":"The Devil's Bath","video":false,"vote_average":6.6,"vote_count":151} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3tv66732 b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3tv66732 new file mode 100644 index 0000000..00c84a3 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:api.themoviedb.org3tv66732 @@ -0,0 +1 @@ +{"adult":false,"backdrop_path":"/8zbAoryWbtH0DKdev8abFAjdufy.jpg","created_by":[{"id":1179422,"credit_id":"57599b039251410a99001cce","name":"Ross Duffer","original_name":"Ross Duffer","gender":2,"profile_path":"/7wdhSHgMLry5jBKJT1mdLT3BYaZ.jpg"},{"id":1179419,"credit_id":"57599b0e925141378a002c87","name":"Matt Duffer","original_name":"Matt Duffer","gender":2,"profile_path":"/kXO5CnSxC0znMAICGxnPeuGP73U.jpg"}],"episode_run_time":[],"first_air_date":"2016-07-15","genres":[{"id":10765,"name":"Sci-Fi & Fantasy"},{"id":9648,"name":"Mystery"},{"id":10759,"name":"Action & Adventure"}],"homepage":"https://www.netflix.com/title/80057281","id":66732,"in_production":false,"languages":["en"],"last_air_date":"2025-12-31","last_episode_to_air":{"id":5607051,"name":"Chapter Eight: The Rightside Up","overview":"As Vecna prepares to destroy the world as we know it, the party must put everything on the line to defeat him once and for all.","vote_average":6.769,"vote_count":180,"air_date":"2025-12-31","episode_number":8,"episode_type":"finale","production_code":"","runtime":129,"season_number":5,"show_id":66732,"still_path":"/kP23RWbUWM6vGhT9PxFyP5VT3y4.jpg"},"name":"Stranger Things","next_episode_to_air":null,"networks":[{"id":213,"logo_path":"/wwemzKWzjKYJFfCeiB57q3r4Bcm.png","name":"Netflix","origin_country":""}],"number_of_episodes":42,"number_of_seasons":5,"origin_country":["US"],"original_language":"en","original_name":"Stranger Things","overview":"When a young boy vanishes, a small town uncovers a mystery involving secret experiments, terrifying supernatural forces, and one strange little girl.","popularity":364.1766,"poster_path":"/uOOtwVbSr4QDjAGIifLDwpb2Pdl.jpg","production_companies":[{"id":2575,"logo_path":"/9YJrHYlcfHtwtulkFMAies3aFEl.png","name":"21 Laps Entertainment","origin_country":"US"},{"id":170090,"logo_path":null,"name":"Monkey Massacre Productions","origin_country":"US"},{"id":184664,"logo_path":"/4qv40ryAKUzvwptbv13eXUAl1Wm.png","name":"Upside Down Pictures","origin_country":"US"}],"production_countries":[{"iso_3166_1":"US","name":"United States of America"}],"seasons":[{"air_date":"2016-07-15","episode_count":8,"id":77680,"name":"Season 1","overview":"Strange things are afoot in Hawkins, Indiana, where a young boy's sudden disappearance unearths a young girl with otherworldly powers.","poster_path":"/fOaUnQwDJV22esXEswhaDMSqn2w.jpg","season_number":1,"vote_average":8.4},{"air_date":"2017-10-27","episode_count":9,"id":83248,"name":"Stranger Things 2","overview":"It's been nearly a year since Will's strange disappearance. But life's hardly back to normal in Hawkins. Not even close.","poster_path":"/74nFJmiapxKuUBXRbSu6VqGGcuo.jpg","season_number":2,"vote_average":8.2},{"air_date":"2019-07-04","episode_count":8,"id":115216,"name":"Stranger Things 3","overview":"Budding romance. A brand-new mall. And rabid rats running toward danger. It's the summer of 1985 in Hawkins ... and one summer can change everything.","poster_path":"/x2LSRK2Cm7MZhjluni1msVJ3wDF.jpg","season_number":3,"vote_average":8.1},{"air_date":"2022-05-27","episode_count":9,"id":163313,"name":"Stranger Things 4","overview":"Darkness returns to Hawkins just in time for spring break, igniting fresh terror, disturbing memories — and an ominous new threat.","poster_path":"/zvGTZYDCoMSMIBkXExxRxLYimqN.jpg","season_number":4,"vote_average":8.5},{"air_date":"2025-11-26","episode_count":8,"id":402292,"name":"Stranger Things 5","overview":"The fall of 1987. Hawkins is scarred by rifts. Vecna has vanished and the government has placed the town under military quarantine, forcing Eleven back into hiding. To end this nightmare, they'll need everyone together, one last time.","poster_path":"/5i5Fg549J27knMvhI5NRM2FT3Gn.jpg","season_number":5,"vote_average":7.3}],"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Ended","tagline":"It only gets stranger...","type":"Scripted","vote_average":8.581,"vote_count":20501} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfmoviesrathnam-1080p-720p-hindi-download-1171532 b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfmoviesrathnam-1080p-720p-hindi-download-1171532 new file mode 100644 index 0000000..863414b --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfmoviesrathnam-1080p-720p-hindi-download-1171532 @@ -0,0 +1,138 @@ + + + + + + + + Rathnam — Movie + + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ Rathnam +
+

Rathnam

+

Rating: 5.273 / 10 ⭐

+

Genres: Action, Romance

+

Release Date: 2024-04-26

+

Audios: Hindi

+

Sources: Amazon

+

Rathnam, a henchmen working for MLA Panneer Selvam in Vellore, protects Malliga, a medical student who bears a resemblance to Rathnam's late mother, from the relentless pursuit of land grabbers Rayudu brothers and becomes her guardian angel.

+
+

Star Cast:

+

Vishal Krishna, Priya Bhavani Shankar, Samuthirakani, Murali Sharma, Hareesh Peradi

+
+

Download Links:

Amazon Versions(4)
Rathnam.2024.720p.AMZN.WEB-DL.DDP2.0.H.265-XDMovies.mkv
1.30 GB
Rathnam.2024.720p.AMZN.WEB-DL.DDP2.0.H.264-XDMovies.mkv
4.61 GB
Rathnam.2024.1080p.AMZN.WEB-DL.DDP2.0.H.265-XDMovies.mkv
3.80 GB
Rathnam.2024.1080p.AMZN.WEB-DL.DDP2.0.H.264-XDMovies.mkv
8.48 GB
+ + + + +
+
+
+
+ +
+

© 2025 XDMovies

+
+ + + + + \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpget_token.php b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpget_token.php new file mode 100644 index 0000000..77fa270 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpget_token.php @@ -0,0 +1 @@ +{"token":"7297skkihkajwnsgaklakshuwd"} \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryRathnamandfuzzytrue b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryRathnamandfuzzytrue new file mode 100644 index 0000000..e8084d1 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryRathnamandfuzzytrue @@ -0,0 +1 @@ +[{"id":1565591,"tmdb_id":1171532,"title":"Rathnam","type":"movie","poster":"\/j35uUmrMgWNQHrs0Obi8ll0OVfe.jpg","release_year":"2024","path":"\/movies\/rathnam-1080p-720p-hindi-download-1171532","qualities":["1080p","720p"],"audio_languages":"Hindi"}] \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryStrangerpercent20Thingsandfuzzytrue b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryStrangerpercent20Thingsandfuzzytrue new file mode 100644 index 0000000..96a6062 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryStrangerpercent20Thingsandfuzzytrue @@ -0,0 +1 @@ +[{"id":196,"tmdb_id":66732,"title":"Stranger Things","type":"tv","poster":"\/cVxVGwHce6xnW8UaVUggaPXbmoE.jpg","release_year":"2016","path":"\/series\/stranger-things-2160p-1080p-hindi-english-download-66732","qualities":["2160p","1080p"],"audio_languages":"Hindi, English, Tamil, Telugu"},{"id":1565254,"tmdb_id":1610413,"title":"One Last Adventure: The Making of Stranger Things 5","type":"movie","exact_match":0,"poster":"\/aZhrAx5CevLfjXcGIG3wBXxDiAL.jpg","release_year":"2026","path":"\/movies\/one-last-adventure-the-making-of-stranger-things-5-1080p-720p-hindi-english-download-1610413","qualities":["1080p","720p"],"audio_languages":"Hindi, English "},{"id":166,"tmdb_id":1525025,"title":"A Stranger by the Hill","type":"movie","exact_match":0,"poster":"\/1DK8gt7H99ctCPKt57lyoDG5dpe.jpg","release_year":"2024","path":"\/movies\/a-stranger-by-the-hill-1080p-720p-hindi-download-1525025","qualities":["1080p","720p"],"audio_languages":"Hindi"},{"id":2427,"tmdb_id":1389255,"title":"The Stranger in My Home","type":"movie","exact_match":0,"poster":"\/8rxFUdvtFwAxbyZfSBKPB2Vaal9.jpg","release_year":"2025","path":"\/movies\/the-stranger-in-my-home-2160p-1080p-hindi-english-download-1389255","qualities":["2160p","1080p"],"audio_languages":"Hindi, English "},{"id":1565521,"tmdb_id":48781,"title":"Never Talk to Strangers","type":"movie","exact_match":0,"poster":"\/naZWa06duMvKr4dLrPGgl9yrPZ1.jpg","release_year":"1995","path":"\/movies\/never-talk-to-strangers-1080p-english-download-48781","qualities":["1080p"],"audio_languages":"English"},{"id":2410,"tmdb_id":1010756,"title":"The Strangers: Chapter 2","type":"movie","exact_match":0,"poster":"\/pqADzs5SJvI2jC0DThPVMuNJcWS.jpg","release_year":"2025","path":"\/movies\/the-strangers-chapter-2-1080p-english-download-1010756","qualities":["1080p"],"audio_languages":"English"},{"id":1565325,"tmdb_id":1240592,"title":"The Wild Blade of Strangers","type":"movie","exact_match":0,"poster":"\/9DZOU5qibB8WeXtzQ00Nl6tiqfw.jpg","release_year":"2024","path":"\/movies\/the-wild-blade-of-strangers-1080p-720p-hindi-tamil-download-1240592","qualities":["1080p","720p"],"audio_languages":"Hindi, Tamil, Telugu, Chinese "},{"id":1565283,"tmdb_id":371608,"title":"The Strangers: Prey at Night","type":"movie","exact_match":0,"poster":"\/vdxLpPsZkPZdFrREp7eSeSzcimj.jpg","release_year":"2018","path":"\/movies\/the-strangers-prey-at-night-1080p-720p-hindi-english-download-371608","qualities":["1080p","720p"],"audio_languages":"Hindi, English"},{"id":152,"tmdb_id":70626,"title":"Stranger","type":"tv","exact_match":0,"poster":"\/blbbtx7DyvZ3JTGyc9MCArDL79b.jpg","release_year":"2017","path":"\/series\/stranger-1080p-hindi-korean-download-70626","qualities":["1080p"],"audio_languages":"Hindi , Korean"},{"id":980,"tmdb_id":60956,"title":"Doctor Stranger","type":"tv","exact_match":0,"poster":"\/odH9cebqUNHKh1p6BKVSs0gsD34.jpg","release_year":"2014","path":"\/series\/doctor-stranger-1080p-korean-download-60956","qualities":["1080p"],"audio_languages":"Korean "},{"id":637,"tmdb_id":89959,"title":"Strangers from Hell","type":"tv","exact_match":0,"poster":"\/o66rEzPzZZWxSrcus2f46CedHhq.jpg","release_year":"2019","path":"\/series\/strangers-from-hell-1080p-720p-english-download-89959","qualities":["1080p","720p"],"audio_languages":"English "}] \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryThepercent20Devilpercent27spercent20Bathandfuzzytrue b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryThepercent20Devilpercent27spercent20Bathandfuzzytrue new file mode 100644 index 0000000..70f9ad2 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfphpsearch_api.phpqueryThepercent20Devilpercent27spercent20Bathandfuzzytrue @@ -0,0 +1 @@ +[{"id":1564199,"tmdb_id":1314452,"title":"Other","type":"movie","exact_match":0,"poster":"\/uRXrWxF5wh5MUPB6yGXGWd1NJy3.jpg","release_year":"2025","path":"\/movies\/other-1080p-720p-english-download-1314452","qualities":["1080p","720p"],"audio_languages":"English"},{"id":1565190,"tmdb_id":1531058,"title":"Others","type":"movie","exact_match":0,"poster":"\/2rdDxephzH5bpp3Z5aKf55evRbA.jpg","release_year":"2025","path":"\/movies\/others-1080p-720p-hindi-tamil-download-1531058","qualities":["1080p","720p"],"audio_languages":"Hindi, Tamil, Telugu, Marathi, Bengali"},{"id":117,"tmdb_id":1174481,"title":"The 47","type":"movie","exact_match":0,"poster":"\/gPEvUtPn4ohYMWavYRK7kAbQ8Zw.jpg","release_year":"2024","path":"\/movies\/the-47-1080p-720p-hindi-spanish-download-1174481","qualities":["1080p","720p"],"audio_languages":"Hindi, Spanish"},{"id":1565159,"tmdb_id":931940,"title":"The Fix","type":"movie","exact_match":0,"poster":"\/vY7bY2xZymoIOti4WM5K29OMzCS.jpg","release_year":"2024","path":"\/movies\/the-fix-1080p-720p-hindi-english-download-931940","qualities":["1080p","720p"],"audio_languages":"Hindi, English"},{"id":2127,"tmdb_id":1215798,"title":"The Cut","type":"movie","exact_match":0,"poster":"\/6iseyProRsPyu3rOCzsXDDnDGrl.jpg","release_year":"2025","path":"\/movies\/the-cut-2160p-1080p-english-download-1215798","qualities":["2160p","1080p","720p"],"audio_languages":"English"},{"id":1457,"tmdb_id":1503551,"title":"The 100","type":"movie","exact_match":0,"poster":"\/vY7OxwSmJdrdcNWVyimkly12ufe.jpg","release_year":"2025","path":"\/movies\/the-100-1080p-720p-malayalam-tamil-download-1503551","qualities":["1080p","720p"],"audio_languages":"Malayalam, Tamil, Telugu, Kannada"},{"id":1565331,"tmdb_id":1306368,"title":"The Rip","type":"movie","exact_match":0,"poster":"\/p4bW2sJKAwcHuLpfoZK7Zo63osA.jpg","release_year":"2026","path":"\/movies\/the-rip-1080p-720p-hindi-english-download-1306368","qualities":["1080p","720p"],"audio_languages":"Hindi, English, Tamil, Telugu"},{"id":2127,"tmdb_id":1215798,"title":"The Cut","type":"movie","exact_match":0,"poster":"\/6iseyProRsPyu3rOCzsXDDnDGrl.jpg","release_year":"2025","path":"\/movies\/the-cut-2160p-1080p-english-download-1215798","qualities":["2160p","1080p","720p"],"audio_languages":"English"},{"id":584,"tmdb_id":1461114,"title":"The Door","type":"movie","exact_match":0,"poster":"\/2fTLOS6y3v8SCbkFFRagmYXVZTm.jpg","release_year":"2025","path":"\/movies\/the-door-1080p-720p-hindi-tamil-download-1461114","qualities":["1080p","720p"],"audio_languages":"Hindi, Tamil"},{"id":2207,"tmdb_id":783598,"title":"The Goal","type":"movie","exact_match":0,"poster":"\/iRf6SAgZ5vdJltVHisVvRieKn1t.jpg","release_year":"1999","path":"\/movies\/the-goal-1080p-720p-hindi-download-783598","qualities":["1080p","720p"],"audio_languages":"Hindi"},{"id":1468,"tmdb_id":1204660,"title":"The Twin","type":"movie","exact_match":0,"poster":"\/s43zuayHz2P6VRfSskz9eWjUrM8.jpg","release_year":"2024","path":"\/movies\/the-twin-1080p-720p-english-download-1204660","qualities":["1080p","720p"],"audio_languages":"English"},{"id":2125,"tmdb_id":926606,"title":"The Home","type":"movie","exact_match":0,"poster":"\/qyGY1k5GqAORsVhfZA3gFKirZWD.jpg","release_year":"2025","path":"\/movies\/the-home-2160p-1080p-hindi-english-download-926606","qualities":["2160p","1080p","720p"],"audio_languages":"Hindi, English, Tamil"},{"id":2059,"tmdb_id":575604,"title":"The Call","type":"movie","exact_match":0,"poster":"\/oz8hvZHg7tIdGwh0ErPRhobJKPR.jpg","release_year":"2020","path":"\/movies\/the-call-1080p-720p-korean-english-download-575604","qualities":["1080p","720p"],"audio_languages":"Korean, English"},{"id":86,"tmdb_id":865910,"title":"The Plot","type":"movie","exact_match":0,"poster":"\/pBZ1N68Ral2rtNzeQAmGFhDadq0.jpg","release_year":"2024","path":"\/movies\/the-plot-1080p-hindi-korean-download-865910","qualities":["1080p"],"audio_languages":"Hindi, Korean"},{"id":1565033,"tmdb_id":1242011,"title":"Together","type":"movie","exact_match":0,"poster":"\/m52XidzKx94bKlToZfEXUnL3pdy.jpg","release_year":"2025","path":"\/movies\/together-1080p-720p-hindi-tamil-download-1242011","qualities":["1080p","720p"],"audio_languages":"Hindi, Tamil, Telugu, English"},{"id":1565369,"tmdb_id":227156,"title":"The Giver","type":"movie","exact_match":0,"poster":"\/dul62Av4pgi5x8LP7ELHzNyka9Z.jpg","release_year":"2014","path":"\/movies\/the-giver-1080p-english-download-227156","qualities":["1080p"],"audio_languages":"English"},{"id":1564238,"tmdb_id":1267905,"title":"The Roses","type":"movie","exact_match":0,"poster":"\/98n5HnCJ5LnXKIMNP9SBfVNyxCE.jpg","release_year":"2025","path":"\/movies\/the-roses-2160p-1080p-english-download-1267905","qualities":["2160p","1080p","720p"],"audio_languages":"English"},{"id":1564356,"tmdb_id":1569849,"title":"The Error","type":"movie","exact_match":0,"poster":"\/kgXYHZP7VPsoAw6GxjxX5ANyH3V.jpg","release_year":"2025","path":"\/movies\/the-error-2160p-1080p-punjabi-download-1569849","qualities":["2160p","1080p","720p"],"audio_languages":"Punjabi"},{"id":1565510,"tmdb_id":868666,"title":"The Ghost","type":"movie","exact_match":0,"poster":"\/AulIkX8l9u17lcQfEubU8n0cnwk.jpg","release_year":"2022","path":"\/movies\/the-ghost-1080p-720p-hindi-download-868666","qualities":["1080p","720p"],"audio_languages":"Hindi"},{"id":2459,"tmdb_id":927254,"title":"The Twits","type":"movie","exact_match":0,"poster":"\/izYZGeOHhPWiga8Hb5P4JYfcH8T.jpg","release_year":"2025","path":"\/movies\/the-twits-1080p-720p-hindi-english-download-927254","qualities":["1080p","720p"],"audio_languages":"Hindi, English, Tamil, Telugu"}] \ No newline at end of file diff --git a/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfseriesstranger-things-2160p-1080p-hindi-english-download-66732 b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfseriesstranger-things-2160p-1080p-hindi-english-download-66732 new file mode 100644 index 0000000..1930714 --- /dev/null +++ b/src/source/__fixtures__/XDMovies/https:new.xdmovies.wtfseriesstranger-things-2160p-1080p-hindi-english-download-66732 @@ -0,0 +1,165 @@ + + + + + + + + Stranger Things — Series + + + + + + + + + + + + +
+ +
+ +
+
+
+
+
+ Stranger Things +
+

Stranger Things

+

Rating: 8.6 / 10 ⭐

+

Genres: Sci-Fi & Fantasy, Mystery, Action & Adventure

+

First Air Date: 2016-07-15

+

Audios: Hindi, English, Tamil, Telugu

+

Sources: Netflix, BluRay

+

When a young boy vanishes, a small town uncovers a mystery involving secret experiments, terrifying supernatural forces, and one strange little girl.

+
+

Star Cast:

+

Millie Bobby Brown, Finn Wolfhard, Gaten Matarazzo, Caleb McLaughlin, Noah Schnapp

+
+ + +
+
+ + Note from Admins +
+
NF WEB-DL's are Multi Language.
+
+ + + +
+
+
+
+ +
+

© 2025 XDMovies

+
+ + + + + \ No newline at end of file diff --git a/src/source/__snapshots__/XDMovies.test.ts.snap b/src/source/__snapshots__/XDMovies.test.ts.snap new file mode 100644 index 0000000..7b6fe2c --- /dev/null +++ b/src/source/__snapshots__/XDMovies.test.ts.snap @@ -0,0 +1,166 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`XDMovies handle non-existent devil's bath 2024 gracefully 1`] = `[]`; + +exports[`XDMovies handle rathnam 2024 1`] = ` +[ + { + "meta": { + "bytes": 1395864371, + "countryCodes": [ + "multi", + "hi", + ], + "height": 720, + "title": "Rathnam.2024.720p.AMZN.WEB-DL.DDP2.0.H.265-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/qgdndi5j1rvil2l", + }, + { + "meta": { + "bytes": 4949949808, + "countryCodes": [ + "multi", + "hi", + ], + "height": 720, + "title": "Rathnam.2024.720p.AMZN.WEB-DL.DDP2.0.H.264-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/iy7587kppeg6b6p", + }, + { + "meta": { + "bytes": 4080218931, + "countryCodes": [ + "multi", + "hi", + ], + "height": 1080, + "title": "Rathnam.2024.1080p.AMZN.WEB-DL.DDP2.0.H.265-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/oae0mzzzje1xrvy", + }, + { + "meta": { + "bytes": 9105330667, + "countryCodes": [ + "multi", + "hi", + ], + "height": 1080, + "title": "Rathnam.2024.1080p.AMZN.WEB-DL.DDP2.0.H.264-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/dn5g8g5drixrrl1", + }, +] +`; + +exports[`XDMovies handle stranger things s05e08 1`] = ` +[ + { + "meta": { + "bytes": 17544941404, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 2160, + "title": "Stranger.Things.S05E08.2160p.NF.WEB-DL.DDP5.1.H.265-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/k7sgskvmmzppzap", + }, + { + "meta": { + "bytes": 1513975971, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 1080, + "title": "Stranger.Things.S05E08.1080p.NF.WEB-DL.AAC5.1.AV1-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/ft5h778dgcot8yd", + }, + { + "meta": { + "bytes": 5508295557, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 1080, + "title": "Stranger.Things.S05E08.1080p.NF.WEB-DL.DDP5.1.H.265-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/d140ytrad4r228o", + }, + { + "meta": { + "bytes": 7215545057, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 1080, + "title": "Stranger.Things.S05E08.1080p.NF.WEB-DL.DDP5.1.Atmos.H.264-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/8mxktxm8ho4ib44", + }, + { + "meta": { + "bytes": 5991479377, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 1080, + "title": "Stranger.Things.S05E08.1080p.NF.WEB-DL.DDP5.1.DV.HDR.H.265-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/bzxqjl1vkvdxsvy", + }, + { + "meta": { + "bytes": 1170378588, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 720, + "title": "Stranger.Things.S05E08.720p.NF.WEB-DL.AAC5.1.AV1-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/vfhor1uv59jkrha", + }, + { + "meta": { + "bytes": 2534030704, + "countryCodes": [ + "multi", + "en", + "hi", + "ta", + "te", + ], + "height": 720, + "title": "Stranger.Things.S05E08.720p.NF.WEB-DL.AAC5.1.H.264-XDMovies.mkv", + }, + "url": "https://hubcloud.foo/drive/njntlayllkcrtb1", + }, +] +`; diff --git a/src/source/index.ts b/src/source/index.ts index 2cf1b5b..982c795 100644 --- a/src/source/index.ts +++ b/src/source/index.ts @@ -19,6 +19,7 @@ import { StreamKiste } from './StreamKiste'; import { VerHdLink } from './VerHdLink'; import { VidSrc } from './VidSrc'; import { VixSrc } from './VixSrc'; +import { XDMovies } from './XDMovies'; export * from './Source'; @@ -28,6 +29,7 @@ export const createSources = (fetcher: Fetcher): Source[] => { return [ // multi new FourKHDHub(fetcher), + new XDMovies(fetcher), new VixSrc(fetcher), new VidSrc(), new RgShows(fetcher), diff --git a/src/utils/__snapshots__/manifest.test.ts.snap b/src/utils/__snapshots__/manifest.test.ts.snap index 0a31055..12faaff 100644 --- a/src/utils/__snapshots__/manifest.test.ts.snap +++ b/src/utils/__snapshots__/manifest.test.ts.snap @@ -11,7 +11,7 @@ exports[`buildManifest default manifest 1`] = ` "config": [ { "key": "multi", - "title": "Multi 🌐 (4KHDHub, RgShows, VidSrc, VixSrc)", + "title": "Multi 🌐 (4KHDHub, RgShows, VidSrc, VixSrc, XDMovies)", "type": "checkbox", }, { @@ -19,6 +19,11 @@ exports[`buildManifest default manifest 1`] = ` "title": "Albanian 🇦🇱 (Kokoshka)", "type": "checkbox", }, + { + "key": "bl", + "title": "Bengali 🇮🇳 (XDMovies)", + "type": "checkbox", + }, { "key": "de", "title": "German 🇩🇪 (Einschalten, KinoGer, MegaKino, MeineCloud, StreamKiste)", @@ -34,9 +39,14 @@ exports[`buildManifest default manifest 1`] = ` "title": "French 🇫🇷 (Frembed, FrenchCloud, Movix)", "type": "checkbox", }, + { + "key": "gu", + "title": "Gujarati 🇮🇳 (XDMovies)", + "type": "checkbox", + }, { "key": "hi", - "title": "Hindi 🇮🇳 (4KHDHub)", + "title": "Hindi 🇮🇳 (4KHDHub, XDMovies)", "type": "checkbox", }, { @@ -44,19 +54,49 @@ exports[`buildManifest default manifest 1`] = ` "title": "Italian 🇮🇹 (Eurostreaming, MostraGuarda, VixSrc)", "type": "checkbox", }, + { + "key": "ja", + "title": "Japanese 🇯🇵 (XDMovies)", + "type": "checkbox", + }, + { + "key": "kn", + "title": "Kannada 🇮🇳 (XDMovies)", + "type": "checkbox", + }, + { + "key": "ko", + "title": "Korean 🇰🇷 (XDMovies)", + "type": "checkbox", + }, + { + "key": "ml", + "title": "Malayalam 🇮🇳 (XDMovies)", + "type": "checkbox", + }, + { + "key": "mr", + "title": "Marathi 🇮🇳 (XDMovies)", + "type": "checkbox", + }, { "key": "mx", "title": "Latin American Spanish 🇲🇽 (CineHDPlus, Cuevana, HomeCine, VerHdLink)", "type": "checkbox", }, + { + "key": "pa", + "title": "Punjabi 🇮🇳 (XDMovies)", + "type": "checkbox", + }, { "key": "ta", - "title": "Tamil 🇮🇳 (4KHDHub)", + "title": "Tamil 🇮🇳 (4KHDHub, XDMovies)", "type": "checkbox", }, { "key": "te", - "title": "Telugu 🇮🇳 (4KHDHub)", + "title": "Telugu 🇮🇳 (4KHDHub, XDMovies)", "type": "checkbox", }, { @@ -84,9 +124,9 @@ exports[`buildManifest default manifest 1`] = ` ], "description": "Provides HTTP URLs from streaming websites. Configure add-on for additional languages. Add MediaFlow proxy for more URLs. -Supported languages: Albanian, German, Castilian Spanish, French, Hindi, Italian, Latin American Spanish, Tamil, Telugu +Supported languages: Albanian, Bengali, German, Castilian Spanish, French, Gujarati, Hindi, Italian, Japanese, Kannada, Korean, Malayalam, Marathi, Latin American Spanish, Punjabi, Tamil, Telugu -Supported sources: 4KHDHub, CineHDPlus, Cuevana, Einschalten, Eurostreaming, Frembed, FrenchCloud, HomeCine, KinoGer, Kokoshka, MegaKino, MeineCloud, MostraGuarda, Movix, RgShows, StreamKiste, VerHdLink, VidSrc, VixSrc +Supported sources: 4KHDHub, CineHDPlus, Cuevana, Einschalten, Eurostreaming, Frembed, FrenchCloud, HomeCine, KinoGer, Kokoshka, MegaKino, MeineCloud, MostraGuarda, Movix, RgShows, StreamKiste, VerHdLink, VidSrc, VixSrc, XDMovies Supported extractors: ", "id": "webstreamr",