From 1ecb088b607f6b961bfb69889f02d7db8aee3a45 Mon Sep 17 00:00:00 2001 From: WebStreamr <210764791+webstreamr@users.noreply.github.com> Date: Mon, 8 Sep 2025 07:18:19 +0000 Subject: [PATCH] feat(extractor): add HubCloud with FSL --- src/extractor/HubCloud.test.ts | 20 + src/extractor/HubCloud.ts | 42 ++ .../https:hubcloud.onedrivebffzqlpqfllfcld | 321 ++++++++++++++++ .../https:hubcloud.onedriveidt1evqfuviqiei | 321 ++++++++++++++++ ...GhnN3ErdTUxUWJhR3Q3UGxaTElRQjFnWVNObGdyZz0 | 355 +++++++++++++++++ ...Tlyc1VGY2JSQmVieHZmMU5oV0Q0M2lDNGxSUXNHYz0 | 358 ++++++++++++++++++ .../__snapshots__/HubCloud.test.ts.snap | 35 ++ src/extractor/index.ts | 2 + 8 files changed, 1454 insertions(+) create mode 100644 src/extractor/HubCloud.test.ts create mode 100644 src/extractor/HubCloud.ts create mode 100644 src/extractor/__fixtures__/HubCloud/https:hubcloud.onedrivebffzqlpqfllfcld create mode 100644 src/extractor/__fixtures__/HubCloud/https:hubcloud.onedriveidt1evqfuviqiei create mode 100644 src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandidbffzqlpqfllfcldandtokenZDdhbnhoS3dXSzlGOGhnN3ErdTUxUWJhR3Q3UGxaTElRQjFnWVNObGdyZz0 create mode 100644 src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandididt1evqfuviqieiandtokenRUhXL2kvWnI3MmtFTTlyc1VGY2JSQmVieHZmMU5oV0Q0M2lDNGxSUXNHYz0 create mode 100644 src/extractor/__snapshots__/HubCloud.test.ts.snap diff --git a/src/extractor/HubCloud.test.ts b/src/extractor/HubCloud.test.ts new file mode 100644 index 0000000..4ff95fd --- /dev/null +++ b/src/extractor/HubCloud.test.ts @@ -0,0 +1,20 @@ +import winston from 'winston'; +import { createTestContext } from '../test'; +import { FetcherMock } from '../utils'; +import { ExtractorRegistry } from './ExtractorRegistry'; +import { HubCloud } from './HubCloud'; + +const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] }); +const extractorRegistry = new ExtractorRegistry(logger, [new HubCloud(new FetcherMock(`${__dirname}/__fixtures__/HubCloud`))]); + +const ctx = createTestContext(); + +describe('HubCloud', () => { + test('handle dexter original sin 2024 s01e01', async () => { + expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/idt1evqfuviqiei'))).toMatchSnapshot(); + }); + + test('handle crayon shin-chan 1993', async () => { + expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/bffzqlpqfllfcld'))).toMatchSnapshot(); + }); +}); diff --git a/src/extractor/HubCloud.ts b/src/extractor/HubCloud.ts new file mode 100644 index 0000000..845accb --- /dev/null +++ b/src/extractor/HubCloud.ts @@ -0,0 +1,42 @@ +import bytes from 'bytes'; +import * as cheerio from 'cheerio'; +import { Context, Format, Meta, UrlResult } from '../types'; +import { Extractor } from './Extractor'; + +export class HubCloud extends Extractor { + public readonly id = 'hubcloud'; + + public readonly label = 'HubCloud'; + + public override readonly ttl: number = 259200000; // 3d + + public supports(_ctx: Context, url: URL): boolean { + return null !== url.host.match(/hubcloud/); + } + + protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise { + const redirectHtml = await this.fetcher.text(ctx, url); + const redirectUrlMatch = redirectHtml.match(/var url ?= ?'(.*?)'/) as string[]; + + const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string)); + const $ = cheerio.load(linksHtml); + + return $('a') + .filter((_i, el) => $(el).text().includes('FSL')) + .map((_i, el) => { + const url = new URL($(el).attr('href') as string); + return { + url, + format: Format.unknown, + label: `${this.label} (FSL)`, + sourceId: `${this.id}_fsl`, + ttl: this.ttl, + meta: { + ...meta, + bytes: bytes.parse($('#size').text()) as number, + title: $('title').text().trim(), + }, + }; + }).toArray(); + }; +} diff --git a/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedrivebffzqlpqfllfcld b/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedrivebffzqlpqfllfcld new file mode 100644 index 0000000..03c3fe9 --- /dev/null +++ b/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedrivebffzqlpqfllfcld @@ -0,0 +1,321 @@ + + +Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+HubCloud | Create An Account |Login +
+
+
+
+

+
+ +
+ +
+ Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv
+ +
+
    +
  • File Size26.59 GB
  • +
  • File Typevideo/x-matrosk
  • +
  • Share Date13-Aug-2025 04:20:43
  • +
+ + +
+
+ + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +

Please Wait While Page is loading

+
+
+ + + + Generate Direct Download Link + + +
+ + + +
+ + + + + +
+

+
+ + + + + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+

+
+ + + + + \ No newline at end of file diff --git a/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedriveidt1evqfuviqiei b/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedriveidt1evqfuviqiei new file mode 100644 index 0000000..b959220 --- /dev/null +++ b/src/extractor/__fixtures__/HubCloud/https:hubcloud.onedriveidt1evqfuviqiei @@ -0,0 +1,321 @@ + + +Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + +
+HubCloud | Create An Account |Login +
+
+
+
+

+
+ +
+ +
+ Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv
+ +
+
    +
  • File Size5.34 GB
  • +
  • File Typevideo/x-matrosk
  • +
  • Share Date21-Apr-2025 05:22:19
  • +
+ + +
+
+ + +
+ + + +
+ + + + + +
+ +
+ + + + + + + + + + + + + + + + + + + +

Please Wait While Page is loading

+
+
+ + + + Generate Direct Download Link + + +
+ + + +
+ + + + + +
+

+
+ + + + + +
+ + + + + +
+ + + + + + +
+
+ +
+ +
+
+
+

+
+ + + + + \ No newline at end of file diff --git a/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandidbffzqlpqfllfcldandtokenZDdhbnhoS3dXSzlGOGhnN3ErdTUxUWJhR3Q3UGxaTElRQjFnWVNObGdyZz0 b/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandidbffzqlpqfllfcldandtokenZDdhbnhoS3dXSzlGOGhnN3ErdTUxUWJhR3Q3UGxaTElRQjFnWVNObGdyZz0 new file mode 100644 index 0000000..3b194e1 --- /dev/null +++ b/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandidbffzqlpqfllfcldandtokenZDdhbnhoS3dXSzlGOGhnN3ErdTUxUWJhR3Q3UGxaTElRQjFnWVNObGdyZz0 @@ -0,0 +1,355 @@ + + + + +Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv + + + + + + + + + + + + + + + + + + + + +
+
+
+HubCloud | Login +
+ +
+
+

+
+ +
+ +
+ Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv
+ +
+
    +
  • File Size26.59 GB
  • +
  • File Typevideo/x-matrosk
  • +
  • Share Date13-Aug-2025 04:20:43
  • +
+ +
+
+ + +
+

Download Link Generated

+
+ +
+ Copy Share Link +
+
+ + + + + + + + + + + +
+ + +
+ + + + + + + + + + Download [Server : 10Gbps] + +

+ Resume Not Supported in 10Gbps So Use only if you have stable internet (: +

+ + + + + + + Download [FSL Server] + + + + + + Download [ZipDisk Server] +

Resume is Supported in ZipDisk But please extract it as the files is inside zip

+ + + + + + + + + + + + +

+ + + + + + +
+ + + +
+
+ +
+ +
+
+
+

+
+Msc + + + + + + + + + + + + + + + + + diff --git a/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandididt1evqfuviqieiandtokenRUhXL2kvWnI3MmtFTTlyc1VGY2JSQmVieHZmMU5oV0Q0M2lDNGxSUXNHYz0 b/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandididt1evqfuviqieiandtokenRUhXL2kvWnI3MmtFTTlyc1VGY2JSQmVieHZmMU5oV0Q0M2lDNGxSUXNHYz0 new file mode 100644 index 0000000..a33e42f --- /dev/null +++ b/src/extractor/__fixtures__/HubCloud/https:stockbhoomi.comhubcloud.phphosthubcloudandididt1evqfuviqieiandtokenRUhXL2kvWnI3MmtFTTlyc1VGY2JSQmVieHZmMU5oV0Q0M2lDNGxSUXNHYz0 @@ -0,0 +1,358 @@ + + + + +Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv + + + + + + + + + + + + + + + + + + + + +
+
+
+HubCloud | Login +
+ +
+
+

+
+ +
+ +
+ Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv
+ +
+
    +
  • File Size5.34 GB
  • +
  • File Typevideo/x-matrosk
  • +
  • Share Date21-Apr-2025 05:22:19
  • +
+ +
+
+ + +
+

Download Link Generated

+
+ +
+ Copy Share Link +
+
+ + + + + + + + + + + +
+ + +
+ + + + + Download [PixelServer : 2] + + + + + + + + Download [Server : 10Gbps] + +

+ Resume Not Supported in 10Gbps So Use only if you have stable internet (: +

+ + + + + + + Download [FSL Server] + + + + + + Download [ZipDisk Server] +

Resume is Supported in ZipDisk But please extract it as the files is inside zip

+ + + + + + + + + + + + +

+ + + + + + +
+ + + +
+
+ +
+ +
+
+
+

+
+Msc + + + + + + + + + + + + + + + + + diff --git a/src/extractor/__snapshots__/HubCloud.test.ts.snap b/src/extractor/__snapshots__/HubCloud.test.ts.snap new file mode 100644 index 0000000..532dbd7 --- /dev/null +++ b/src/extractor/__snapshots__/HubCloud.test.ts.snap @@ -0,0 +1,35 @@ +// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing + +exports[`HubCloud handle crayon shin-chan 1993 1`] = ` +[ + { + "format": "unknown", + "label": "HubCloud (FSL)", + "meta": { + "bytes": 28550795100, + "countryCodes": [], + "title": "Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv", + }, + "sourceId": "hubcloud_fsl", + "ttl": 259200000, + "url": "https://pub-52f57cc1b81f4ecdac02802c1566c33d.r2.dev/Crayon%20Shinchan%20Action%20Kamen%20vs%20Demon%201993%201080p%20BluRay%20REMUX%20AVC%20[Hindi%20DD%202.0%20+%20Japanese%20FLAC%202.0]%20PitiPati-Ionicboy%204kHDHub.com.mkv?token=1757269247", + }, +] +`; + +exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = ` +[ + { + "format": "unknown", + "label": "HubCloud (FSL)", + "meta": { + "bytes": 5733781340, + "countryCodes": [], + "title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv", + }, + "sourceId": "hubcloud_fsl", + "ttl": 259200000, + "url": "https://pub-52f57cc1b81f4ecdac02802c1566c33d.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1757266673", + }, +] +`; diff --git a/src/extractor/index.ts b/src/extractor/index.ts index 124bb89..0a8b241 100644 --- a/src/extractor/index.ts +++ b/src/extractor/index.ts @@ -4,6 +4,7 @@ import { Dropload } from './Dropload'; import { ExternalUrl } from './ExternalUrl'; import { Extractor } from './Extractor'; import { Fastream } from './Fastream'; +import { HubCloud } from './HubCloud'; import { KinoGer } from './KinoGer'; import { Mixdrop } from './Mixdrop'; import { SaveFiles } from './SaveFiles'; @@ -24,6 +25,7 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => [ new DoodStream(fetcher), new Dropload(fetcher), new Fastream(fetcher), + new HubCloud(fetcher), new KinoGer(fetcher), new Mixdrop(fetcher), new SaveFiles(fetcher),