Compare commits

...

123 commits

Author SHA1 Message Date
WebStreamr
720c9bb651
docs: mention PixelServer / pixeldrain limits 2026-03-27 22:10:38 +00:00
webstreamr
f05cf5040c
chore(release): release v0.69.1 (#801) 2026-03-27 22:05:18 +00:00
WebStreamr
65191cfc8d
fix(source): exclude ad videos in HDHub4u 2026-03-27 22:03:14 +00:00
WebStreamr
bd2dec0392
fix(source): remove stray console.log 2026-03-27 21:59:07 +00:00
webstreamr
5f9fbbb30d
chore(release): release v0.69.0 (#799) 2026-03-27 22:48:26 +01:00
WebStreamr
43f04455f1
feat(source): add HDHub4u 2026-03-27 21:42:10 +00:00
WebStreamr
43637a2ff4
refactor(source): extract hd hub link redirect resolver 2026-03-27 20:17:03 +00:00
WebStreamr
b87bf62362
chore: remove duplicate URLs 2026-03-27 19:40:27 +00:00
WebStreamr
89e57d48d9
chore(extractor): detect languages from HubCloud title 2026-03-27 19:30:47 +00:00
renovate[bot]
ad47aecea3
chore(deps): update dependency axios to v1.14.0 (#800)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-27 19:28:52 +00:00
WebStreamr
f192fd0b75
chore(extractor): detect resolution from HubCloud title 2026-03-27 19:26:31 +00:00
WebStreamr
557efd2079
fix(extractor): don't fail for HubDrive if HubCloud link is missing 2026-03-27 18:02:48 +00:00
webstreamr
373c6c1d4c
chore(release): release v0.68.0 (#798) 2026-03-26 15:57:28 +01:00
WebStreamr
4c7da5dc20
feat: exclude resolution config options 2026-03-26 14:46:07 +00:00
webstreamr
bed5b00300
chore(release): release v0.67.0 (#796) 2026-03-25 10:03:12 +01:00
WebStreamr
e36d460d57
feat(extractor): support FSLv2 server in HubCloud 2026-03-25 09:01:25 +00:00
renovate[bot]
5cffa112ba
chore(deps): update dependency typescript-eslint to v8.57.2 (#795)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 17:59:06 +00:00
webstreamr
66ae60ca44
chore(release): release v0.66.16 (#794) 2026-03-23 18:57:05 +01:00
webstreamr
b60496bf22
docs: remove mention of XDMovies 2026-03-23 18:17:28 +01:00
WebStreamr
ff39c59475
fix(source): remove XDMovies
was fun while it lasted, I won't implement a 15s websocket wait
2026-03-23 16:55:48 +00:00
webstreamr
b6b67568b5
chore(release): release v0.66.15 (#790) 2026-03-23 15:07:39 +00:00
WebStreamr
eecf9c42c5
fix(extractor): hard-code referer for Dropload and SuperVideo for now 2026-03-23 15:06:05 +00:00
renovate[bot]
fc3d61b05a
chore(deps): lock file maintenance (#792)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-23 00:42:51 +00:00
renovate[bot]
b2b9760445
chore(deps): update dependency cacheable to v2.3.4 (#789)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 01:43:07 +00:00
webstreamr
7afff18629
chore(release): release v0.66.14 (#785) 2026-03-17 20:53:49 +00:00
WebStreamr
ee3effaf00
chore(extractor): add cacheVersion and bump it for HubCloud and HubDrive 2026-03-17 20:51:57 +00:00
WebStreamr
296f0478b0
fix(extractor): reduce HubCloud + HubDrive ttl to 12h 2026-03-17 20:46:17 +00:00
WebStreamr
693a77e73e
fix(extractor): add PixelDrain referer to HubCloud extractor 2026-03-17 20:34:26 +00:00
renovate[bot]
b769cd0aa1
chore(deps): update dependency typescript-eslint to v8.57.1 (#786)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 17:47:10 +00:00
renovate[bot]
9eca05efc5
chore(deps): lock file maintenance (#784)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 01:43:07 +00:00
webstreamr
ca0110cdbc
chore(release): release v0.66.13 (#781) 2026-03-14 12:56:14 +00:00
WebStreamr
66ee72baf0
fix: downgrade sqlite for now 2026-03-14 12:54:37 +00:00
webstreamr
3c08d69bc3
chore(release): release v0.66.12 (#778) 2026-03-14 08:33:01 +00:00
WebStreamr
0f004dc878
fix: require sqlite with alpine fix 2026-03-14 08:31:36 +00:00
renovate[bot]
b7093ed4ae
chore(deps): lock file maintenance (#779)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-14 08:29:13 +00:00
renovate[bot]
20289eaeaf
chore(deps): update dependency slugify to v1.6.8 (#777)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-14 00:36:58 +00:00
webstreamr
3b16fe0390
chore(release): release v0.66.11 (#762) 2026-03-13 16:53:54 +01:00
WebStreamr
c78c1ad628
fix(extractor): add missing VOE domain 2026-03-13 15:52:08 +00:00
WebStreamr
8fe4cc5a9b
fix(source): switch to new Frembed URL and resolve link redirects 2026-03-13 15:50:08 +00:00
renovate[bot]
930e8191be
fix(deps): update dependency sqlite3 to v6 (#772)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-13 10:00:31 +01:00
renovate[bot]
2734fb4d0d
chore(deps): update dependency tough-cookie to v6.0.1 (#773)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-12 21:54:29 +00:00
renovate[bot]
b5223148c7
chore(deps): update jest monorepo to v30.3.0 (#767)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-10 02:42:27 +00:00
renovate[bot]
ad3d0b317e
chore(deps): update dependency typescript-eslint to v8.57.0 (#766)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 17:24:18 +00:00
renovate[bot]
e90b5583a7
chore(deps): update dependency express-rate-limit to v8.3.1 (#765)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 15:15:19 +00:00
renovate[bot]
394dc91bfa
chore(deps): lock file maintenance (#764)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 02:14:06 +00:00
renovate[bot]
7de046838d
chore(deps): update dependency @types/node to v24.12.0 (#763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-09 02:09:48 +00:00
renovate[bot]
955872a825
chore(deps): update eslint monorepo to v9.39.4 (#761)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 22:42:15 +00:00
webstreamr
d17780f0a7
chore(release): release v0.66.10 (#751) 2026-03-06 14:05:01 +01:00
renovate[bot]
737a8063a8
chore(deps): update docker/build-push-action action to v7 (#759)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 13:03:13 +00:00
WebStreamr
423abf2479
fix(extractor): use Dropload hosting URL origin as Referer 2026-03-06 13:01:24 +00:00
renovate[bot]
4e436509bf
chore(deps): update dependency @stylistic/eslint-plugin to v5.10.0 (#760)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-06 05:58:20 +00:00
renovate[bot]
f58e0e1f4f
chore(deps): update dependency express-rate-limit to v8.3.0 (#758)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 19:17:41 +00:00
renovate[bot]
d2e72b0756
chore(deps): update docker/setup-buildx-action action to v4 (#757)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 12:08:53 +01:00
renovate[bot]
edebd860aa
chore(deps): update dependency axios-cache-interceptor to v1.12.0 (#755)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-05 01:18:54 +00:00
renovate[bot]
6b8363bd9c
chore(deps): update docker/login-action action to v4 (#750)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 13:57:09 +01:00
webstreamr
d0c40ffa00
chore(release): release v0.66.9 (#747) 2026-03-04 12:05:03 +00:00
renovate[bot]
b36e1484eb
chore(deps): update docker/setup-qemu-action action to v4 (#749)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-04 13:03:46 +01:00
WebStreamr
a5e429fea3
chore: add referral 2026-03-04 09:05:50 +00:00
WebStreamr
6d5870ccb2
docs: use default branch for tests badge 2026-03-02 13:28:27 +00:00
webstreamr
6cc82520a0
chore(release): release v0.66.8 (#746) 2026-03-02 13:14:43 +00:00
WebStreamr
7dfc599de9
fix(extractor): use Dropload playlist headers also internally 2026-03-02 13:02:34 +00:00
WebStreamr
aa820e1f64
docs: add more limitations 2026-03-02 12:59:17 +00:00
WebStreamr
38d0ac5305
docs: add more references 2026-03-02 12:54:32 +00:00
WebStreamr
438387faee
docs: add known issues / limitations section 2026-03-02 12:52:00 +00:00
webstreamr
5a1786d3e5
chore(release): release v0.66.7 (#738) 2026-03-02 11:42:22 +01:00
WebStreamr
bbb80f3cf0
fix(extractor): add referer as proxy header for Dropload 2026-03-02 10:26:46 +00:00
renovate[bot]
8ea6d4fe37
chore(deps): lock file maintenance (#745)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 01:36:34 +00:00
renovate[bot]
282b3d05b3
chore(deps): update dependency @types/node to v24.11.0 (#744)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-02 01:33:17 +00:00
renovate[bot]
168d0280dc
chore(deps): update dependency cacheable to v2.3.3 (#737)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-27 18:17:33 +00:00
renovate[bot]
50e024a3ea
chore(deps): update dependency axios to v1.13.6 (#736)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-27 18:13:55 +00:00
webstreamr
e1d582036a
chore(release): release v0.66.6 (#732) 2026-02-26 22:11:16 +01:00
renovate[bot]
354c2731d8
chore(deps): update dependency minimatch to v10.2.4 (#735)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 19:50:19 +00:00
renovate[bot]
ce4637ea80
chore(deps): update dependency minimatch to v10.2.3 (#715)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-25 05:50:31 +00:00
renovate[bot]
73ce5f372d
chore(deps): update dependency typescript-eslint to v8.56.1 (#734)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-23 18:38:21 +00:00
WebStreamr
221fa989f4
chore(fetcher): cache whole flaresolverr solution and also use status from it 2026-02-23 12:08:01 +00:00
webstreamr
a4dfad6235
chore(release): release v0.66.5 (#731) 2026-02-23 13:01:01 +01:00
WebStreamr
ae10810caa
perf: cache all non-error requests for 15m, tune axios caching 2026-02-23 11:57:07 +00:00
WebStreamr
964e979469
fix(source): add support for old XDMovies uploads without URL protector 2026-02-23 11:14:53 +00:00
WebStreamr
556b20e669
fix(extractor): remove StreamUp 2026-02-23 10:58:55 +00:00
renovate[bot]
6c102362fd
chore(deps): lock file maintenance (#730)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-23 01:12:44 +00:00
webstreamr
49faa5d116
chore(release): release v0.66.4 (#700) 2026-02-21 16:16:16 +01:00
WebStreamr
cf8fb4cfa4
fix(source): handle new XDMovies URL protection 2026-02-21 15:10:11 +00:00
renovate[bot]
3bb7a800e3
chore(deps): update dependency nodemon to v3.1.14 (#728)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-21 01:03:22 +00:00
renovate[bot]
26b6143152
chore(deps): update eslint monorepo to v9.39.3 (#727)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 14:13:46 +00:00
renovate[bot]
728ed7ec06
chore(deps): update dependency nodemon to v3.1.13 (#726)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-20 02:29:35 +00:00
renovate[bot]
5bfbd94e51
chore(deps): update dependency nodemon to v3.1.12 (#725)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 22:36:51 +00:00
renovate[bot]
23db19d073
chore(deps): update dependency glob to v13.0.6 (#724)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 18:32:50 +00:00
renovate[bot]
bd160eb32c
chore(deps): update dependency @stylistic/eslint-plugin to v5.9.0 (#723)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-19 14:16:22 +00:00
renovate[bot]
fb354b4746
chore(deps): update dependency glob to v13.0.5 (#721)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 19:57:41 +00:00
renovate[bot]
245dcf6007
chore(deps): update dependency glob to v13.0.4 (#720)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-17 05:37:00 +00:00
renovate[bot]
94f5c7438d
chore(deps): update dependency typescript-eslint to v8.56.0 (#719)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 17:38:37 +00:00
renovate[bot]
d0f3e0f931
chore(deps): lock file maintenance (#718)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 01:13:23 +00:00
renovate[bot]
524630d671
chore(deps): update dependency @types/node to v24.10.13 (#717)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-16 01:12:34 +00:00
renovate[bot]
65a0e57ab9
chore(deps): update dependency glob to v13.0.3 (#714)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-12 23:33:37 +00:00
renovate[bot]
eccea520b7
chore(deps): update dependency glob to v13.0.2 (#711)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-10 17:53:29 +00:00
renovate[bot]
7ec9c5b147
chore(deps): update dependency typescript-eslint to v8.55.0 (#710)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 18:33:43 +00:00
renovate[bot]
1ae12fa0f7
chore(deps): update dependency @stylistic/eslint-plugin to v5.8.0 (#709)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 11:04:50 +00:00
renovate[bot]
ccdd4600bb
chore(deps): lock file maintenance (#708)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 01:13:41 +00:00
renovate[bot]
3f35ecf6f3
chore(deps): update dependency @types/node to v24.10.12 (#707)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-09 01:12:39 +00:00
renovate[bot]
de13209709
chore(deps): update dependency axios to v1.13.5 (#705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-08 13:10:52 +00:00
WebStreamr
34500ea3fc
chore(extractor): adapt mixdrop host check 2026-02-06 14:04:40 +00:00
renovate[bot]
72c191fbc1
chore(deps): update dependency glob to v13.0.1 (#698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-03 18:54:11 +00:00
webstreamr
8c2897a0b1
chore(release): release v0.66.3 (#697) 2026-02-03 09:58:35 +00:00
WebStreamr
31da8aa92c
perf(fetcher): simplify FlareSolverr integration by just using a request per host 2026-02-03 09:57:09 +00:00
webstreamr
92c45d553e
chore(release): release v0.66.2 (#696) 2026-02-03 08:51:58 +01:00
WebStreamr
ae5829dcb0
perf(fetcher): improve FlareSolverr integration
- multiple sessions which are destroyed after being idle for 60 minutes
- fix timeout handling
- pass cookies to share between sessions
- disable media
2026-02-03 07:41:02 +00:00
webstreamr
3f5a82d663
chore(release): release v0.66.1 (#695) 2026-02-02 15:39:00 +00:00
WebStreamr
2612860f15
fix(source): make XDMovies a fallback source to avoid hubcloud and many duplicates 2026-02-02 15:37:15 +00:00
webstreamr
e6adf6549a
chore(release): release v0.66.0 (#693) 2026-02-02 14:44:23 +00:00
WebStreamr
c23ffa382d
fix(fetcher): never block flaresolverr timeouts 2026-02-02 14:42:53 +00:00
WebStreamr
1f4d81bfc9
feat(source): add XDMovies 2026-02-02 14:42:53 +00:00
renovate[bot]
455d84d5b1
chore(deps): lock file maintenance (#692)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-02-02 01:14:33 +00:00
webstreamr
72c19e7f59
chore(release): release v0.65.10 (#684) 2026-01-28 18:13:53 +00:00
WebStreamr
e52cee2125
chore(extractor): increase StreamEmbed TTL to 3d 2026-01-28 18:12:03 +00:00
renovate[bot]
5c87c5d9e2
chore(deps): update dependency axios to v1.13.4 (#689)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-27 19:35:09 +00:00
renovate[bot]
8f8ecb868e
chore(deps): update dependency typescript-eslint to v8.54.0 (#687)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 19:36:45 +00:00
WebStreamr
a876c9b144
chore(extractor): increase Fsst TTL to 3 hours 2026-01-26 19:33:10 +00:00
WebStreamr
2ba6e4fa35
fix(extractor): avoid caching results with empty meta, add some self-healing 2026-01-26 14:12:10 +00:00
WebStreamr
50a7e5559b
refactor(extractor): introduce internal type to reduce common code 2026-01-26 13:47:55 +00:00
WebStreamr
db860c25c6
fix(extractor): ensure every result has a ttl 2026-01-26 13:37:26 +00:00
renovate[bot]
074311107a
chore(deps): lock file maintenance (#686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-26 00:33:39 +00:00
renovate[bot]
19a73b3866
chore(deps): update dependency axios to v1.13.3 (#685)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-25 18:30:04 +00:00
WebStreamr
75c9509793
chore(extractor): add new VOE domain 2026-01-25 07:02:47 +00:00
134 changed files with 33134 additions and 1915 deletions

View file

@ -9,19 +9,19 @@ jobs:
steps: steps:
- -
name: Login to Docker Hub name: Login to Docker Hub
uses: docker/login-action@v3 uses: docker/login-action@v4
with: with:
username: ${{ vars.DOCKERHUB_USERNAME }} username: ${{ vars.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }} password: ${{ secrets.DOCKERHUB_TOKEN }}
- -
name: Set up QEMU (for cross-arch) name: Set up QEMU (for cross-arch)
uses: docker/setup-qemu-action@v3 uses: docker/setup-qemu-action@v4
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v7
with: with:
push: true push: true
platforms: linux/amd64,linux/arm64 platforms: linux/amd64,linux/arm64

View file

@ -9,10 +9,10 @@ jobs:
steps: steps:
- -
name: Set up Docker Buildx name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3 uses: docker/setup-buildx-action@v4
- -
name: Build and push name: Build and push
uses: docker/build-push-action@v6 uses: docker/build-push-action@v7
with: with:
push: false push: false
tags: webstreamr/webstreamr:latest tags: webstreamr/webstreamr:latest

View file

@ -1,3 +1,3 @@
{ {
".": "0.65.9" ".": "0.69.1"
} }

View file

@ -1,5 +1,317 @@
# Changelog # Changelog
## [0.69.1](https://github.com/webstreamr/webstreamr/compare/v0.69.0...v0.69.1) (2026-03-27)
### Bug Fixes
* **source:** exclude ad videos in HDHub4u ([65191cf](https://github.com/webstreamr/webstreamr/commit/65191cfc8dad8f58b44e2c355b9adc600b99b2bf))
* **source:** remove stray console.log ([bd2dec0](https://github.com/webstreamr/webstreamr/commit/bd2dec03925d8b7760044dbfaaaec00b48f7cb66))
## [0.69.0](https://github.com/webstreamr/webstreamr/compare/v0.68.0...v0.69.0) (2026-03-27)
### Miscellaneous Chores
* **deps:** update dependency axios to v1.14.0 ([#800](https://github.com/webstreamr/webstreamr/issues/800)) ([ad47aec](https://github.com/webstreamr/webstreamr/commit/ad47aecea3f3d34700add442e023bd54f73451c8))
* **extractor:** detect languages from HubCloud title ([89e57d4](https://github.com/webstreamr/webstreamr/commit/89e57d48d95a6f8dd6446048ae72de51dd481f37))
* **extractor:** detect resolution from HubCloud title ([f192fd0](https://github.com/webstreamr/webstreamr/commit/f192fd0b7523094746148989e0cf06717db8152e))
* remove duplicate URLs ([b87bf62](https://github.com/webstreamr/webstreamr/commit/b87bf62362f3cd6b3ea055ecdaec44511bf2ec84))
### Features
* **source:** add HDHub4u ([43f0445](https://github.com/webstreamr/webstreamr/commit/43f04455f17063e459df7e7a34af44de36afd6fc))
### Bug Fixes
* **extractor:** don't fail for HubDrive if HubCloud link is missing ([557efd2](https://github.com/webstreamr/webstreamr/commit/557efd207945ea7ada0bcaf475b0b9b9d60d8f5b))
### Code Refactoring
* **source:** extract hd hub link redirect resolver ([43637a2](https://github.com/webstreamr/webstreamr/commit/43637a2ff4280db208ec9c94c0a5d52a49dc6672))
## [0.68.0](https://github.com/webstreamr/webstreamr/compare/v0.67.0...v0.68.0) (2026-03-26)
### Features
* exclude resolution config options ([4c7da5d](https://github.com/webstreamr/webstreamr/commit/4c7da5dc208a1854a17aa43a26553fb6c83e7287))
## [0.67.0](https://github.com/webstreamr/webstreamr/compare/v0.66.16...v0.67.0) (2026-03-25)
### Miscellaneous Chores
* **deps:** update dependency typescript-eslint to v8.57.2 ([#795](https://github.com/webstreamr/webstreamr/issues/795)) ([5cffa11](https://github.com/webstreamr/webstreamr/commit/5cffa112bac29ee4eb18958f5345f0a3ae68ff30))
### Features
* **extractor:** support FSLv2 server in HubCloud ([e36d460](https://github.com/webstreamr/webstreamr/commit/e36d460d57bdc071fc111b1459ea26184a3233e3))
## [0.66.16](https://github.com/webstreamr/webstreamr/compare/v0.66.15...v0.66.16) (2026-03-23)
### Documentation
* remove mention of XDMovies ([b60496b](https://github.com/webstreamr/webstreamr/commit/b60496bf224f1869626bceaa7e3eebabfdec8754))
### Bug Fixes
* **source:** remove XDMovies ([ff39c59](https://github.com/webstreamr/webstreamr/commit/ff39c594755b586ec4214d942c04026b873854fd))
## [0.66.15](https://github.com/webstreamr/webstreamr/compare/v0.66.14...v0.66.15) (2026-03-23)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#792](https://github.com/webstreamr/webstreamr/issues/792)) ([fc3d61b](https://github.com/webstreamr/webstreamr/commit/fc3d61b05a31c00607c7309ed04c8438c8f344f7))
* **deps:** update dependency cacheable to v2.3.4 ([#789](https://github.com/webstreamr/webstreamr/issues/789)) ([b2b9760](https://github.com/webstreamr/webstreamr/commit/b2b9760445f7b1a987f5aa795ef3a5302e753178))
### Bug Fixes
* **extractor:** hard-code referer for Dropload and SuperVideo for now ([eecf9c4](https://github.com/webstreamr/webstreamr/commit/eecf9c42c5f95266fe1ec0deba1042741efe7306))
## [0.66.14](https://github.com/webstreamr/webstreamr/compare/v0.66.13...v0.66.14) (2026-03-17)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#784](https://github.com/webstreamr/webstreamr/issues/784)) ([9eca05e](https://github.com/webstreamr/webstreamr/commit/9eca05efc5c56dc0c008b6cac6314c2849e11382))
* **deps:** update dependency typescript-eslint to v8.57.1 ([#786](https://github.com/webstreamr/webstreamr/issues/786)) ([b769cd0](https://github.com/webstreamr/webstreamr/commit/b769cd0aa1f8284c921f68c620fa01565097952b))
* **extractor:** add cacheVersion and bump it for HubCloud and HubDrive ([ee3effa](https://github.com/webstreamr/webstreamr/commit/ee3effaf0079ee932d6b8a93ead0f095ea7e4906))
### Bug Fixes
* **extractor:** add PixelDrain referer to HubCloud extractor ([693a77e](https://github.com/webstreamr/webstreamr/commit/693a77e73e984e81aee9a702092c5ef098d4e48f))
* **extractor:** reduce HubCloud + HubDrive ttl to 12h ([296f047](https://github.com/webstreamr/webstreamr/commit/296f0478b03c4dfd4927c0e53037ce8f9de64872))
## [0.66.13](https://github.com/webstreamr/webstreamr/compare/v0.66.12...v0.66.13) (2026-03-14)
### Bug Fixes
* downgrade sqlite for now ([66ee72b](https://github.com/webstreamr/webstreamr/commit/66ee72baf02560ca4bed0864869ab8046e85d0eb))
## [0.66.12](https://github.com/webstreamr/webstreamr/compare/v0.66.11...v0.66.12) (2026-03-14)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#779](https://github.com/webstreamr/webstreamr/issues/779)) ([b7093ed](https://github.com/webstreamr/webstreamr/commit/b7093ed4ae37cc4e4a2603bd6c8dac0118f8e617))
* **deps:** update dependency slugify to v1.6.8 ([#777](https://github.com/webstreamr/webstreamr/issues/777)) ([20289ea](https://github.com/webstreamr/webstreamr/commit/20289eaeaf8710c4cfb60d661061c62a3cfa4aeb))
### Bug Fixes
* require sqlite with alpine fix ([0f004dc](https://github.com/webstreamr/webstreamr/commit/0f004dc878c1c1a24cae553100426c61d45841a9))
## [0.66.11](https://github.com/webstreamr/webstreamr/compare/v0.66.10...v0.66.11) (2026-03-13)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#764](https://github.com/webstreamr/webstreamr/issues/764)) ([394dc91](https://github.com/webstreamr/webstreamr/commit/394dc91bfa0a2382ad7d084f02a2f99b7eb91ca5))
* **deps:** update dependency @types/node to v24.12.0 ([#763](https://github.com/webstreamr/webstreamr/issues/763)) ([7de0468](https://github.com/webstreamr/webstreamr/commit/7de046838d8c851caf7ec164c441b77907705c89))
* **deps:** update dependency express-rate-limit to v8.3.1 ([#765](https://github.com/webstreamr/webstreamr/issues/765)) ([e90b558](https://github.com/webstreamr/webstreamr/commit/e90b5583a7c2d005e53b60f8152eb4e37dd6591b))
* **deps:** update dependency tough-cookie to v6.0.1 ([#773](https://github.com/webstreamr/webstreamr/issues/773)) ([2734fb4](https://github.com/webstreamr/webstreamr/commit/2734fb4d0db6c658022ba1d6a89b90c7194d84b9))
* **deps:** update dependency typescript-eslint to v8.57.0 ([#766](https://github.com/webstreamr/webstreamr/issues/766)) ([ad3d0b3](https://github.com/webstreamr/webstreamr/commit/ad3d0b317e476621bef309b95fd683bd0b47fa38))
* **deps:** update eslint monorepo to v9.39.4 ([#761](https://github.com/webstreamr/webstreamr/issues/761)) ([955872a](https://github.com/webstreamr/webstreamr/commit/955872a8254e1ab93e298df720ae1e618d2fd3bc))
* **deps:** update jest monorepo to v30.3.0 ([#767](https://github.com/webstreamr/webstreamr/issues/767)) ([b522314](https://github.com/webstreamr/webstreamr/commit/b5223148c7ed336136c4182aaaa59f031ea6dc2a))
### Bug Fixes
* **deps:** update dependency sqlite3 to v6 ([#772](https://github.com/webstreamr/webstreamr/issues/772)) ([930e819](https://github.com/webstreamr/webstreamr/commit/930e8191beac055e8b82ee9a79bd78f56b2613a2))
* **extractor:** add missing VOE domain ([c78c1ad](https://github.com/webstreamr/webstreamr/commit/c78c1ad628c81391bdead00273e3a346983b1f45))
* **source:** switch to new Frembed URL and resolve link redirects ([8fe4cc5](https://github.com/webstreamr/webstreamr/commit/8fe4cc5a9bf37612647ed348cf76702fdbf6857e))
## [0.66.10](https://github.com/webstreamr/webstreamr/compare/v0.66.9...v0.66.10) (2026-03-06)
### Miscellaneous Chores
* **deps:** update dependency @stylistic/eslint-plugin to v5.10.0 ([#760](https://github.com/webstreamr/webstreamr/issues/760)) ([4e43650](https://github.com/webstreamr/webstreamr/commit/4e436509bf8b6bed5d1d879756f7cccba28b0d6a))
* **deps:** update dependency axios-cache-interceptor to v1.12.0 ([#755](https://github.com/webstreamr/webstreamr/issues/755)) ([edebd86](https://github.com/webstreamr/webstreamr/commit/edebd860aa3c4c01b6444c0296e21279ea3231ff))
* **deps:** update dependency express-rate-limit to v8.3.0 ([#758](https://github.com/webstreamr/webstreamr/issues/758)) ([f58e0e1](https://github.com/webstreamr/webstreamr/commit/f58e0e1f4f6c4db1e4efbeba6278a5358d1f6a56))
* **deps:** update docker/build-push-action action to v7 ([#759](https://github.com/webstreamr/webstreamr/issues/759)) ([737a806](https://github.com/webstreamr/webstreamr/commit/737a8063a8921a8fd0247e2cb3c053030b018294))
* **deps:** update docker/login-action action to v4 ([#750](https://github.com/webstreamr/webstreamr/issues/750)) ([6b8363b](https://github.com/webstreamr/webstreamr/commit/6b8363bd9c970b8760a1412a66086b120422567f))
* **deps:** update docker/setup-buildx-action action to v4 ([#757](https://github.com/webstreamr/webstreamr/issues/757)) ([d2e72b0](https://github.com/webstreamr/webstreamr/commit/d2e72b0756e8a86d64e6c70e168b689429d4b3d7))
### Bug Fixes
* **extractor:** use Dropload hosting URL origin as Referer ([423abf2](https://github.com/webstreamr/webstreamr/commit/423abf2479b7dffde3138c6043eb1f2854e4b077))
## [0.66.9](https://github.com/webstreamr/webstreamr/compare/v0.66.8...v0.66.9) (2026-03-04)
### Miscellaneous Chores
* add referral ([a5e429f](https://github.com/webstreamr/webstreamr/commit/a5e429fea365ee04a3bd32f07676a852511be852))
* **deps:** update docker/setup-qemu-action action to v4 ([#749](https://github.com/webstreamr/webstreamr/issues/749)) ([b36e148](https://github.com/webstreamr/webstreamr/commit/b36e1484eb51b7d86352c6f78f2f4c21adba28d0))
### Documentation
* use default branch for tests badge ([6d5870c](https://github.com/webstreamr/webstreamr/commit/6d5870ccb219bcb6448aac732914d02f59b8b602))
## [0.66.8](https://github.com/webstreamr/webstreamr/compare/v0.66.7...v0.66.8) (2026-03-02)
### Documentation
* add known issues / limitations section ([438387f](https://github.com/webstreamr/webstreamr/commit/438387faee8fb8604f4de7c1a7876be40d79fa79))
* add more limitations ([aa820e1](https://github.com/webstreamr/webstreamr/commit/aa820e1f6463d216ad12c44587b7134f424e1c9a))
* add more references ([38d0ac5](https://github.com/webstreamr/webstreamr/commit/38d0ac53059ed338718a759c76c425a2458fa5c2))
### Bug Fixes
* **extractor:** use Dropload playlist headers also internally ([7dfc599](https://github.com/webstreamr/webstreamr/commit/7dfc599de900c34703e41eeea5c4e459da6380cf))
## [0.66.7](https://github.com/webstreamr/webstreamr/compare/v0.66.6...v0.66.7) (2026-03-02)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#745](https://github.com/webstreamr/webstreamr/issues/745)) ([8ea6d4f](https://github.com/webstreamr/webstreamr/commit/8ea6d4fe3709067c1a2c30dcbf53567e10f102dc))
* **deps:** update dependency @types/node to v24.11.0 ([#744](https://github.com/webstreamr/webstreamr/issues/744)) ([282b3d0](https://github.com/webstreamr/webstreamr/commit/282b3d05b32bbcc6e2ac2137e3cb96974ee4ddfb))
* **deps:** update dependency axios to v1.13.6 ([#736](https://github.com/webstreamr/webstreamr/issues/736)) ([50e024a](https://github.com/webstreamr/webstreamr/commit/50e024a3ea1b2326fad7f2fcb59324d34a8561a2))
* **deps:** update dependency cacheable to v2.3.3 ([#737](https://github.com/webstreamr/webstreamr/issues/737)) ([168d028](https://github.com/webstreamr/webstreamr/commit/168d0280dcef9402815e353bc162af5bbf11af84))
### Bug Fixes
* **extractor:** add referer as proxy header for Dropload ([bbb80f3](https://github.com/webstreamr/webstreamr/commit/bbb80f3cf0b918668149f5f6be1a2c38157a414b))
## [0.66.6](https://github.com/webstreamr/webstreamr/compare/v0.66.5...v0.66.6) (2026-02-25)
### Miscellaneous Chores
* **deps:** update dependency minimatch to v10.2.3 ([#715](https://github.com/webstreamr/webstreamr/issues/715)) ([ce4637e](https://github.com/webstreamr/webstreamr/commit/ce4637ea80adaee5f7c325defd9676533dfb884e))
* **deps:** update dependency minimatch to v10.2.4 ([#735](https://github.com/webstreamr/webstreamr/issues/735)) ([354c273](https://github.com/webstreamr/webstreamr/commit/354c2731d8ffe1948f5ff8647a7be668c6ce5cbd))
* **deps:** update dependency typescript-eslint to v8.56.1 ([#734](https://github.com/webstreamr/webstreamr/issues/734)) ([73ce5f3](https://github.com/webstreamr/webstreamr/commit/73ce5f372d5c2c2be39d1f36fa104afbdee41b77))
* **fetcher:** cache whole flaresolverr solution and also use status from it ([221fa98](https://github.com/webstreamr/webstreamr/commit/221fa989f4c51e13308a41e59dd088a2b0128e45))
## [0.66.5](https://github.com/webstreamr/webstreamr/compare/v0.66.4...v0.66.5) (2026-02-23)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#730](https://github.com/webstreamr/webstreamr/issues/730)) ([6c10236](https://github.com/webstreamr/webstreamr/commit/6c102362fde48af0a6857f8ab66bc42385a3411a))
### Bug Fixes
* **extractor:** remove StreamUp ([556b20e](https://github.com/webstreamr/webstreamr/commit/556b20e6690c251e86e10740b45ca0b4c614b222))
* **source:** add support for old XDMovies uploads without URL protector ([964e979](https://github.com/webstreamr/webstreamr/commit/964e9794695201367900ae6e4eda4ad439652222))
### Performance Improvements
* cache all non-error requests for 15m, tune axios caching ([ae10810](https://github.com/webstreamr/webstreamr/commit/ae10810caaebb909ffe5c51c37dc4a01184391a9))
## [0.66.4](https://github.com/webstreamr/webstreamr/compare/v0.66.3...v0.66.4) (2026-02-21)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#708](https://github.com/webstreamr/webstreamr/issues/708)) ([ccdd460](https://github.com/webstreamr/webstreamr/commit/ccdd4600bba1041b5f2f2515c730856eb729991f))
* **deps:** lock file maintenance ([#718](https://github.com/webstreamr/webstreamr/issues/718)) ([d0f3e0f](https://github.com/webstreamr/webstreamr/commit/d0f3e0f9316770fe47d0395269dafe155fa1e17d))
* **deps:** update dependency @stylistic/eslint-plugin to v5.8.0 ([#709](https://github.com/webstreamr/webstreamr/issues/709)) ([1ae12fa](https://github.com/webstreamr/webstreamr/commit/1ae12fa0f790566193bfe42f3457fe9d4e976502))
* **deps:** update dependency @stylistic/eslint-plugin to v5.9.0 ([#723](https://github.com/webstreamr/webstreamr/issues/723)) ([bd160eb](https://github.com/webstreamr/webstreamr/commit/bd160eb32ce3719bfbebb468a5b2e45d9b4a35ce))
* **deps:** update dependency @types/node to v24.10.12 ([#707](https://github.com/webstreamr/webstreamr/issues/707)) ([3f35ecf](https://github.com/webstreamr/webstreamr/commit/3f35ecf6f3eab3c2c789a176be73d1a80539762d))
* **deps:** update dependency @types/node to v24.10.13 ([#717](https://github.com/webstreamr/webstreamr/issues/717)) ([524630d](https://github.com/webstreamr/webstreamr/commit/524630d671a74dd844ce0f629b4ccae1f88cf6e6))
* **deps:** update dependency axios to v1.13.5 ([#705](https://github.com/webstreamr/webstreamr/issues/705)) ([de13209](https://github.com/webstreamr/webstreamr/commit/de13209709071f8f5241f209a0dbc75232925c3c))
* **deps:** update dependency glob to v13.0.1 ([#698](https://github.com/webstreamr/webstreamr/issues/698)) ([72c191f](https://github.com/webstreamr/webstreamr/commit/72c191fbc10ed9524e698609736f01de0f236c43))
* **deps:** update dependency glob to v13.0.2 ([#711](https://github.com/webstreamr/webstreamr/issues/711)) ([eccea52](https://github.com/webstreamr/webstreamr/commit/eccea520b7cf8b997a694c6f4fded3cbc74b960a))
* **deps:** update dependency glob to v13.0.3 ([#714](https://github.com/webstreamr/webstreamr/issues/714)) ([65a0e57](https://github.com/webstreamr/webstreamr/commit/65a0e57ab9694648977822f73d89e641feabf893))
* **deps:** update dependency glob to v13.0.4 ([#720](https://github.com/webstreamr/webstreamr/issues/720)) ([245dcf6](https://github.com/webstreamr/webstreamr/commit/245dcf6007b6e02d767246463b224e18eecaccb8))
* **deps:** update dependency glob to v13.0.5 ([#721](https://github.com/webstreamr/webstreamr/issues/721)) ([fb354b4](https://github.com/webstreamr/webstreamr/commit/fb354b47461f58a25c245dcac65ca2de26302207))
* **deps:** update dependency glob to v13.0.6 ([#724](https://github.com/webstreamr/webstreamr/issues/724)) ([23db19d](https://github.com/webstreamr/webstreamr/commit/23db19d07317350d007b646c6915bb9fef60b165))
* **deps:** update dependency nodemon to v3.1.12 ([#725](https://github.com/webstreamr/webstreamr/issues/725)) ([5bfbd94](https://github.com/webstreamr/webstreamr/commit/5bfbd94e51e1c7291e12ac912578fcbf6bb39232))
* **deps:** update dependency nodemon to v3.1.13 ([#726](https://github.com/webstreamr/webstreamr/issues/726)) ([728ed7e](https://github.com/webstreamr/webstreamr/commit/728ed7ec0631d8de8df12626cdea857b1aad1059))
* **deps:** update dependency nodemon to v3.1.14 ([#728](https://github.com/webstreamr/webstreamr/issues/728)) ([3bb7a80](https://github.com/webstreamr/webstreamr/commit/3bb7a800e3662e0bd2ae31ec4b4a61eaee5dde6c))
* **deps:** update dependency typescript-eslint to v8.55.0 ([#710](https://github.com/webstreamr/webstreamr/issues/710)) ([7ec9c5b](https://github.com/webstreamr/webstreamr/commit/7ec9c5b1473e1e04203421ebbdd0c8d904744e99))
* **deps:** update dependency typescript-eslint to v8.56.0 ([#719](https://github.com/webstreamr/webstreamr/issues/719)) ([94f5c74](https://github.com/webstreamr/webstreamr/commit/94f5c7438d82f96edfb0692e55eb071642d008a9))
* **deps:** update eslint monorepo to v9.39.3 ([#727](https://github.com/webstreamr/webstreamr/issues/727)) ([26b6143](https://github.com/webstreamr/webstreamr/commit/26b6143152b8b15f2d79f747dbdb8cb48137a46a))
* **extractor:** adapt mixdrop host check ([34500ea](https://github.com/webstreamr/webstreamr/commit/34500ea3fc11376eb99a86a08c179137239d612d))
### Bug Fixes
* **source:** handle new XDMovies URL protection ([cf8fb4c](https://github.com/webstreamr/webstreamr/commit/cf8fb4cfa47741ef8cb3fd214e7eff24ecc72375))
## [0.66.3](https://github.com/webstreamr/webstreamr/compare/v0.66.2...v0.66.3) (2026-02-03)
### Performance Improvements
* **fetcher:** simplify FlareSolverr integration by just using a request per host ([31da8aa](https://github.com/webstreamr/webstreamr/commit/31da8aa92c48618b0b52fd2194262685c947e02e))
## [0.66.2](https://github.com/webstreamr/webstreamr/compare/v0.66.1...v0.66.2) (2026-02-03)
### Performance Improvements
* **fetcher:** improve FlareSolverr integration ([ae5829d](https://github.com/webstreamr/webstreamr/commit/ae5829dcb0f8064e939c06d6457f891b1c7051c8))
## [0.66.1](https://github.com/webstreamr/webstreamr/compare/v0.66.0...v0.66.1) (2026-02-02)
### Bug Fixes
* **source:** make XDMovies a fallback source to avoid hubcloud and many duplicates ([2612860](https://github.com/webstreamr/webstreamr/commit/2612860f1525a8f803e6d37aabdf5fd28b3d287f))
## [0.66.0](https://github.com/webstreamr/webstreamr/compare/v0.65.10...v0.66.0) (2026-02-02)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#692](https://github.com/webstreamr/webstreamr/issues/692)) ([455d84d](https://github.com/webstreamr/webstreamr/commit/455d84d5b186ff916734977bd2b4cb0b355ca485))
### Features
* **source:** add XDMovies ([1f4d81b](https://github.com/webstreamr/webstreamr/commit/1f4d81bfc99066bfe6dafd3da7ffc8b13cdfffc1))
### Bug Fixes
* **fetcher:** never block flaresolverr timeouts ([c23ffa3](https://github.com/webstreamr/webstreamr/commit/c23ffa382d862ced1a385cf36d895f75ad3b7e97))
## [0.65.10](https://github.com/webstreamr/webstreamr/compare/v0.65.9...v0.65.10) (2026-01-28)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#686](https://github.com/webstreamr/webstreamr/issues/686)) ([0743111](https://github.com/webstreamr/webstreamr/commit/074311107a96cb3ed3c3dd2af6828a9a28bbe705))
* **deps:** update dependency axios to v1.13.3 ([#685](https://github.com/webstreamr/webstreamr/issues/685)) ([19a73b3](https://github.com/webstreamr/webstreamr/commit/19a73b38669a809a473e69872be5816807da5d13))
* **deps:** update dependency axios to v1.13.4 ([#689](https://github.com/webstreamr/webstreamr/issues/689)) ([5c87c5d](https://github.com/webstreamr/webstreamr/commit/5c87c5d9e2b52aeb1665212144d06cca7e6147a4))
* **deps:** update dependency typescript-eslint to v8.54.0 ([#687](https://github.com/webstreamr/webstreamr/issues/687)) ([8f8ecb8](https://github.com/webstreamr/webstreamr/commit/8f8ecb868e5fb1dc03073ff0b53d416087ca5437))
* **extractor:** add new VOE domain ([75c9509](https://github.com/webstreamr/webstreamr/commit/75c9509793f582fd566ece0694fc6961df5f7f61))
* **extractor:** increase Fsst TTL to 3 hours ([a876c9b](https://github.com/webstreamr/webstreamr/commit/a876c9b14489f713460e56a32bcf39a3e4897796))
* **extractor:** increase StreamEmbed TTL to 3d ([e52cee2](https://github.com/webstreamr/webstreamr/commit/e52cee212508a1945bc810bda5ce07c3322769a2))
### Bug Fixes
* **extractor:** avoid caching results with empty meta, add some self-healing ([2ba6e4f](https://github.com/webstreamr/webstreamr/commit/2ba6e4fa358ca89aa522e1e97b4e2ed3ded7114a))
* **extractor:** ensure every result has a ttl ([db860c2](https://github.com/webstreamr/webstreamr/commit/db860c25c687b87bbec34bc72995ed47aa9115aa))
### Code Refactoring
* **extractor:** introduce internal type to reduce common code ([50a7e55](https://github.com/webstreamr/webstreamr/commit/50a7e5559bfa98305e006f8b7833aa2952d65029))
## [0.65.9](https://github.com/webstreamr/webstreamr/compare/v0.65.8...v0.65.9) (2026-01-23) ## [0.65.9](https://github.com/webstreamr/webstreamr/compare/v0.65.8...v0.65.9) (2026-01-23)

View file

@ -1,15 +1,28 @@
# WebStreamr # WebStreamr
[![Tests](https://github.com/webstreamr/webstreamr/workflows/Tests/badge.svg)](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml) [![Tests](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml/badge.svg)](https://github.com/webstreamr/webstreamr/actions/workflows/tests.yml)
[![GitHub release](https://img.shields.io/github/v/release/webstreamr/webstreamr)](https://github.com/webstreamr/webstreamr/releases) [![GitHub release](https://img.shields.io/github/v/release/webstreamr/webstreamr)](https://github.com/webstreamr/webstreamr/releases)
![GitHub License](https://img.shields.io/github/license/webstreamr/webstreamr) ![GitHub License](https://img.shields.io/github/license/webstreamr/webstreamr)
[Stremio](https://www.stremio.com/) add-on which provides HTTP URLs from streaming websites. [Stremio](https://www.stremio.com/) add-on which provides HTTP URLs from streaming websites.
HTTP streams have limitations.
For a better experience, I'd advise using a Debrid service and WebStreamr as fallback.
[TorBox](https://torbox.app/subscription?referral=f22eb00d-27ce-4e20-85fc-68da3d018b99) is working very well.
## Public instance ## Public instance
A public instance is available at https://webstreamr.hayd.uk. Hosting infrastructure for this instance is donated by [ElfHosted](https://elfhosted.com), and independently maintained by [Hayduk](https://hayd.uk). A public instance is available at https://webstreamr.hayd.uk. Hosting infrastructure for this instance is donated by [ElfHosted](https://elfhosted.com), and independently maintained by [Hayduk](https://hayd.uk).
## Known issues / limitations
- PixelServer / pixeldrain has a daily limit of 6 GB per IP: https://pixeldrain.dev
- Dropload and SuperVideo on Android do not work because Stremio does not use the `Referer` header properly via HLS playlists: https://github.com/Stremio/stremio-bugs/issues/2389, maybe https://github.com/Stremio/stremio-bugs/issues/1579
- MediaFlow proxy has to be used in an inefficient way because Stremio on Android or its players cannot deal with HLS playlist with redirects: https://github.com/Stremio/stremio-bugs/issues/1574
- FlareSolverr cookies cannot be used because Cloudflare does techniques like TLS fingerprinting most likely. But FlareSolverr uses a session per host and should be quick.
- VidSrc works but rate limits heavily and is therefore only queried as fallback if nothing else is found.
- RgShows detects shared usage and blocks IPs. It therefore only works on private instances.
## MediaFlow Proxy ## MediaFlow Proxy
[MediaFlow Proxy](https://github.com/mhdzumair/mediaflow-proxy/) can be added when configuration the add-on to gain access to a couple of more file hosters. [MediaFlow Proxy](https://github.com/mhdzumair/mediaflow-proxy/) can be added when configuration the add-on to gain access to a couple of more file hosters.

2156
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{ {
"name": "webstreamr", "name": "webstreamr",
"description": "Provides HTTP URLs from streaming websites.", "description": "Provides HTTP URLs from streaming websites.",
"version": "0.65.9", "version": "0.69.1",
"type": "commonjs", "type": "commonjs",
"scripts": { "scripts": {
"analyse": "tsc --noEmit --project ./tsconfig.dev.json", "analyse": "tsc --noEmit --project ./tsconfig.dev.json",

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -25,7 +25,7 @@ export class DoodStream extends Extractor {
return new URL(`http://dood.to/e/${videoId}`); return new URL(`http://dood.to/e/${videoId}`);
}; };
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -44,8 +44,6 @@ export class DoodStream extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Doodstream', url, headers), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Doodstream', url, headers),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Dropload extends Extractor {
public override readonly ttl: number = 10800000; // 3h public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/dropload/); return null !== url.host.match(/dropload|dr0pstream/);
} }
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/d/', '/').replace('/e/', '/').replace('/embed-', '/')); public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/d/', '/').replace('/e/', '/').replace('/embed-', '/'));
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -28,11 +28,12 @@ export class Dropload extends Extractor {
} }
const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]); const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]);
const playlistHeaders = { Referer: 'https://dr0pstream.com/' };
const heightMatch = html.match(/\d{3,}x(\d{3,}),/); const heightMatch = html.match(/\d{3,}x(\d{3,}),/);
const height = heightMatch const height = heightMatch
? parseInt(heightMatch[1] as string) ? parseInt(heightMatch[1] as string)
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl); : meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders });
const sizeMatch = html.match(/([\d.]+ ?[GM]B)/); const sizeMatch = html.match(/([\d.]+ ?[GM]B)/);
const size = sizeMatch ? bytes.parse(sizeMatch[1] as string) as number : undefined; const size = sizeMatch ? bytes.parse(sizeMatch[1] as string) as number : undefined;
@ -44,14 +45,13 @@ export class Dropload extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,
...(size && { bytes: size }), ...(size && { bytes: size }),
...(height && { height }), ...(height && { height }),
}, },
requestHeaders: playlistHeaders,
}, },
]; ];
}; };

View file

@ -1,4 +1,4 @@
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { showExternalUrls } from '../utils'; import { showExternalUrls } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,14 +13,13 @@ export class ExternalUrl extends Extractor {
return showExternalUrls(ctx.config) && null !== url.host.match(/.*/); return showExternalUrls(ctx.config) && null !== url.host.match(/.*/);
} }
protected async extractInternal(_ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(_ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
return [ return [
{ {
url: url, url: url,
format: Format.unknown, format: Format.unknown,
isExternal: true, isExternal: true,
label: `${url.host}`, label: `${url.host}`,
ttl: this.ttl,
meta, meta,
}, },
]; ];

View file

@ -1,5 +1,5 @@
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta, UrlResult } from '../types';
import { Fetcher } from '../utils'; import { Fetcher } from '../utils';
export abstract class Extractor { export abstract class Extractor {
@ -9,6 +9,8 @@ export abstract class Extractor {
public readonly ttl: number = 900000; // 15m public readonly ttl: number = 900000; // 15m
public readonly cacheVersion: number | undefined = undefined;
public readonly viaMediaFlowProxy: boolean = false; public readonly viaMediaFlowProxy: boolean = false;
protected readonly fetcher: Fetcher; protected readonly fetcher: Fetcher;
@ -23,12 +25,17 @@ export abstract class Extractor {
return url; return url;
}; };
protected abstract extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]>; protected abstract extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]>;
public async extract(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { public async extract(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
try { try {
return (await this.extractInternal(ctx, url, meta)).map( return (await this.extractInternal(ctx, url, meta)).map(
urlResult => ({ ...urlResult, label: this.formatLabel(urlResult.label) }), urlResult => ({
...urlResult,
label: this.formatLabel(urlResult.label ?? this.label),
ttl: this.ttl,
}),
); );
} catch (error) { } catch (error) {
if (error instanceof NotFoundError) { if (error instanceof NotFoundError) {
@ -42,6 +49,7 @@ export abstract class Extractor {
isExternal: true, isExternal: true,
error, error,
label: this.formatLabel(this.label), label: this.formatLabel(this.label),
ttl: 0,
meta, meta,
}, },
]; ];

View file

@ -49,6 +49,11 @@ describe('ExtractorRegistry', () => {
expect(urlResults).toMatchSnapshot(); expect(urlResults).toMatchSnapshot();
}); });
test('empty results are cached', async () => {
const urlResults = await extractorRegistry.handle(ctx, new URL('https://dropload.io/asdfghijklmn.html'), { title: 'title' });
expect(urlResults).toMatchSnapshot();
});
test('stats returns something', async () => { test('stats returns something', async () => {
const stats = extractorRegistry.stats(); const stats = extractorRegistry.stats();

View file

@ -44,9 +44,7 @@ export class ExtractorRegistry {
} }
const normalizedUrl = extractor.normalize(url); const normalizedUrl = extractor.normalize(url);
const cacheKey = extractor.viaMediaFlowProxy const cacheKey = this.determineCacheKey(ctx, extractor, normalizedUrl);
? `${extractor.id}_${normalizedUrl}_${ctx.config.mediaFlowProxyUrl}`
: `${extractor.id}_${normalizedUrl}`;
const storedDataRaw = await this.urlResultCache.getRaw<UrlResult[]>(cacheKey); const storedDataRaw = await this.urlResultCache.getRaw<UrlResult[]>(cacheKey);
const expires = storedDataRaw?.expires; const expires = storedDataRaw?.expires;
@ -79,30 +77,36 @@ export class ExtractorRegistry {
this.logger.info(`Extract ${url} using ${extractor.id} extractor`, ctx); this.logger.info(`Extract ${url} using ${extractor.id} extractor`, ctx);
const urlResults = await extractor.extract( const mergedMeta: Meta = { ...meta, ...lazyUrlResults[0]?.meta };
ctx, const urlResults = await extractor.extract(ctx, normalizedUrl, { extractorId: extractor.id, ...mergedMeta });
normalizedUrl,
{
...meta,
...lazyUrlResults[0]?.meta,
extractorId: meta?.extractorId ?? extractor.id,
},
);
if (!urlResults.length) { if (!Object.keys(mergedMeta).length || urlResults.some(urlResult => urlResult.error)) {
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, 43200000); // 12h await this.urlResultCache.delete(cacheKey);
} else if (!urlResults.some(urlResult => urlResult.error)) {
/* istanbul ignore else */
if (extractor.ttl) {
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, extractor.ttl);
}
if (extractor.id !== 'external') {
await this.lazyUrlResultCache.set<UrlResult[]>(normalizedUrl.href, urlResults, 2629800000); // 1 month
}
} else {
await this.lazyUrlResultCache.delete(normalizedUrl.href); await this.lazyUrlResultCache.delete(normalizedUrl.href);
return urlResults;
}
const ttl = urlResults.length ? extractor.ttl : 43200000; // 12h
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, ttl);
if (extractor.id !== 'external') {
await this.lazyUrlResultCache.set<UrlResult[]>(normalizedUrl.href, urlResults, 2629800000); // 1 month
} }
return urlResults; return urlResults;
}; };
private determineCacheKey(ctx: Context, extractor: Extractor, url: URL): string {
let suffix = '';
if (extractor.viaMediaFlowProxy) {
suffix += `_${ctx.config.mediaFlowProxyUrl}`;
}
if (extractor.cacheVersion) {
suffix += `_${extractor.cacheVersion}`;
}
return `${extractor.id}_${url}${suffix}`;
}
} }

View file

@ -1,6 +1,6 @@
import bytes from 'bytes'; import bytes from 'bytes';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Fastream extends Extractor {
return new URL(url.href.replace('/e/', '/embed-').replace('/d/', '/embed-')); return new URL(url.href.replace('/e/', '/embed-').replace('/d/', '/embed-'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const downloadUrl = new URL(url.href.replace('/embed-', '/d/')); const downloadUrl = new URL(url.href.replace('/embed-', '/d/'));
@ -38,8 +38,6 @@ export class Fastream extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse(heightAndSizeMatch[2] as string) as number, bytes: bytes.parse(heightAndSizeMatch[2] as string) as number,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy, unpackEval } from '../utils'; import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy, unpackEval } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -62,7 +62,7 @@ export class FileLions extends Extractor {
return new URL(url.href.replace('/v/', '/f/').replace('/download/', '/f/').replace('/file/', '/f/')); return new URL(url.href.replace('/v/', '/f/').replace('/download/', '/f/').replace('/file/', '/f/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -87,8 +87,6 @@ export class FileLions extends Extractor {
{ {
url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileLions', url, headers), url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileLions', url, headers),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: parseInt(heightMatch[1] as string), height: parseInt(heightMatch[1] as string),

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -45,7 +45,7 @@ export class FileMoon extends Extractor {
return new URL(url.href.replace('/e/', '/d/')); return new URL(url.href.replace('/e/', '/d/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta, originalUrl?: URL): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta, originalUrl?: URL): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -72,8 +72,6 @@ export class FileMoon extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
...(heightMatch && { height: parseInt(heightMatch[1] as string) }), ...(heightMatch && { height: parseInt(heightMatch[1] as string) }),

View file

@ -1,5 +1,5 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class Fsst extends Extractor { export class Fsst extends Extractor {
@ -7,11 +7,13 @@ export class Fsst extends Extractor {
public readonly label = 'Fsst'; public readonly label = 'Fsst';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/fsst/); return null !== url.host.match(/fsst/);
}; };
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers, noProxyHeaders: true }); const html = await this.fetcher.text(ctx, url, { headers, noProxyHeaders: true });
@ -29,7 +31,6 @@ export class Fsst extends Extractor {
return [{ return [{
url: await this.fetcher.getFinalRedirectUrl(ctx, new URL(fileHref), { headers, noProxyHeaders: true }, 1), url: await this.fetcher.getFinalRedirectUrl(ctx, new URL(fileHref), { headers, noProxyHeaders: true }, 1),
format: Format.mp4, format: Format.mp4,
label: this.label,
meta: { meta: {
...meta, ...meta,
height: parseInt(heightAndUrlMatch[1] as string), height: parseInt(heightAndUrlMatch[1] as string),

View file

@ -21,4 +21,8 @@ describe('HubCloud', () => {
test('handle dark 2017 s03e08', async () => { test('handle dark 2017 s03e08', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot();
}); });
test('handle goat 2026', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.foo/drive/p94k4dccjwxjcx4'))).toMatchSnapshot();
});
}); });

View file

@ -1,6 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { findCountryCodes, findHeight } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class HubCloud extends Extractor { export class HubCloud extends Extractor {
@ -8,13 +9,15 @@ export class HubCloud extends Extractor {
public readonly label = 'HubCloud'; public readonly label = 'HubCloud';
public override readonly ttl: number = 518400000; // 6d public override readonly ttl: number = 43200000; // 12h
public override readonly cacheVersion = 1;
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/hubcloud/); return null !== url.host.match(/hubcloud/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const redirectHtml = await this.fetcher.text(ctx, url, { headers }); const redirectHtml = await this.fetcher.text(ctx, url, { headers });
@ -23,6 +26,10 @@ export class HubCloud extends Extractor {
const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } }); const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } });
const $ = cheerio.load(linksHtml); const $ = cheerio.load(linksHtml);
const title = $('title').text().trim();
const countryCodes = [...new Set([...meta.countryCodes ?? [], ...findCountryCodes(title)])];
const height = meta.height ?? findHeight(title);
return Promise.all([ return Promise.all([
...$('a') ...$('a')
.filter((_i, el) => { .filter((_i, el) => {
@ -36,30 +43,58 @@ export class HubCloud extends Extractor {
url, url,
format: Format.unknown, format: Format.unknown,
label: `${this.label} (FSL)`, label: `${this.label} (FSL)`,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse($('#size').text()) as number, bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_fsl`, extractorId: `${this.id}_fsl`,
title: $('title').text().trim(), countryCodes,
height,
title,
},
};
}).toArray(),
...$('a')
.filter((_i, el) => {
const text = $(el).text();
return text.includes('FSLv2');
})
.map((_i, el) => {
const url = new URL($(el).attr('href') as string);
return {
url,
format: Format.unknown,
label: `${this.label} (FSLv2)`,
meta: {
...meta,
bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_fslv2`,
countryCodes,
height,
title,
}, },
}; };
}).toArray(), }).toArray(),
...$('a') ...$('a')
.filter((_i, el) => $(el).text().includes('PixelServer')) .filter((_i, el) => $(el).text().includes('PixelServer'))
.map((_i, el) => { .map((_i, el) => {
const url = new URL(($(el).attr('href') as string).replace('/u/', '/api/file/')); const userUrl = new URL(($(el).attr('href') as string).replace('/api/file/', '/u/'));
const url = new URL(userUrl.href.replace('/u/', '/api/file/'));
url.searchParams.set('download', '');
return { return {
url, url,
format: Format.unknown, format: Format.unknown,
label: `${this.label} (PixelServer)`, label: `${this.label} (PixelServer)`,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse($('#size').text()) as number, bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_pixelserver`, extractorId: `${this.id}_pixelserver`,
title: $('title').text().trim(), countryCodes,
height,
title,
}, },
requestHeaders: { Referer: userUrl.href },
}; };
}).toArray(), }).toArray(),
]); ]);

View file

@ -22,4 +22,8 @@ describe('HubDrive', () => {
test('handle avatar', async () => { test('handle avatar', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot(); expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
}); });
test('handle missing hubcloud', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/2243124026'))).toMatchSnapshot();
});
}); });

View file

@ -1,5 +1,5 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Meta, UrlResult } from '../types'; import { Context, InternalUrlResult, Meta } from '../types';
import { Fetcher } from '../utils'; import { Fetcher } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
import { HubCloud } from './HubCloud'; import { HubCloud } from './HubCloud';
@ -9,7 +9,9 @@ export class HubDrive extends Extractor {
public readonly label = 'HubDrive'; public readonly label = 'HubDrive';
public override readonly ttl: number = 518400000; // 6d public override readonly ttl: number = 43200000; // 12h
public override readonly cacheVersion = 1;
private readonly hubCloud: HubCloud; private readonly hubCloud: HubCloud;
@ -23,14 +25,16 @@ export class HubDrive extends Extractor {
return null !== url.host.match(/hubdrive/); return null !== url.host.match(/hubdrive/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
const $ = cheerio.load(html); const $ = cheerio.load(html);
const hubCloudUrl = new URL($('a:contains("HubCloud")').attr('href') as string); const hubCloudUrl = $('a:contains("HubCloud")')
.map((_i, el) => new URL($(el).attr('href') as string))
.get(0);
return this.hubCloud.extract(ctx, hubCloudUrl, meta); return hubCloudUrl ? this.hubCloud.extract(ctx, hubCloudUrl, meta) : [];
}; };
} }

View file

@ -1,5 +1,5 @@
import crypto from 'crypto'; import crypto from 'crypto';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { guessHeightFromPlaylist } from '../utils'; import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -43,7 +43,7 @@ export class KinoGer extends Extractor {
return new URL(`${url.origin}/api/v1/video?id=${url.hash.slice(1)}`); return new URL(`${url.origin}/api/v1/video?id=${url.hash.slice(1)}`);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { const headers = {
'Origin': url.origin, 'Origin': url.origin,
'Referer': url.origin + '/', 'Referer': url.origin + '/',
@ -66,8 +66,6 @@ export class KinoGer extends Extractor {
{ {
url: m3u8Url, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }), height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -34,7 +34,7 @@ export class LuluStream extends Extractor {
return new URL(`/e/${videoId}`, url); return new URL(`/e/${videoId}`, url);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const fileUrl = new URL(url.href.replace('/e/', '/d/')); const fileUrl = new URL(url.href.replace('/e/', '/d/'));
@ -55,8 +55,6 @@ export class LuluStream extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Mixdrop extends Extractor {
public override viaMediaFlowProxy = true; public override viaMediaFlowProxy = true;
public supports(ctx: Context, url: URL): boolean { public supports(ctx: Context, url: URL): boolean {
return null !== url.host.match(/mixdrop/) && supportsMediaFlowProxy(ctx); return null !== url.host.match(/mixdrop|mixdrp|mixdroop|m1xdrop/) && supportsMediaFlowProxy(ctx);
} }
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/f/', '/e/')); public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/f/', '/e/'));
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const fileUrl = new URL(url.href.replace('/e/', '/f/')); const fileUrl = new URL(url.href.replace('/e/', '/f/'));
const html = await this.fetcher.text(ctx, fileUrl); const html = await this.fetcher.text(ctx, fileUrl);
@ -35,8 +35,6 @@ export class Mixdrop extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
bytes: bytes.parse((sizeMatch[1] as string).replace(',', '')) as number, bytes: bytes.parse((sizeMatch[1] as string).replace(',', '')) as number,

View file

@ -1,5 +1,5 @@
import { BlockedError } from '../error'; import { BlockedError } from '../error';
import { BlockedReason, Context, Format, Meta, UrlResult } from '../types'; import { BlockedReason, Context, Format, InternalUrlResult, Meta } from '../types';
import { guessHeightFromPlaylist } from '../utils'; import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -20,7 +20,7 @@ export class RgShows extends Extractor {
return null !== url.host.match(/rgshows/); return null !== url.host.match(/rgshows/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { 'Referer': 'https://www.rgshows.ru/', 'Origin': 'https://www.rgshows.ru', 'User-Agent': 'Mozilla' }; const headers = { 'Referer': 'https://www.rgshows.ru/', 'Origin': 'https://www.rgshows.ru', 'User-Agent': 'Mozilla' };
const data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData; const data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData;
@ -38,8 +38,6 @@ export class RgShows extends Extractor {
{ {
url: streamUrl, url: streamUrl,
format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown), format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown),
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
...(isHls && { height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, { headers }) }), ...(isHls && { height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, { headers }) }),

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class SaveFiles extends Extractor { export class SaveFiles extends Extractor {
@ -18,7 +18,7 @@ export class SaveFiles extends Extractor {
return new URL(url.href.replace('/e/', '/').replace('/d/', '/')); return new URL(url.href.replace('/e/', '/').replace('/d/', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -37,8 +37,6 @@ export class SaveFiles extends Extractor {
{ {
url: new URL(fileMatch[1] as string), url: new URL(fileMatch[1] as string),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,5 +1,5 @@
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class StreamEmbed extends Extractor { export class StreamEmbed extends Extractor {
@ -7,11 +7,13 @@ export class StreamEmbed extends Extractor {
public readonly label = 'StreamEmbed'; public readonly label = 'StreamEmbed';
public override readonly ttl: number = 259200000; // 3d
public supports(_ctx: Context, url: URL): boolean { public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/bullstream|mp4player|watch\.gxplayer/); return null !== url.host.match(/bullstream|mp4player|watch\.gxplayer/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -26,8 +28,6 @@ export class StreamEmbed extends Extractor {
{ {
url: new URL(`/m3u8/${video.uid}/${video.md5}/master.txt?s=1&id=${video.id}&cache=${video.status}`, url.origin), url: new URL(`/m3u8/${video.uid}/${video.md5}/master.txt?s=1&id=${video.id}&cache=${video.status}`, url.origin),
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: parseInt(JSON.parse(video.quality)[0]), height: parseInt(JSON.parse(video.quality)[0]),

View file

@ -1,16 +0,0 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { StreamUp } from './StreamUp';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new StreamUp(new FetcherMock(`${__dirname}/__fixtures__/StreamUp`))]);
const ctx = createTestContext();
describe('StreamUp', () => {
test('handle one battle after another', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://strmup.to/6950ae79eaa4c'))).toMatchSnapshot();
});
});

View file

@ -1,49 +0,0 @@
import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types';
import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
interface StreamUpApiData {
streaming_url: string;
}
/** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/streamup.py */
export class StreamUp extends Extractor {
public readonly id = 'streamup';
public readonly label = 'StreamUP';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/streamup|strmup/) || [
'vfaststream.com',
].includes(url.host);
}
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
const headers = { Referer: `${url.origin}/`, Origin: url.origin };
const html = await this.fetcher.text(ctx, url, { headers });
const data = await this.fetcher.json(ctx, new URL(`/ajax/stream?filecode=${url.pathname.split('/').at(-1)}`, url), { headers }) as StreamUpApiData;
const playlistUrl = new URL(data.streaming_url);
const $ = cheerio.load(html);
const title = $('title').text().trim();
return [
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl),
title,
},
},
];
}
}

View file

@ -1,10 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
buildMediaFlowProxyExtractorRedirectUrl,
supportsMediaFlowProxy,
} from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class Streamtape extends Extractor { export class Streamtape extends Extractor {
@ -45,7 +42,7 @@ export class Streamtape extends Extractor {
return new URL(url.href.replace('/e/', '/v/')); return new URL(url.href.replace('/e/', '/v/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
// Only needed to properly find non-existing files via 404 response // Only needed to properly find non-existing files via 404 response
@ -62,8 +59,6 @@ export class Streamtape extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Streamtape', url, headers), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Streamtape', url, headers),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -20,7 +20,7 @@ export class SuperVideo extends Extractor {
return new URL(url.href.replace('/e/', '/').replace('/k/', '/').replace('/embed-', '/')); return new URL(url.href.replace('/e/', '/').replace('/k/', '/').replace('/embed-', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -33,29 +33,29 @@ export class SuperVideo extends Extractor {
throw new NotFoundError(); throw new NotFoundError();
} }
const m3u8Url = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]); const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]);
const playlistHeaders = { Referer: 'https://supervideo.cc/' };
const heightAndSizeMatch = html.match(/\d{3,}x(\d{3,}), ([\d.]+ ?[GM]B)/); const heightAndSizeMatch = html.match(/\d{3,}x(\d{3,}), ([\d.]+ ?[GM]B)/);
const size = heightAndSizeMatch ? bytes.parse(heightAndSizeMatch[2] as string) as number : undefined; const size = heightAndSizeMatch ? bytes.parse(heightAndSizeMatch[2] as string) as number : undefined;
const height = heightAndSizeMatch const height = heightAndSizeMatch
? parseInt(heightAndSizeMatch[1] as string) ? parseInt(heightAndSizeMatch[1] as string)
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: url.href } }); : meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders });
const $ = cheerio.load(html); const $ = cheerio.load(html);
const title = $('.download__title').text().trim(); const title = $('.download__title').text().trim();
return [ return [
{ {
url: m3u8Url, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,
...(size && { bytes: size }), ...(size && { bytes: size }),
...(height && { height }), ...(height && { height }),
}, },
requestHeaders: playlistHeaders,
}, },
]; ];
}; };

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils'; import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Uqload extends Extractor {
return new URL(url.href.replace('/embed-', '/')); return new URL(url.href.replace('/embed-', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
if (/File Not Found/.test(html)) { if (/File Not Found/.test(html)) {
@ -35,8 +35,6 @@ export class Uqload extends Extractor {
{ {
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url), url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url),
format: Format.mp4, format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title, title,

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { BlockedError, TooManyRequestsError } from '../error'; import { BlockedError, TooManyRequestsError } from '../error';
import { Context, Format, Meta, NonEmptyArray, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta, NonEmptyArray } from '../types';
import { Fetcher, guessHeightFromPlaylist } from '../utils'; import { Fetcher, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -23,7 +23,7 @@ export class VidSrc extends Extractor {
return null !== url.host.match(/vidsrc|vsrc/); return null !== url.host.match(/vidsrc|vsrc/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
// While this is a crappy thing to do, they seem to be blocking overly strict IMO // While this is a crappy thing to do, they seem to be blocking overly strict IMO
const randomIp = `${Math.floor(Math.random() * 223) + 1}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}`; const randomIp = `${Math.floor(Math.random() * 223) + 1}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}`;
const newCtx = { ...ctx, ip: randomIp }; const newCtx = { ...ctx, ip: randomIp };
@ -31,7 +31,7 @@ export class VidSrc extends Extractor {
return this.extractUsingRandomDomain(newCtx, url, meta, [...this.domains]); return this.extractUsingRandomDomain(newCtx, url, meta, [...this.domains]);
}; };
private async extractUsingRandomDomain(ctx: Context, url: URL, meta: Meta, domains: string[]): Promise<UrlResult[]> { private async extractUsingRandomDomain(ctx: Context, url: URL, meta: Meta, domains: string[]): Promise<InternalUrlResult[]> {
const domainIndex = Math.floor(Math.random() * domains.length); const domainIndex = Math.floor(Math.random() * domains.length);
const [domain] = domains.splice(domainIndex, 1) as [string]; const [domain] = domains.splice(domainIndex, 1) as [string];
@ -74,7 +74,6 @@ export class VidSrc extends Extractor {
url: m3u8Url, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: serverName, label: serverName,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: iframeUrl.href } }), height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: iframeUrl.href } }),

View file

@ -1,5 +1,5 @@
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils'; import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -18,7 +18,7 @@ export class Vidora extends Extractor {
return new URL(url.href.replace('/embed/', '/')); return new URL(url.href.replace('/embed/', '/'));
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
const $ = cheerio.load(html); const $ = cheerio.load(html);
@ -31,8 +31,6 @@ export class Vidora extends Extractor {
{ {
url: m3u8Url, url: m3u8Url,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }), height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),

View file

@ -1,4 +1,4 @@
import { Context, CountryCode, Format, Meta, UrlResult } from '../types'; import { Context, CountryCode, Format, InternalUrlResult, Meta } from '../types';
import { CustomRequestConfig, guessHeightFromPlaylist, hasMultiEnabled, iso639FromCountryCode } from '../utils'; import { CustomRequestConfig, guessHeightFromPlaylist, hasMultiEnabled, iso639FromCountryCode } from '../utils';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
@ -13,7 +13,7 @@ export class VixSrc extends Extractor {
return null !== url.host.match(/vixsrc/); return null !== url.host.match(/vixsrc/);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: url.href }; const headers = { Referer: url.href };
const html = await this.fetcher.text(ctx, url); const html = await this.fetcher.text(ctx, url);
@ -38,8 +38,6 @@ export class VixSrc extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
countryCodes, countryCodes,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes'; import bytes from 'bytes';
import * as cheerio from 'cheerio'; import * as cheerio from 'cheerio';
import { NotFoundError } from '../error'; import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { import {
buildMediaFlowProxyExtractorStreamUrl, guessHeightFromPlaylist, buildMediaFlowProxyExtractorStreamUrl, guessHeightFromPlaylist,
supportsMediaFlowProxy, supportsMediaFlowProxy,
@ -74,6 +74,7 @@ export class Voe extends Extractor {
'kennethofficialitem.com', 'kennethofficialitem.com',
'kinoger.ru', 'kinoger.ru',
'kristiesoundsimply.com', 'kristiesoundsimply.com',
'lancewhosedifficult.com',
'launchreliantcleaverriver.com', 'launchreliantcleaverriver.com',
'lauradaydo.com', 'lauradaydo.com',
'lisatrialidea.com', 'lisatrialidea.com',
@ -103,6 +104,7 @@ export class Voe extends Extractor {
'sethniceletter.com', 'sethniceletter.com',
'shannonpersonalcost.com', 'shannonpersonalcost.com',
'simpulumlamerop.com', 'simpulumlamerop.com',
'smoki.cc',
'stevenimaginelittle.com', 'stevenimaginelittle.com',
'strawberriesporail.com', 'strawberriesporail.com',
'telyn610zoanthropy.com', 'telyn610zoanthropy.com',
@ -124,7 +126,7 @@ export class Voe extends Extractor {
return new URL(`/${url.pathname.replace(/\/+$/, '').split('/').at(-1)}`, url); return new URL(`/${url.pathname.replace(/\/+$/, '').split('/').at(-1)}`, url);
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
let html: string; let html: string;
@ -166,8 +168,6 @@ export class Voe extends Extractor {
{ {
url: playlistUrl, url: playlistUrl,
format: Format.hls, format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
height, height,

View file

@ -1,4 +1,4 @@
import { Context, Format, Meta, UrlResult } from '../types'; import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor'; import { Extractor } from './Extractor';
export class YouTube extends Extractor { export class YouTube extends Extractor {
@ -12,7 +12,7 @@ export class YouTube extends Extractor {
return null !== url.host.match(/youtube/) && url.searchParams.has('v'); return null !== url.host.match(/youtube/) && url.searchParams.has('v');
} }
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> { protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href }; const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers }); const html = await this.fetcher.text(ctx, url, { headers });
@ -24,8 +24,6 @@ export class YouTube extends Extractor {
url, url,
format: Format.unknown, format: Format.unknown,
ytId: url.searchParams.get('v') as string, ytId: url.searchParams.get('v') as string,
label: this.label,
ttl: this.ttl,
meta: { meta: {
...meta, ...meta,
title: titleMatch[1] as string, title: titleMatch[1] as string,

View file

@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
<head> <head>
<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</title> <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</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<center>
<br/> <br/>
<div class="header"> <div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a> HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -201,7 +192,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a> <a href="https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script> <script>
const fsl = document.getElementById('fsl'); const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes(); if (fsl) fsl.href += '1' + new Date().getMinutes();
@ -213,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=cf9da6de5b5cc1ca5b3e2520b5acf717edf501be7d93b65e393737c54cc02414e98b792baef67306766e1ada227050e941565d787d593d01503ab42aa92cc97a47e47ddd48df7d80a8e8c69d566d8d71fb824057bb75356c67cd624ebbd1497f::e0be1d5c31c2e9e9bce4002ad9cce30a" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=5c7253dc7782ea14f891ed9f4c4d7f7ee43284d5e72e6ff401de6f1906046db7713b6d892a040a4b3dd31c9f47eee611a17924f224fc27dd70a921d4e9025c6b7d8b937e11b44e737bd4d5cfd203e361f77a8496dd75025ad8ce3e200905ef3f::853f8b4709e1acb8413ec14270adf205" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -227,6 +218,11 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://hidden-boat-e87c.hivegic619569.workers.dev/1397962425/53eaea70751039409adff7a1b54377f9aa8e590cd610a6452c849a7cbd2e40af66e667588bada714c63a9cf5360712f266b304e379bfde1d12c46aa2ccedf6eb::6170837909b2ffc3fc7f892bc959bd7e/Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" download="Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PDL Server]</a>
<script>
fetch('https://ping.rojgaartakkar.com/bmRFb0YweUVYZ1QvZys0OTRsNk53T2JMRG13QWRxYW5YcWYxYzNHYjhHZz0=');
</script>
@ -253,7 +249,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -319,6 +315,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
<br><br> <br><br>
</div> </div>
Msc Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
@ -330,6 +330,7 @@ Msc
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p> <p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div> </div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body> </body>
</html><script> </html><script>
window.sessionStorage.setItem('xl',window.location.href) window.sessionStorage.setItem('xl',window.location.href)
@ -345,38 +346,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);--> <!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>--> <!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<script data-cfasync="false" type="text/javascript" id="clever-core">
/* <![CDATA[ */
(function (document, window) {
var a, c = document.createElement("script"), f = window.frameElement;
c.id = "CleverCoreLoader98023";
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
c.async = !0;
c.type = "text/javascript";
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
c.setAttribute("data-callback", "put-your-callback-function-here");
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
try {
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
/* ]]> */
</script>

View file

@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
<head> <head>
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title> <title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<center>
<br/> <br/>
<div class="header"> <div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a> HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -201,7 +192,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a> <a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script> <script>
const fsl = document.getElementById('fsl'); const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes(); if (fsl) fsl.href += '1' + new Date().getMinutes();
@ -213,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=93cbf9a8a64bd73e509803a9c1a42d3ca3c1b5e6eedf0306d86e7862fe38d6450d7165aa485b86286f5e95151d3af31e89350676e5cca8b54f56737388e81172998605a935e8c1828f026797bc158ff23921f09201c464a9d4a29c75f5e12026::43a5d16883d6f6cd09d2487e56f0836d" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=fb8c076011baaf9fd0cd6d349d86da6d8bf9c1a241cdcfb8ec27e07979b905608e125fadd030f801fa79752521d434885fe414c584c60919d282af9562b752b7fbaaad7784bd8251ce8eb1f5dacaf711bee65758b9f7fb78c4935b0b08afde16::837d46bfad85ed4f96ad7d9246ba302e" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -241,6 +232,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button> <button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script> <script>
@ -256,7 +248,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -322,6 +314,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
<br><br> <br><br>
</div> </div>
Msc Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
@ -333,6 +329,7 @@ Msc
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p> <p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div> </div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body> </body>
</html><script> </html><script>
window.sessionStorage.setItem('xl',window.location.href) window.sessionStorage.setItem('xl',window.location.href)
@ -348,38 +345,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);--> <!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>--> <!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<script data-cfasync="false" type="text/javascript" id="clever-core">
/* <![CDATA[ */
(function (document, window) {
var a, c = document.createElement("script"), f = window.frameElement;
c.id = "CleverCoreLoader98023";
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
c.async = !0;
c.type = "text/javascript";
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
c.setAttribute("data-callback", "put-your-callback-function-here");
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
try {
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
/* ]]> */
</script>

View file

@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
<head> <head>
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title> <title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<center>
<br/> <br/>
<div class="header"> <div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a> HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span> <span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div> </div>
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div> <div class="ad-container"></div>
@ -201,6 +192,11 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
@ -208,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pixel.hubcdn.fans/?id=8e81a3ddfb35a8f62a21c629b0a08f08a27f8f19be22ca584532726183bbe7cf4dc97e6ba2b4df7a1d76d124164dd6322999e62b058f6af48e4d7ff85a49ee9076155b673b872fa61f8fdeb04ce6540eec83233edac385159a9af83c16643f8f::3e17e91b2006e6622ac681dfceb43068" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;"> <a href="https://pixel.hubcdn.fans/?id=d4697e0d4f27ea5067265503a820f05245ffd2d64a88ce6ecce4e18b6cace173bebc13920763a92baeaefe65f8c8a26efd836a0c1b3e92b4ce717874a5ff26a0764642b8090a5f7ef227bdb0bd6744ea8aa7edc43957e94b6ac9d2034c5a1d29::bada52a274d97488e2e76c1718bc16f5" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a> <i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important"> <p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
@ -226,9 +222,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<a href="https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download File [3.15 GB]</a>
@ -240,7 +233,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
<br> <br>
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram 🔥</a> <a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeTdPK3lOM0QyOHJmbyt6Q3dlVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram </a>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button> <button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
@ -257,7 +250,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
if(isAndroid()){ if(isAndroid()){
android_launch.classList.remove("d-none"); android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{ android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv',scheme: 'https',type: 'video/x-matrosk', var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
});anchor.click(); });anchor.click();
}); });
@ -323,6 +316,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
<br><br> <br><br>
</div> </div>
Msc Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script> <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
@ -334,6 +331,7 @@ Msc
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p> <p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div> </div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body> </body>
</html><script> </html><script>
window.sessionStorage.setItem('xl',window.location.href) window.sessionStorage.setItem('xl',window.location.href)
@ -349,38 +347,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);--> <!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>--> <!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<script data-cfasync="false" type="text/javascript" id="clever-core">
/* <![CDATA[ */
(function (document, window) {
var a, c = document.createElement("script"), f = window.frameElement;
c.id = "CleverCoreLoader98023";
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
c.async = !0;
c.type = "text/javascript";
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
c.setAttribute("data-callback", "put-your-callback-function-here");
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
try {
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
} catch (e) {
a = !1;
}
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
a.parentNode.insertBefore(c, a);
})(document, window);
/* ]]> */
</script>

View file

@ -0,0 +1,355 @@
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<script type="text/javascript">
aclib.runPop({
zoneId: '10553222',
});
</script>
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
<script>
document.addEventListener("DOMContentLoaded", function() {
history.pushState(null, null, location.href);
window.onpopstate = function () {
history.go(1);
window.location.href = 'https://push-me-once.com/go/1272663';
};
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<html>
<head>
<title>Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<div class="container">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">17.78 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">24-Mar-2026 05:58:31</i></li>
</ul>
</div>
</div>
</div>
<p class="h3 text-success">Download Link Generated</p>
<div class="input-group mb-3">
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/p94k4dccjwxjcx4" readonly="" id="ilink">
<div class="input-group-prepend">
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
</div>
</div>
<!-- Banners -->
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!-- Mobile Banners -->
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
<div class="alert alert-warning h6" role="alert">
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
</div>
<a href="https://cdn.fsl-buckets.life/Goat 2026 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-BYNDR-4kHdHub.mkv?token=af180cafc2418c7c47249d0167ba9704" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
<script>
const fsl = document.getElementById('s3');
if (fsl) fsl.href += '_1' + new Date().getMinutes();
</script>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
<script>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<a href="https://pixel.hubcdn.fans/?id=9ca5a77d1f6a5e30157f1ba9335f5f37c246c28a9362693731d08440ebf515ae0bad03a3f054cc1cfc5fd342ead92bee375037aa0be4a07cce23c85320203685335142526fc508a5afc2ef06e1369c99fee1345a55224cddce65e250a0c33632::b31f4889dde70a376ef549e8fa698de9" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
</p>
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
<script>
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
let host_ = host.replace('https://', '');
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
}
function isAndroid() {
return /Android/i.test(navigator.userAgent);
}
const android_launch = document.getElementById('android_launch');
if(isAndroid()){
android_launch.classList.remove("d-none");
android_launch.addEventListener('click', ()=>{
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722',scheme: 'https',type: 'video/x-matrosk',
});anchor.click();
});
};
</script>
</h2>
<div class="alert alert-warning" role="alert">
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
</div>
<hr>
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/p94k4dccjwxjcx4</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
var size = document.getElementById("size").innerHTML
var sharelink = document.getElementById("sharelink").innerHTML
if(size == 'NAN '){swal({
title: "Token Expired!",
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
type: "success"
}).then(function() {
window.location = document.location.href = sharelink;
});}
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
</script>
</div>
</div>
</div>
<script>
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
</script>
<br>
<br>
<br>
<br><br>
</div>
Msc
<video autoplay muted playsinline preload="metadata" hidden>
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
<!--2dl-->
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body>
</html><script>
window.sessionStorage.setItem('xl',window.location.href)
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
</script>
<script>
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
</script>
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
<!--</script>-->
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>

View file

@ -0,0 +1,343 @@
<html>
<head>
<title>Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv</title>
<meta charset="utf-8">
<meta name="referrer" content="no-referrer"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
<meta name=viewport content="width=device-width, initial-scale=1">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<!--<script type="text/javascript">-->
<!-- aclib.runPop({-->
<!-- zoneId: '10550070',-->
<!-- });-->
<!--</script>-->
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VPX61DM9S8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-VPX61DM9S8');Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
</script>
<script>
// function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}
// let p_ = document.location.pathname;
// cn('/');
// setTimeout(()=> cn(p_), 2200);
</script>
</head>
<style>
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
.btn-success1 {
color: #fff;
background-color: #28a745;
border-color: #28a745;
display: inline-block;
text-align: center;
font-size: 1rem;
letter-spacing: .4px;
font-family: 'Open Sans',sans-serif!important;
font-weight: 600;
text-decoration:none !important;
vertical-align: middle;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
border: 1px solid transparent;
padding: .375rem .75rem;
line-height: 1.5;
border-radius: .30rem;
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
}
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
color: #fff;
background-color: #1e7e34;
border-color: #1c7430;
}
.btn-success1:hover {
color: #fff;
background-color: #218838;
border-color: #1e7e34;
}
.btn-success1.focus, .btn-success1:focus {
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
}
.btn-lg, .btn-group-lg > .btn2 {
padding: .5rem .6rem !important;
font-family: 'Open Sans',sans-serif!important;
letter-spacing: .1px;
border-radius: 0.35rem!important;
}
.ads-btns {
position: relative;
overflow: hidden
}
.ads-btns a.btn2 {
min-width: 40%
}
.ads-btns svg {
fill: #fff;
width: 17px;
position: absolute;
right: 0;
top: 0
}
.ads-btns svg path {
fill: #fff;
stroke: #fff
}
.ads-btns svg:first-child path {
fill: #fff;
stroke: transparent
}
.ads-btns svg:first-child {
right: 20px
}
.downloads-btns-div .btn2 {
margin: 0 3px 12px
}
.btn2 {
font-style: normal;
font-weight: 500;
font-size: 14px;
text-align: center;
text-transform: uppercase;
border: 2px solid #cbfc01;
padding: 10px 15px;
border-radius: 6px;
-webkit-border-radius: 6px;
-moz-border-radius: 6px;
background: #0ebac3;
color: #000;
display: inline-block;
text-decoration: none;
background: #cbfc01
}
.btn-zip {
border-color: #00d0ff;
background: #00d0ff;
color: #000
}
</style>
<body>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/>
<div class="header">
HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="https://hubcloud.foo/drive/admin">Login</a>
</div>
<br>
<div class="container container-fluid main">
<div class="card-body">
<h2>
<div class="main" id="section2">
<div class="card h6">
<div class="card-header text-white bg-primary mb-3">
Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv </div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">17.78 GB</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="size">24-Mar-2026 05:58:31</i></li>
</ul>
</ul>
</div>
</div>
</div>
<div class="alert alert-warning h6" role="alert">
<span>
<p>Experience the magic of Hubcloud where files effortlessly find their way into your downloads!</p>
<b>Hubcloud Means File will get Downloaded by anyhow (: </b>
</span>
</div>
<center>
<!--<a href="https://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/header.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="loading">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:#fff;display:block;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
<g><circle cx="73.801" cy="68.263" fill="#e15b64" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="0s"></animateTransform>
</circle><circle cx="68.263" cy="73.801" fill="#f47e60" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.062s"></animateTransform>
</circle><circle cx="61.481" cy="77.716" fill="#f8b26a" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.125s"></animateTransform>
</circle><circle cx="53.916" cy="79.743" fill="#abbd81" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.187s"></animateTransform>
</circle><circle cx="46.084" cy="79.743" fill="#849b87" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.25s"></animateTransform>
</circle><circle cx="38.519" cy="77.716" fill="#6492ac" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.312s"></animateTransform>
</circle><circle cx="31.737" cy="73.801" fill="#637cb5" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.375s"></animateTransform>
</circle><circle cx="26.199" cy="68.263" fill="#6a63b6" r="3">
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.437s"></animateTransform>
</circle><animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;0 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s"></animateTransform></g>
</svg>
<h3>Please Wait While Page is loading</h3>
</div>
<div class="vd d-none">
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=p94k4dccjwxjcx4&token=cDdpTE41ZnJuSTdhY1BQR0hRaGhvTDdXWkdkc2hDdm90Y1dFNFBFaGZGQT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center>
<!--<div class="ads-btns">-->
<!--<div class="downloads-btns-div"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M7.5,1.5a6,6,0,1,0,0,12a6,6,0,1,0,0,-12m0,1a5,5,0,1,1,0,10a5,5,0,1,1,0,-10ZM6.625,11l1.75,0l0,-4.5l-1.75,0ZM7.5,3.75a1,1,0,1,0,0,2a1,1,0,1,0,0,-2Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M3.25,3.25l8.5,8.5M11.75,3.25l-8.5,8.5"></path></svg><a class="btn2" href="https://winexch.com/?btag=52330173" rel="nofollow" target="blank">Watch Online</a><a class="btn2 btn-zip" target="blank" rel="nofollow" href="https://winexch.com/?btag=52330173">Download</a></div>-->
<!--</div>-->
</center>
</div>
</h2>
<center>
<!-- <a href="http://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/footer.gif" style="-->
<!-- width: 820px;-->
<!-- height: 90px;-->
<!-- padding: -17px;-->
<!--" class="img-fluid"></a>-->
</center>
<div class="alert alert-info" role="alert">
<P><a href="https://tinyurl.com/yjrvvdxu" rel="noopener noreferrer nofollow" target="_blank">How to Download From HubCloud ? Click here to Watch Tutorial</a></P>
</div>
<div class="alert alert-primary" role="alert">
<p><b>Note:</b> <i> Always Use Updated Chrome Browser With Cookies Enabled .</i>| Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
</div>
<div class="alert alert-info" role="alert">
<p>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</p>
</div>
<hr>
<!--<div class="m-5 font-weight-normal text-primary">-->
<!--<a href="https://a-ads.com?partner=1490501">Advertise with Anonymous Ads</a>-->
<!--</div>-->
<br>
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="text" align="center">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
</li>
</ul>
</div>
<div class="card">
<div class="card-body" id="div1">
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/p94k4dccjwxjcx4</p>
</div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
</script>
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=p94k4dccjwxjcx4&token=cDdpTE41ZnJuSTdhY1BQR0hRaGhvTDdXWkdkc2hDdm90Y1dFNFBFaGZGQT0=';
setTimeout(function(){
document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000);
var download = document.getElementById('download');
download.onclick = function() {
if (this.classList.contains('disabled')) {
event.preventDefault();
return;
}
window.location.href = url;
download.classList.add('disabled');
setTimeout(function() {
download.classList.remove('disabled');
}, 6000);
}
</script>
<script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script>
</div>
</div>
</div>
<br>
<br>
<br>
<br><br>
</div>
<div class="footer">
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
</div>
</body>
</html>

View file

@ -2,8 +2,7 @@
<head> <head>
<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</title> <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</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -18,15 +17,14 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>--> <script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script> <!--<script type="text/javascript">-->
<script type="text/javascript"> <!-- aclib.runPop({-->
aclib.runPop({ <!-- zoneId: '10550070',-->
zoneId: '10550070', <!-- });-->
}); <!--</script>-->
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -150,7 +148,12 @@
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -280,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000); function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))} </script>
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -303,9 +316,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -2,8 +2,7 @@
<head> <head>
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title> <title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -18,15 +17,14 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>--> <script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script> <!--<script type="text/javascript">-->
<script type="text/javascript"> <!-- aclib.runPop({-->
aclib.runPop({ <!-- zoneId: '10550070',-->
zoneId: '10550070', <!-- });-->
}); <!--</script>-->
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -150,7 +148,12 @@
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -280,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000); function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))} </script>
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -303,9 +316,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -2,8 +2,7 @@
<head> <head>
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title> <title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
<meta charset="utf-8"> <meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script> <meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="no-referrer">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
@ -18,15 +17,14 @@
<meta name="googlebot" content="noindex,nofollow"> <meta name="googlebot" content="noindex,nofollow">
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>--> <script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script> <!--<script type="text/javascript">-->
<script type="text/javascript"> <!-- aclib.runPop({-->
aclib.runPop({ <!-- zoneId: '10550070',-->
zoneId: '10550070', <!-- });-->
}); <!--</script>-->
</script>
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics --> <!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
@ -150,7 +148,12 @@
color: #000 color: #000
} }
</style> </style>
<body><center> <body>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
<div class="ads-core-ads-100892"></div>
<div class="ads-core-ads-101001"></div>
<center>
<br/> <br/>
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a> <a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
<center> <center>
@ -236,7 +239,6 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5 p-2" id="tgbtn" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Download From Telegram</a>
</div> </div>
@ -281,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p> <p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
</div> </div>
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button> <button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
<script> <script>
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000); function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))} </script>
<script>
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=';
setTimeout(function(){ setTimeout(function(){
document.querySelector(".loading").classList.add("d-none"); document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none"); document.querySelector(".vd").classList.remove("d-none");
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
stck('xlax',"s4t",1440);
window.location.href = url;
}
}, 2000); }, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=';
var download = document.getElementById('download'); var download = document.getElementById('download');
download.onclick = function() { download.onclick = function() {
if (this.classList.contains('disabled')) { if (this.classList.contains('disabled')) {
event.preventDefault(); event.preventDefault();
return; return;
} }
window.location.href = url; window.location.href = url;
download.classList.add('disabled'); download.classList.add('disabled');
setTimeout(function() { setTimeout(function() {
@ -304,9 +316,9 @@ download.onclick = function() {
}, 6000); }, 6000);
} }
</script> </script>
<script>
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
</script>
<script> <script>
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1); // function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
</script> </script>

View file

@ -0,0 +1,512 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta name='admaven-placement' content=BrHCGpjC9>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer"/>
<meta name="referrer" content="none"/>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta property="og:image" content="/assets/img/favicon.png">
<meta property="og:type" content="website"/>
<meta name="author" content="HubDrive">
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<title>HubDrive | Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</title>
<!-- Custom fonts for this template-->
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>
<script src="https://unpkg.com/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script async="async" type="text/javascript" src="/assets/js/neodrivev2.5.min.js?v=3"></script>
<script src="https://use.fontawesome.com/746f656c7a.js"></script>
<link href="/assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
<link href="/assets/css/sb-admin-2.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
<link rel="icon" href="/assets/img/favicon.png">
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100829" src="https://sads.adsboosters.xyz/801bbfc2f5f34af99c45dabeb76aa5ef.js"></script>
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101495" src="https://sads.adsboosters.xyz/df182342f761a3795c0c8cfad378c7a4.js"></script>
<div class="clever-core-ads-100829></div>
<div class="clever-core-ads-101495></div>
<style>
h4, .h4 {
font-size: 1.4rem;
}
.table {
margin-bottom: 1rem;
}
#sticky-footer2 {
display: none !important;
}
.Blink {
animation: blinker 0.3s cubic-bezier(.5, 0, 1, 1) infinite alternate;
}
@keyframes blinker {
from { opacity: 1; }
to { opacity: 0; }
}
.sidebar .sidebar-brand {
font-size: .65rem;
}
.sidebar .nav-item .nav-link span {
color: #fff !important;
}
.sidebar .sidebar-brand i {
color: #fff !important;
}
.bg-white {
background-color: #171717!important;
}
.container, .container-fluid {
background-color: transparent !IMPORTANT;
}
.card-header {
background-color: transparent;
}
#wrapper #content-wrapper #content {
background-color: transparent !IMPORTANT;
}
#wrapper #content-wrapper {
background-color: transparent !important;
}
.text-primary {
color: rgb(130, 182, 255) !important;
}
.card-body {
background-color: transparent !IMPORTANT;
}
.card {
background-color: transparent;
border: 2px solid rgb(49, 49, 49);
}
.table {
color: rgb(217, 217, 217);
}
.bg-gradient-primary {
background-image: linear-gradient(180deg,rgb(0, 28, 67)10%,rgb(0, 28, 67) 100%);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(130, 182, 255);
background-color: rgb(0, 28, 67);
}
footer.sticky-footer {
border: 2px solid rgb(49, 49, 49);
}
.navbar {
border-bottom: 2px solid hsl(213deg 69.03% 35.03% / 68%);
border-radius: 5px;
}
.btn-primary {
background-color: rgb(0 63 151);
font-weight: 600;
}
.text-gray-800 {
color: rgb(130, 182, 255);
}
.card-file{
color: rgb(217, 217, 217);
}
.h5 {
color:rgb(130, 182, 255) !Important;
}
hr {
border: 1px solid rgb(255 255 255 / 23%);
}
.text-gray-400 {
color: rgb(130, 182, 255) !important;
}
.text-gray-500 {
color: rgb(130, 182, 255) !important;
}
.text-gray-600 {
color: rgb(130, 182, 255) !important;
}
.text-gray-700 {
color: rgb(130, 182, 255) !important;
}
.text-gray-800 {
color: rgb(130, 182, 255) !important;
}
.text-gray-900 {
color: rgb(130, 182, 255) !important;
}
.dropdown-menu {
background-color: #171717;
border: 2px solid rgb(49, 49, 49);
}
.form-control {
background-color: rgb(239 239 239);
}
body {
background-color: #171717;
}
.btn-info {
border-radius: 0.25rem !important;
background-color: #1a73e8 !important;
border-color: #1a73e8 !important;
}
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {
background-color: #093d94 !important;
}
.btn-info:hover {
background-color: #093d94 !important;
}
</style>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QTNRD0R4M"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-8QTNRD0R4M');
</script>
</head>
<body id="page-top">
<!-- Page Wrapper -->
<div id="wrapper">
<!-- Sidebar -->
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion toggled" id="accordionSidebar">
<!-- Sidebar - Brand -->
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="https://hubdrive.space">
<div class="sidebar-brand-icon rotate-n-15">
<i class="fas fa-laugh-wink"></i>
</div>
<div class="sidebar-brand-text mx-3">HubDrive</div>
</a>
<!-- Divider -->
<hr class="sidebar-divider my-0">
<!-- Nav Item - Dashboard -->
<li class="nav-item active">
<a class="nav-link" href="/sign">
<i class="fas fa-fw fa-sign-in-alt"></i>
<span>Login</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/privacy-policy">
<i class="fas fa-fw fa-user-secret"></i>
<span>Privacy Policy</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/terms-conditions">
<i class="fas fa-fw fa-align-justify"></i>
<span>Terms & Conditions</span></a>
</li>
<li class="nav-item active">
<a class="nav-link" href="/page/copyright-policy">
<i class="fas fa-fw fa-copyright"></i>
<span>Copyright Policy</span></a>
</li>
<!-- Divider -->
<hr class="sidebar-divider d-none d-md-block">
<!-- Sidebar Toggler (Sidebar) -->
<div class="text-center d-none d-md-inline">
<button class="rounded-circle border-0" id="sidebarToggle"></button>
</div>
</ul>
<!-- End of Sidebar -->
<!-- Content Wrapper -->
<div id="content-wrapper" class="d-flex flex-column">
<!-- Main Content -->
<div id="content">
<!-- Topbar -->
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
<i class="fa fa-bars"></i>
</button>
<ul class="navbar-nav ml-auto">
<div style="display: flex; justify-content: center; align-items: center;margin-right: -27rem;">
<a href="/" style="display: flex; align-items: center;text-decoration: none;">
<i class="fab fa-artstation" style="font-size: 50px; color: #5090F0;"></i>
<img class="img-profile" src="https://catimages.org/images/2024/04/23/1b1be1f6932ecf270.png" style="width: 25%; filter: invert(1); margin-left: 5px;">
</a>
</div>
<div class="topbar-divider d-none d-sm-block" style="margin-left: -2px;"></div>
</ul>
</nav> <style>
.btn.btn-primary.btn-user1 {
background-color: #a10dff;
border-color: #ba50fd;
}
.btn-primary.btn-user1:hover {
color: #fff;
background-color: #b542ff;
}
.btn-primary.btn-user1:not(:disabled):not(.disabled):active, .btn-primary.btn-user1:not(:disabled):not(.disabled).active, .show > .btn-primary.btn-user1.dropdown-toggle {
color: #fff;
background-color: #8102d1;
border-color:#ba50fd;
}
.btn-primary.btn-user1:focus, .btn-primary.btn-user1.focus {
box-shadow: 0 0 0 .25rem rgba(151, 51, 215, .5);
}
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
color: rgb(255 255 255);
background-color: rgb(13 60 125);
border-color: rgb(13 60 125);
}
.nav-tabs {
border-bottom: rgb(49, 49, 49);
}
</style>
<!-- http://caniuse.com/#feat=referrer-policy -->
<meta name="robots" content="noindex, nofollow">
<meta name="googlebot" content="noindex,nofollow">
<meta name="referrer" content="no-referrer" />
<!-- For Edge and Safari -->
<meta name="referrer" content="none" />
<script>(function(s){s.dataset.zone='9824726',s.src='https://llvpn.com/tag.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
<div class="container-fluid">
<div id="down-id" hidden="true">2243124026</div>
<!-- Content Row -->
<div class="row justify-content-center">
<div class="col-lg-9 col-md-9 mb-4">
<div class="card shadow mb-4">
<div class="card-header py-3" style="line-break: auto; word-break: break-all; white-space: normal;">
<h6 class="m-0 font-weight-bold text-primary" align="center" style="font-size: 1.2rem;">Back.to.the.Future.Part.III.1990.1080p.BluRay.Hindi.English.DD.5.1.x264.ESubs.Untouched.mkv</h6>
</div>
<div class="card-body">
<div class="table-responsive">
<table class="table table-borderless" id="dataTable" width="100%" cellspacing="0" style="line-break: auto; word-break: initial; white-space: initial;">
<tbody>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Size</td>
<td align="right">3.77 GB</td>
</tr>
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
<td>File Type</td>
<td align="right">video/x-matroska</td>
</tr>
<tr>
<td>File Owner</td>
<td align="right">dhub 2</td>
</tr>
</tbody>
</table>
</div>
<br>
<div class="text" align="center">
<form action="/gsign.php" method="GET">
<input name="r" value="https://hubdrive.space/file/2243124026" type="hidden">
<button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> GDrive [Login]</button>
<!--button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> Download [3.77 GB] [Login]</button-->
</form>
<div>
<button onclick="myDirectDownload()" id="dl-down" type="button" class="btn btn-primary btn-user1" style="margin:10px;"><i class="fas fa-file-download fa-lg"></i> Direct/Instant Download</button>
<div>
<br><br>
</div>
<div class="text" align="left">
<ul class="nav nav-tabs" role="tablist">
<li class="nav-item">
<a class="nav-link active" href="#" onclick="copyLink()" role="tab" data-toggle="tab"><i class="fa fa-copy"></i> Copy Link</a>
</li>
</ul>
</div>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade show active" id="link">
<div class="card">
<div class="card-body">
<p id="copyText" style="text-align:left; color:rgb(116 174 255);">https://hubdrive.space/file/2243124026</p>
</div>
</div>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
<script>
function copyLink() {
var copyText = document.getElementById("copyText");
var textArea = document.createElement("textarea");
textArea.value = copyText.textContent;
document.body.appendChild(textArea);
textArea.select();
document.execCommand("copy");
document.body.removeChild(textArea);
Swal.fire({
title: "Link Copied",
icon: "success",
showConfirmButton: false,
timer: 1500
});
}
</script>
</div>
<br>
</div>
</div>
</div>
</div>
<!-- /.container-fluid -->
</div>
<noscript>
alert("please enable JavaScript in your browser");
</noscript>
<script>
function myDownloadV2() {
var e = document.getElementById("down-id").innerHTML;
document.getElementById("down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Downloading.. !',
document.getElementById("down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i> Generating Link.. !'
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=download",
type: "POST",
dataType: "json",
data: "id=" + e,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(e, a, t) {
alert("Status: " + a + "\n" + t)
}
})
}, 5000);
}
function myDirectDownload() {
var a = document.getElementById("down-id").innerHTML;
document.getElementById("dl-down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating Link ...';
document.getElementById("dl-down").disabled = !0;
var b = window.setTimeout(function() {
document.getElementById("dl-down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i>Downloading .. !';
}, 6e3);
window.setTimeout(function() {
$.ajax({
url: "/ajax.php?ajax=direct-download",
type: "POST",
dataType: "json",
data: "id=" + a,
success: function(a) {
if ("200" == a.code) {
window.clearTimeout(b);
localStorage.setItem("dls", JSON.stringify(a?.data));
// window.location.href = a.file;
window.location.href = "/newdl";
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
},
error: function(a, b, c) {
alert("Status: " + b + "\n" + c);
}
});
}, 5000)
}
</script>
<main class="min-h-screen flex flex-col" >
<header class="container mx-auto px-4 py-4 lg:text-center lg:flex lg:items-center lg:justify-between">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
<!--
<footer class="sticky-footer bg-white">
<div class="container my-auto">
<div class="copyright text-center my-auto">
<span>Copyright &copy; HubDrive 2026</span>
</div>
<br>
<div class="copyright text-center my-auto" style="font-size: 15px; font-weight: 600;">
<span><a href="/page/privacy-policy"><i class="fa fa-bullhorn text-danger"></i> Privacy Policy</a> | <a href="/page/terms-conditions"><i class="fa fa-book text-info"></i> Terms & Conditions</a> | <a href="/page/copyright-policy"><i class="fa fa-copyright text-warning"></i> Copyright Policy</a> | <a href="/page/contact-us"><i class="fa fa-envelope text-success"></i> Contact Us</a></span>
</div>
</div>
</footer>
-->
</div>
<!-- End of Content Wrapper -->
</div>
<!-- End of Page Wrapper -->
<!-- Scroll to Top Button-->
<a class="scroll-to-top rounded" href="#page-top">
<i class="fas fa-angle-up"></i>
</a>
<!-- Logout Modal-->
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">Are you sure?</h5>
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
<a class="btn btn-primary" href="/login.php?action=logout">Logout</a>
</div>
</div>
</div>
</div>
<!-- Bootstrap core JavaScript-->
<script src="/assets/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- Core plugin JavaScript-->
<script src="/assets/vendor/jquery-easing/jquery.easing.min.js"></script>
<!-- Custom scripts for all pages-->
<script src="/assets/js/sb-admin-2.min.js"></script>
<!-- Page level plugins -->
</body>
</html>

View file

@ -1,4 +0,0 @@
#EXTM3U
#EXT-X-VERSION:6
#EXT-X-STREAM-INF:BANDWIDTH=1500000,AVERAGE-BANDWIDTH=1350000,CODECS="avc1.4d401f,mp4a.40.2",RESOLUTION=1920x1080,FRAME-RATE=30
index_1920x1080.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003

View file

@ -1,55 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025</title>
<script src='https://ssl.p.jwpcdn.com/player/v/8.36.2/jwplayer.js'></script>
<meta name="robots" content="noindex">
<link rel="stylesheet" type="text/css" href="panel/assets/css/jwplayer.css?v=5" />
<link rel="stylesheet" type="text/css" href="panel/assets/css/netflix.css?v=5" />
<script src="https://imasdk.googleapis.com/js/sdkloader/ima3.js"></script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.0/sweetalert.min.js"></script>
<style type="text/css">#video-container,body,html{width:100%;height:100%;overflow:hidden}body,html{font-family:Tahoma;padding:0;margin:0;background-color:#000}#video-container{position:fixed;top:0;left:0;z-index:10}#jwplayer{width:100%!important;height:100%!important}.play-button-outer{position:absolute;z-index:999997;width:6em;height:6em;background-color:gray;cursor:pointer}.play-button{margin:0 auto;top:25%;position:relative;width:0;height:0;border-style:solid;border-width:1.5em 0 1.5em 3em;border-color:transparent transparent transparent #000;opacity:.75}.play-button-outer:hover{background-color:#a9a9a9}.play-button-outer:hover .play-button{opacity:1}.swal-text,.swal-title{font-family:Arial,sans-serif}</style>
</head>
<body>
<div id="video-container">
<div id="jwplayer"></div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/hls.js@latest"></script>
<script>
jwplayer.key="ITWMv7t88JGzI0xPwW8I0+LveiXX9SWbfdmt0ArUSyc=";let player=jwplayer("jwplayer"),globalFilecode=null,positionApplied=!1,totalWatchTime=0;function getFilecodeFromURL(){let e=window.location.pathname.split("/");return e.pop()||e.pop()}function getQueryParam(e){return new URL(window.location.href).searchParams.get(e)}let filecode=getFilecodeFromURL();if(filecode){globalFilecode=filecode;let e=`/ajax/stream?filecode=${encodeURIComponent(filecode)}`,t=new URLSearchParams(window.location.search);t.delete("filecode");let _=t.toString();_&&(e+="&"+_),fetch(e).then(e=>e.json()).then(e=>{window.videoSubtitles=e.subtitles||[],window.defaultSubtitleLang=(e.default_sub_lang||"").toLowerCase(),setupSubtitlesOnly(e)}).catch(e=>console.error("Failed to load stream data:",e))}function setupSubtitlesOnly(e){let t=window.videoSubtitles||[],_=(window.defaultSubtitleLang||"").toLowerCase(),$=t.filter(e=>0===e.type).map(e=>{let t=e.language||"Subtitle",$=t.toLowerCase(),l=_&&($===_||$.includes(_));return{file:e.file_path,label:t,kind:"captions",default:l}});if($.filter(e=>e.default).length>1){let l=$.findIndex(e=>e.default);$=$.map((e,t)=>({...e,default:t===l}))}setupPlayer(e,$)}function setupPlayer(e,t){player.setup({playlist:[{sources:[{file:e.streaming_url}],title:e.title,image:e.thumbnail,tracks:t}],autostart:!1,cast:{},controls:!0,displaytitle:!0,displaydescription:!0,abouttext:"StreamUP",aboutlink:"https://streamup.cc/",skin:{name:"netflix",buttons:"over"},advertising:{client:"googima",schedule:{adBreak1:{offset:"pre",tag:e.vast_ads}}},playbackRateControls:!0,playbackRates:[.5,1,1.5,2]}),player.on("ready",function(){jwplayer().addButton('<svg xmlns="http://www.w3.org/2000/svg" class="jw-svg-icon jw-svg-icon-rewind2" viewBox="0 0 240 240" focusable="false"><path d="m 25.993957,57.778 v 125.3 c 0.03604,2.63589 2.164107,4.76396 4.8,4.8 h 62.7 v -19.3 h -48.2 v -96.4 H 160.99396 v 19.3 c 0,5.3 3.6,7.2 8,4.3 l 41.8,-27.9 c 2.93574,-1.480087 4.13843,-5.04363 2.7,-8 -0.57502,-1.174985 -1.52502,-2.124979 -2.7,-2.7 l -41.8,-27.9 c -4.4,-2.9 -8,-1 -8,4.3 v 19.3 H 30.893957 c -2.689569,0.03972 -4.860275,2.210431 -4.9,4.9 z m 163.422413,73.04577 c -3.72072,-6.30626 -10.38421,-10.29683 -17.7,-10.6 -7.31579,0.30317 -13.97928,4.29374 -17.7,10.6 -8.60009,14.23525 -8.60009,32.06475 0,46.3 3.72072,6.30626 10.38421,10.29683 17.7,10.6 7.31579,-0.30317 13.97928,-4.29374 17.7,-10.6 8.60009,-14.23525 8.60009,-32.06475 0,-46.3 z m -17.7,47.2 c -7.8,0 -14.4,-11 -14.4,-24.1 0,-13.1 6.6,-24.1 14.4,-24.1 7.8,0 14.4,11 14.4,24.1 0,13.1 -6.5,24.1 -14.4,24.1 z m -47.77056,9.72863 v -51 l -4.8,4.8 -6.8,-6.8 13,-12.99999 c 3.02543,-3.03598 8.21053,-0.88605 8.2,3.4 v 62.69999 z"></path></svg>',"Forward 10 sec",function(){jwplayer().seek(jwplayer().getPosition()+10)},"ff11"),jwplayer().addButton('<svg xmlns="http://www.w3.org/2000/svg" class="jw-svg-icon jw-svg-icon-rewind" viewBox="0 0 240 240" focusable="false"><path d="M113.2,131.078a21.589,21.589,0,0,0-17.7-10.6,21.589,21.589,0,0,0-17.7,10.6,44.769,44.769,0,0,0,0,46.3,21.589,21.589,0,0,0,17.7,10.6,21.589,21.589,0,0,0,17.7-10.6,44.769,44.769,0,0,0,0-46.3Zm-17.7,47.2c-7.8,0-14.4-11-14.4-24.1s6.6-24.1,14.4-24.1,14.4,11,14.4,24.1S103.4,178.278,95.5,178.278Zm-43.4,9.7v-51l-4.8,4.8-6.8-6.8,13-13a4.8,4.8,0,0,1,8.2,3.4v62.7l-9.6-.1Zm162-130.2v125.3a4.867,4.867,0,0,1-4.8,4.8H146.6v-19.3h48.2v-96.4H79.1v19.3c0,5.3-3.6,7.2-8,4.3l-41.8-27.9a6.013,6.013,0,0,1-2.7-8,5.887,5.887,0,0,1,2.7-2.7l41.8-27.9c4.4-2.9,8-1,8,4.3v19.3H209.2A4.974,4.974,0,0,1,214.1,57.778Z"></path></svg>',"Rewind 10 sec",function(){var e=jwplayer().getPosition()-10;e<0&&(e=0),jwplayer().seek(e)},"ff00")}),handlePlayerEvents(e.filecode)}function handlePlayerEvents(e){if(!e)return;let t=null;player.on("play",function(){if(!positionApplied){let _=localStorage.getItem(`videoPlaybackPosition_${e}`);_&&(player.seek(parseFloat(_)/1e3),positionApplied=!0)}t||(t=setInterval(()=>{totalWatchTime++},1e3))}),player.on("pause",()=>{clearInterval(t),t=null}),player.on("complete",()=>{clearInterval(t),t=null}),player.on("time",function(t){let _=t.position;localStorage.setItem(`videoPlaybackPosition_${e}`,1e3*_)})}
</script>
<script>
const file_id="2229055",visitorData={file_id:"2229055",gpu:null,cpu:null,screen_res:`${screen.width}x${screen.height}`,iframe_size:`${window.innerWidth}x${window.innerHeight}`,mouse_position:"",click_position:"",page_duration:0,referer:document.referrer||window.location.href,watch_time:0,tab_visibility_changes:0};let startTime=Date.now(),lastActivityTime=Date.now(),inactivityStart=null;function updateActivity(){lastActivityTime=Date.now()}document.addEventListener("mousemove",t=>{visitorData.mouse_position=`${t.pageX}x${t.pageY}`,updateActivity()}),document.addEventListener("click",t=>{visitorData.click_position=`${t.pageX}x${t.pageY}`,updateActivity()}),document.addEventListener("visibilitychange",()=>{document.hidden&&visitorData.tab_visibility_changes++}),setInterval(()=>{let t=Date.now();t-lastActivityTime>=1e4&&!inactivityStart?inactivityStart=lastActivityTime:t-lastActivityTime<1e4&&inactivityStart&&(inactivityStart=null)},1e3);try{let t=document.createElement("canvas"),i=t.getContext("webgl")||t.getContext("experimental-webgl"),a=i.getExtension("WEBGL_debug_renderer_info");visitorData.gpu=a?i.getParameter(a.UNMASKED_RENDERER_WEBGL):"Unknown"}catch{visitorData.gpu="Unavailable"}visitorData.cpu=navigator.hardwareConcurrency?`${navigator.hardwareConcurrency} cores`:"Unknown";let hasSentData=!1;function sendVisitorData(){hasSentData||(hasSentData=!0,visitorData.page_duration=Math.round((Date.now()-startTime)/1e3),visitorData.watch_time=Math.round(totalWatchTime),fetch("/ajax/data",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(visitorData)}).catch(()=>{}))}setInterval(()=>{"undefined"!=typeof totalWatchTime&&!hasSentData&&Math.floor(totalWatchTime)>=87&&sendVisitorData()},500);
</script>
<script src="assets/js/new100.js?v=1"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-MJZHCJR7Q8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-MJZHCJR7Q8');
</script>
<script>
const l = [{"url":"https://zoovanuzauphoth.net/4/9188322","delay":3000,"lastOpened":0}];
let i = 0;
document.addEventListener("click", function () {
const t = Date.now(), e = l[i % l.length];
if (t - e.lastOpened >= e.delay) {
window.open(e.url, "popupWindow", "width=800,height=600,scrollbars=yes,resizable=yes");
e.lastOpened = t;
}
i++;
});
</script>
<script>
const l=[{"url":"https://obqj2.com/4/9637106","delay":240000,"lastOpened":0},{"url":"https://obqj2.com/4/9637106","delay":240000,"lastOpened":0}];let i=0;document.addEventListener("click",function(){const t=Date.now(),e=l[i%l.length];t-e.lastOpened>=e.delay&&(window.open(e.url,"popupWindow","width=800,height=600,scrollbars=yes,resizable=yes"),e.lastOpened=t),i++});
</script><script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9bb6680ecad95d57',t:'MTc2Nzk4NzYyNw=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
</html>

View file

@ -1 +0,0 @@
{"title":"","thumbnail":"https:\/\/add4.cdnup.cc\/thumbnail\/xWcziV3Qim\/6950ae79eaa4c.jpg","streaming_url":"https:\/\/s3-hls2-cdn59.strmupcdn.com\/hls\/SJbD5Zm1pj06jZ2LDbHa13YBmryxas\/master.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003","vast_ads":null,"filecode":"6950ae79eaa4c","subtitles":[{"id":521875,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/QUKzfdu1n4\/PPTRdlsmJY94PKK_subtitle_0.vtt","language":"German \u2013 German (Forced)"},{"id":521876,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/gxReoqgF82\/ABVuNSZeq61xYhM_subtitle_1.vtt","language":"German \u2013 German"},{"id":521877,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/YSzO4RQUAu\/DNRW2kgCksC8YYq_subtitle_2.vtt","language":"German \u2013 German"},{"id":521878,"status":1,"file_id":2229055,"type":0,"file_path":"https:\/\/add4.cdnup.cc\/subtitles\/l7MtB81Fsb\/DSFucpIAjME1ZdV_subtitle_3.vtt","language":"German \u2013 German (SDH)"}],"default_sub_lang":"German"}

View file

@ -11,6 +11,9 @@ exports[`Dropload download URL 1`] = `
"height": 720, "height": 720,
"title": "[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~", "title": "[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://srv29.dropload.io/hls2/01/00305/xhcmgcc2txnv_h/master.m3u8?t=MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U&s=1752613129&e=14400&f=1526758&i=0.0&sp=0&ii=130.61.236.204", "url": "https://srv29.dropload.io/hls2/01/00305/xhcmgcc2txnv_h/master.m3u8?t=MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U&s=1752613129&e=14400&f=1526758&i=0.0&sp=0&ii=130.61.236.204",
}, },
@ -27,6 +30,9 @@ exports[`Dropload dropload unknown height and size 1`] = `
"height": 800, "height": 800,
"title": "The Lost Bus 2025 1080p WEBRip x265", "title": "The Lost Bus 2025 1080p WEBRip x265",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://ds16.dropcdn.io/hls2/02/00314/gf2apij3ql37_h/master.m3u8?t=jq0VCV2dOyLIIH07IGIpzruCXvbfdVqzGLWfMeo00AM&s=1759845990&e=14400&f=1571895&srv=ds3&i=0.0&sp=0&ii=2.184.0.222&p1=ds3&p2=ds3", "url": "https://ds16.dropcdn.io/hls2/02/00314/gf2apij3ql37_h/master.m3u8?t=jq0VCV2dOyLIIH07IGIpzruCXvbfdVqzGLWfMeo00AM&s=1759845990&e=14400&f=1571895&srv=ds3&i=0.0&sp=0&ii=2.184.0.222&p1=ds3&p2=ds3",
}, },
@ -44,6 +50,9 @@ exports[`Dropload dropload.io 1`] = `
"height": 1080, "height": 1080,
"title": "des-teufels-bad-2024", "title": "des-teufels-bad-2024",
}, },
"requestHeaders": {
"Referer": "https://dr0pstream.com/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://srv34.dropload.io/hls2/01/00197/lyo2h1snpe5c_h/master.m3u8?t=ESjD9Le53ttKN2JPyxrhLUqTebDZvx3vcQUlNgP6Vko&s=1749845553&e=14400&f=987607&srv=srv27&i=0.0&sp=0&ii=50.99.15.93&p1=srv27&p2=srv27", "url": "https://srv34.dropload.io/hls2/01/00197/lyo2h1snpe5c_h/master.m3u8?t=ESjD9Le53ttKN2JPyxrhLUqTebDZvx3vcQUlNgP6Vko&s=1749845553&e=14400&f=987607&srv=srv27&i=0.0&sp=0&ii=50.99.15.93&p1=srv27&p2=srv27",
}, },

View file

@ -1,5 +1,7 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing // Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`ExtractorRegistry empty results are cached 1`] = `[]`;
exports[`ExtractorRegistry returns error result from extractor 1`] = `[]`; exports[`ExtractorRegistry returns error result from extractor 1`] = `[]`;
exports[`ExtractorRegistry returns external URLs if enabled by config 1`] = ` exports[`ExtractorRegistry returns external URLs if enabled by config 1`] = `
@ -28,6 +30,7 @@ exports[`ExtractorRegistry returns external url for error 1`] = `
"meta": { "meta": {
"extractorId": "dropload", "extractorId": "dropload",
}, },
"ttl": 0,
"url": "https://dropload.io/mocked-blocked.html", "url": "https://dropload.io/mocked-blocked.html",
}, },
] ]

View file

@ -10,6 +10,7 @@ exports[`Fsst Wake up Dead Man 1`] = `
"height": 1080, "height": 1080,
"title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.mkv", "title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.mkv",
}, },
"ttl": 10800000,
"url": "https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=7cf7fccae0c48291e3452c8ca2277f70", "url": "https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=7cf7fccae0c48291e3452c8ca2277f70",
}, },
] ]

View file

@ -7,27 +7,56 @@ exports[`HubCloud handle crayon shin-chan 1993 1`] = `
"label": "HubCloud (FSL)", "label": "HubCloud (FSL)",
"meta": { "meta": {
"bytes": 28550795100, "bytes": 28550795100,
"countryCodes": [
"hi",
"ja",
],
"extractorId": "hubcloud_fsl", "extractorId": "hubcloud_fsl",
"height": 1080,
"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", "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",
}, },
"ttl": 518400000, "ttl": 43200000,
"url": "https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445", "url": "https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754",
}, },
] ]
`; `;
exports[`HubCloud handle dark 2017 s03e08 1`] = ` exports[`HubCloud handle dark 2017 s03e08 1`] = `
[ [
{
"format": "unknown",
"label": "HubCloud (FSL)",
"meta": {
"bytes": 3382286745,
"countryCodes": [
"de",
"en",
],
"extractorId": "hubcloud_fsl",
"height": 1080,
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
},
"ttl": 43200000,
"url": "https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754",
},
{ {
"format": "unknown", "format": "unknown",
"label": "HubCloud (PixelServer)", "label": "HubCloud (PixelServer)",
"meta": { "meta": {
"bytes": 3382286745, "bytes": 3382286745,
"countryCodes": [
"de",
"en",
],
"extractorId": "hubcloud_pixelserver", "extractorId": "hubcloud_pixelserver",
"height": 1080,
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv", "title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
}, },
"ttl": 518400000, "requestHeaders": {
"url": "https://pixeldrain.dev/api/file/2kFQBQio", "Referer": "https://pixeldrain.dev/u/2kFQBQio",
},
"ttl": 43200000,
"url": "https://pixeldrain.dev/api/file/2kFQBQio?download=",
}, },
] ]
`; `;
@ -39,22 +68,66 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
"label": "HubCloud (FSL)", "label": "HubCloud (FSL)",
"meta": { "meta": {
"bytes": 5733781340, "bytes": 5733781340,
"countryCodes": [],
"extractorId": "hubcloud_fsl", "extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv", "title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
}, },
"ttl": 518400000, "ttl": 43200000,
"url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444", "url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754",
}, },
{ {
"format": "unknown", "format": "unknown",
"label": "HubCloud (PixelServer)", "label": "HubCloud (PixelServer)",
"meta": { "meta": {
"bytes": 5733781340, "bytes": 5733781340,
"countryCodes": [],
"extractorId": "hubcloud_pixelserver", "extractorId": "hubcloud_pixelserver",
"height": 2160,
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv", "title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
}, },
"ttl": 518400000, "requestHeaders": {
"url": "https://pixeldrain.dev/api/file/HqAiguQV", "Referer": "https://pixeldrain.dev/u/HqAiguQV",
},
"ttl": 43200000,
"url": "https://pixeldrain.dev/api/file/HqAiguQV?download=",
},
]
`;
exports[`HubCloud handle goat 2026 1`] = `
[
{
"format": "unknown",
"label": "HubCloud (FSL)",
"meta": {
"bytes": 19091129630,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
},
"ttl": 43200000,
"url": "https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722",
},
{
"format": "unknown",
"label": "HubCloud (FSLv2)",
"meta": {
"bytes": 19091129630,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fslv2",
"height": 2160,
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
},
"ttl": 43200000,
"url": "https://cdn.fsl-buckets.life/Goat%202026%202160p%2010bit%20HDR10+%20DV%20iTunes%20WEB-DL%20HEVC%20x265%20[Hindi%20AMZN%20DDP%205.1%20640kbps%20+%20English%20DDP%20Atmos%205.1]%20ESub-BYNDR-4kHdHub.mkv?token=af180cafc2418c7c47249d0167ba9704",
}, },
] ]
`; `;

View file

@ -7,11 +7,18 @@ exports[`HubDrive handle avatar 1`] = `
"label": "HubCloud (FSL)", "label": "HubCloud (FSL)",
"meta": { "meta": {
"bytes": 64649995223, "bytes": 64649995223,
"countryCodes": [
"en",
"hi",
],
"extractorId": "hubcloud_fsl", "extractorId": "hubcloud_fsl",
"height": 2160,
"title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv", "title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv",
}, },
"ttl": 518400000, "ttl": 43200000,
"url": "https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027", "url": "https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027",
}, },
] ]
`; `;
exports[`HubDrive handle missing hubcloud 1`] = `[]`;

View file

@ -12,7 +12,7 @@ exports[`StreamEmbed watch.gxplayer.xyz 1`] = `
"height": 720, "height": 720,
"title": "Baymax - Riesiges Robowabohu.mp4", "title": "Baymax - Riesiges Robowabohu.mp4",
}, },
"ttl": 900000, "ttl": 259200000,
"url": "https://watch.gxplayer.xyz/m3u8/3/30b4a92517ace5825f5944c8a794ad3e/master.txt?s=1&id=11782&cache=1", "url": "https://watch.gxplayer.xyz/m3u8/3/30b4a92517ace5825f5944c8a794ad3e/master.txt?s=1&id=11782&cache=1",
}, },
] ]

View file

@ -1,17 +0,0 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`StreamUp handle one battle after another 1`] = `
[
{
"format": "hls",
"label": "StreamUP",
"meta": {
"extractorId": "streamup",
"height": 1080,
"title": "Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025",
},
"ttl": 10800000,
"url": "https://s3-hls2-cdn59.strmupcdn.com/hls/SJbD5Zm1pj06jZ2LDbHa13YBmryxas/master.m3u8?token=35f702a94c0e324d607d8761795a3788-1768016464-104.28.197.7-5ebad85b212e5e349b388501e051c992a2b68e70fdcaa6cc18270adee1f7c003",
},
]
`;

View file

@ -12,6 +12,9 @@ exports[`SuperVideo embed only 1`] = `
"height": 1080, "height": 1080,
"title": "", "title": "",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs308.serversicuro.cc/hls/,dnzpe7rf5xg4a3gyva3h5orlyw23xosfzwunl5xbmjpz2l6t3doh5zbwynna,.urlset/master.m3u8", "url": "https://hfs308.serversicuro.cc/hls/,dnzpe7rf5xg4a3gyva3h5orlyw23xosfzwunl5xbmjpz2l6t3doh5zbwynna,.urlset/master.m3u8",
}, },
@ -31,6 +34,9 @@ exports[`SuperVideo supervideo.cc /e/ 1`] = `
"height": 720, "height": 720,
"title": "des-teufels-bad-2024", "title": "des-teufels-bad-2024",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs309.serversicuro.cc/hls/,dnzpfi3d27g4a3gyvbmh5klwtl65qh654hyjtgupd6p577fze64cp3rsmdyq,.urlset/master.m3u8", "url": "https://hfs309.serversicuro.cc/hls/,dnzpfi3d27g4a3gyvbmh5klwtl65qh654hyjtgupd6p577fze64cp3rsmdyq,.urlset/master.m3u8",
}, },
@ -48,6 +54,9 @@ exports[`SuperVideo supervideo.tv /embed-/ 1`] = `
"height": 344, "height": 344,
"title": "Babylon 5 2x3", "title": "Babylon 5 2x3",
}, },
"requestHeaders": {
"Referer": "https://supervideo.cc/",
},
"ttl": 10800000, "ttl": 10800000,
"url": "https://hfs307.serversicuro.cc/hls/,dnzpaalv5xg4a3gyvavh52jryoft7o5cd5nm7cwtnu74kmc4ohiklh5qwq4q,.urlset/master.m3u8", "url": "https://hfs307.serversicuro.cc/hls/,dnzpaalv5xg4a3gyvavh52jryoft7o5cd5nm7cwtnu74kmc4ohiklh5qwq4q,.urlset/master.m3u8",
}, },

View file

@ -16,7 +16,6 @@ import { RgShows } from './RgShows';
import { SaveFiles } from './SaveFiles'; import { SaveFiles } from './SaveFiles';
import { StreamEmbed } from './StreamEmbed'; import { StreamEmbed } from './StreamEmbed';
import { Streamtape } from './Streamtape'; import { Streamtape } from './Streamtape';
import { StreamUp } from './StreamUp';
import { SuperVideo } from './SuperVideo'; import { SuperVideo } from './SuperVideo';
import { Uqload } from './Uqload'; import { Uqload } from './Uqload';
import { Vidora } from './Vidora'; import { Vidora } from './Vidora';
@ -49,7 +48,6 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => {
new SaveFiles(fetcher), new SaveFiles(fetcher),
new StreamEmbed(fetcher), new StreamEmbed(fetcher),
new Streamtape(fetcher), new Streamtape(fetcher),
new StreamUp(fetcher),
new SuperVideo(fetcher), new SuperVideo(fetcher),
new Uqload(fetcher), new Uqload(fetcher),
new Vidora(fetcher), new Vidora(fetcher),

View file

@ -1,6 +1,6 @@
import { randomUUID } from 'node:crypto'; import { randomUUID } from 'node:crypto';
import axios from 'axios'; import axios from 'axios';
import { setupCache } from 'axios-cache-interceptor'; import { buildMemoryStorage, setupCache } from 'axios-cache-interceptor';
import axiosRetry from 'axios-retry'; import axiosRetry from 'axios-retry';
import express, { NextFunction, Request, Response } from 'express'; import express, { NextFunction, Request, Response } from 'express';
// eslint-disable-next-line import/no-named-as-default // eslint-disable-next-line import/no-named-as-default
@ -39,7 +39,11 @@ process.on('unhandledRejection', (error: Error) => {
logger.error(`Unhandled rejection: ${error}, cause: ${error.cause}, stack: ${error.stack}`); logger.error(`Unhandled rejection: ${error}, cause: ${error.cause}, stack: ${error.stack}`);
}); });
const cachedAxios = setupCache(axios); const cachedAxios = setupCache(axios, {
interpretHeader: true,
storage: buildMemoryStorage(false, 3 * 60 * 60 * 1000, 4096, 12 * 60 * 60 * 1000),
ttl: 15 * 60 * 1000, // 15m
});
axiosRetry(cachedAxios, { retries: 3, retryDelay: () => 333 }); axiosRetry(cachedAxios, { retries: 3, retryDelay: () => 333 });
const fetcher = new Fetcher(cachedAxios, logger); const fetcher = new Fetcher(cachedAxios, logger);

View file

@ -280,6 +280,13 @@ export function landingTemplate(manifest: CustomManifest) {
<div class="separator"></div> <div class="separator"></div>
<p>
Note: HTTP streams have limitations. For a better experience, I'd advise using a Debrid service and WebStreamr as fallback.
<a href="https://torbox.app/subscription?referral=f22eb00d-27ce-4e20-85fc-68da3d018b99" target="_blank"><strong>TorBox</strong></a> is working very well.
</p>
<div class="separator"></div>
<h3 class="gives">This addon has more :</h3> <h3 class="gives">This addon has more :</h3>
<ul> <ul>
${stylizedTypes.map(t => `<li>${t}</li>`).join('')} ${stylizedTypes.map(t => `<li>${t}</li>`).join('')}

View file

@ -4,10 +4,10 @@ import { BasicAcceptedElems, CheerioAPI } from 'cheerio';
import { AnyNode } from 'domhandler'; import { AnyNode } from 'domhandler';
import levenshtein from 'fast-levenshtein'; import levenshtein from 'fast-levenshtein';
import memoize from 'memoizee'; import memoize from 'memoizee';
import rot13Cipher from 'rot13-cipher';
import { ContentType } from 'stremio-addon-sdk'; import { ContentType } from 'stremio-addon-sdk';
import { Context, CountryCode, Meta } from '../types'; import { Context, CountryCode, Meta } from '../types';
import { Fetcher, findCountryCodes, getTmdbId, getTmdbNameAndYear, Id, TmdbId } from '../utils'; import { Fetcher, findCountryCodes, getTmdbId, getTmdbNameAndYear, Id, TmdbId } from '../utils';
import { resolveRedirectUrl } from './hd-hub-helper';
import { Source, SourceResult } from './Source'; import { Source, SourceResult } from './Source';
export class FourKHDHub extends Source { export class FourKHDHub extends Source {
@ -115,7 +115,7 @@ export class FourKHDHub extends Source {
.get(0); .get(0);
if (redirectUrlHubCloud) { if (redirectUrlHubCloud) {
return { url: await this.resolveRedirectUrl(ctx, redirectUrlHubCloud), meta }; return { url: await resolveRedirectUrl(ctx, this.fetcher, redirectUrlHubCloud), meta };
} }
const redirectUrlHubDrive = $('a', el) const redirectUrlHubDrive = $('a', el)
@ -123,17 +123,9 @@ export class FourKHDHub extends Source {
.map((_i, el) => new URL($(el).attr('href') as string)) .map((_i, el) => new URL($(el).attr('href') as string))
.get(0) as URL; .get(0) as URL;
return { url: await this.resolveRedirectUrl(ctx, redirectUrlHubDrive), meta }; return { url: await resolveRedirectUrl(ctx, this.fetcher, redirectUrlHubDrive), meta };
}; };
private async resolveRedirectUrl(ctx: Context, redirectUrl: URL): Promise<URL> {
const redirectHtml = await this.fetcher.text(ctx, redirectUrl);
const redirectDataMatch = redirectHtml.match(/'o','(.*?)'/) as string[];
const redirectData = JSON.parse(atob(rot13Cipher(atob(atob(redirectDataMatch[1] as string))))) as { o: string };
return new URL(atob(redirectData['o']));
}
private readonly getBaseUrl = async (ctx: Context): Promise<URL> => { private readonly getBaseUrl = async (ctx: Context): Promise<URL> => {
return await this.fetcher.getFinalRedirectUrl(ctx, new URL(this.baseUrl)); return await this.fetcher.getFinalRedirectUrl(ctx, new URL(this.baseUrl));
}; };

View file

@ -13,7 +13,7 @@ export class Frembed extends Source {
public readonly countryCodes: CountryCode[] = [CountryCode.fr]; public readonly countryCodes: CountryCode[] = [CountryCode.fr];
public readonly baseUrl = 'https://frembed.my'; public readonly baseUrl = 'https://frembed.work';
private readonly fetcher: Fetcher; private readonly fetcher: Fetcher;
@ -44,7 +44,7 @@ export class Frembed extends Source {
for (const key in json) { for (const key in json) {
if (key.startsWith('link') && json[key] && !json[key].includes(',https')) { if (key.startsWith('link') && json[key] && !json[key].includes(',https')) {
try { try {
urls.push(new URL(json[key].trim())); urls.push(await this.fetcher.getFinalRedirectUrl(ctx, new URL(json[key].trim(), baseUrl), { headers: { Referer: baseUrl.origin + '/' } }));
} catch { } catch {
// Skip invalid URL // Skip invalid URL
} }

View file

@ -0,0 +1,33 @@
import { createTestContext } from '../test';
import { FetcherMock, ImdbId } from '../utils';
import { HDHub4u } from './HDHub4u';
const ctx = createTestContext();
describe('HDHub4u', () => {
let source: HDHub4u;
beforeEach(() => {
source = new HDHub4u(new FetcherMock(`${__dirname}/__fixtures__/HDHub4u`));
});
test('handle superman 2025', async () => {
const streams = await source.handle(ctx, 'movie', new ImdbId('tt5950044', undefined, undefined));
expect(streams).toMatchSnapshot();
});
test('handle the bone temple 2026', async () => {
const streams = await source.handle(ctx, 'movie', new ImdbId('tt32141377', undefined, undefined));
expect(streams).toMatchSnapshot();
});
test('handle stranger things s05e01', async () => {
const streams = await source.handle(ctx, 'series', new ImdbId('tt4574334', 5, 1));
expect(streams).toMatchSnapshot();
});
test('handle stranger things s05e08', async () => {
const streams = await source.handle(ctx, 'series', new ImdbId('tt4574334', 5, 8));
expect(streams).toMatchSnapshot();
});
});

119
src/source/HDHub4u.ts Normal file
View file

@ -0,0 +1,119 @@
import * as cheerio from 'cheerio';
import { ContentType } from 'stremio-addon-sdk';
import { Context, CountryCode, Meta } from '../types';
import { Fetcher, findCountryCodes, getImdbId, Id, ImdbId } from '../utils';
import { resolveRedirectUrl } from './hd-hub-helper';
import { Source, SourceResult } from './Source';
interface SearchResponsePartial {
hits: {
document: {
imdb_id: string;
permalink: string;
post_title: string;
};
}[];
}
export class HDHub4u extends Source {
public readonly id = 'hdhub4u';
public readonly label = 'HDHub4u';
public readonly contentTypes: ContentType[] = ['movie', 'series'];
public readonly countryCodes: CountryCode[] = [CountryCode.multi, CountryCode.gu, CountryCode.hi, CountryCode.ml, CountryCode.pa, CountryCode.ta, CountryCode.te];
public readonly baseUrl = 'https://new5.hdhub4u.fo';
private readonly searchUrl = 'https://search.pingora.fyi';
private readonly fetcher: Fetcher;
public constructor(fetcher: Fetcher) {
super();
this.fetcher = fetcher;
}
public async handleInternal(ctx: Context, _type: string, id: Id): Promise<SourceResult[]> {
const imdbId = await getImdbId(ctx, this.fetcher, id);
const pageUrls = await this.fetchPageUrls(ctx, imdbId);
return (await Promise.all(
pageUrls.map(async (pageUrl) => {
return await this.handlePage(ctx, pageUrl, imdbId);
}),
)).flat();
};
private readonly handlePage = async (ctx: Context, pageUrl: URL, imdbId: ImdbId): Promise<SourceResult[]> => {
const html = await this.fetcher.text(ctx, pageUrl);
const $ = cheerio.load(html);
const meta = {
countryCodes: [CountryCode.multi, ...findCountryCodes($('div:contains("Language"):not(:has(div)):first').text())],
};
if (!imdbId.episode) {
return [
...this.extractHubDriveUrlResults(html, meta),
...(await Promise.all(
$('a[href*="gadgetsweb"]').map((_i, el) => this.handleHubLinks(ctx, new URL($(el).attr('href') as string), pageUrl, meta)),
)).flat(),
];
}
return [
...(await Promise.all(
$(`a:contains("EPiSODE ${imdbId.episode}"), a:contains("EPiSODE ${String(imdbId.episode).padStart(2, '0')}")`)
.map(async (_i, el) => this.handleHubLinks(ctx, new URL($(el).attr('href') as string), pageUrl, meta)),
)).flat(),
...this.extractHubDriveUrlResults(
$(`h4:contains("EPiSODE ${imdbId.episode}"), h4:contains("EPiSODE ${String(imdbId.episode).padStart(2, '0')}")`)
.first()
.nextUntil('hr')
.map((_i, el) => $.html(el))
.get()
.join(''),
meta,
),
];
};
private readonly handleHubLinks = async (ctx: Context, redirectUrl: URL, refererUrl: URL, meta: Meta): Promise<SourceResult[]> => {
const hubLinksUrl = await resolveRedirectUrl(ctx, this.fetcher, redirectUrl);
const hubLinksHtml = await this.fetcher.text(ctx, hubLinksUrl, { headers: { Referer: refererUrl.href } });
return [
...this.extractHubDriveUrlResults(hubLinksHtml, { ...meta, referer: hubLinksUrl.href }),
];
};
private readonly extractHubDriveUrlResults = (html: string, meta: Meta): SourceResult[] => {
const $ = cheerio.load(html);
return $('a[href*="hubdrive"]:not(:contains("⚡"))')
.map((_i, el) => ({ url: new URL($(el).attr('href') as string), meta }))
.toArray();
};
private readonly fetchPageUrls = async (ctx: Context, imdbId: ImdbId): Promise<URL[]> => {
const searchUrl = new URL(`/collections/post/documents/search?query_by=imdb_id&q=${encodeURIComponent(imdbId.id)}`, this.searchUrl);
const searchResponse = await this.fetcher.json(ctx, searchUrl, { headers: { Referer: this.baseUrl } }) as SearchResponsePartial;
return searchResponse.hits
.filter(hit =>
hit.document.imdb_id === imdbId.id
&& (
!imdbId.season
|| hit.document.post_title.includes(`Season ${imdbId.season}`)
|| hit.document.post_title.includes(`S${String(imdbId.season)}`)
|| hit.document.post_title.includes(`S${String(imdbId.season).padStart(2, '0')}`)
),
)
.map(hit => new URL(hit.document.permalink, this.baseUrl));
};
}

View file

@ -0,0 +1 @@
{"server":"openresty","date":"Fri, 13 Mar 2026 15:48:53 GMT","content-type":"text/html","connection":"close","cache-control":"no-store, max-age=0","accept-ch":"Sec-CH-UA, Sec-CH-UA-Arch, Sec-CH-UA-Bitness, Sec-CH-UA-Full-Version, Sec-CH-UA-Full-Version-List, Sec-CH-UA-Mobile, Sec-CH-UA-Model, Sec-CH-UA-Platform, Sec-CH-UA-Platform-Version, Sec-CH-UA-WoW64","permissions-policy":"ch-ua=(self \"https://*.parklogic.com\"), ch-ua-arch=(self \"https://*.parklogic.com\"), ch-ua-bitness=(self \"https://*.parklogic.com\"), ch-ua-full-version=(self \"https://*.parklogic.com\"), ch-ua-full-version-list=(self \"https://*.parklogic.com\"), ch-ua-mobile=(self \"https://*.parklogic.com\"), ch-ua-model=(self \"https://*.parklogic.com\"), ch-ua-platform=(self \"https://*.parklogic.com\"), ch-ua-platform-version=(self \"https://*.parklogic.com\"), ch-ua-wow64=(self \"https://*.parklogic.com\")"}

View file

@ -1 +0,0 @@
{"date":"Sat, 10 Jan 2026 20:38:47 GMT","content-type":"text/html; charset=utf-8","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch, Accept-Encoding","x-nextjs-cache":"HIT","x-nextjs-prerender":"1","x-nextjs-stale-time":"300","x-powered-by":"Next.js","cache-control":"s-maxage=31536000","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=KijXXV9%2BW036Qlsq0Rxt5j%2BtiZzpIZPtHXWjW3cj2PZTN17aZof15kQfCBTTXT7kPJTIcQCUlXlM%2F1x%2BzFqh4GJb9RxFPARVooZXkQ%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","server":"cloudflare","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","speculation-rules":"\"/cdn-cgi/speculation\"","cf-ray":"9bbefae15fc2367d-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -1 +0,0 @@
{"date":"Sat, 10 Jan 2026 20:38:47 GMT","connection":"close","server":"cloudflare","x-turbo-charged-by":"LiteSpeed","location":"https://frembed.buzz/","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=iPDkMIh72n9NylJs%2FwFGx5CUvwMJRaX3qg1DoC7x2KL8sF41o8HJ5s4pIa7vzf%2B6sXB7XerV2evgU4XsCZp7u7pVcxMjpM3Dxw1GXA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9bbefae0ff69367d-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -1 +0,0 @@
{"date":"Sat, 10 Jan 2026 20:38:47 GMT","connection":"close","server":"cloudflare","x-turbo-charged-by":"LiteSpeed","location":"https://frembed.life/","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=o6I8IO4H4QAfSW8K85zOBleAMtoZWkyraWxT5UUxslkSedI7bF2p8WyYvpZofvB%2F1zMAuYD6k%2B94vcUQKwsoSbtk7q0lRuOZwLQ%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9bbefae09eed367d-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:42:42 GMT","content-type":"text/html; charset=utf-8","connection":"close","set-cookie":["NEXT_LOCALE=en; Path=/; SameSite=lax"],"vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch, Accept-Encoding","x-powered-by":"CyberPanel-OLS/2.4.4","cache-control":"private, no-cache, no-store, max-age=0, must-revalidate","server":"cloudflare","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=uSEpJch5k4X5O%2BPtubxmNNSCno15%2FFDpDMGrD484vBTn1KBRrKTi8sJveoZ0Rda4gLNkHOQ0aPs31PSu4JyTef0mWmXXHejnfhN4gw%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc266aadbb1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://myvidplay.com/e/gtenfs0rffzq","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=oG985wa1h0gJ98Y6C%2BsFeAhkW4tE9TOyonv%2BRuSguUZTGpweWaA%2FsZgoMsmrPCuIwRICuAFU5H6UrO2TBLFdTp2bveTwGDOnKrLsGQ%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7e5abf1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://netu.frembed.best/e/p0QUHavRbQD0","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=FbH86B1DvOBoXMI8qEwoY9MAesJexJ1kqxalQjYvQlXxGzkKOM23YkQWyyIyXsqn7GES6cL1%2FPYz1o71Gk%2FZVszrQ1%2BNXNEZyl2mgA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7f6bb51c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://lancewhosedifficult.com/e/lbeqm6ofmauq","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=a%2B9r%2BZmJWuxy3eYw%2FgYc4LK5WikvrwXEkMgk9vJzE9qpjqKCLRF3Tl5YfYWLyKEWTuYYKrze1Ag7Z0bS2Jk5rkeSRq8M9R%2BmtV%2Ba9w%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7fdc0e1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://video.streamtales.cc/player/frvod.php?url=https://streamtales.cc:8443/videos/3176.mp4","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=RrPaBwNxLFsRVh7ygou0wn3EnRLqnKjthbL%2FMccNRmP8J08Rv%2FRFL6aIZKQwVu1Spsme0YmmRaA%2Fy6TzEOYeQ%2F4u9TX0ypHZ20vVlA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f80bcd71c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://uqload.is/embed-pnxmokgrigu9.html","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=qzE6O3rgjK4fuofbqyGGJFuuk4Xflmcw2AznwtVAodvu6TuE7XeyQCnIhGc92i3Tuf8VLddxel%2FkDyEaJyVU%2F6crhO%2Fu2jyKIhdJnA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f812d2c1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:52 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://ahvsh.com/e/83izf7qzwpae,https://netu.frembed.fun/e/0DFgfkcXOsDP,https://likessb.com/e/7yjgl1x56n08.html,https://ds2play.com/e/fzfvfq3ngig0","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=qwQAhEZz2r%2Fulmy1%2Bj183n%2FR3qcgR1xSt43vgONTcT9mM04UKWn%2FuGildRew7dibcoSoXQvohfYooqwg9uGiViXoBckslaSFfUtGnA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f763c0e1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:53 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://myvidplay.com/e/dfx8me4un4ul","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=6%2FLzVg3mYPqVfftXLzzdFku4xoynCW6jsDA6yHV1d37MnAvljpc0xRjShAUDIeTJA1l71n9sYoxJUCD7ewOKTqrsPsN%2BTLYLBysp3A%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7a4f4b1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:53 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://netu.frembed.best/e/0DFgfkcXOsDP","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=dTP%2Fkw7l91W6O7NjxDu%2FjQBrlFAymHlcW%2FJnDBysZxjSvadkUHNiZSuDq3wC%2FH1V%2F8Q%2FOaiQIAfh6bEBmD8XRzPcLCzjY7q8Yzwz8A%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7b68281c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:53 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://lancewhosedifficult.com/e/cqy9oue7sv0g","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=Ulj2xuHEHJEcVeojyVABoVJQ3eIvqeay%2FQ77fY0iuCQloUlphuUONY6L6U%2FGC5nZnEm9GOtyH5cqHb7auKV3X57BslDLZVB00mPqXA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7bd8721c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:53 GMT","connection":"close","vary":"RSC, Next-Router-State-Tree, Next-Router-Prefetch, Next-Router-Segment-Prefetch","location":"https://uqload.is/e/fzfvfq3ngig0","server":"cloudflare","x-powered-by":"CyberPanel-OLS/2.4.4","x-turbo-charged-by":"LiteSpeed","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=ibAGh%2B6PLxuWfrZpqoZWVDlj4FdURky%2FRoEVoCKiCjoCNlt%2FkBA%2B%2BRl7D3Qp90TIDuhIx%2FaHjt1ZH6Z6BM2kk5iqjtS960jFYjKNwA%3D%3D\"}]}","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-ray":"9dbc2f7cc95d1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"server":"ddos-guard","connection":"close","set-cookie":["__ddg8_=IR7D2UU7WdQQgL5z; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:53 GMT","__ddg10_=1773416933; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:53 GMT","__ddg9_=104.28.155.180; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:53 GMT","__ddg1_=zhQ2YliUu1JbcAaq2H5F; Domain=.lancewhosedifficult.com; HttpOnly; Path=/; Expires=Sat, 13-Mar-2027 15:48:53 GMT","XSRF-TOKEN=eyJpdiI6IkpHMVNHbm4zWHpXNHJnekc3MEJFNWc9PSIsInZhbHVlIjoiclZ0YWZ3RCtzaFBuVHBWN05hQnpueDMzcFl3VzI1WGdIOHR0OFpXOUMxM1dZVmx3Wjk0MzhtMFVVODk4bGpOREFJTXNBODJPZWxrQTBhUW95eWtLZncvUjBXTWdvME5YVUhNU3ZqNzBkb0pxUThmZmlDRnVwZ25xUklJcm9nbTYiLCJtYWMiOiIzZTJkMjJlM2U3N2M1NjIwYjAyZmQ5YTI4MGMwMDY5MzEzMGU1NjA1OTRmMWFiZmM0MTY1ODViOWQ2NzlkYzIxIiwidGFnIjoiIn0%3D; expires=Fri, 13 Mar 2026 17:18:53 GMT; Max-Age=5400; path=/; secure; samesite=none; partitioned","voe_session=eyJpdiI6IjNSZThsVDQ0eHQwdUJvTC9FZFBXVWc9PSIsInZhbHVlIjoiNkxlUllEZk5TQXhDMk9IdHpLbUlvMlpRV0IwUGR6clMvWFY3eHZXbUc0NUJJcUkrM1ZiNDBKUUx0OVdDZFZqKzQxQVVmMWhhTEF0dm1HUWcwSytDWnhxQ1dUamxHZlZFb0hEZjV0ZHhNRTNMckcyZHNoS3NpL25oaisxcGpYMlAiLCJtYWMiOiJiZmJmZDQwNDEyZDMyNWJmYmY0MmJiM2RkMzQ2NGRjMzg0ZGUxOTAxOTA3NmVmYjYzM2ZkYjQyMjZiYjkwNDVmIiwidGFnIjoiIn0%3D; expires=Fri, 13 Mar 2026 17:18:53 GMT; Max-Age=5400; path=/; secure; httponly; samesite=none; partitioned"],"strict-transport-security":"max-age=2628000","content-security-policy":"upgrade-insecure-requests;","content-type":"text/html; charset=utf-8","vary":"Accept-Encoding","cache-control":"no-cache, private","date":"Fri, 13 Mar 2026 15:48:53 GMT"}

View file

@ -0,0 +1 @@
{"server":"ddos-guard","connection":"close","set-cookie":["__ddg8_=xWVJsKOOwSFsP9yw; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:54 GMT","__ddg10_=1773416934; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:54 GMT","__ddg9_=104.28.155.180; Domain=.lancewhosedifficult.com; Path=/; Expires=Fri, 13-Mar-2026 16:08:54 GMT","__ddg1_=AUlGi6XandB7qMD0jQd0; Domain=.lancewhosedifficult.com; HttpOnly; Path=/; Expires=Sat, 13-Mar-2027 15:48:54 GMT","XSRF-TOKEN=eyJpdiI6IklsMko3OG5aWFVzWjVJclBNWnVKWXc9PSIsInZhbHVlIjoiRjhzN3J3bmsyZTFLWmVJNWF6WTBUeGE5cTViY1NYQ3JKaW5hcEg1eEtVaGxrMm9YSG9mMWF5UHcwZlRIeXR6bEN5YkQ4Y3h4MVpxMnpXMmxhcXo2VjZzbmt0QUJQWDF0Q2QrWmFNanhBcE9mN2p1WEtSNFIrZ0ZSWjRkVzh3dXAiLCJtYWMiOiJiMjhhNGRiMjA3M2ZkMzk1ZGI0ZTA0MGYzNDBiMGJmZDljYjk0YzE4M2YyMGY2YzdmOWM2YzZjZThhZGE1NDY1IiwidGFnIjoiIn0%3D; expires=Fri, 13 Mar 2026 17:18:54 GMT; Max-Age=5400; path=/; secure; samesite=none; partitioned","voe_session=eyJpdiI6InhxTjhxOTB3YWtlQjIyNnpHUlZDNGc9PSIsInZhbHVlIjoiSFY4MHZEZmRjU1ZDWC82cEZXc1VKQUtaREpyZW5QYi9uUXlnWWl6TDBJbFlGWHhocWcvZnJSTVp2bFhRRjBuK0ZlY2N6UWowdFB5M1hSOVplWjhEZlY5QzgrK296OWx0Zy92SzhkclB5WVBwc3VHbjFlNkJHNFo5emxEMkhKaGQiLCJtYWMiOiJkNGMyODZiNjc4ZGNiMTE3ODcwMDUyNWMyNzJlMDQ2Mjk3OTA3OGUwZTNiMmU0ZDFiYzQxM2YzMDg5NzIzZjllIiwidGFnIjoiIn0%3D; expires=Fri, 13 Mar 2026 17:18:54 GMT; Max-Age=5400; path=/; secure; httponly; samesite=none; partitioned"],"strict-transport-security":"max-age=2628000","content-security-policy":"upgrade-insecure-requests;","content-type":"text/html; charset=utf-8","vary":"Accept-Encoding","cache-control":"no-cache, private","date":"Fri, 13 Mar 2026 15:48:54 GMT"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:53 GMT","content-type":"text/html; charset=UTF-8","connection":"close","server":"cloudflare","vary":"Accept-Encoding","expires":"Thu, 12 Mar 2026 15:48:53 GMT","set-cookie":["lang=1; domain=.myvidplay.com; path=/; HttpOnly"],"nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","speculation-rules":"\"/cdn-cgi/speculation\"","server-timing":"cfCacheStatus;desc=\"DYNAMIC\", cfEdge;dur=6,cfOrigin;dur=85","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=9n5MpTOBeQplE%2BzNk57RcAN16laJ%2Br49SqDUGDdgRviMLX33hH%2BZ6782I%2BeiOEZP10gtHESY9fsjIQzXsQd%2FXQWFFUCCVVsdhJ8ZbQ%3D%3D\"}]}","cf-ray":"9dbc2f7abfaa1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","content-type":"text/html; charset=UTF-8","connection":"close","server":"cloudflare","vary":"Accept-Encoding","expires":"Thu, 12 Mar 2026 15:48:54 GMT","set-cookie":["lang=1; domain=.myvidplay.com; path=/; HttpOnly"],"nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","speculation-rules":"\"/cdn-cgi/speculation\"","server-timing":"cfCacheStatus;desc=\"DYNAMIC\", cfEdge;dur=7,cfOrigin;dur=85","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=GpIUXOhKMwDPZOAmbOhKTYATW1Re2nx5xhsiFTwXg5xxbNdQTHwkf9L249NoTZgjqtWPMGjDis%2B%2BaABD%2B5zURaIZKrWMCZvVXbTWCA%3D%3D\"}]}","cf-ray":"9dbc2f7ebb1b1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
Error: getaddrinfo ENOTFOUND netu.frembed.best

View file

@ -0,0 +1 @@
Error: getaddrinfo ENOTFOUND netu.frembed.best

View file

@ -0,0 +1 @@
Error

View file

@ -0,0 +1 @@
{"date":"Fri, 13 Mar 2026 15:48:54 GMT","content-type":"text/html; charset=UTF-8","connection":"close","server":"cloudflare","expires":"Thu, 12 Mar 2026 15:48:54 GMT","set-cookie":["lang=1; domain=.uqload.is; path=/; HttpOnly"],"x-content-type-options":"nosniff","x-xss-protection":"1; mode=block","nel":"{\"report_to\":\"cf-nel\",\"success_fraction\":0.0,\"max_age\":604800}","cf-cache-status":"DYNAMIC","report-to":"{\"group\":\"cf-nel\",\"max_age\":604800,\"endpoints\":[{\"url\":\"https://a.nel.cloudflare.com/report/v4?s=7p8hZzah0VCGKKBLGpvd03yAyK8zYAu6GCt5SreSWz%2FJ3SDsL%2FvFem8shyDgo5B5Ziwu7LRx3N1eervoyxU6GVk8CpECGiYgLQ%3D%3D\"}]}","cf-ray":"9dbc2f817d6e1c1c-FRA","alt-svc":"h3=\":443\"; ma=86400"}

View file

@ -0,0 +1 @@
Error: getaddrinfo ENOTFOUND video.streamtales.cc

View file

@ -1 +0,0 @@
{"tmdb":"3176","title":"Battle Royale","link1":"https://myvidplay.com/e/gtenfs0rffzq","link2":"https://netu.fremtv.lol/e/p0QUHavRbQD0","link3":"https://crystaltreatmenteast.com/e/lbeqm6ofmauq","link4":"https://video.streamtales.cc/player/frvod.php?url=https://streamtales.cc:8443/videos/3176.mp4","link5":null,"link6":"","link7":"https://uqload.bz/embed-pnxmokgrigu9.html","link1vostfr":null,"link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"imdb":"tt0266308","year":"2000","version":"TrueFrench","quality":"HD","qualityVostfr":null,"qualityVo":null,"poster":"/8PzexNbQ9eAKxe0p2U4XP3DVJCp.jpg","backdrop":"/pmRtI4QvcBvXjw9mLOEAsV9Bq7i.jpg,/amBvmIshdsSkOtvVIgxl7YSQ9Dg.jpg,/n4rNQUV9S9DMgCkQVt7R7VLYxNr.jpg,/55qVIFhykb6M6CGWRKQd9BsLI5D.jpg,/e9vJTJHkCOyBitE67n8zlp5Qm8q.jpg,/tSbZky1KLzqOSGPzYtqnxTQzNFy.jpg,/cQR3VHRMUL8xGkWK5Up8rI7DHQD.jpg,/4oIoe9tcSRzGSImp9Jqp1SKFwes.jpg,/zajlFkhKugj9tqH57KHXpmTXIku.jpg,/hpP0ELkViFlU8PVWbEBvVx12YtJ.jpg","checked":null,"dead_link":0,"views":"2","date_creation":"2023-08-17T04:06:45.000Z","update_date":"2024-09-19T01:28:34.000Z","original_title":"バトル・ロワイアル","title_vf":"Battle Royale","tatavid":null,"dcsutom":96950}

View file

@ -1 +0,0 @@
{"id":44334,"tmdb":"42009","title":"Black Mirror","sa":4,"epi":2,"link":"https://ahvsh.com/e/83izf7qzwpae,https://netu.frembed.fun/e/0DFgfkcXOsDP,https://likessb.com/e/7yjgl1x56n08.html,https://ds2play.com/e/fzfvfq3ngig0","imdb":"tt2085059","year":null,"version":"VF","link_vostfr":"","link1":"https://myvidplay.com/e/dfx8me4un4ul\t","link2":"https://netu.fremtv.lol/e/0DFgfkcXOsDP","link3":"https://crystaltreatmenteast.com/e/cqy9oue7sv0g\t","link4":"https://ds2play.com/e/fzfvfq3ngig0","link5":null,"link6":null,"link7":null,"link1vostfr":"","link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"date_creation":"2023-08-17T04:06:31.000Z","update_date":"2026-01-09T14:15:02.000Z","views":3,"backdropImage":"/dg3OindVAGZBjlT3xYKqIAdukPL.jpg","posterImage":"/seN6rRfN0I6n8iDXjlSMk1QjNcq.jpg","prevEpisode":{"sa":4,"epi":1,"url":"/series?id=42009&sa=4&epi=1"},"nextEpisode":{"sa":4,"epi":3,"url":"/series?id=42009&sa=4&epi=3"}}

View file

@ -0,0 +1 @@
{"tmdb":"3176","title":"Battle Royale","link1":"/api/stream?type=movie&tmdb=3176&server=link1","link2":"/api/stream?type=movie&tmdb=3176&server=link2","link3":"/api/stream?type=movie&tmdb=3176&server=link3","link4":"/api/stream?type=movie&tmdb=3176&server=link4","link5":null,"link6":"","link7":"/api/stream?type=movie&tmdb=3176&server=link7","link1vostfr":null,"link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"imdb":"tt0266308","year":"2000","version":"TrueFrench","quality":"HD","qualityVostfr":null,"qualityVo":null,"poster":"/8PzexNbQ9eAKxe0p2U4XP3DVJCp.jpg","backdrop":"/pmRtI4QvcBvXjw9mLOEAsV9Bq7i.jpg,/amBvmIshdsSkOtvVIgxl7YSQ9Dg.jpg,/n4rNQUV9S9DMgCkQVt7R7VLYxNr.jpg,/55qVIFhykb6M6CGWRKQd9BsLI5D.jpg,/e9vJTJHkCOyBitE67n8zlp5Qm8q.jpg,/tSbZky1KLzqOSGPzYtqnxTQzNFy.jpg,/cQR3VHRMUL8xGkWK5Up8rI7DHQD.jpg,/4oIoe9tcSRzGSImp9Jqp1SKFwes.jpg,/zajlFkhKugj9tqH57KHXpmTXIku.jpg,/hpP0ELkViFlU8PVWbEBvVx12YtJ.jpg","checked":null,"dead_link":0,"views":"2","date_creation":"2023-08-17T04:06:45.000Z","update_date":"2024-09-19T01:28:34.000Z","original_title":"バトル・ロワイアル","title_vf":"Battle Royale","tatavid":null,"dcsutom":96950}

View file

@ -0,0 +1 @@
{"id":44334,"tmdb":"42009","title":"Black Mirror","sa":4,"epi":2,"link":"/api/stream?type=serie&tmdb=42009&sa=4&epi=2&server=link","imdb":"tt2085059","year":null,"version":"VF","link_vostfr":"","link1":"/api/stream?type=serie&tmdb=42009&sa=4&epi=2&server=link1","link2":"/api/stream?type=serie&tmdb=42009&sa=4&epi=2&server=link2","link3":"/api/stream?type=serie&tmdb=42009&sa=4&epi=2&server=link3","link4":"/api/stream?type=serie&tmdb=42009&sa=4&epi=2&server=link4","link5":null,"link6":null,"link7":null,"link1vostfr":"","link2vostfr":null,"link3vostfr":null,"link4vostfr":null,"link5vostfr":null,"link6vostfr":null,"link7vostfr":null,"link1vo":null,"link2vo":null,"link3vo":null,"link4vo":null,"link5vo":null,"link6vo":null,"link7vo":null,"date_creation":"2023-08-17T04:06:31.000Z","update_date":"2026-03-13T17:15:01.000Z","views":4,"backdropImage":"/dg3OindVAGZBjlT3xYKqIAdukPL.jpg","posterImage":"/seN6rRfN0I6n8iDXjlSMk1QjNcq.jpg","prevEpisode":{"sa":4,"epi":1,"url":"/series?id=42009&sa=4&epi=1"},"nextEpisode":{"sa":4,"epi":3,"url":"/series?id=42009&sa=4&epi=3"}}

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZCVFcwd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZDUkVjd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZDU0Vjd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZCY1cwd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oSU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oU09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSbU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

View file

@ -0,0 +1,20 @@
<html>
<head>
<title>Redirecting ...</title>
<meta name="referrer" content="no-referrer">
<meta name="robots" content="noindex, nofollow">
<meta name="author" content="s-b0t">
<meta name="googlebot" content="noindex,nofollow">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
</head>
<body>
Redirecting ..
<script type="text/javascript">
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

Some files were not shown because too many files have changed in this diff Show more