From d1fcd671c9646ef923ff7bd8bcb2fe7ad0d599b1 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Sat, 10 Jan 2026 22:27:14 +0000 Subject: [PATCH] fix(extractor): support non-HLS streams in RgShows --- src/extractor/RgShows.test.ts | 4 ++++ src/extractor/RgShows.ts | 10 ++++++---- .../https:api.rgshows.rumainmovie496243 | 1 + .../__snapshots__/RgShows.test.ts.snap | 20 +++++++++++++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/extractor/__fixtures__/RgShows/https:api.rgshows.rumainmovie496243 diff --git a/src/extractor/RgShows.test.ts b/src/extractor/RgShows.test.ts index 689811b..0d94d98 100644 --- a/src/extractor/RgShows.test.ts +++ b/src/extractor/RgShows.test.ts @@ -17,4 +17,8 @@ describe('RgShows', () => { test('handle stranger things s05e01', async () => { expect(await extractorRegistry.handle(ctx, new URL('https://api.rgshows.ru/main/tv/66732/5/1'))).toMatchSnapshot(); }); + + test('handle parasite 2019 (mp4)', async () => { + expect(await extractorRegistry.handle(ctx, new URL('https://api.rgshows.ru/main/movie/496243'))).toMatchSnapshot(); + }); }); diff --git a/src/extractor/RgShows.ts b/src/extractor/RgShows.ts index 37f9d29..f27349d 100644 --- a/src/extractor/RgShows.ts +++ b/src/extractor/RgShows.ts @@ -26,17 +26,19 @@ export class RgShows extends Extractor { const data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData; - const playlistUrl = new URL(data.stream.url); + const streamUrl = new URL(data.stream.url); + const isMp4 = streamUrl.href.includes('mp4'); + const isHls = streamUrl.href.includes('m3u8') || streamUrl.href.includes('txt'); return [ { - url: playlistUrl, - format: Format.hls, + url: streamUrl, + format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown), label: this.label, ttl: this.ttl, meta: { ...meta, - height: await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, url, { headers }), + ...(isHls && { height: await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, url, { headers }) }), }, requestHeaders: headers, }, diff --git a/src/extractor/__fixtures__/RgShows/https:api.rgshows.rumainmovie496243 b/src/extractor/__fixtures__/RgShows/https:api.rgshows.rumainmovie496243 new file mode 100644 index 0000000..8576880 --- /dev/null +++ b/src/extractor/__fixtures__/RgShows/https:api.rgshows.rumainmovie496243 @@ -0,0 +1 @@ +{"stream":{"url":"https://khdiamondcdn.asia/gs/87EU555O0I0056A?q=.mp4"}} \ No newline at end of file diff --git a/src/extractor/__snapshots__/RgShows.test.ts.snap b/src/extractor/__snapshots__/RgShows.test.ts.snap index a991142..8fb5df7 100644 --- a/src/extractor/__snapshots__/RgShows.test.ts.snap +++ b/src/extractor/__snapshots__/RgShows.test.ts.snap @@ -21,6 +21,26 @@ exports[`RgShows handle one battle after another 1`] = ` ] `; +exports[`RgShows handle parasite 2019 (mp4) 1`] = ` +[ + { + "format": "mp4", + "label": "RgShows", + "meta": { + "countryCodes": [], + "extractorId": "rgshows", + }, + "requestHeaders": { + "Origin": "https://rgshows.ru", + "Referer": "https://rgshows.ru/", + "User-Agent": "Mozilla", + }, + "ttl": 10800000, + "url": "https://khdiamondcdn.asia/gs/87EU555O0I0056A?q=.mp4", + }, +] +`; + exports[`RgShows handle stranger things s05e01 1`] = ` [ {