From 4c164ee6b6749dba2f7c1fa61ddcaefca021bfd5 Mon Sep 17 00:00:00 2001 From: Aidan Juma Date: Sat, 17 Dec 2022 22:58:54 +0000 Subject: [PATCH] fix(mixdrop): positive look-behind issue, iOS/Expo iOS client-side bug on the web and/or Expo: causes issues with this extractor in the use cases described. This is due to an old spec. being supported in the case of iOS, and I am unsure in the case of Expo. --- dist/extractors/mixdrop.js | 5 +++-- dist/extractors/mixdrop.js.map | 2 +- src/extractors/mixdrop.ts | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/dist/extractors/mixdrop.js b/dist/extractors/mixdrop.js index 57109c2cd..e4400d760 100644 --- a/dist/extractors/mixdrop.js +++ b/dist/extractors/mixdrop.js @@ -16,14 +16,15 @@ class MixDrop extends models_1.VideoExtractor { const { data } = await axios_1.default.get(videoUrl.href); const match = (0, cheerio_1.load)(data) .html() - .match(/(?<=p}\().*(?<=wurl).*\}/g); + .match(/p}(.+?)wurl.+?}/g); if (!match) { throw new Error('Video not found.'); } const [p, a, c, k, e, d] = match[0].split(',').map(x => x.split('.sp')[0]); const formated = this.format(p, a, c, k, e, JSON.parse(d)); const [poster, source] = formated - .match(/(?<=poster'=").+?(?=")|(?<=wurl=").+?(?=")/g) + .match(/poster'="([^"]+)"|wurl="([^"]+)"/g) + .map((x) => x.split(`="`)[1].replace(/"/g, '')) .map((x) => (x.startsWith('http') ? x : `https:${x}`)); this.sources.push({ url: source, diff --git a/dist/extractors/mixdrop.js.map b/dist/extractors/mixdrop.js.map index 7743a0aff..8eed18afb 100644 --- a/dist/extractors/mixdrop.js.map +++ b/dist/extractors/mixdrop.js.map @@ -1 +1 @@ -{"version":3,"file":"mixdrop.js","sourceRoot":"","sources":["../../src/extractors/mixdrop.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"mixdrop.js","sourceRoot":"","sources":["../../src/extractors/mixdrop.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/extractors/mixdrop.ts b/src/extractors/mixdrop.ts index 78ca7f962..5084d222a 100644 --- a/src/extractors/mixdrop.ts +++ b/src/extractors/mixdrop.ts @@ -13,7 +13,7 @@ class MixDrop extends VideoExtractor { const match = load(data) .html() - .match(/(?<=p}\().*(?<=wurl).*\}/g); + .match(/p}(.+?)wurl.+?}/g); if (!match) { throw new Error('Video not found.'); @@ -22,7 +22,8 @@ class MixDrop extends VideoExtractor { const formated = this.format(p, a, c, k, e, JSON.parse(d)); const [poster, source] = formated - .match(/(?<=poster'=").+?(?=")|(?<=wurl=").+?(?=")/g) + .match(/poster'="([^"]+)"|wurl="([^"]+)"/g) + .map((x: string) => x.split(`="`)[1].replace(/"/g, '')) .map((x: string) => (x.startsWith('http') ? x : `https:${x}`)); this.sources.push({