From d1ff7cd732892f023107f7e703c1503021280152 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Sun, 8 Jun 2025 19:08:38 +0000 Subject: [PATCH] chore(extractor): add bytes detection to DoodStream --- src/extractor/DoodStream.ts | 7 ++++++- src/handler/__snapshots__/MeineCloud.test.ts.snap | 1 + ...tringtoken7uebebipnnhusa4xnyea1er4andexpiry639837296000 | 1 + ...tringtokenfh3rdlhjvao7chgxndsi3ra7andexpiry639837296000 | 1 + ...tringtokenaw2v2d8uhbrj2ky54d573ujkandexpiry639837296000 | 1 + ...tringtokeny0n5z6g48kft9apq8imziegvandexpiry639837296000 | 1 + src/utils/__snapshots__/StreamResolver.test.ts.snap | 2 ++ 7 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 src/utils/__fixtures__/Fetcher/head-https:aa360cc.cloudatacdn.comu5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rtpmbzgb5tornooak9wk0js17e~mocked-random-stringtoken7uebebipnnhusa4xnyea1er4andexpiry639837296000 create mode 100644 src/utils/__fixtures__/Fetcher/head-https:ee317r.cloudatacdn.comu5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbh7fdq4j4mwzraf7q1y4sn4ndoi~mocked-random-stringtokenfh3rdlhjvao7chgxndsi3ra7andexpiry639837296000 create mode 100644 src/utils/__fixtures__/Fetcher/head-https:kk892as.cloudatacdn.comu5kj7j7s27d3sdgge5woezkbi4pu672wktq3aqujw47rbpl3xog2gtqnw2xaawn9rgotuu~mocked-random-stringtokenaw2v2d8uhbrj2ky54d573ujkandexpiry639837296000 create mode 100644 src/utils/__fixtures__/Fetcher/head-https:ty1053vs.cloudatacdn.comu5kjz2cvh7blsdgge4mmgoifjigorrf6o6mlfwqbndqkhkcvu43dcrk7wfga6zwayqucuf~mocked-random-stringtokeny0n5z6g48kft9apq8imziegvandexpiry639837296000 diff --git a/src/extractor/DoodStream.ts b/src/extractor/DoodStream.ts index 3dfb176..8fe3935 100644 --- a/src/extractor/DoodStream.ts +++ b/src/extractor/DoodStream.ts @@ -38,14 +38,19 @@ export class DoodStream implements Extractor { const $ = cheerio.load(html); const title = $('title').text().trim().replace(/ - DoodStream$/, '').trim(); + const mp4Url = new URL(`${baseUrl}${randomstring.generate(10)}?token=${token}&expiry=${Date.now()}`); + + const mp4Head = await this.fetcher.head(ctx, mp4Url, { headers: { Referer: 'http://dood.to' } }); + return [ { - url: new URL(`${baseUrl}${randomstring.generate(10)}?token=${token}&expiry=${Date.now()}`), + url: mp4Url, label: this.label, sourceId: `${this.id}_${meta.countryCode.toLowerCase()}`, ttl: this.ttl, meta: { title, + ...(mp4Head['content-length'] && { bytes: parseInt(mp4Head['content-length'] as string) }), ...meta, }, requestHeaders: { diff --git a/src/handler/__snapshots__/MeineCloud.test.ts.snap b/src/handler/__snapshots__/MeineCloud.test.ts.snap index 5507322..2ea6a18 100644 --- a/src/handler/__snapshots__/MeineCloud.test.ts.snap +++ b/src/handler/__snapshots__/MeineCloud.test.ts.snap @@ -46,6 +46,7 @@ exports[`MeineCloud handle imdb the devil's bath 1`] = ` { "label": "DoodStream", "meta": { + "bytes": 791702409, "countryCode": "de", "title": "des-teufels-bad-2024", }, diff --git a/src/utils/__fixtures__/Fetcher/head-https:aa360cc.cloudatacdn.comu5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rtpmbzgb5tornooak9wk0js17e~mocked-random-stringtoken7uebebipnnhusa4xnyea1er4andexpiry639837296000 b/src/utils/__fixtures__/Fetcher/head-https:aa360cc.cloudatacdn.comu5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rtpmbzgb5tornooak9wk0js17e~mocked-random-stringtoken7uebebipnnhusa4xnyea1er4andexpiry639837296000 new file mode 100644 index 0000000..00bf5ee --- /dev/null +++ b/src/utils/__fixtures__/Fetcher/head-https:aa360cc.cloudatacdn.comu5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rtpmbzgb5tornooak9wk0js17e~mocked-random-stringtoken7uebebipnnhusa4xnyea1er4andexpiry639837296000 @@ -0,0 +1 @@ +{"server":"nginx","date":"Sun, 08 Jun 2025 19:20:59 GMT","content-type":"video/mp4","content-length":791702409,"last-modified":"Wed, 03 Apr 2024 09:53:31 GMT","connection":"keep-alive","etag":"660d271b-2f306b89","access-control-allow-origin":"*","accept-ranges":"bytes"} diff --git a/src/utils/__fixtures__/Fetcher/head-https:ee317r.cloudatacdn.comu5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbh7fdq4j4mwzraf7q1y4sn4ndoi~mocked-random-stringtokenfh3rdlhjvao7chgxndsi3ra7andexpiry639837296000 b/src/utils/__fixtures__/Fetcher/head-https:ee317r.cloudatacdn.comu5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbh7fdq4j4mwzraf7q1y4sn4ndoi~mocked-random-stringtokenfh3rdlhjvao7chgxndsi3ra7andexpiry639837296000 new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/utils/__fixtures__/Fetcher/head-https:ee317r.cloudatacdn.comu5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbh7fdq4j4mwzraf7q1y4sn4ndoi~mocked-random-stringtokenfh3rdlhjvao7chgxndsi3ra7andexpiry639837296000 @@ -0,0 +1 @@ +{} diff --git a/src/utils/__fixtures__/Fetcher/head-https:kk892as.cloudatacdn.comu5kj7j7s27d3sdgge5woezkbi4pu672wktq3aqujw47rbpl3xog2gtqnw2xaawn9rgotuu~mocked-random-stringtokenaw2v2d8uhbrj2ky54d573ujkandexpiry639837296000 b/src/utils/__fixtures__/Fetcher/head-https:kk892as.cloudatacdn.comu5kj7j7s27d3sdgge5woezkbi4pu672wktq3aqujw47rbpl3xog2gtqnw2xaawn9rgotuu~mocked-random-stringtokenaw2v2d8uhbrj2ky54d573ujkandexpiry639837296000 new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/utils/__fixtures__/Fetcher/head-https:kk892as.cloudatacdn.comu5kj7j7s27d3sdgge5woezkbi4pu672wktq3aqujw47rbpl3xog2gtqnw2xaawn9rgotuu~mocked-random-stringtokenaw2v2d8uhbrj2ky54d573ujkandexpiry639837296000 @@ -0,0 +1 @@ +{} diff --git a/src/utils/__fixtures__/Fetcher/head-https:ty1053vs.cloudatacdn.comu5kjz2cvh7blsdgge4mmgoifjigorrf6o6mlfwqbndqkhkcvu43dcrk7wfga6zwayqucuf~mocked-random-stringtokeny0n5z6g48kft9apq8imziegvandexpiry639837296000 b/src/utils/__fixtures__/Fetcher/head-https:ty1053vs.cloudatacdn.comu5kjz2cvh7blsdgge4mmgoifjigorrf6o6mlfwqbndqkhkcvu43dcrk7wfga6zwayqucuf~mocked-random-stringtokeny0n5z6g48kft9apq8imziegvandexpiry639837296000 new file mode 100644 index 0000000..0967ef4 --- /dev/null +++ b/src/utils/__fixtures__/Fetcher/head-https:ty1053vs.cloudatacdn.comu5kjz2cvh7blsdgge4mmgoifjigorrf6o6mlfwqbndqkhkcvu43dcrk7wfga6zwayqucuf~mocked-random-stringtokeny0n5z6g48kft9apq8imziegvandexpiry639837296000 @@ -0,0 +1 @@ +{} diff --git a/src/utils/__snapshots__/StreamResolver.test.ts.snap b/src/utils/__snapshots__/StreamResolver.test.ts.snap index a6c4da9..2268bdd 100644 --- a/src/utils/__snapshots__/StreamResolver.test.ts.snap +++ b/src/utils/__snapshots__/StreamResolver.test.ts.snap @@ -216,9 +216,11 @@ exports[`resolve returns sorted results 1`] = ` "Referer": "http://dood.to/", }, }, + "videoSize": 791702409, }, "name": "WebStreamr N/A", "title": "📂 des-teufels-bad-2024 +💾 755.03 MB 🌐 German 🇩🇪 🔗 DoodStream", "url": "https://aa360cc.cloudatacdn.com/u5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rtpmbzgb5tornooa/k9wk0js17e~mocked-random-string?token=7uebebipnnhusa4xnyea1er4&expiry=639837296000",