From 0269e85a8f3402d9bf0153c87fccfc87cc78451c Mon Sep 17 00:00:00 2001 From: Joe Ipson Date: Mon, 13 Feb 2023 18:00:15 -0700 Subject: [PATCH] Fixed issue with ESPN vs fox chunklist urls --- README.md | 2 +- package-lock.json | 4 ++-- package.json | 2 +- services/playlist-handler.ts | 15 +++++++++------ 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 6546378..b0b80fd 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@

-Current version: **2.0.6** +Current version: **2.0.7** # About This takes ESPN/ESPN+, FOX Sports, and NBC Sports programming and transforms it into a "live TV" experience with virtual linear channels. It will discover what is on, and generate a schedule of channels that will give you M3U and XMLTV files that you can import into something like [Jellyfin](https://jellyfin.org), [Channels](https://getchannels.com), or [xTeVe](https://github.com/xteve-project/xTeVe). diff --git a/package-lock.json b/package-lock.json index 9a90a87..236fb62 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "eplustv", - "version": "2.0.6", + "version": "2.0.7", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "eplustv", - "version": "2.0.6", + "version": "2.0.7", "license": "MIT", "dependencies": { "axios": "^1.2.2", diff --git a/package.json b/package.json index 789ad8d..6c8e61c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "eplustv", - "version": "2.0.6", + "version": "2.0.7", "description": "", "main": "index.js", "scripts": { diff --git a/services/playlist-handler.ts b/services/playlist-handler.ts index a4bf98b..e081009 100644 --- a/services/playlist-handler.ts +++ b/services/playlist-handler.ts @@ -12,12 +12,15 @@ const createBaseUrl = (url: string): string => { const cleaned = url.replace(/\.m3u8.*$/, ''); return cleaned.substring(0, cleaned.lastIndexOf('/') + 1); }; -const createBaseUrlChunklist = (url: string): string => { +const createBaseUrlChunklist = (url: string, network: string): string => { const cleaned = url.replace(/\.m3u8.*$/, ''); - const filteredUrl = cleaned - .split('/') - .filter(seg => !seg.match(/=/)) - .join('/'); + let filteredUrl: string[] | string = cleaned.split('/'); + + if (network === 'foxsports') { + filteredUrl = filteredUrl.filter(seg => !seg.match(/=/)); + } + + filteredUrl = filteredUrl.join('/'); return filteredUrl.substring(0, filteredUrl.lastIndexOf('/') + 1); }; const usesHostRoot = (url: string): boolean => url.startsWith('/'); @@ -245,7 +248,7 @@ export class PlaylistHandler { }); const realChunklistUrl = request.res.responseUrl; - const baseManifestUrl = cleanUrl(createBaseUrlChunklist(realChunklistUrl)); + const baseManifestUrl = cleanUrl(createBaseUrlChunklist(realChunklistUrl, this.network)); const urlParams = new URL(realChunklistUrl).search; if (!this.segmentDuration) {