Compare commits

..

249 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
webstreamr
bc98d64969
chore(release): release v0.65.9 (#679) 2026-01-23 22:14:09 +00:00
WebStreamr
a90d7b1cad
fix(extractor): use full cached meta to avoid invalid cache states
The lazy extraction does not specify meta the same way the stream
resolver does. this leads to partial meta being inserted in both the
short-term and long-term cache and consecutive requests have then
missing meta info like e.g. countries
2026-01-23 22:12:50 +00:00
renovate[bot]
43e16f5bfa
chore(deps): update dependency cheerio to v1.2.0 (#683)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 19:02:36 +00:00
renovate[bot]
622b1b3bcc
chore(deps): update dependency @stylistic/eslint-plugin to v5.7.1 (#682)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-23 14:48:29 +00:00
WebStreamr
12ea135feb
refactor(cache): extract clearCache function 2026-01-22 15:16:03 +00:00
renovate[bot]
e5197fdb8b
chore(deps): update dependency @keyv/sqlite to v4.0.8 (#677)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-22 15:03:48 +00:00
WebStreamr
a5539bcf59
refactor(cache): make code more dry and return in-memory cache for test env 2026-01-22 15:01:00 +00:00
renovate[bot]
d3db3fc512
chore(deps): update dependency axios-cache-interceptor to v1.11.4 (#678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-21 10:13:10 +00:00
webstreamr
9945ed4615
chore(release): release v0.65.8 (#675) 2026-01-20 21:13:14 +00:00
WebStreamr
28a83e2f29
chore: npm audit fix 2026-01-20 21:11:27 +00:00
WebStreamr
93fe1ae871
chore: add env var for one-time cache file deletion
kind of a hack to be able to do that on environments without FS access
2026-01-20 21:10:29 +00:00
WebStreamr
1ddc8d99d6
fix(extractor): never use external URL results for lazy URL caching to avoid clashes 2026-01-20 20:57:01 +00:00
WebStreamr
3c979e77cc
chore(extractor): add lauradaydo.com to VOE 2026-01-20 20:52:19 +00:00
GSTAR
a00fa2c3d6
fix(extractor): use MediaFlow Proxy for DoodStream (#676)
Co-authored-by: WebStreamr <210764791+webstreamr@users.noreply.github.com>
2026-01-20 21:49:37 +01:00
renovate[bot]
7c886583c9
chore(deps): update dependency typescript-eslint to v8.53.1 (#674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 18:03:42 +00:00
webstreamr
92a4ed5578
chore(release): release v0.65.7 (#673) 2026-01-19 12:01:50 +01:00
WebStreamr
e8ed29eb9d
fix: pass empty array instead of undefined if meta has no countries 2026-01-19 10:58:49 +00:00
webstreamr
ef2cc7f16b
chore(release): release v0.65.6 (#670) 2026-01-19 09:42:17 +00:00
WebStreamr
646e75d5f8
fix: log all unhandled errors inside next handlers, terminate app properly for unhandled error outside 2026-01-19 09:40:28 +00:00
WebStreamr
d259587491
fix(extractor): use correct referer for rgshows, treat vidzee response as block 2026-01-19 09:12:45 +00:00
renovate[bot]
7c99e4d1c1
chore(deps): lock file maintenance (#669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 01:31:30 +00:00
renovate[bot]
aeb15d8640
chore(deps): update dependency @types/node to v24.10.9 (#668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-19 01:30:43 +00:00
webstreamr
771d664e5a
chore(release): release v0.65.5 (#665) 2026-01-18 13:22:45 +00:00
WebStreamr
7b708e2385
chore: add priority for sorting, move VixSrc up and RgShows down 2026-01-18 13:21:17 +00:00
WebStreamr
a9c281c8c4
fix(extractor): only use bytes and height from meta cache to avoid clashes 2026-01-18 12:57:52 +00:00
renovate[bot]
8aa1344fa5
chore(deps): update dependency cacheable to v2.3.2 (#667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-17 20:33:42 +00:00
webstreamr
5fd62028ce
chore: add issue templates 2026-01-17 11:38:19 +01:00
WebStreamr
5b49dd0735
chore(fetcher): tune FlareSolverr timeouts and use other cookie variants too 2026-01-16 19:53:18 +00:00
webstreamr
7bb38fda3e
chore(release): release v0.65.4 (#664) 2026-01-16 14:23:59 +01:00
WebStreamr
507b96014c
chore(extractor): simplify cache expiration handling 2026-01-16 13:21:38 +00:00
WebStreamr
986db2cc67
chore: extract HubDrive handling into own extractor re-using HubCloud for better caching, increase both TTLs 2026-01-16 13:16:07 +00:00
webstreamr
546dee9799
chore(release): release v0.65.3 (#663) 2026-01-16 12:47:27 +01:00
WebStreamr
4cfbf731b8
fix(fetcher): more FlareSolverr related stats, fix clearance cookie expiration 2026-01-16 11:45:49 +00:00
WebStreamr
231a12f685
docs: add tmp mount for persistent cache to Docker run example 2026-01-16 10:09:29 +00:00
WebStreamr
e54b54bfb3
docs: mention FlareSolverr support / env var 2026-01-16 10:09:25 +00:00
webstreamr
58966ccff1
chore(release): release v0.65.2 (#659) 2026-01-16 10:36:11 +01:00
WebStreamr
59c84952ed
fix(fetcher): make FlareSolverr work again, use single session and pass proxy 2026-01-16 09:03:19 +00:00
renovate[bot]
90c56debfe
chore(deps): update dependency @tsconfig/node24 to v24.0.4 (#662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-16 06:16:54 +00:00
WebStreamr
9cf9c4498c
fix: remove leftover logging 2026-01-15 21:01:10 +00:00
webstreamr
31ca9597e5
chore(release): release v0.65.1 (#658) 2026-01-15 20:35:32 +00:00
WebStreamr
17e70c169b
fix(extractor): use milliseconds instead of incorrect seconds for ttl
🤦‍♂️
2026-01-15 20:33:45 +00:00
WebStreamr
79c8e7fc32
fix(source): be resilient against missing heights in 4KHDHub 2026-01-15 20:05:03 +00:00
WebStreamr
26278aadba
fix(extractor): use lazy url/meta cache also for extractors without a ttl 2026-01-15 19:48:34 +00:00
WebStreamr
5ef6119294
fix: calculate fallback count properly, only use VidSrc when no other normal source provided results 2026-01-15 19:43:55 +00:00
webstreamr
96c4b1f16b
chore(release): release v0.65.0 (#651) 2026-01-15 15:05:59 +01:00
WebStreamr
4cf08fc6d5
feat: add fetcher http stats 2026-01-15 14:03:51 +00:00
WebStreamr
bad1170421
feat: introduce fallback sources and mark VidSrc and RgShows as such
fallback sources are only considered when not enough results are found.
the idea is to use it for sources which are very useful as fallback but
not everytime either because the quality is not good or querying them is
resource intensive.
2026-01-15 14:03:03 +00:00
WebStreamr
7593d3d62e
chore: make cache immutable, add rate limit 2026-01-15 13:37:28 +00:00
WebStreamr
ce11a80ba9
fix(extractor): make VixSrc fall back to multi instead of it if language cannot be determined 2026-01-15 09:49:21 +00:00
webstreamr
5103be82a4
chore(release): release v0.64.0 (#649) 2026-01-14 14:52:35 +01:00
WebStreamr
9ee91dff31
feat(extractor): add back VidSrc
This reverts commit f5f47403cc.
2026-01-14 13:38:09 +00:00
WebStreamr
381fb89cfb
feat(source): bring back VidSrc as multi source
This reverts commit 1bd85fb4ad.
2026-01-14 13:11:40 +00:00
webstreamr
9354c0ee9b
chore(release): release v0.63.1 (#648) 2026-01-14 13:02:01 +00:00
WebStreamr
51aa127a33
chore: regularly clean-up expired items from sqlite cache 2026-01-14 13:00:42 +00:00
WebStreamr
9d6d138fff
chore(extractor): make lazyUrlResultCache non-blocking and add stats 2026-01-14 11:58:42 +00:00
WebStreamr
a189cddd37
chore: do not ignore errors on height guessing 2026-01-14 11:51:32 +00:00
WebStreamr
f7cf9da686
fix(source): make 4KHDHub title matching just a tiny bit less strict
To make the guy happy who wants to sleep with my mother
2026-01-14 11:15:40 +00:00
webstreamr
d00cc8a94a
chore(release): release v0.63.0 (#641) 2026-01-12 19:58:06 +00:00
renovate[bot]
20ce2ac831
chore(deps): lock file maintenance (#640)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: WebStreamr <210764791+webstreamr@users.noreply.github.com>
2026-01-12 19:56:35 +00:00
WebStreamr
c6a6a70eaf
feat: introduce lazy extract for all non-HLS streams 2026-01-12 19:48:59 +00:00
renovate[bot]
9e256186aa
chore(deps): update dependency typescript-eslint to v8.53.0 (#645)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 19:48:59 +00:00
WebStreamr
f047287fe9
feat: introduce generic meta cache 2026-01-12 19:48:54 +00:00
renovate[bot]
816123ab83
chore(deps): update dependency @types/node to v24.10.7 (#639)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-12 01:49:56 +00:00
webstreamr
815d3b6b1e
chore(release): release v0.62.3 (#638) 2026-01-11 20:35:58 +01:00
WebStreamr
05b80a2d63
chore: configure more Indian languages, add Tamil and Telugu to 4KHDHub 2026-01-11 19:29:55 +00:00
WebStreamr
de79dc014f
fix(source): RgShows is multi 2026-01-11 19:13:14 +00:00
WebStreamr
1a99a9e99b
chore: enable nonBlocking secondary cache writes 2026-01-11 19:12:09 +00:00
WebStreamr
f49769f3c4
chore(extractor): return only best Fsst result
it's too flaky to deal with all
2026-01-11 19:11:43 +00:00
webstreamr
77cf6767b1
chore(release): release v0.62.2 (#634) 2026-01-10 22:29:01 +00:00
WebStreamr
d1fcd671c9
fix(extractor): support non-HLS streams in RgShows 2026-01-10 22:27:44 +00:00
webstreamr
5cb4944413
chore(release): release v0.62.1 (#633) 2026-01-10 20:44:56 +00:00
WebStreamr
559ee6ed4e
chore(source): simplifly Frembed domain detection again
no clue why, but audin213.com is timing out on the official instance
2026-01-10 20:43:35 +00:00
webstreamr
cc1e96f3cf
chore(release): release v0.62.0 (#632) 2026-01-10 20:30:11 +00:00
WebStreamr
b273e3a71d
chore(source): improve 4KHDHub search matching
- search without year, otherwise incorrect results might be returned
  only
- do a less stricter levenshtein if name is fully included
2026-01-10 20:28:49 +00:00
WebStreamr
66fb0e2e6d
chore: remove all proxy black magic
can be configured per env via PROXY_CONFIG instead
2026-01-10 20:11:03 +00:00
GSTAR
baf5c9143d
feat(extractor): add StreamUP (#621)
Co-authored-by: WebStreamr <210764791+webstreamr@users.noreply.github.com>
2026-01-10 06:39:19 +00:00
WebStreamr
28a8a1554d
chore: do not fail resolution if height guessing fails 2026-01-09 20:00:46 +00:00
webstreamr
515ca0a98c
chore(release): release v0.61.0 (#625) 2026-01-09 19:50:01 +01:00
WebStreamr
dcad7db29c
feat: add RgShows 2026-01-09 15:34:04 +00:00
renovate[bot]
4bec9e556f
chore(deps): update dependency axios-cache-interceptor to v1.11.3 (#626)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-09 15:04:15 +00:00
WebStreamr
da7397fe75
chore: enforce https:// prefix in mediaflow proxy url and support config without scheme to work aroud elfhosted weirdness 2026-01-09 15:00:29 +00:00
renovate[bot]
86eb3d498c
chore(deps): update dependency @stylistic/eslint-plugin to v5.7.0 (#624)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-09 08:50:05 +00:00
webstreamr
ca8caa7795
chore(release): release v0.60.0 (#619) 2026-01-06 20:19:55 +01:00
WebStreamr
f6f71b043b
feat(extractor): switch KinoGer from cf to source, add kinoger.p2pplay.pro support 2026-01-06 19:10:15 +00:00
WebStreamr
281fe00a35
chore(fetcher): disable TLS verification
to better deal with hoster quirks
2026-01-06 19:08:16 +00:00
webstreamr
e5d68c5214
chore(release): release v0.59.1 (#618) 2026-01-06 15:41:23 +00:00
WebStreamr
04f3fc42e0
fix(source): adapt MegaKino domain
they came up with something new which might not work with redirects any
more. let's see..
2026-01-06 15:39:54 +00:00
webstreamr
ed50cb2f6a
chore(release): release v0.59.0 (#612) 2026-01-06 16:23:26 +01:00
WebStreamr
e1e8f37862
feat(extractor): bring back Fsst 2026-01-06 15:20:12 +00:00
WebStreamr
7146c6cf11
fix(source): handle MegaKino relative page links 2026-01-06 14:03:28 +00:00
WebStreamr
41bc53b9da
chore(source): do not filter out any KinoGer links 2026-01-06 13:49:46 +00:00
WebStreamr
bfe8c36e87
chore(extractor): add crystaltreatmenteast.com to VOE 2026-01-06 13:40:07 +00:00
renovate[bot]
430e5b7fce
chore(deps): update dependency typescript-eslint to v8.52.0 (#616)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 19:01:18 +00:00
renovate[bot]
8d1991ed84
chore(deps): lock file maintenance (#615)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-01-05 02:53:09 +00:00
WebStreamr
c075fe9481
fix(extractor): handle FileLions deleted by administration 2026-01-02 15:00:50 +00:00
webstreamr
7e4891a93f
chore(release): release v0.58.12 (#610) 2026-01-02 10:18:16 +01:00
WebStreamr
f8f62db174
chore(source): determine latest 4KHDHub domain more dynamically 2026-01-02 09:15:30 +00:00
WebStreamr
93a098e438
chore(source): add 4KHDHub test for stranger things s05e08 2026-01-02 08:58:11 +00:00
WebStreamr
1f4d7c752d
chore(source): update 4KHDHub TLD and re-generate fixtures 2026-01-02 08:47:12 +00:00
WebStreamr
9b3c7c76cf
fix: run npm audit fix to fix security issues 2026-01-02 08:38:55 +00:00
webstreamr
ac4cc8a346
chore(release): release v0.58.11 (#598) 2026-01-01 19:08:25 +00:00
WebStreamr
e7b1e2a4fc
fix(fetcher): increase queue limits 5 times 2026-01-01 19:06:25 +00:00
renovate[bot]
f8b63f4cce
chore(deps): update dependency typescript-eslint to v8.51.0 (#608)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 21:45:33 +00:00
renovate[bot]
30c60261af
chore(deps): update dependency axios-cache-interceptor to v1.11.2 (#607)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 05:08:12 +00:00
renovate[bot]
9079feebbd
chore(deps): lock file maintenance (#606)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-29 02:13:17 +00:00
renovate[bot]
a7d93590c6
chore(deps): update dependency axios-cache-interceptor to v1.11.1 (#605)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-27 16:36:28 +00:00
renovate[bot]
d20c568e85
chore(deps): update dependency typescript-eslint to v8.50.1 (#599)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-22 20:43:02 +00:00
WebStreamr
c8e38d73ff
fix(extractor): add new FileLions domain 2025-12-22 13:35:44 +00:00
WebStreamr
135d90a233
fix(extractor): use last FileMoon iframe url matcher 2025-12-22 13:34:55 +00:00
WebStreamr
9f5ac02ec6
fix(extractor): deal better with cases where video ID URLs end with a slash 2025-12-22 13:32:33 +00:00
WebStreamr
6f24b7928d
fix(test): improve stability of MegaKino test by dirty mocking getFinalRedirectUrl 2025-12-22 13:31:30 +00:00
webstreamr
b5fc29f150
chore(release): release v0.58.10 (#575) 2025-12-22 10:38:44 +00:00
WebStreamr
6cc24c0332
fix(extractor): update FileLion domains, remove kinoger.be 2025-12-22 10:37:16 +00:00
WebStreamr
924265b964
fix(source): determine Frembed domain dynamically 2025-12-22 10:34:18 +00:00
WebStreamr
7264fd2ed4
chore(source): useless debug log 2025-12-22 10:29:14 +00:00
WebStreamr
0610b8556a
fix: return 400 for invalid ID instead of raising Error 2025-12-22 10:21:24 +00:00
renovate[bot]
9fd563450e
chore(deps): replace dependency @tsconfig/node22 with @tsconfig/node24 (#581)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: WebStreamr <210764791+webstreamr@users.noreply.github.com>
2025-12-22 10:21:02 +01:00
WebStreamr
ddf4f227b3
fix: use "Mozilla" instead of "Mozilla/5.0" as default user agent 2025-12-22 09:04:36 +00:00
renovate[bot]
36a15f0091
chore(deps): lock file maintenance (#595)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-22 00:38:29 +00:00
renovate[bot]
58bd6250c9
chore(deps): update dependency axios-cache-interceptor to v1.10.0 (#592)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-20 01:16:25 +00:00
renovate[bot]
10081a2276
chore(deps): update dependency cacheable to v2.3.1 (#587)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-17 02:04:17 +00:00
renovate[bot]
fa6bee4c83
chore(deps): update dependency axios-cache-interceptor to v1.9.1 (#584)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-16 02:13:07 +00:00
renovate[bot]
40f9f9ec8c
chore(deps): update dependency typescript-eslint to v8.50.0 (#583)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 21:52:15 +00:00
renovate[bot]
01649955b1
chore(deps): lock file maintenance (#580)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 02:08:33 +00:00
renovate[bot]
5d412b759f
chore(deps): update dependency @types/node to v24.10.4 (#579)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-15 02:07:35 +00:00
renovate[bot]
4f7a9d725e
chore(deps): update eslint monorepo to v9.39.2 (#574)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-12-13 03:07:21 +00:00
412 changed files with 77342 additions and 9026 deletions

38
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View file

@ -0,0 +1,38 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: bug
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View file

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View file

@ -0,0 +1,23 @@
---
name: Request source/extractor
about: Request a source or extractor to get URLs from
title: Request to add <source/extractor>
labels: enhancement
assignees: ''
---
**What is the site you want to get added?**
A link to the source or embed hoster
**What is the benefit of adding this?**
More content is not a good reason. If it's already covered via an existing source/extractor, why should we add another one?
**Are you aware of any protection the site uses?**
E.g. rate-limits or Cloudflare captchas and such
**What languages does this relate to?**
E.g. multi, German, ..
**Example**
A movie/series IMDb/TMDB ID + source link or embed URL to test with.

View file

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

View file

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

View file

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

View file

@ -1,5 +1,643 @@
# 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)
### Miscellaneous Chores
* **deps:** update dependency @keyv/sqlite to v4.0.8 ([#677](https://github.com/webstreamr/webstreamr/issues/677)) ([e5197fd](https://github.com/webstreamr/webstreamr/commit/e5197fdb8be200235514fe9de5d5e1ad98fb6a12))
* **deps:** update dependency @stylistic/eslint-plugin to v5.7.1 ([#682](https://github.com/webstreamr/webstreamr/issues/682)) ([622b1b3](https://github.com/webstreamr/webstreamr/commit/622b1b3bcc6890e5d926611184c90b392959caaa))
* **deps:** update dependency axios-cache-interceptor to v1.11.4 ([#678](https://github.com/webstreamr/webstreamr/issues/678)) ([d3db3fc](https://github.com/webstreamr/webstreamr/commit/d3db3fc5129e3450630d384c849cec4ae83158f8))
* **deps:** update dependency cheerio to v1.2.0 ([#683](https://github.com/webstreamr/webstreamr/issues/683)) ([43e16f5](https://github.com/webstreamr/webstreamr/commit/43e16f5bfa8447b22ae402928aa9b7c18ce14299))
### Bug Fixes
* **extractor:** use full cached meta to avoid invalid cache states ([a90d7b1](https://github.com/webstreamr/webstreamr/commit/a90d7b1cad8501a2fa74aa8e457e2249bde4e2ae))
### Code Refactoring
* **cache:** extract clearCache function ([12ea135](https://github.com/webstreamr/webstreamr/commit/12ea135feb4d7f363a4eefb48588f063815eeaf0))
* **cache:** make code more dry and return in-memory cache for test env ([a5539bc](https://github.com/webstreamr/webstreamr/commit/a5539bcf595761a973fafda77db8741f8d0c35a8))
## [0.65.8](https://github.com/webstreamr/webstreamr/compare/v0.65.7...v0.65.8) (2026-01-20)
### Miscellaneous Chores
* add env var for one-time cache file deletion ([93fe1ae](https://github.com/webstreamr/webstreamr/commit/93fe1ae871a91b5a94b79a91e7b1e97497086c29))
* **deps:** update dependency typescript-eslint to v8.53.1 ([#674](https://github.com/webstreamr/webstreamr/issues/674)) ([7c88658](https://github.com/webstreamr/webstreamr/commit/7c886583c97ffa6edc92690c8412e7241a7b3f86))
* **extractor:** add lauradaydo.com to VOE ([3c979e7](https://github.com/webstreamr/webstreamr/commit/3c979e77cc3f6790e17bb3982012aad668c202db))
* npm audit fix ([28a83e2](https://github.com/webstreamr/webstreamr/commit/28a83e2f29ed6ca10a58ba61d9dcdee2d591b2ad))
### Bug Fixes
* **extractor:** never use external URL results for lazy URL caching to avoid clashes ([1ddc8d9](https://github.com/webstreamr/webstreamr/commit/1ddc8d99d6443f36381b36fd7daaf69eec5b39c2))
* **extractor:** use MediaFlow Proxy for DoodStream ([#676](https://github.com/webstreamr/webstreamr/issues/676)) ([a00fa2c](https://github.com/webstreamr/webstreamr/commit/a00fa2c3d65ace25783532066e33d105a17b2853))
## [0.65.7](https://github.com/webstreamr/webstreamr/compare/v0.65.6...v0.65.7) (2026-01-19)
### Bug Fixes
* pass empty array instead of undefined if meta has no countries ([e8ed29e](https://github.com/webstreamr/webstreamr/commit/e8ed29eb9dea2bfe52fc2c2f07c8c245b08bee3e))
## [0.65.6](https://github.com/webstreamr/webstreamr/compare/v0.65.5...v0.65.6) (2026-01-19)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#669](https://github.com/webstreamr/webstreamr/issues/669)) ([7c99e4d](https://github.com/webstreamr/webstreamr/commit/7c99e4d1c1d1195235b18639f21ac5d38d29e722))
* **deps:** update dependency @types/node to v24.10.9 ([#668](https://github.com/webstreamr/webstreamr/issues/668)) ([aeb15d8](https://github.com/webstreamr/webstreamr/commit/aeb15d86400c16d9594cd8e9f29fc2a366db69f7))
### Bug Fixes
* **extractor:** use correct referer for rgshows, treat vidzee response as block ([d259587](https://github.com/webstreamr/webstreamr/commit/d25958749119c0d4600609197323dd8e5463d65d))
* log all unhandled errors inside next handlers, terminate app properly for unhandled error outside ([646e75d](https://github.com/webstreamr/webstreamr/commit/646e75d5f88b3083f8fe491a238d1b5e061909a9))
## [0.65.5](https://github.com/webstreamr/webstreamr/compare/v0.65.4...v0.65.5) (2026-01-18)
### Miscellaneous Chores
* add issue templates ([5fd6202](https://github.com/webstreamr/webstreamr/commit/5fd62028ce56e03750a4aa415760076cfed793ce))
* add priority for sorting, move VixSrc up and RgShows down ([7b708e2](https://github.com/webstreamr/webstreamr/commit/7b708e23851ce191439cbfbe625db07f6554ac8f))
* **deps:** update dependency cacheable to v2.3.2 ([#667](https://github.com/webstreamr/webstreamr/issues/667)) ([8aa1344](https://github.com/webstreamr/webstreamr/commit/8aa1344fa590b7ab1fdeecf43f5a55472186805a))
* **fetcher:** tune FlareSolverr timeouts and use other cookie variants too ([5b49dd0](https://github.com/webstreamr/webstreamr/commit/5b49dd07356efce2e542fde8bc1fdba7bdf39b32))
### Bug Fixes
* **extractor:** only use bytes and height from meta cache to avoid clashes ([a9c281c](https://github.com/webstreamr/webstreamr/commit/a9c281c8c4c0d215dc78fedd6a34072e0aec9f31))
## [0.65.4](https://github.com/webstreamr/webstreamr/compare/v0.65.3...v0.65.4) (2026-01-16)
### Miscellaneous Chores
* extract HubDrive handling into own extractor re-using HubCloud for better caching, increase both TTLs ([986db2c](https://github.com/webstreamr/webstreamr/commit/986db2cc670dba5ce5c01e69d280803140bda24d))
* **extractor:** simplify cache expiration handling ([507b960](https://github.com/webstreamr/webstreamr/commit/507b96014c8cce1ebf4f836f084e6ce3af67acfb))
## [0.65.3](https://github.com/webstreamr/webstreamr/compare/v0.65.2...v0.65.3) (2026-01-16)
### Documentation
* add tmp mount for persistent cache to Docker run example ([231a12f](https://github.com/webstreamr/webstreamr/commit/231a12f685e56aeaab7fd377c4b953e992bcce7e))
* mention FlareSolverr support / env var ([e54b54b](https://github.com/webstreamr/webstreamr/commit/e54b54bfb3e13d417b52be001bcd646edfcf4bcf))
### Bug Fixes
* **fetcher:** more FlareSolverr related stats, fix clearance cookie expiration ([4cfbf73](https://github.com/webstreamr/webstreamr/commit/4cfbf731b87873e70a76119f96984e2f1a958fdf))
## [0.65.2](https://github.com/webstreamr/webstreamr/compare/v0.65.1...v0.65.2) (2026-01-16)
### Miscellaneous Chores
* **deps:** update dependency @tsconfig/node24 to v24.0.4 ([#662](https://github.com/webstreamr/webstreamr/issues/662)) ([90c56de](https://github.com/webstreamr/webstreamr/commit/90c56debfe2e52812f16c9043da601404c6dfbbc))
### Bug Fixes
* **fetcher:** make FlareSolverr work again, use single session and pass proxy ([59c8495](https://github.com/webstreamr/webstreamr/commit/59c84952ede26df776cc33c6da57e75ef9dfc258))
* remove leftover logging ([9cf9c44](https://github.com/webstreamr/webstreamr/commit/9cf9c4498c610cc84af4f5bf28967f169fda214a))
## [0.65.1](https://github.com/webstreamr/webstreamr/compare/v0.65.0...v0.65.1) (2026-01-15)
### Bug Fixes
* calculate fallback count properly, only use VidSrc when no other normal source provided results ([5ef6119](https://github.com/webstreamr/webstreamr/commit/5ef61192948b42240ea21ddde7940e881f921aaf))
* **extractor:** use lazy url/meta cache also for extractors without a ttl ([26278aa](https://github.com/webstreamr/webstreamr/commit/26278aadba170948107c909c9bf9426e6379b10a))
* **extractor:** use milliseconds instead of incorrect seconds for ttl ([17e70c1](https://github.com/webstreamr/webstreamr/commit/17e70c169b6e26ee674c2d608e4bef1bdbb3a08c))
* **source:** be resilient against missing heights in 4KHDHub ([79c8e7f](https://github.com/webstreamr/webstreamr/commit/79c8e7fc3255333ae011c12262410ef1739f304b))
## [0.65.0](https://github.com/webstreamr/webstreamr/compare/v0.64.0...v0.65.0) (2026-01-15)
### Miscellaneous Chores
* make cache immutable, add rate limit ([7593d3d](https://github.com/webstreamr/webstreamr/commit/7593d3d62e638168c9cfbab5cd71f514745ed42a))
### Features
* add fetcher http stats ([4cf08fc](https://github.com/webstreamr/webstreamr/commit/4cf08fc6d55dbcc1de551091d14f731265b89fd5))
* introduce fallback sources and mark VidSrc and RgShows as such ([bad1170](https://github.com/webstreamr/webstreamr/commit/bad1170421298ef6aa5f1c69a6214065fe184773))
### Bug Fixes
* **extractor:** make VixSrc fall back to multi instead of it if language cannot be determined ([ce11a80](https://github.com/webstreamr/webstreamr/commit/ce11a80ba9d71def7f4eab29666eb606e1f5ad59))
## [0.64.0](https://github.com/webstreamr/webstreamr/compare/v0.63.1...v0.64.0) (2026-01-14)
### Features
* **extractor:** add back VidSrc ([9ee91df](https://github.com/webstreamr/webstreamr/commit/9ee91dff31636d6bf980614bfd0f375135c735e7))
* **source:** bring back VidSrc as multi source ([381fb89](https://github.com/webstreamr/webstreamr/commit/381fb89cfba8ff3c985ec2ddb11f65467f59c230))
## [0.63.1](https://github.com/webstreamr/webstreamr/compare/v0.63.0...v0.63.1) (2026-01-14)
### Miscellaneous Chores
* do not ignore errors on height guessing ([a189cdd](https://github.com/webstreamr/webstreamr/commit/a189cddd370c84cc22a93809827c8b988cbbc13f))
* **extractor:** make lazyUrlResultCache non-blocking and add stats ([9d6d138](https://github.com/webstreamr/webstreamr/commit/9d6d138fff8a2240f87b227a506fe3ecebd0f677))
* regularly clean-up expired items from sqlite cache ([51aa127](https://github.com/webstreamr/webstreamr/commit/51aa127a33f3a3b5b5cfc738e00cd9f682394ea8))
### Bug Fixes
* **source:** make 4KHDHub title matching just a tiny bit less strict ([f7cf9da](https://github.com/webstreamr/webstreamr/commit/f7cf9da686e44a36229c590772f651bcd8955a85))
## [0.63.0](https://github.com/webstreamr/webstreamr/compare/v0.62.3...v0.63.0) (2026-01-12)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#640](https://github.com/webstreamr/webstreamr/issues/640)) ([20ce2ac](https://github.com/webstreamr/webstreamr/commit/20ce2ac831f1204ffc4dad01d30c1cd00bfe4007))
* **deps:** update dependency @types/node to v24.10.7 ([#639](https://github.com/webstreamr/webstreamr/issues/639)) ([816123a](https://github.com/webstreamr/webstreamr/commit/816123ab83c6be300155f8013788d2473650b39a))
* **deps:** update dependency typescript-eslint to v8.53.0 ([#645](https://github.com/webstreamr/webstreamr/issues/645)) ([9e25618](https://github.com/webstreamr/webstreamr/commit/9e256186aa6270df59e98cb793f8a62578e30775))
### Features
* introduce generic meta cache ([f047287](https://github.com/webstreamr/webstreamr/commit/f047287fe90fba26c19831c1becf0e6d127ee020))
* introduce lazy extract for all non-HLS streams ([c6a6a70](https://github.com/webstreamr/webstreamr/commit/c6a6a70eafcff803ea4594037c7a39616a43a304))
## [0.62.3](https://github.com/webstreamr/webstreamr/compare/v0.62.2...v0.62.3) (2026-01-11)
### Miscellaneous Chores
* configure more Indian languages, add Tamil and Telugu to 4KHDHub ([05b80a2](https://github.com/webstreamr/webstreamr/commit/05b80a2d6367a459fe84879c9b318c416a7a4180))
* enable nonBlocking secondary cache writes ([1a99a9e](https://github.com/webstreamr/webstreamr/commit/1a99a9e99ba233c1144107cb3de32c8a5bd28073))
* **extractor:** return only best Fsst result ([f49769f](https://github.com/webstreamr/webstreamr/commit/f49769f3c4c2ca9cfca006a45d8a59c7bc3b68e8))
### Bug Fixes
* **source:** RgShows is multi ([de79dc0](https://github.com/webstreamr/webstreamr/commit/de79dc014fc00e91f926a7d5b450f875acd2bcdb))
## [0.62.2](https://github.com/webstreamr/webstreamr/compare/v0.62.1...v0.62.2) (2026-01-10)
### Bug Fixes
* **extractor:** support non-HLS streams in RgShows ([d1fcd67](https://github.com/webstreamr/webstreamr/commit/d1fcd671c9646ef923ff7bd8bcb2fe7ad0d599b1))
## [0.62.1](https://github.com/webstreamr/webstreamr/compare/v0.62.0...v0.62.1) (2026-01-10)
### Miscellaneous Chores
* **source:** simplifly Frembed domain detection again ([559ee6e](https://github.com/webstreamr/webstreamr/commit/559ee6ed4e1d705dce358b54f98478317375562a))
## [0.62.0](https://github.com/webstreamr/webstreamr/compare/v0.61.0...v0.62.0) (2026-01-10)
### Miscellaneous Chores
* do not fail resolution if height guessing fails ([28a8a15](https://github.com/webstreamr/webstreamr/commit/28a8a1554d1c14eb85577e73191a325cc686f22a))
* remove all proxy black magic ([66fb0e2](https://github.com/webstreamr/webstreamr/commit/66fb0e2e6dc379a8d4347c576a3c15605745d257))
* **source:** improve 4KHDHub search matching ([b273e3a](https://github.com/webstreamr/webstreamr/commit/b273e3a71d09cf2dfd6fffa851e26ea398967878))
### Features
* **extractor:** add StreamUP ([#621](https://github.com/webstreamr/webstreamr/issues/621)) ([baf5c91](https://github.com/webstreamr/webstreamr/commit/baf5c9143d4dab4607de891f5b17184e89e027c7))
## [0.61.0](https://github.com/webstreamr/webstreamr/compare/v0.60.0...v0.61.0) (2026-01-09)
### Miscellaneous Chores
* **deps:** update dependency @stylistic/eslint-plugin to v5.7.0 ([#624](https://github.com/webstreamr/webstreamr/issues/624)) ([86eb3d4](https://github.com/webstreamr/webstreamr/commit/86eb3d498c3a147c14342c709986ba67fba47919))
* **deps:** update dependency axios-cache-interceptor to v1.11.3 ([#626](https://github.com/webstreamr/webstreamr/issues/626)) ([4bec9e5](https://github.com/webstreamr/webstreamr/commit/4bec9e556f8618bc00ea3cda685e3e91aeba82c3))
* enforce https:// prefix in mediaflow proxy url and support config without scheme to work aroud elfhosted weirdness ([da7397f](https://github.com/webstreamr/webstreamr/commit/da7397fe75d434aa8a76e1f6ea2443bd631a4ace))
### Features
* add RgShows ([dcad7db](https://github.com/webstreamr/webstreamr/commit/dcad7db29c272dcb35504cc38d365a929906bf9c))
## [0.60.0](https://github.com/webstreamr/webstreamr/compare/v0.59.1...v0.60.0) (2026-01-06)
### Miscellaneous Chores
* **fetcher:** disable TLS verification ([281fe00](https://github.com/webstreamr/webstreamr/commit/281fe00a351fc7aa25596e4b1f6b6272247feeb8))
### Features
* **extractor:** switch KinoGer from cf to source, add kinoger.p2pplay.pro support ([f6f71b0](https://github.com/webstreamr/webstreamr/commit/f6f71b043bc51b1b22316c53c916bf24ab745f95))
## [0.59.1](https://github.com/webstreamr/webstreamr/compare/v0.59.0...v0.59.1) (2026-01-06)
### Bug Fixes
* **source:** adapt MegaKino domain ([04f3fc4](https://github.com/webstreamr/webstreamr/commit/04f3fc42e06f4a69804bb0c080922615843af31f))
## [0.59.0](https://github.com/webstreamr/webstreamr/compare/v0.58.12...v0.59.0) (2026-01-06)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#615](https://github.com/webstreamr/webstreamr/issues/615)) ([8d1991e](https://github.com/webstreamr/webstreamr/commit/8d1991ed84f566585ec528345bee1548b4916c35))
* **deps:** update dependency typescript-eslint to v8.52.0 ([#616](https://github.com/webstreamr/webstreamr/issues/616)) ([430e5b7](https://github.com/webstreamr/webstreamr/commit/430e5b7fce20925814227a7effbe55a5eb6bb2eb))
* **extractor:** add crystaltreatmenteast.com to VOE ([bfe8c36](https://github.com/webstreamr/webstreamr/commit/bfe8c36e874c9f246852d17fcedf83eb5e4d481f))
* **source:** do not filter out any KinoGer links ([41bc53b](https://github.com/webstreamr/webstreamr/commit/41bc53b9da4f4882b415b055d99f0ef31c5a907a))
### Features
* **extractor:** bring back Fsst ([e1e8f37](https://github.com/webstreamr/webstreamr/commit/e1e8f37862874f3e178b4e4dbd2f44bfcc47a0ab))
### Bug Fixes
* **extractor:** handle FileLions deleted by administration ([c075fe9](https://github.com/webstreamr/webstreamr/commit/c075fe9481f21e2f3f5715227b4b939c3de11d0b))
* **source:** handle MegaKino relative page links ([7146c6c](https://github.com/webstreamr/webstreamr/commit/7146c6cf11fa0d7ad12596987eeff176daf97697))
## [0.58.12](https://github.com/webstreamr/webstreamr/compare/v0.58.11...v0.58.12) (2026-01-02)
### Miscellaneous Chores
* **source:** add 4KHDHub test for stranger things s05e08 ([93a098e](https://github.com/webstreamr/webstreamr/commit/93a098e438438efe3d22b4439378f9de6fc0e577))
* **source:** determine latest 4KHDHub domain more dynamically ([f8f62db](https://github.com/webstreamr/webstreamr/commit/f8f62db174eaa4acc8dbce1ff9f44a0318e99a7a))
* **source:** update 4KHDHub TLD and re-generate fixtures ([1f4d7c7](https://github.com/webstreamr/webstreamr/commit/1f4d7c752d08f9952af3f0c8a87a66b64ddb2c1d))
### Bug Fixes
* run `npm audit fix` to fix security issues ([9b3c7c7](https://github.com/webstreamr/webstreamr/commit/9b3c7c76cf2eb77e9df895408b65f316c71f9406))
## [0.58.11](https://github.com/webstreamr/webstreamr/compare/v0.58.10...v0.58.11) (2026-01-01)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#606](https://github.com/webstreamr/webstreamr/issues/606)) ([9079fee](https://github.com/webstreamr/webstreamr/commit/9079feebbdaaec181915bca174034a46c9f62ab0))
* **deps:** update dependency axios-cache-interceptor to v1.11.1 ([#605](https://github.com/webstreamr/webstreamr/issues/605)) ([a7d9359](https://github.com/webstreamr/webstreamr/commit/a7d93590c6c0d9e2a51cb08b5d6d9ddae64d0bec))
* **deps:** update dependency axios-cache-interceptor to v1.11.2 ([#607](https://github.com/webstreamr/webstreamr/issues/607)) ([30c6026](https://github.com/webstreamr/webstreamr/commit/30c60261af9406bd202733c3d58455949d1d557e))
* **deps:** update dependency typescript-eslint to v8.50.1 ([#599](https://github.com/webstreamr/webstreamr/issues/599)) ([d20c568](https://github.com/webstreamr/webstreamr/commit/d20c568e858ead5eac5b2ed4bd7b5e8838ccc9a2))
* **deps:** update dependency typescript-eslint to v8.51.0 ([#608](https://github.com/webstreamr/webstreamr/issues/608)) ([f8b63f4](https://github.com/webstreamr/webstreamr/commit/f8b63f4cceade84592c43fbd6644a3fb291eae49))
### Bug Fixes
* **extractor:** add new FileLions domain ([c8e38d7](https://github.com/webstreamr/webstreamr/commit/c8e38d73fff2ad0ca9205bc1c6770d3c102c3416))
* **extractor:** deal better with cases where video ID URLs end with a slash ([9f5ac02](https://github.com/webstreamr/webstreamr/commit/9f5ac02ec60b66fd08cd37fa33b723939faae4e5))
* **extractor:** use last FileMoon iframe url matcher ([135d90a](https://github.com/webstreamr/webstreamr/commit/135d90a2334e9598d5cc93d1973db417ef97c253))
* **fetcher:** increase queue limits 5 times ([e7b1e2a](https://github.com/webstreamr/webstreamr/commit/e7b1e2a4fcc9fae0b729118f274fc6fcc481ed4d))
* **test:** improve stability of MegaKino test by dirty mocking getFinalRedirectUrl ([6f24b79](https://github.com/webstreamr/webstreamr/commit/6f24b7928deed81b7891885a85dce031e4693a5a))
## [0.58.10](https://github.com/webstreamr/webstreamr/compare/v0.58.9...v0.58.10) (2025-12-22)
### Miscellaneous Chores
* **deps:** lock file maintenance ([#580](https://github.com/webstreamr/webstreamr/issues/580)) ([0164995](https://github.com/webstreamr/webstreamr/commit/01649955b1f66c4b2093972c7d8c2e3a09cfd1af))
* **deps:** lock file maintenance ([#595](https://github.com/webstreamr/webstreamr/issues/595)) ([36a15f0](https://github.com/webstreamr/webstreamr/commit/36a15f0091343165751ca3e9ecbe7d7709fdc39f))
* **deps:** replace dependency @tsconfig/node22 with @tsconfig/node24 ([#581](https://github.com/webstreamr/webstreamr/issues/581)) ([9fd5634](https://github.com/webstreamr/webstreamr/commit/9fd563450ebf56c741146b488e2f16673d66a85c))
* **deps:** update dependency @types/node to v24.10.4 ([#579](https://github.com/webstreamr/webstreamr/issues/579)) ([5d412b7](https://github.com/webstreamr/webstreamr/commit/5d412b759f7e3e3233fd5c6423418bfd3ea4d028))
* **deps:** update dependency axios-cache-interceptor to v1.10.0 ([#592](https://github.com/webstreamr/webstreamr/issues/592)) ([58bd625](https://github.com/webstreamr/webstreamr/commit/58bd6250c9636ee99ece3930a792515a5a2e9d5e))
* **deps:** update dependency axios-cache-interceptor to v1.9.1 ([#584](https://github.com/webstreamr/webstreamr/issues/584)) ([fa6bee4](https://github.com/webstreamr/webstreamr/commit/fa6bee4c834eae612019ced0081aed320fbf80f4))
* **deps:** update dependency cacheable to v2.3.1 ([#587](https://github.com/webstreamr/webstreamr/issues/587)) ([10081a2](https://github.com/webstreamr/webstreamr/commit/10081a2276e9808f0a376c8084231ab929de3eda))
* **deps:** update dependency typescript-eslint to v8.50.0 ([#583](https://github.com/webstreamr/webstreamr/issues/583)) ([40f9f9e](https://github.com/webstreamr/webstreamr/commit/40f9f9ec8c1f6f96429d86960c9973150a8d116d))
* **deps:** update eslint monorepo to v9.39.2 ([#574](https://github.com/webstreamr/webstreamr/issues/574)) ([4f7a9d7](https://github.com/webstreamr/webstreamr/commit/4f7a9d725e69be926b3142453590a314913e83c5))
* **source:** useless debug log ([7264fd2](https://github.com/webstreamr/webstreamr/commit/7264fd2ed4c3d2f05b8a330ef39e246d97bba039))
### Bug Fixes
* **extractor:** update FileLion domains, remove kinoger.be ([6cc24c0](https://github.com/webstreamr/webstreamr/commit/6cc24c0332b6a34276de1bfd9d53053541639163))
* return 400 for invalid ID instead of raising Error ([0610b85](https://github.com/webstreamr/webstreamr/commit/0610b8556ae3190b291dd040eff831d5e3e90878))
* **source:** determine Frembed domain dynamically ([924265b](https://github.com/webstreamr/webstreamr/commit/924265b9640385b33e3a7a8dfb61b4993442e52f))
* use "Mozilla" instead of "Mozilla/5.0" as default user agent ([ddf4f22](https://github.com/webstreamr/webstreamr/commit/ddf4f227b3350b87a91be6f2c063a993bf90f746))
## [0.58.9](https://github.com/webstreamr/webstreamr/compare/v0.58.8...v0.58.9) (2025-12-12)

View file

@ -1,15 +1,28 @@
# 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 License](https://img.shields.io/github/license/webstreamr/webstreamr)
[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
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](https://github.com/mhdzumair/mediaflow-proxy/) can be added when configuration the add-on to gain access to a couple of more file hosters.
@ -51,6 +64,7 @@ You can run the latest WebStreamr via Docker. E.g.
--pull always \
--publish 51546:51546 \
--env TMDB_ACCESS_TOKEN="YOUR_TOKEN" \
--volume /tmp:/tmp \
webstreamr/webstreamr
```
@ -72,6 +86,11 @@ Optional. Comma separated list of extractors which should be disabled. E.g. `doo
Optional. Comma separated list of sources which should be disabled. E.g. `frembed,vidsrc`
#### `FLARESOLVERR_ENDPOINT`
Optional. If domains show Cloudflare challenges, FlareSolverr can be used to work around them. E.g. `http://flaresolverr:8191`
Proxy configuration is passed-through and only a single session is used to save resources. Byparr is not supported.
#### `MANIFEST_ID`
Optional. Add-on manifest ID. Default: `webstreamr`

View file

@ -1,4 +1,6 @@
process.env['CACHE_DIR'] = '/dev/null';
process.env['HOST'] = 'example.test';
process.env['PROTOCOL'] = 'https';
if (!process.env['TMDB_ACCESS_TOKEN']) {
process.env['TMDB_ACCESS_TOKEN'] = 'some access token';

2689
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
{
"name": "webstreamr",
"description": "Provides HTTP URLs from streaming websites.",
"version": "0.58.9",
"version": "0.69.1",
"type": "commonjs",
"scripts": {
"analyse": "tsc --noEmit --project ./tsconfig.dev.json",
@ -51,7 +51,9 @@
"cacheable": "^2.0.0",
"cheerio": "^1.0.0",
"express": "^5.1.0",
"express-rate-limit": "^8.2.1",
"fast-levenshtein": "^3.0.0",
"glob": "^13.0.0",
"http-proxy-agent": "^7.0.2",
"https-proxy-agent": "^7.0.6",
"memoizee": "^0.4.17",
@ -60,6 +62,7 @@
"rot13-cipher": "^1.0.0",
"slugify": "^1.6.6",
"socks-proxy-agent": "^8.0.5",
"sqlite3": "^5.1.7",
"tough-cookie": "^6.0.0",
"unpacker": "^1.0.1",
"winston": "^3.17.0"
@ -67,7 +70,7 @@
"devDependencies": {
"@eslint/js": "^9.26.0",
"@stylistic/eslint-plugin": "^5.0.0",
"@tsconfig/node22": "^22.0.2",
"@tsconfig/node24": "^24.0.0",
"@types/bytes": "^3.1.5",
"@types/express": "^5.0.1",
"@types/fast-levenshtein": "^0.0.4",

View file

@ -22,7 +22,7 @@ export class ConfigureController {
}
private getConfigure(req: Request, res: Response) {
const config: Config = JSON.parse(req.params['config'] || JSON.stringify(getDefaultConfig()));
const config: Config = JSON.parse(req.params['config'] as string || JSON.stringify(getDefaultConfig()));
// Convenience preset for ElfHosted WebStreamr bundle including Media Flow Proxy
if (!req.params['config'] && isElfHostedInstance(req)) {

View file

@ -0,0 +1,53 @@
import { Mutex } from 'async-mutex';
import { Request, Response, Router } from 'express';
import winston from 'winston';
import { ExtractorRegistry } from '../extractor';
import { contextFromRequestAndResponse, Fetcher } from '../utils';
export class ExtractController {
public readonly router: Router;
private readonly logger: winston.Logger;
private readonly extractorRegistry: ExtractorRegistry;
private readonly locks = new Map<string, Mutex>();
public constructor(logger: winston.Logger, _fetcher: Fetcher, extractorRegistry: ExtractorRegistry) {
this.router = Router();
this.logger = logger;
this.extractorRegistry = extractorRegistry;
this.router.get('/extract', this.extract.bind(this));
}
private async extract(req: Request, res: Response) {
if (req.method !== 'GET') {
res.status(405).send('Method Not Allowed');
return;
}
const ctx = contextFromRequestAndResponse(req, res);
const index = parseInt(req.query['index'] as string);
const url = new URL(req.query['url'] as string);
this.logger.info(`Lazy extract index ${index} of URL ${url} for ip ${ctx.ip}`, ctx);
let mutex = this.locks.get(url.href);
if (!mutex) {
mutex = new Mutex();
this.locks.set(url.href, mutex);
}
await mutex.runExclusive(async () => {
const urlResults = await this.extractorRegistry.handle(ctx, url);
res.redirect(urlResults[index]?.url.href as string);
});
if (!mutex.isLocked()) {
this.locks.delete(url.href);
}
};
}

View file

@ -21,7 +21,7 @@ export class ManifestController {
}
private getManifest(req: Request, res: Response) {
const config: Config = JSON.parse(req.params['config'] || JSON.stringify(getDefaultConfig()));
const config: Config = JSON.parse(req.params['config'] as string || JSON.stringify(getDefaultConfig()));
const manifest = buildManifest(this.sources, this.extractors, config);

View file

@ -27,7 +27,7 @@ export class StreamController {
private async getStream(req: Request, res: Response) {
const type: ContentType = (req.params['type'] || '') as ContentType;
const rawId: string = req.params['id'] || '';
const rawId: string = req.params['id'] as string || '';
let id: Id;
if (rawId.startsWith('tmdb:')) {
@ -35,7 +35,9 @@ export class StreamController {
} else if (rawId.startsWith('tt')) {
id = ImdbId.fromString(rawId);
} else {
throw new Error(`Unsupported ID: ${rawId}`);
res.status(400).send(`Unsupported ID: ${rawId}`);
return;
}
const ctx = contextFromRequestAndResponse(req, res);
@ -54,7 +56,7 @@ export class StreamController {
const { streams, ttl } = await this.streamResolver.resolve(ctx, sources, type, id);
if (ttl && envIsProd()) {
res.setHeader('Cache-Control', `max-age=${Math.floor(ttl / 1000)}, public`);
res.setHeader('Cache-Control', `public, max-age=${Math.floor(ttl / 1000)}, immutable`);
}
res.setHeader('Content-Type', 'application/json');

View file

@ -1,3 +1,4 @@
export * from './ExtractController';
export * from './ConfigureController';
export * from './ManifestController';
export * from './StreamController';

View file

@ -7,25 +7,17 @@ import { ExtractorRegistry } from './ExtractorRegistry';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new DoodStream(new FetcherMock(`${__dirname}/__fixtures__/DoodStream`))]);
const ctx = createTestContext();
const ctx = createTestContext({ mediaFlowProxyUrl: 'https://mediaflow.test.org', mediaFlowProxyPassword: 'test' });
describe('DoodStream', () => {
test('dood.to', async () => {
expect(await extractorRegistry.handle(ctx, new URL('http://dood.to/e/sk1m9eumzyjj'))).toMatchSnapshot();
});
test('missing pass_md5 -> not found', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://dood.to/e/gy8l8mb2i311'))).toMatchSnapshot();
});
test('can guess height from title', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://do7go.com/e/dfx8me4un4ul'))).toMatchSnapshot();
});
test('cloudflare storage', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://doodstream.com/e/wfpwtsgyr1xi'))).toMatchSnapshot();
});
test('not found', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://myvidplay.com/e/cz7cus0bvlzr'))).toMatchSnapshot();
});

View file

@ -1,8 +1,8 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import randomstring from 'randomstring';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor';
export class DoodStream extends Extractor {
@ -12,18 +12,20 @@ export class DoodStream extends Extractor {
public override readonly ttl: number = 21600000; // 6h
public override viaMediaFlowProxy = true;
/** @see https://github.com/Gujal00/ResolveURL/blob/master/script.module.resolveurl/lib/resolveurl/plugins/doodstream.py */
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/dood|do[0-9]go|doood|dooood|ds2play|ds2video|dsvplay|d0o0d|do0od|d0000d|d000d|myvidplay|vidply|all3do|doply|vide0|vvide0|d-s/);
public supports(ctx: Context, url: URL): boolean {
return null !== url.host.match(/dood|do[0-9]go|doood|dooood|ds2play|ds2video|dsvplay|d0o0d|do0od|d0000d|d000d|myvidplay|vidply|all3do|doply|vide0|vvide0|d-s/) && supportsMediaFlowProxy(ctx);
};
public override normalize(url: URL): URL {
const videoId = url.pathname.split('/').at(-1) as string;
const videoId = url.pathname.replace(/\/+$/, '').split('/').at(-1) as string;
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 html = await this.fetcher.text(ctx, url, { headers });
@ -32,38 +34,21 @@ export class DoodStream extends Extractor {
throw new NotFoundError();
}
const passMd5Match = html.match(/\/pass_md5\/[\w-]+\/([\w-]+)/) as string[];
const token = passMd5Match[1] as string;
const baseUrl = await this.fetcher.text(ctx, new URL(passMd5Match[0] as string, url.origin), { headers: { Referer: url.href } });
const $ = cheerio.load(html);
const title = $('title').text().trim().replace(/ - DoodStream$/, '').trim();
const downloadHtml = await this.fetcher.text(ctx, new URL(url.href.replace('/e/', '/d/')));
const sizeMatch = downloadHtml.match(/([\d.]+ ?[GM]B)/);
let mp4Url: URL;
if (baseUrl.includes('cloudflarestorage')) {
mp4Url = new URL(baseUrl);
} else {
mp4Url = new URL(`${baseUrl}${randomstring.generate(10)}?token=${token}&expiry=${Date.now()}`);
}
return [
{
url: mp4Url,
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Doodstream', url, headers),
format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,
...(sizeMatch && { bytes: bytes.parse(sizeMatch[1] as string) as number }),
},
requestHeaders: {
Referer: url.origin,
},
},
];
};

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Dropload extends Extractor {
public override readonly ttl: number = 10800000; // 3h
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-', '/'));
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 html = await this.fetcher.text(ctx, url, { headers });
@ -28,11 +28,12 @@ export class Dropload extends Extractor {
}
const playlistUrl = extractUrlFromPacked(html, [/sources:\[{file:"(.*?)"/]);
const playlistHeaders = { Referer: 'https://dr0pstream.com/' };
const heightMatch = html.match(/\d{3,}x(\d{3,}),/);
const height = heightMatch
? parseInt(heightMatch[1] as string)
: await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, url);
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders });
const sizeMatch = html.match(/([\d.]+ ?[GM]B)/);
const size = sizeMatch ? bytes.parse(sizeMatch[1] as string) as number : undefined;
@ -44,14 +45,13 @@ export class Dropload extends Extractor {
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,
...(size && { bytes: size }),
...(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 { Extractor } from './Extractor';
@ -13,14 +13,13 @@ export class ExternalUrl extends Extractor {
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 [
{
url: url,
format: Format.unknown,
isExternal: true,
label: `${url.host}`,
ttl: this.ttl,
meta,
},
];

View file

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

View file

@ -49,6 +49,11 @@ describe('ExtractorRegistry', () => {
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 () => {
const stats = extractorRegistry.stats();

View file

@ -1,23 +1,31 @@
// eslint-disable-next-line import/no-named-as-default
import KeyvSqlite from '@keyv/sqlite';
import { Cacheable, CacheableMemory, Keyv } from 'cacheable';
import winston from 'winston';
import { Context, Meta, UrlResult } from '../types';
import { getCacheDir, isExtractorDisabled } from '../utils';
import { Context, Format, Meta, UrlResult } from '../types';
import { createKeyvSqlite, envGet, isExtractorDisabled } from '../utils';
import { Extractor } from './Extractor';
export class ExtractorRegistry {
private readonly logger: winston.Logger;
private readonly extractors: Extractor[];
private readonly urlResultCache: Cacheable;
private readonly lazyUrlResultCache: Cacheable;
public constructor(logger: winston.Logger, extractors: Extractor[]) {
this.logger = logger;
this.extractors = extractors;
this.urlResultCache = new Cacheable({
nonBlocking: true,
primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }),
secondary: new Keyv(new KeyvSqlite(`sqlite://${getCacheDir()}/webstreamr-extractor-cache.sqlite`)),
secondary: createKeyvSqlite('extractor-cache'),
stats: true,
});
this.lazyUrlResultCache = new Cacheable({
nonBlocking: true,
primary: new Keyv({ store: new CacheableMemory({ lruSize: 1024 }) }),
secondary: createKeyvSqlite('extractor-lazy-cache'),
stats: true,
});
}
@ -25,55 +33,80 @@ export class ExtractorRegistry {
public stats() {
return {
urlResultCache: this.urlResultCache.stats,
lazyUrlResultCache: this.lazyUrlResultCache.stats,
};
};
public async handle(ctx: Context, url: URL, meta?: Meta): Promise<UrlResult[]> {
public async handle(ctx: Context, url: URL, meta?: Meta, allowLazy?: boolean): Promise<UrlResult[]> {
const extractor = this.extractors.find(extractor => !isExtractorDisabled(ctx.config, extractor) && extractor.supports(ctx, url));
if (!extractor) {
return [];
}
const normalizedUrl = extractor.normalize(url);
const cacheKey = extractor.viaMediaFlowProxy
? `${extractor.id}_${normalizedUrl}_${ctx.config.mediaFlowProxyUrl}`
: `${extractor.id}_${normalizedUrl}`;
const cacheKey = this.determineCacheKey(ctx, extractor, normalizedUrl);
const storedDataRaw = await this.urlResultCache.getRaw<UrlResult[]>(cacheKey);
const expires = storedDataRaw?.expires;
if (storedDataRaw && expires) {
// Ignore the cache randomly after at least 2/3 of the TTL passed to start refreshing results slowly
const refreshTimestamp = this.randomInteger(expires - extractor.ttl * (2 / 3), expires);
const now = Date.now();
const ttl = expires - Date.now();
/* istanbul ignore if */
if (refreshTimestamp > now) {
return (storedDataRaw.value as UrlResult[]).map(urlResult => ({ ...urlResult, ttl: expires - now, url: new URL(urlResult.url) }));
if (ttl > 0) {
return (storedDataRaw.value as UrlResult[]).map(urlResult => ({ ...urlResult, ttl, url: new URL(urlResult.url) }));
}
}
const lazyUrlResults = await this.lazyUrlResultCache.get<UrlResult[]>(normalizedUrl.href) ?? [];
/* istanbul ignore next */
if (
lazyUrlResults.length && allowLazy && !extractor.viaMediaFlowProxy
&& lazyUrlResults.every(urlResult => urlResult.format !== Format.hls) // related to Android issues, e.g. https://github.com/Stremio/stremio-bugs/issues/1574 or https://github.com/Stremio/stremio-bugs/issues/1579
) {
// generate lazy extract urls
return lazyUrlResults.map((urlResult, index) => {
const extractUrl = new URL(`${envGet('PROTOCOL')}:${envGet('HOST')}/extract/`);
extractUrl.searchParams.set('index', `${index}`);
extractUrl.searchParams.set('url', url.href);
return { ...urlResult, url: extractUrl };
});
}
this.logger.info(`Extract ${url} using ${extractor.id} extractor`, ctx);
const urlResults = await extractor.extract(
ctx,
normalizedUrl,
{
...meta,
countryCodes: meta?.countryCodes ?? [],
extractorId: meta?.extractorId ?? extractor.id,
},
);
const mergedMeta: Meta = { ...meta, ...lazyUrlResults[0]?.meta };
const urlResults = await extractor.extract(ctx, normalizedUrl, { extractorId: extractor.id, ...mergedMeta });
if (!urlResults.length) {
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, 43200000); // 12h
} else if (!urlResults.some(urlResult => urlResult.error) && extractor.ttl) {
await this.urlResultCache.set<UrlResult[]>(cacheKey, urlResults, extractor.ttl);
if (!Object.keys(mergedMeta).length || urlResults.some(urlResult => urlResult.error)) {
await this.urlResultCache.delete(cacheKey);
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;
};
private randomInteger(min: number, max: number) {
return Math.floor(Math.random() * (max - min + 1)) + min;
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 { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Fastream extends Extractor {
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 downloadUrl = new URL(url.href.replace('/embed-', '/d/'));
@ -38,8 +38,6 @@ export class Fastream extends Extractor {
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
bytes: bytes.parse(heightAndSizeMatch[2] as string) as number,

View file

@ -21,4 +21,8 @@ describe('FileLions', () => {
test('file not found', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://filelions.to/v/ylcp2cu5qanb'))).toMatchSnapshot();
});
test('deleted by administration', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://callistanise.com/f/cy4t5nkerjrt'))).toMatchSnapshot();
});
});

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
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 { Extractor } from './Extractor';
@ -22,17 +22,19 @@ export class FileLions extends Extractor {
'anime7u.com',
'azipcdn.com',
'bingezove.com',
'callistanise.com',
'coolciima.online',
'dhtpre.com',
'dingtezuni.com',
'dintezuvio.com',
'e4xb5c2xnz.sbs',
'egsyxutd.sbs',
'fdewsdc.sbs',
'gsfomqu.sbs',
'javplaya.com',
'katomen.online',
'kinoger.be',
'lumiawatch.top',
'minochinos.com',
'mivalyo.com',
'moflix-stream.click',
'motvy55.store',
@ -60,7 +62,7 @@ export class FileLions extends Extractor {
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 html = await this.fetcher.text(ctx, url, { headers });
@ -69,7 +71,7 @@ export class FileLions extends Extractor {
return await this.extractInternal(ctx, new URL(url.href.replace('/f/', '/v/')), meta);
}
if (/File Not Found/.test(html)) {
if (/File Not Found|deleted by administration/.test(html)) {
throw new NotFoundError();
}
@ -85,8 +87,6 @@ export class FileLions extends Extractor {
{
url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileLions', url, headers),
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: parseInt(heightMatch[1] as string),

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import {
buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy,
@ -45,7 +45,7 @@ export class FileMoon extends Extractor {
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 html = await this.fetcher.text(ctx, url, { headers });
@ -57,9 +57,10 @@ export class FileMoon extends Extractor {
const $ = cheerio.load(html);
const title = $('h3').text().trim();
const iframeUrlMatch = html.match(/iframe.*?src=["'](.*?)["']/);
if (iframeUrlMatch && iframeUrlMatch[1]) {
return await this.extractInternal(ctx, new URL(iframeUrlMatch[1]), { title, ...meta }, url);
const iframeUrlMatches = Array.from(html.matchAll(/iframe.*?src=["'](.*?)["']/g));
if (iframeUrlMatches.length) {
// Use last match because there can be fake adblock catcher urls before
return await this.extractInternal(ctx, new URL((iframeUrlMatches[iframeUrlMatches.length - 1] as RegExpExecArray)[1] as string), { title, ...meta }, url);
}
const playlistUrl = await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'FileMoon', originalUrl as URL, headers);
@ -71,8 +72,6 @@ export class FileMoon extends Extractor {
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
...(heightMatch && { height: parseInt(heightMatch[1] as string) }),

View file

@ -0,0 +1,16 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { Fsst } from './Fsst';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new Fsst(new FetcherMock(`${__dirname}/__fixtures__/Fsst`))]);
const ctx = createTestContext();
describe('Fsst', () => {
test('Wake up Dead Man', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://fsst.online/embed/948429/'))).toMatchSnapshot();
});
});

41
src/extractor/Fsst.ts Normal file
View file

@ -0,0 +1,41 @@
import * as cheerio from 'cheerio';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor';
export class Fsst extends Extractor {
public readonly id = 'fsst';
public readonly label = 'Fsst';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/fsst/);
};
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<InternalUrlResult[]> {
const headers = { Referer: meta.referer ?? url.href };
const html = await this.fetcher.text(ctx, url, { headers, noProxyHeaders: true });
const $ = cheerio.load(html);
const title = $('title').text().trim();
const filesMatch = html.match(/file:"(.*)"/) as string[];
const lastFile = (filesMatch[1] as string).split(',').pop() as string;
const heightAndUrlMatch = lastFile.match(/\[?([\d]*)p?]?(.*)/) as string[];
const fileHref = heightAndUrlMatch[2] as string;
return [{
url: await this.fetcher.getFinalRedirectUrl(ctx, new URL(fileHref), { headers, noProxyHeaders: true }, 1),
format: Format.mp4,
meta: {
...meta,
height: parseInt(heightAndUrlMatch[1] as string),
title,
},
}];
};
}

View file

@ -21,4 +21,8 @@ describe('HubCloud', () => {
test('handle dark 2017 s03e08', async () => {
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 * 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';
export class HubCloud extends Extractor {
@ -8,13 +9,15 @@ export class HubCloud extends Extractor {
public readonly label = 'HubCloud';
public override readonly ttl: number = 259200000; // 3d
public override readonly ttl: number = 43200000; // 12h
public override readonly cacheVersion = 1;
public supports(_ctx: Context, url: URL): boolean {
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 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 $ = 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([
...$('a')
.filter((_i, el) => {
@ -36,30 +43,58 @@ export class HubCloud extends Extractor {
url,
format: Format.unknown,
label: `${this.label} (FSL)`,
ttl: this.ttl,
meta: {
...meta,
bytes: bytes.parse($('#size').text()) as number,
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(),
...$('a')
.filter((_i, el) => $(el).text().includes('PixelServer'))
.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 {
url,
format: Format.unknown,
label: `${this.label} (PixelServer)`,
ttl: this.ttl,
meta: {
...meta,
bytes: bytes.parse($('#size').text()) as number,
extractorId: `${this.id}_pixelserver`,
title: $('title').text().trim(),
countryCodes,
height,
title,
},
requestHeaders: { Referer: userUrl.href },
};
}).toArray(),
]);

View file

@ -0,0 +1,29 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { HubCloud } from './HubCloud';
import { HubDrive } from './HubDrive';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(
logger,
[
new HubDrive(
new FetcherMock(`${__dirname}/__fixtures__/HubDrive`),
new HubCloud(new FetcherMock(`${__dirname}/__fixtures__/HubDrive/HubCloud`)),
),
],
);
const ctx = createTestContext();
describe('HubDrive', () => {
test('handle avatar', async () => {
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();
});
});

40
src/extractor/HubDrive.ts Normal file
View file

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

View file

@ -21,4 +21,8 @@ describe('KinoGer', () => {
test('filma365.strp2p.site', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://filma365.strp2p.site/#vih6bx'))).toMatchSnapshot();
});
test('kinoger.p2pplay.pro', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://kinoger.p2pplay.pro/#k53k9'))).toMatchSnapshot();
});
});

View file

@ -1,5 +1,5 @@
import crypto from 'crypto';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
@ -20,6 +20,7 @@ export class KinoGer extends Extractor {
'filma365.strp2p.site',
'flimmer.rpmvip.com',
'flixfilmesonline.strp2p.site',
'kinoger.p2pplay.pro',
'kinoger.re',
'moflix.rpmplay.xyz',
'moflix.upns.xyz',
@ -42,7 +43,7 @@ export class KinoGer extends Extractor {
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 = {
'Origin': url.origin,
'Referer': url.origin + '/',
@ -57,24 +58,20 @@ export class KinoGer extends Extractor {
const decipher = crypto.createDecipheriv('aes-128-cbc', key, iv);
const decrypted = Buffer.concat([decipher.update(encrypted), decipher.final()]).toString();
const { cf, title } = JSON.parse(decrypted) as { cf: string; title: string };
const { source, title } = JSON.parse(decrypted) as { source: string; title: string };
const m3u8Url = new URL(cf);
const m3u8Url = new URL(source);
return [
{
url: m3u8Url,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, url, { headers: { Referer: url.href } }),
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),
title,
},
requestHeaders: {
Referer: url.origin,
},
requestHeaders: headers,
},
];
};

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import {
buildMediaFlowProxyExtractorStreamUrl,
supportsMediaFlowProxy,
@ -29,12 +29,12 @@ export class LuluStream extends Extractor {
}
public override normalize(url: URL): URL {
const videoId = url.pathname.split('/').at(-1) as string;
const videoId = url.pathname.replace(/\/+$/, '').split('/').at(-1) as string;
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 fileUrl = new URL(url.href.replace('/e/', '/d/'));
@ -55,8 +55,6 @@ export class LuluStream extends Extractor {
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor';
@ -13,12 +13,12 @@ export class Mixdrop extends Extractor {
public override viaMediaFlowProxy = true;
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/'));
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 html = await this.fetcher.text(ctx, fileUrl);
@ -35,8 +35,6 @@ export class Mixdrop extends Extractor {
{
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url),
format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
bytes: bytes.parse((sizeMatch[1] as string).replace(',', '')) as number,

View file

@ -0,0 +1,24 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { RgShows } from './RgShows';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new RgShows(new FetcherMock(`${__dirname}/__fixtures__/RgShows`))]);
const ctx = createTestContext();
describe('RgShows', () => {
test('handle one battle after another', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://api.rgshows.ru/main/movie/1054867'))).toMatchSnapshot();
});
test('handle stranger things s05e01', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://api.rgshows.ru/main/tv/66732/5/1'))).toMatchSnapshot();
});
test('handle parasite 2019 (mp4)', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://api.rgshows.ru/main/movie/496243'))).toMatchSnapshot();
});
});

49
src/extractor/RgShows.ts Normal file
View file

@ -0,0 +1,49 @@
import { BlockedError } from '../error';
import { BlockedReason, Context, Format, InternalUrlResult, Meta } from '../types';
import { guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
interface RgShowsApiData {
stream: {
url: string;
};
}
export class RgShows extends Extractor {
public readonly id = 'rgshows';
public readonly label = 'RgShows';
public override readonly ttl: number = 10800000; // 3h
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/rgshows/);
}
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 data = await this.fetcher.json(ctx, url, { headers }) as RgShowsApiData;
const streamUrl = new URL(data.stream.url);
/* istanbul ignore if */
if (streamUrl.host.includes('vidzee')) {
throw new BlockedError(url, BlockedReason.unknown, {});
}
const isMp4 = streamUrl.href.includes('mp4');
const isHls = streamUrl.href.includes('m3u8') || streamUrl.href.includes('txt');
return [
{
url: streamUrl,
format: isMp4 ? Format.mp4 : (isHls ? Format.hls : /* istanbul ignore next */ Format.unknown),
meta: {
...meta,
...(isHls && { height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, streamUrl, { headers }) }),
},
requestHeaders: headers,
},
];
};
}

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor';
export class SaveFiles extends Extractor {
@ -18,7 +18,7 @@ export class SaveFiles extends Extractor {
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 html = await this.fetcher.text(ctx, url, { headers });
@ -37,8 +37,6 @@ export class SaveFiles extends Extractor {
{
url: new URL(fileMatch[1] as string),
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,

View file

@ -1,5 +1,5 @@
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { Extractor } from './Extractor';
export class StreamEmbed extends Extractor {
@ -7,11 +7,13 @@ export class StreamEmbed extends Extractor {
public readonly label = 'StreamEmbed';
public override readonly ttl: number = 259200000; // 3d
public supports(_ctx: Context, url: URL): boolean {
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 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),
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: parseInt(JSON.parse(video.quality)[0]),

View file

@ -1,10 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { Context, Format, Meta, UrlResult } from '../types';
import {
buildMediaFlowProxyExtractorRedirectUrl,
supportsMediaFlowProxy,
} from '../utils';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor';
export class Streamtape extends Extractor {
@ -45,7 +42,7 @@ export class Streamtape extends Extractor {
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 };
// 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),
format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { extractUrlFromPacked, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
@ -20,7 +20,7 @@ export class SuperVideo extends Extractor {
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 html = await this.fetcher.text(ctx, url, { headers });
@ -33,29 +33,29 @@ export class SuperVideo extends Extractor {
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 size = heightAndSizeMatch ? bytes.parse(heightAndSizeMatch[2] as string) as number : undefined;
const height = heightAndSizeMatch
? parseInt(heightAndSizeMatch[1] as string)
: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, url, { headers: { Referer: url.href } });
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers: playlistHeaders });
const $ = cheerio.load(html);
const title = $('.download__title').text().trim();
return [
{
url: m3u8Url,
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,
...(size && { bytes: size }),
...(height && { height }),
},
requestHeaders: playlistHeaders,
},
];
};

View file

@ -1,6 +1,6 @@
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
import { Extractor } from './Extractor';
@ -19,7 +19,7 @@ export class Uqload extends Extractor {
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);
if (/File Not Found/.test(html)) {
@ -35,8 +35,6 @@ export class Uqload extends Extractor {
{
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url),
format: Format.mp4,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title,

View file

@ -0,0 +1,20 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { VidSrc } from './VidSrc';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new VidSrc(new FetcherMock(`${__dirname}/__fixtures__/VidSrc`), ['vidsrc-embed.ru'])]);
const ctx = createTestContext();
describe('VidSrc', () => {
test('Full Metal Jacket', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/movie/tt0093058'))).toMatchSnapshot();
});
test('Black Mirror', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/tv/tt2085059/4-2'))).toMatchSnapshot();
});
});

86
src/extractor/VidSrc.ts Normal file
View file

@ -0,0 +1,86 @@
import * as cheerio from 'cheerio';
import { BlockedError, TooManyRequestsError } from '../error';
import { Context, Format, InternalUrlResult, Meta, NonEmptyArray } from '../types';
import { Fetcher, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
export class VidSrc extends Extractor {
public readonly id = 'vidsrc';
public readonly label = 'VidSrc';
public override readonly ttl: number = 10800000; // 3h
private readonly domains: NonEmptyArray<string>;
public constructor(fetcher: Fetcher, domains: NonEmptyArray<string>) {
super(fetcher);
this.domains = domains;
}
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/vidsrc|vsrc/);
}
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
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 };
return this.extractUsingRandomDomain(newCtx, url, meta, [...this.domains]);
};
private async extractUsingRandomDomain(ctx: Context, url: URL, meta: Meta, domains: string[]): Promise<InternalUrlResult[]> {
const domainIndex = Math.floor(Math.random() * domains.length);
const [domain] = domains.splice(domainIndex, 1) as [string];
const newUrl = new URL(url);
newUrl.hostname = domain;
let html: string;
try {
html = await this.fetcher.text(ctx, newUrl, { queueLimit: 1 });
} catch (error) {
/* istanbul ignore next */
if (domains.length && (error instanceof TooManyRequestsError || error instanceof BlockedError)) {
return this.extractUsingRandomDomain(ctx, url, meta, domains);
}
/* istanbul ignore next */
throw error;
}
const $ = cheerio.load(html.replace('<!--', '').replace('-->', '')); // server HTML is commented-out
const iframeUrl = new URL(($('#player_iframe').attr('src') as string).replace(/^\/\//, 'https://'));
const title = $('title').text().trim();
return Promise.all(
$('.server')
.map((_i, el) => ({ serverName: $(el).text(), dataHash: $(el).data('hash') }))
.toArray()
.filter(({ serverName }) => serverName === 'CloudStream Pro')
.map(async ({ serverName, dataHash }) => {
const rcpUrl = new URL(`/rcp/${dataHash}`, iframeUrl.origin);
const iframeHtml = await this.fetcher.text(ctx, rcpUrl, { headers: { Referer: newUrl.origin } });
const srcMatch = iframeHtml.match(`src:\\s?'(.*)'`) as string[];
const playerHtml = await this.fetcher.text(ctx, new URL(srcMatch[1] as string, iframeUrl.origin), { headers: { Referer: rcpUrl.href } });
const fileMatch = playerHtml.match(`(https:\\/\\/.*?{v\\d}.*?) or`) as string[];
const m3u8Url = new URL((fileMatch[1] as string).replace(/{v\d}/, iframeUrl.host));
return {
url: m3u8Url,
format: Format.hls,
label: serverName,
meta: {
...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: iframeUrl.href } }),
title,
},
};
}),
);
}
}

View file

@ -1,5 +1,5 @@
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 { Extractor } from './Extractor';
@ -18,7 +18,7 @@ export class Vidora extends Extractor {
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 $ = cheerio.load(html);
@ -31,11 +31,9 @@ export class Vidora extends Extractor {
{
url: m3u8Url,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, url, { headers }),
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers }),
title,
},
requestHeaders: headers,

View file

@ -7,7 +7,7 @@ import { VixSrc } from './VixSrc';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new VixSrc(new FetcherMock(`${__dirname}/__fixtures__/VixSrc`))]);
const ctx = createTestContext({ de: 'on', en: 'on', it: 'on' });
const ctx = createTestContext();
describe('VixSrc', () => {
test('Full Metal Jacket', async () => {
@ -18,6 +18,10 @@ describe('VixSrc', () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vixsrc.to/tv/42009/4/2'))).toMatchSnapshot();
});
test('Rental Family', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vixsrc.to/movie/1208348'))).toMatchSnapshot();
});
test('Black Mirror is excluded if no matching language was found', async () => {
const ctx = createTestContext({ de: 'on' });

View file

@ -1,9 +1,5 @@
import { Context, CountryCode, Format, Meta, UrlResult } from '../types';
import {
CustomRequestConfig,
guessHeightFromPlaylist, hasMultiEnabled,
iso639FromCountryCode,
} from '../utils';
import { Context, CountryCode, Format, InternalUrlResult, Meta } from '../types';
import { CustomRequestConfig, guessHeightFromPlaylist, hasMultiEnabled, iso639FromCountryCode } from '../utils';
import { Extractor } from './Extractor';
export class VixSrc extends Extractor {
@ -17,7 +13,7 @@ export class VixSrc extends Extractor {
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 html = await this.fetcher.text(ctx, url);
@ -32,7 +28,7 @@ export class VixSrc extends Extractor {
playlistUrl.searchParams.append('expires', expiresMatch[1] as string);
playlistUrl.searchParams.append('h', '1');
const countryCodes = await this.determineCountryCodesFromPlaylist(ctx, playlistUrl, { headers });
const countryCodes = meta.countryCodes ?? [CountryCode.multi, ...(await this.determineCountryCodesFromPlaylist(ctx, playlistUrl, { headers }))];
if (!hasMultiEnabled(ctx.config) && !countryCodes.some(countryCode => countryCode in ctx.config)) {
return [];
@ -42,12 +38,10 @@ export class VixSrc extends Extractor {
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
countryCodes,
height: await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, url, { headers }),
height: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, { headers }),
},
},
];
@ -56,7 +50,7 @@ export class VixSrc extends Extractor {
private async determineCountryCodesFromPlaylist(ctx: Context, playlistUrl: URL, init?: CustomRequestConfig): Promise<CountryCode[]> {
const playlist = await this.fetcher.text(ctx, playlistUrl, init);
const countryCodes: CountryCode[] = [CountryCode.it];
const countryCodes: CountryCode[] = [];
(Object.keys(CountryCode) as CountryCode[]).forEach((countryCode) => {
const iso639 = iso639FromCountryCode(countryCode);

View file

@ -1,7 +1,7 @@
import bytes from 'bytes';
import * as cheerio from 'cheerio';
import { NotFoundError } from '../error';
import { Context, Format, Meta, UrlResult } from '../types';
import { Context, Format, InternalUrlResult, Meta } from '../types';
import {
buildMediaFlowProxyExtractorStreamUrl, guessHeightFromPlaylist,
supportsMediaFlowProxy,
@ -43,6 +43,7 @@ export class Voe extends Extractor {
'cindyeyefinal.com',
'counterclockwisejacky.com',
'crownmakermacaronicism.com',
'crystaltreatmenteast.com',
'cyamidpulverulence530.com',
'diananatureforeign.com',
'donaldlineelse.com',
@ -73,7 +74,9 @@ export class Voe extends Extractor {
'kennethofficialitem.com',
'kinoger.ru',
'kristiesoundsimply.com',
'lancewhosedifficult.com',
'launchreliantcleaverriver.com',
'lauradaydo.com',
'lisatrialidea.com',
'loriwithinfamily.com',
'lukecomparetwo.com',
@ -101,6 +104,7 @@ export class Voe extends Extractor {
'sethniceletter.com',
'shannonpersonalcost.com',
'simpulumlamerop.com',
'smoki.cc',
'stevenimaginelittle.com',
'strawberriesporail.com',
'telyn610zoanthropy.com',
@ -119,10 +123,10 @@ export class Voe extends Extractor {
}
public override normalize(url: URL): URL {
return new URL(`/${url.pathname.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 };
let html: string;
@ -156,14 +160,14 @@ export class Voe extends Extractor {
const playlistUrl = await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'Voe', url, headers);
const heightMatch = html.match(/<b>(\d{3,})p<\/b>/);
const height = heightMatch ? parseInt(heightMatch[1] as string) : await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl, url);
const height = heightMatch
? parseInt(heightMatch[1] as string)
: meta.height ?? await guessHeightFromPlaylist(ctx, this.fetcher, playlistUrl);
return [
{
url: playlistUrl,
format: Format.hls,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
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';
export class YouTube extends Extractor {
@ -12,7 +12,7 @@ export class YouTube extends Extractor {
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 html = await this.fetcher.text(ctx, url, { headers });
@ -24,8 +24,6 @@ export class YouTube extends Extractor {
url,
format: Format.unknown,
ytId: url.searchParams.get('v') as string,
label: this.label,
ttl: this.ttl,
meta: {
...meta,
title: titleMatch[1] as string,

View file

@ -1 +0,0 @@
{"server":"nginx","date":"Sun, 08 Jun 2025 19:20:59 GMT","content-type":"video/mp4","content-length":791702409,"last-modified":"Wed, 03 Apr 2024 09:53:31 GMT","connection":"keep-alive","etag":"660d271b-2f306b89","access-control-allow-origin":"*","accept-ranges":"bytes"}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>

View file

@ -1 +1,2 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script><script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon='{"version":"2024.11.0","token":"1c76230f8ab248eab0b0f2bf7c205c51","server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
</body></html>

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>Video not found | DoodStream</title> <link rel="preconnect" href="//i.doodcdn.io"><link rel="preconnect" href="//cdnjs.cloudflare.com"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script> <link rel="stylesheet" href="//i.doodcdn.io/theme_2/css/bootstrap.min.css"> <link rel="stylesheet" type="text/css" href="//i.doodcdn.io/theme_2/css/style.css" /></head><body> <style type="text/css"> .not_found img {height:250px !important;} @media (max-width: 768px){.not_found h1{font-size:1.8rem;}.not_found img {height:200px !important;margin: 0 auto 15px;}} @media (max-width: 480px){.not_found h1{font-size:1.4rem;}.not_found img {height:120px !important;margin: 0 auto 15px;}.not_found p{margin-top: -5px;}} </style> <div class="container pt-5 not_found"> <div class="row"> <div class="col-md-12 pt-2 text-center"> <img src="//i.doodcdn.io/img/no_video_3.svg"> <h1>Not Found</h1> <p>video you are looking for is not found.</p> </div> </div> </div><script data-cfasync="false" src="//d1f05vr3sjsuy7.cloudfront.net/?srvfd=908056"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/gHzOaAdOhbZ/71405"></script><script data-cfasync="false" async type="text/javascript" src="//faqirsgoliard.top/r67c0fc81985e5/70849"></script><script type="text/javascript" data-cfasync="false">/*<![CDATA[/* */(function(){var g=window,r="ca0967284e67bc53cb5b626985619403",w=[["siteId",317+185*82*507-3600486],["minBid",0],["popundersPerIP","0"],["delayBetween",300],["default","https://strettechoco.com/iYa7dlULceKw/27615"],["defaultPerDay",0],["topmostLayer","never"]],n=["d3d3LmJsb2NrYWRzbm90LmNvbS9iYWphLm1pbi5jc3M=","ZG5oZmk1bm4yZHQ2Ny5jbG91ZGZyb250Lm5ldC9RVHd0eC91YWxnZWJyYS5taW4uanM=","d3d3LmJibHZwbGd1b21hLmNvbS9mYWphLm1pbi5jc3M=","d3d3LndqZ3BzcGt4empiZGd1LmNvbS9NTmlIWS9rYWxnZWJyYS5taW4uanM="],f=-1,v,q,h=function(){clearTimeout(q);f++;if(n[f]&&!(1766620801000<(new Date).getTime()&&1<f)){v=g.document.createElement("script");v.type="text/javascript";v.async=!0;var o=g.document.getElementsByTagName("script")[0];v.src="https://"+atob(n[f]);v.crossOrigin="anonymous";v.onerror=h;v.onload=function(){clearTimeout(q);g[r.slice(0,16)+r.slice(0,16)]||h()};q=setTimeout(h,5E3);o.parentNode.insertBefore(v,o)}};if(!g[r]){try{Object.freeze(g[r]=w)}catch(e){}h()}})();/*]]>/* */</script></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1 +0,0 @@
https://ee317r.cloudatacdn.com/u5kj63yvxddlsdgge7qremqqka27irwiupc4k7o5cikbhjliz6xwv2xr53uq/lco4d3heif~

View file

@ -1 +0,0 @@
https://wec6bnh7rx7rw11bv9e9vslw4rud8nam.5f1ebd98099ce35faeeddb30c1752191.r2.cloudflarestorage.com/icxxqqdsfdc4?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=ab085b515b950aae0a86cae59456cacd%2F20250714%2Fauto%2Fs3%2Faws4_request&X-Amz-Date=20250714T154400Z&X-Amz-Expires=3600&X-Amz-SignedHeaders=host&X-Amz-Signature=845ebfa5feedd840027e431f31e013513dd4c4f74364b4e75a2c8ddb213bd97a

View file

@ -1 +0,0 @@
https://aa360cc.cloudatacdn.com/u5kjv4jxytd3sdgge5uogji5dg4huat2pxrm2qibdbm5rlyusvl46iz3u3ta/1f4isxg0tw~

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>
Watch 300938 570f5a24 c281 484d 93fa 734dabbec813 jkgg 2651705 vidhide mp4
</title>
<META NAME="description" CONTENT="">
<META NAME="keywords" CONTENT="">
<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="theme-color" content="#FFF">
<link rel="apple-touch-icon" href="/static/images/favicon/apple-touch-icon.png" sizes="180x180">
<link rel="icon" href="/static/images/favicon/favicon-32x32.png" sizes="32x32">
<link rel="icon" href="/static/images/favicon/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="/static/images/favicon/manifest.json">
<link rel="icon" href="/static/images/favicon/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap" rel="stylesheet">
<link href="/static/css/style.css?" rel="stylesheet">
<script src="/static/js/jquery-3.2.1.min.js?"></script>
<script src="/static/js/bootstrap.bundle.min.js?"></script>
<script src="/static/js/app.js?"></script>
<script src="/static/js/xupload.js?"></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-48ZJD1VPGZ"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-48ZJD1VPGZ');
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})
(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");
ym(93381808, "init", {
clickmap:true,
trackLinks:true,
accurateTrackBounce:true,
webvisor:true
});
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/93381808" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
</head>
<body>
<header class="header">
<div class="container">
<div class="row align-items-center flex-nowrap">
<div class="col-auto flex-grow-1 flex-shrink-1">
<div class="row align-items-center">
<div class="col-auto" style="margin: 0 auto;">
<a href="/" class="logo">
<img src="/static/images/logo.svg" alt="">
</a>
</div>
</div>
</div>
</div>
</div>
</header>
<main>
<section class="section">
<div class="container">
<div class="block">
<div class="mb-3">
The file was deleted by administration because it didn&#39;t comply with our Terms of Use:
</div>
<h4>
300938--570f5a24-c281-484d-93fa-734dabbec813--jkgg--2651705-vidhide.mp4
</h4>
<br>
Reason for deletion: <br>
<b class="text-danger">
DMCA request
</b>
</div>
</div>
</section>
</main>
<footer class="footer">
<div class="container">
<div class="row">
<div class="col-lg-4 col-xs-12">
<div class="mb-3 text-center">
<a href="#" class="logo">
<img src="/static/images/logo.svg" alt="">
</a>
</div>
</div>
<div class="col-lg-8 col-xs-12" style="position: relative">
<div class="mb-4 text-center">
<p class="text-muted ">
</p>
</div>
</div>
</div>
</div>
</footer>
<style>
@media (min-width:481px) {
.text-muted {}
}
@media (min-width:961px) {
.text-muted {
position: absolute;
right: 0;
top: 15px
}
}
</style>
</body>
</html>

View file

@ -0,0 +1 @@
{"server":"nginx","date":"Tue, 06 Jan 2026 15:18:15 GMT","content-type":"text/html; charset=UTF-8","connection":"close","referrer-policy":"strict-origin-when-cross-origin","location":"https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429_720p.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=6974d60c75ea0485c4f2a71b164a21ce"}

View file

@ -0,0 +1 @@
{"server":"nginx","date":"Tue, 06 Jan 2026 15:18:15 GMT","content-type":"text/html; charset=UTF-8","connection":"close","referrer-policy":"strict-origin-when-cross-origin","location":"https://a41.filevideo1.com/remote_control.php?time=1767712695&cv=a5df8582e6558fcf6bc25d7f02e5e646&lr=0&cv2=81173262e5b3e34fa9ebf67326ca98a5&file=%2Fvideos%2F948000%2F948429%2F948429_360p.mp4&cv3=2d8ee1a66c0ca6ce75d84c67a50a70e9&cv4=3ea2409b52380eb78c22c143fa6e27db"}

View file

@ -0,0 +1 @@
{"server":"nginx","date":"Tue, 06 Jan 2026 15:18:15 GMT","content-type":"text/html; charset=UTF-8","connection":"close","referrer-policy":"strict-origin-when-cross-origin","location":"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

@ -0,0 +1,211 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Wake.Up.Dead.Man.A.Knives.Out.Mystery.2025.mkv</title>
<script src='/player/player-101224.js' type='text/javascript'></script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-CFYS4N19SL"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-CFYS4N19SL', {cookie_flags: 'max-age=7200;secure;samesite=none'});
gtag('config', 'G-SZ2D21EHGZ', {cookie_flags: 'max-age=7200;secure;samesite=none'});
gtag('config', 'G-7F9RVQ2TM0', {cookie_flags: 'max-age=7200;secure;samesite=none'});
gtag('config', 'G-LZP7HENPSC', {cookie_flags: 'max-age=7200;secure;samesite=none'});
</script>
</head>
<body style="margin:0; padding:0; background:#000000; color:#ffffff">
<div id="Video948429" style="width:100%; height:100%;"></div>
<script>
var isMobile = {
Android: function() {
return navigator.userAgent.match(/Android/i);
},
BlackBerry: function() {
return navigator.userAgent.match(/BlackBerry/i);
},
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i);
},
Opera: function() {
return navigator.userAgent.match(/Opera Mini/i);
},
SmartTV: function() {
return navigator.userAgent.match(/Apple TV|Tizen|Web0S|WebOS|TSBNetTV|PHILIPSTV|NETFLIX|BRAVIA|Opera TV Store|SmartTV|SmartTv/i);
},
Windows: function() {
return navigator.userAgent.match(/IEMobile/i);
},
any: function() {
return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.SmartTV() || isMobile.Windows());
}
};
if(isMobile.iOS()){
var player = new Playerjs({
id: 'Video948429',
subtitle: "",
poster: 'https://www.secvideo1.online/contents/videos_screenshots/948000/948429/preview.jpg',
file:"[360p]https://www.secvideo1.online/get_file/18/5f4c7a9db5fbdfe139db2e22c9c8a2d20cb476bf49/948000/948429/948429_360p.mp4/,[720p]https://www.secvideo1.online/get_file/18/2b29f2b5e347fae9289b47644f3c93e1a94d9c7611/948000/948429/948429_720p.mp4/,[1080p]https://www.secvideo1.online/get_file/18/f4595a22a9b081291cd4107986a6f5e1c7e4ef6d10/948000/948429/948429.mp4/",
url: 'https://fsst.online/videos/948429/wake-up-dead-man-a-knives-out-mystery-2025-mkv/',
embed: "https://fsst.online/embed/948429/",
default_quality: "360p",
preroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemf&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemg&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemh&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemi&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemk&p2=jjsh and //adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeml&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemo&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemp&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgems&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemt&p2=jjsh",
pauseroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
postroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
midroll:[{time:"50%",vast:"//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh"}], });
} else {
if(isMobile.Android()){
var player = new Playerjs({
id: 'Video948429',
subtitle: "",
poster: 'https://www.secvideo1.online/contents/videos_screenshots/948000/948429/preview.jpg',
file:"[360p]https://www.secvideo1.online/get_file/18/5f4c7a9db5fbdfe139db2e22c9c8a2d20cb476bf49/948000/948429/948429_360p.mp4/,[720p]https://www.secvideo1.online/get_file/18/2b29f2b5e347fae9289b47644f3c93e1a94d9c7611/948000/948429/948429_720p.mp4/,[1080p]https://www.secvideo1.online/get_file/18/f4595a22a9b081291cd4107986a6f5e1c7e4ef6d10/948000/948429/948429.mp4/",
url: 'https://fsst.online/videos/948429/wake-up-dead-man-a-knives-out-mystery-2025-mkv/',
embed: "https://fsst.online/embed/948429/",
default_quality: "360p",
preroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemf&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemg&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemh&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemi&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemk&p2=jjsh and //adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeml&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemo&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemp&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgems&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemt&p2=jjsh",
pauseroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
postroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
midroll:[{time:"50%",vast:"//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh"}], });
} else {
if(isMobile.SmartTV()){
var player = new Playerjs({
id: 'Video948429',
subtitle: "",
poster: 'https://www.secvideo1.online/contents/videos_screenshots/948000/948429/preview.jpg',
file:"[360p]https://www.secvideo1.online/get_file/18/5f4c7a9db5fbdfe139db2e22c9c8a2d20cb476bf49/948000/948429/948429_360p.mp4/,[720p]https://www.secvideo1.online/get_file/18/2b29f2b5e347fae9289b47644f3c93e1a94d9c7611/948000/948429/948429_720p.mp4/,[1080p]https://www.secvideo1.online/get_file/18/f4595a22a9b081291cd4107986a6f5e1c7e4ef6d10/948000/948429/948429.mp4/",
url: 'https://fsst.online/videos/948429/wake-up-dead-man-a-knives-out-mystery-2025-mkv/',
embed: "https://fsst.online/embed/948429/",
default_quality: "360p",
preroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemf&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemg&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemh&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemi&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemk&p2=jjsh and //adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeml&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemo&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemp&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgems&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemt&p2=jjsh",
pauseroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
postroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
midroll:[{time:"50%",vast:"//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh"}], });
} else {
var player = new Playerjs({
id: 'Video948429',
subtitle: "",
poster: 'https://www.secvideo1.online/contents/videos_screenshots/948000/948429/preview.jpg',
file:"[360p]https://www.secvideo1.online/get_file/18/5f4c7a9db5fbdfe139db2e22c9c8a2d20cb476bf49/948000/948429/948429_360p.mp4/,[720p]https://www.secvideo1.online/get_file/18/2b29f2b5e347fae9289b47644f3c93e1a94d9c7611/948000/948429/948429_720p.mp4/,[1080p]https://www.secvideo1.online/get_file/18/f4595a22a9b081291cd4107986a6f5e1c7e4ef6d10/948000/948429/948429.mp4/",
url: 'https://fsst.online/videos/948429/wake-up-dead-man-a-knives-out-mystery-2025-mkv/',
embed: "https://fsst.online/embed/948429/",
default_quality: "360p",
preroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemf&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemg&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemh&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemi&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemk&p2=jjsh and //adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeml&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemo&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemp&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgems&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgemt&p2=jjsh",
pauseroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
postroll: "//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh",
midroll:[{time:"50%",vast:"//adx.stack.bidster.net/vast/4e8317ad-ef6e-4880-963c-d698f63e5dd4 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuh&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeui&p2=jjsh or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuj&p2=jjsh or //z.cdn.trafficbass.com/load?o=v&z=1525212045&random=(random) or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeuk&p2=jjsh or //prfctmney.com/alpha/4052 or //yandex.ru/ads/adfox/12359998/getCode?p1=dgeul&p2=jjsh"}], });
}
}
}
</script>
<script>
function PlayerjsEvents(event,id,info){
if(event=="vast_url"){
url = info;
}
if(event=="inited"){
console.log("inited");
console.log(Math.round(player.api("time")));
window.parent.postMessage({
event: 'inited',
time: Math.round(player.api("time")),
}, '*');
}
if(event=="vast_Impression"){
console.log("Impression");
console.log(url);
yaCounter49597111.reachGoal('vast_impression', {Ads: url.split(/\/+/)[1]});
gtag('event', 'ADS_viewed', {
'send_to': 'G-LZP7HENPSC',
'event_category': 'Video',
'event_label': '28214',
});
gtag('event', 'Vast Impression', {
'send_to': 'G-7F9RVQ2TM0',
'event_category': 'Video',
'event_label': url.split(/\/+/)[1],
});
}
if(event=="start"){
console.log("started");
console.log(Math.round(player.api("time")));
yaCounter49597111.reachGoal('play');
gtag('event', 'Video_played', {
'send_to': 'G-LZP7HENPSC',
'event_category': 'Video',
'event_label': '28214',
});
gtag('event', 'Play', {
'send_to': 'G-SZ2D21EHGZ',
'event_category': 'Video',
'event_label': 'Play',
});
window.parent.postMessage({
event: 'started',
time: Math.round(player.api("time")),
}, '*');
}
if(event=="pause"){
console.log("paused");
console.log(Math.round(player.api("time")));
window.parent.postMessage({
event: 'paused',
time: Math.round(player.api("time")),
}, '*');
}
if(event=="end"){
console.log("ended");
console.log(Math.round(player.api("time")));
window.parent.postMessage({
event: 'ended',
time: Math.round(player.api("time")),
}, '*');
}
}
</script>
<!-- Yandex.Metrika counter -->
<script type="text/javascript" >
(function (d, w, c) {
(w[c] = w[c] || []).push(function() {
try {
w.yaCounter49597111 = new Ya.Metrika2({
id:49597111,
clickmap:true,
trackLinks:true,
accurateTrackBounce:true
});
} catch(e) { }
});
var n = d.getElementsByTagName("script")[0],
s = d.createElement("script"),
f = function () { n.parentNode.insertBefore(s, n); };
s.type = "text/javascript";
s.async = true;
s.src = "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js";
if (w.opera == "[object Opera]") {
d.addEventListener("DOMContentLoaded", f, false);
} else { f(); }
})(document, window, "yandex_metrika_callbacks2");
</script>
<noscript><div><img src="https://mc.yandex.ru/watch/49597111" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<!-- https://fsst.online/embed/948429/ -->
<!-- 2 -->
<!-- -->
</body>
</html>

View file

@ -0,0 +1,350 @@
<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>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 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">
Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).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">26.59 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">13-Aug-2025 04:20:43</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/bffzqlpqfllfcld" 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>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<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>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<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>
<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>
<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>
<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.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754',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/bffzqlpqfllfcld</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,349 @@
<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>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.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">
Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.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">5.34 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">21-Apr-2025 05:22:19</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/idt1evqfuviqiei" 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>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<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>
const fsl = document.getElementById('fsl');
if (fsl) fsl.href += '1' + new Date().getMinutes();
</script>
<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>
<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>
<iframe src="https://pixeldrain.dev/u/HqAiguQV?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/HqAiguQV" download="Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.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 [PixelServer : 2]</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>
<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://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();
});
};
</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/idt1evqfuviqiei</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,351 @@
<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>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 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">
Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.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">3.15 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">18-May-2025 10:45:55</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/nknlofk8snfnknh" 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>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<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>
<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>
<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>
<iframe src="https://pixeldrain.dev/u/2kFQBQio?embed" width="0" height="0" frameborder="0" style="display:none;" sandbox="allow-scripts allow-same-origin"></iframe>
<a href="https://pixeldrain.dev/u/2kFQBQio" download="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" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PixelServer : 2]</a>
<br>
<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>
<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://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754',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/nknlofk8snfnknh</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,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>
<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">
<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">
@ -18,15 +17,14 @@
<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 type="text/javascript">
aclib.runPop({
zoneId: '10550070',
});
</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 -->
@ -150,7 +148,12 @@
color: #000
}
</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/>
@ -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>
@ -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>
</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 d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
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=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=';
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 url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=';
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() {
@ -303,9 +316,9 @@ download.onclick = function() {
}, 6000);
}
</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>
// 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>

View file

@ -2,8 +2,7 @@
<head>
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
<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">
@ -18,15 +17,14 @@
<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 type="text/javascript">
aclib.runPop({
zoneId: '10550070',
});
</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 -->
@ -150,7 +148,12 @@
color: #000
}
</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/>
@ -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>
@ -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>
</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 d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
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=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=';
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 url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=';
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() {
@ -303,9 +316,9 @@ download.onclick = function() {
}, 6000);
}
</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>
// 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>

View file

@ -2,8 +2,7 @@
<head>
<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">
<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">
@ -18,15 +17,14 @@
<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 type="text/javascript">
aclib.runPop({
zoneId: '10550070',
});
</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 -->
@ -150,7 +148,12 @@
color: #000
}
</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/>
@ -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>
@ -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>
@ -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>
</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 d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
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=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=';
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 url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=';
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() {
@ -304,9 +316,9 @@ download.onclick = function() {
}, 6000);
}
</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>
// 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>

View file

@ -0,0 +1,373 @@
<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>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>
<meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<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">
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 </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">60.21 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">13-May-2025 05:55:49</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/1qepetxqp4nhxxq" 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>
<div class="ad-container"></div>
<div class="ad-containerx"></div>
<a href="https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027" 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=916e54dbbc3923cf404ca0c44108f91051021dd4d146df1f0a3c215750cbd8206c23b3e8663d75214d4d981882457c38140d33c6ee0a906d4c78089033814f7e562947cae9e7459bbcb9d84cdcda434d20e0fb72be56fe7e6b12f5c754c48d0b::fca3f06af5c7c4b06bda6feb79165ada" 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://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027',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/1qepetxqp4nhxxq</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
<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>
</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>
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,328 @@
<html>
<head>
<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>
<meta charset="utf-8">
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
<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="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></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><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">
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 </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">60.21 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">13-May-2025 05:55:49</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=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=" 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/1qepetxqp4nhxxq</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>
setTimeout(function(){
document.querySelector(".loading").classList.add("d-none");
document.querySelector(".vd").classList.remove("d-none");
}, 2000);
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=';
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 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>
// 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>
<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:'9bede0942dcf4e6c',t:'MTc2ODU2OTI4MA=='};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

@ -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

@ -0,0 +1,506 @@
<!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 | 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>
<!-- 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">
<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>(s=>{s.dataset.zone='9824726',s.src='https://bvtpk.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">7283903021</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;">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</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">60.21 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">HubCloud User</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/7283903021" 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 [60.21 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>
<h5><a class="btn btn-primary btn-user btn-success1 m-1" href="https://hubcloud.fyi/drive/1qepetxqp4nhxxq" target="_blank" rel="noreferrer nofollow"><i class="fab fa-artstation"></i> [HubCloud Server]</a></h5>
<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/7283903021</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,10 +1,10 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="Deutsch",LANGUAGE="de",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a1.txt"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="English",LANGUAGE="en",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a2.txt"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="Deutsch",LANGUAGE="de",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a1.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="English",LANGUAGE="en",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a2.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=857863,RESOLUTION=1280x720,FRAME-RATE=24.000,CODECS="avc1.4d4028,mp4a.40.2",VIDEO-RANGE=SDR,AUDIO="audio0"
index-f1-v1.txt
index-f1-v1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2132409,RESOLUTION=1920x1080,FRAME-RATE=24.000,CODECS="avc1.640029,mp4a.40.2",VIDEO-RANGE=SDR,AUDIO="audio0"
index-f2-v1.txt
index-f2-v1.m3u8

View file

@ -1,6 +1,6 @@
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=861762,RESOLUTION=1280x720,FRAME-RATE=24.000,CODECS="avc1.4d4028,mp4a.40.2",VIDEO-RANGE=SDR
index-f1-v1-a1.txt
index-f1-v1-a1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1739697,RESOLUTION=1920x1080,FRAME-RATE=24.000,CODECS="avc1.640029,mp4a.40.2",VIDEO-RANGE=SDR
index-f2-v1-a1.txt
index-f2-v1-a1.m3u8

View file

@ -1,4 +1,4 @@
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1222837,RESOLUTION=1280x640,FRAME-RATE=24.000,CODECS="avc1.64001f,mp4a.40.2"
index-f1-v1-a1.txt
index-f1-v1-a1.m3u8

View file

@ -0,0 +1,10 @@
#EXTM3U
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="Deutsch",LANGUAGE="de",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a1.m3u8"
#EXT-X-MEDIA:TYPE=AUDIO,GROUP-ID="audio0",NAME="English",LANGUAGE="en",AUTOSELECT=NO,DEFAULT=NO,CHANNELS="2",URI="index-f1-a2.m3u8"
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=874807,RESOLUTION=1280x640,FRAME-RATE=24.000,CODECS="avc1.64001f,mp4a.40.2",VIDEO-RANGE=SDR,AUDIO="audio0"
index-f1-v1.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1965310,RESOLUTION=1920x960,FRAME-RATE=24.000,CODECS="avc1.640028,mp4a.40.2",VIDEO-RANGE=SDR,AUDIO="audio0"
index-f2-v1.m3u8

View file

@ -1 +1 @@
cf52bd4d684372a57a34292be9e7131d49f11a7530b423d460fe5c36ee50ec01eaf1270cff5b329e6799abc92a222e1e4a9f84d580010de714965de015af69ec604ee0ff00542c3c83c34c9fc8c9972e35df57c4dedfcc0161f3496e8729db2054011d1d5ab8c4707fdfc635c114b8f931b5125a46eff3110035868c99a82018d6d1dbf3489c7b907d510ab7cb5b77e06a051d3aae7838c76b6c3c1932996e7b0030ac8df97d73f70a21a0f404efef96eb46bc20d02d0ae09bac9d5d914c02658025f446f211b50cd5adb27480434be887561b8e7090609609ff7ca7adf20b72d24379d125d368b49cade03dc27e054c6d67d23ba7bb5e0f93da705cbbe1d9e81ca938e1a95d9d1962a7f66fb168ecf0bc2d9e0be840c225c1e82d13cea2d4fb32ead445f4c606a98393a6ef935d84d4e379c0db15c91224273fb900272ba1d8af34cbc89afb7a3cad1da897251957b0e9939c4053ef9c9a72a834dd5b1a73a459d6910356e17c9ac4186ebc22a39b17a49a9f6a10e0244429de22f1604421de809d0eb264cf94479f577a60084c042950ce26e1bdaf595a89d38750de5deae0e6e02e432dfcc9ce4169f1e5c5e1b482ef0e04b05d06cc20d904091d08cc9a26cc590a5f3063e4780d5b892740ff59bba5367785d2f4d5fc071b47d2e4016d3ff91552aa969322d3f0780b4f4ac38142febea368223aab2cc3fd65ae3c886a96e5ed1f4fdce3b7a6aa4c0b56a05edb35e4b60d9838619eb5294b891c9ec8f6c4a672f2f5f5c3f927b0d65dfdab9794701d48662ec56e40aebb0ec93250a91299be4e5524b34c211ab7dbb6db3ec742b59a5d10656579725c6b85c175d43f29e3e3d20ccf8c62e883631f5c0ec78a9a5218325a1c2b3270e153426c3a756f8814c6056f9c2fad890c81c20a7bf8e47a547368c203a4f93a35d08e90a4450ecf607d05a023292170166e786b9947d5085de4fc9cfd6378461cc0dac7dc904292d05c7a54eba02ae24772cb99efe7cbcaa4bb5b8cd95abca219076794984d4954b4e1e10f44e893c9017a725f79e1abf01c075d5b9ce89f31d8abd79a23bfa82feb2f10a43b110d3513baf51e93fb26793662334a4afe73c207f5338166dcbe74bbbdcc953d901a6c2c290c99666ea91e7829c5a914ab3e85b4ab1589ab18e2e3e15838992a529efa554e3054deaf3226e43c4ecb15257063220e62109ab573336aed0a5546e7a7db4a2a7565d5b4064094c6c105b26aebdbc8c06644372fc93df65d8215feee41a05188d5d99942002768d814f2d874fff27cf28be9d0fe8852bdc88e61eae7e9459d810bd85c806fbb2fd6411a043cffabe9fa648dca400d7c6577792c48c6e078818e614d48d054cbc8727fdbcf3cfaec323f3f392691b63c2e6f82fceff059a8fba1ff7bea9e3f49d2ac9b1188c915432ec68ecca37c4db581457b26016ec42b0c3c8b8ea31e090477ffee6b1c9039d881f4e8767225aef6bc50a22ed2ff32547bdf411c3e394b83c4baf633702fd0fe2eca474160103a96fbb732e15837ef43373ca01c2a091d826d9d86227ff1d2effcbe62ad44b74db8edbe1e901a4a38340f730ae9345fbab86a5c7eeb03b408c6bf69cd76dd334013a00477da543b94572d84e9967aca359a70e13fb8bb95a035775098dca1ca0cd6848e7a0fa57f7d5e2ca2acad1261e19e14553c68392d7ed05dcbfd4003f66ed51a792fba201afa8f303f2ac3bac0490f8b933514d76aeefdc1ba0805320ce3df85db9c4eb251b0e61c53e108f57742144967f8e9861de939dd5f4a3685aa21731d29c795886a06eeef2420a0343d79359d493df76f51a7181c9dc0e6f0ff0dab48038617a3a0ae47b53e5dd39ca98ae64ba991cbce3946cf0619b327df60e0b036fadf1eca06361a19c98aa1d51f81b7efe36ddddf43ac3f1190492a30762f43ef0884bcd715323722f31866486954c056aa0eb9a627b59c51a49673dec4e64273632bb31065eb0f42a0a6e98a299f48b367f64483d2a5e00aed71ac3eefe75c8f8f66e39d1d8e715d6cd11bc8b6621521818977d515ced28047a1f8e263d371c483de9ce9c293638fc737898a14aec0d2e734e801f51f6babb56a42b05a675d80fa4dbdbfbbd869b795ced074d2bde452708523f9130470a0e1c060b00ec06ceee578083790c623eea483a774ca1135383a52b61d3034ecc5c6b4b328180a067fb0c4e973a60518474b34344e50283029af0e046203700eaae8c74c2398e21076661a8a81852b3603659468d8f54b76c95d67a02c801ef105bc0955b632f18935da666f816a773606e5b3d84a441707b98da3f83f9fc331d6003a1dce7d988d458dbb83456ab82df10a7166e1a12d78e34a33514c59161200fc5b644c64df552be343a8a4cb1c4d46b59d4801c9406297ddc889a8fa9e8b95436a533ba33539b10d74a58e8ff0a05b58a69772f1e6d5512e3e6fe4cba0d1063cd9dfcffb44943506d3b85991207f8a0787661e9158b6b1c0c653971680b77019fd6f99179745c7567ef1ea1d4c0066c9efc2e926a4f900508da6cdb33aa8e8dd85f5e4eb28883c826cd43532cb47565e9b99277ba65f5117d03286088410f0e455437de746e34a05b0af0ffe05b0ab8afe7df8cb9fe6ebb2e559430fee39d9251ad6558612ef6417b42a2ac467a50cc4d2352de236218d0c9b0c30d33b545a2b3bd14c4e598484de033b9ab5e3dab7dfec8d338188188557b83b4280162b6cc4de2db8a5f3842becd7334c41ae61dc29a3b8b1a337fb37f4639d2d0783fd60e4bbbaa252c441c67afc4f52f16701afe16aec7a3b4d394b3579c857a992d3fb48fcab917d4f5a9ba5d8b737791a6c57dc225eca07c3be9b1587b6037cb24fb1f2eb7229ad3b30080491dd81adc59d0f7e41e37ba117812172df5ad09d46cf493435c22084f2a3d97fb854ea51a4b28dc389aef94b96d70b75e5c5923064e7f3b8005b04c6bdd7e63030b639972a161423b99cff6a90247c7881e58921498857bb5b357db140412cab2aa369a51f810d2324a0e53d319a2763ae4c66431e5edd420f15838a3824e415e09d60a70cda341e9371b063ba44fe367eeb1ea41b1744afbca6773442aad0279a5807684c39540ec50256245f98328e315c2147b49daea73d46e5a943d7232f2228cdb1108e363679c4b1ab2af4ae4d41df6b83f6881161b9ec03ae022ebb074e7ee6075041f1756eec5836d3225fef3bd209229db5642243b7719a7a9da0ffca34d0ef9053158ce0d7727c2963b42d9fc1318f4a64d6d0e6e9af9f5cec891f3e3fb30588a8d3aebeca9fb85011129a74567f010be9f9349eb19e1bfa34c2c3c8518157f145c2a38607fda478978d
1306b9d3b781eef66a55e4504000e07119f8d77c9fb1f89a7d3cbc0fbca0c1b9c7ce72ab6465c6c1e7d6475dd033af4a298c02235926bc14f75e2401198af0b909dc851db4662074e3677e743ad0510fce06a4843070e1485ef79cceba75362f047a7193eeb4bd62728e651af2a2d543ffb04abfccf844cb9a0949c2428e5a0fac3d232b035fd20d57de4ec37de3b08440dfad46b59e02721f93162a8063aa38a6904dab237dcc0292abd3fda7fbe218b35a5eb294a484674980fe593bbd9b4400403223392650acaaa3cf494836b51daf94143ac0379f8d60811127baa8aca56b9ec34be8c9ef540abc0d553d82a97581ab8a2ed109d8f66de565e4042d2644403e605f0c70a7a04e40ddc7856fdc0bb0686bc868c6473e6d33a5016d4033453f27f8e8a63f78a1463df075bc3d040338e1c225f379b44d1b83c83480fb515c7b80c1a9f7d8014bba2cb1c5c02ce3dd3812b698c5ab25d44821788a8e15fc2291a04ff1f3ef2d2c003c7a405483cb5b19ec6a626b979845ce5ac39335c9b49d4813b454132eafd87c2852bc3382d5f53cec3a4ac6f4153996f059fd4df79e98e0a60cd5298517b0f0eb5df122742619f86886098b838751617d4f423d8e636500348c71e73f6f249aca22567ccbb923e7acff0236726e13cdbac46a907806c5a703ef04b7a52b4b2eceb8611ca28cc5acd70358324aa18e2963492b3fc6de6effd49f0fd5513c5316c5ebb38e060d912388678e891f1cff860eb8f8f3edbbafb2b8a855707c5d1814f7a9a514b83048f04b07a8dd0ed19f7fd432609b6c6ff9820d99c9a5ab5399642d369b59ed0bab9015cd412712593c3d5070ccfd8b65ed8b2515b5494cf927ad4dfb31d850d21af7c39df5c8aa54b89d788039907902be1e7ccdc9f63e0230b3f4df152c5ce0b56d03930cc55b748b510707639d91719be3a88be337c7103395840c962a4f31cb3a289ce70d14a18b86f7eab6723d88276ca0b6ef6fdc845f28e561d164cfc402e27ce619e9028301834372d80bb8706b9730df03b4d6cb30a3f90bdb4c2900122a202c3eec76195a93ef5d678af9480663d6a705eb62fd9dd853b07181fdc8f23714774273f8e8f4726b94b1897ad392da908b3143b2682d9c8bba3c419ce12284269a382ab8793125dfa1cb03d929aeb8651b68e7d3d3702f6c35e9dea31bc294685b47fe2009f5b3ad9174eda6167d2c03e1eebe8d115fca351ed24eaa21847fe7aad79bfa5e426d76ddc5e6d10b9b579f9a985a19fe3ac02c25c82a105c16dc77a65317cc4f120ca83c8738318b1173cac41dd5b142d303641c231c84c8db33079e67064a7f25c1f76a64fe35db550bfd63ea1b52c893a725c935a60e40bab137f1a24e854f48df2f736e165c0ffac5a42cdc9d2199949e3e6b7beba1c63980a7459918a2f8c0507fef04fd9b8ca9ed265db8e79e315ebf1c691d30f13a3fcf62a3d0189c280b873f6e33292b2b5783f124dbf1e08aa8581216d537289fb176130682bad25403429f71139791ee374d27f2d328c03ca9230cac759842ef07cef9a77484e31d817c85b44c503ff9dc8b28683694f55586145dd37e83ac07fd0c60ad20ab9b735ef25e3785e68fea281b756bdb41f0d0ace2307b376b370036ea4129a363c9775a2c726d16166cd6a60319e176a5e3efaee7ef2d4bb3381c524b6d1cc04d8cc3ec83feb7edb0963da2364bc8ad9a7ed68be852801c578dd918cb8c10d6ad2fb26b627ce0bc97f58ae9432d61dccfdcb069b97f11e06184b0e30b15bfe789cb55a079eb6af22231774e9bcafc484249e540a2c9f3b2b0d5215869ae4dcc2e9fbf0f94b2c7158b474b2e428a9edba859759d74268ac5a89fa1277aa57da271e6867e597d929dd032448b87d9a4fb07e0da85e72f88fcc9223fa170555dc8a1275d63c17055484e05f1cb2dfaa6ff627cc2d323e7c2c94d595737136b8c39533506770e59ee7073e2311ef8c07f4852ad2944f4c60a3c74a650af3a95b2ea607921459d0cd0d458b21ca55b5e98c88fe191b5cea056a91ef6df0c73649bd0ff5138fb11b64a6ee657ebc9890a613a21f043e85ac7ac4a1fe93dd1299bbd33359f53f452830d666528de1163a0dbdc577e35e29c9956d466e798ea04114a94f602167d051d3b852f0716024f9d4002b52709709ac101b0295706dc1a700817b58023304a73ecdaa427b6bd03dd0dc2d8a8e3ee651714f38490fdc0e4bb9d2e9216af776ed80e5b4c1486b3d1518c4a5e60189096ce0c5ebea114dc241830addcd83d50cd21b610cde607f2aa34c9e0f801efcbcb8e5cd3e02b8893eb1c1d74b35e7a29d28b6992bacd9f32e68d16976fa6ec00ac1ace6c3f3fe37c4df63da295c4741497f3c75896c3cdfddfb50125522e0cf24d4ecfc283d5356edb7a3e23fbd2e546c7d1c6ea5f19e34ae033417562402fdf442687887b431dc4cca9c4374b7bcaef879b3d7c351bf97d0820b606297bc1945057b6f1bba9c4add3263e89422254efaaf5217675e66103110f11bb63c956a3f15d2b867983bdf9ef0f7b1feebce14b0e32b76aaad2af336d512ef469aee64742a9c3e73215263e9dad5e82aebfaccc4ffd045dcadf98338aaacec7a1da9710e327b99e94b7a060915cc4c956ac6d576159a6b40f5e6df367ac2a4f20da109a9a6055d09c4886a85eb5fd0efe3740e744fd52acdd4a9e153bdd2f0bf5ff8e97391675c2774bf2f7daf2f4ea11ec2ed5ba89a5e5405b0f9c794036c21d08c528f96c15e2298c33ab29303d99f69d577b9556e87a1b56dbe6ac48b33f350edd34fdaefd5c10aa667cf480a83d9c82c065d77849996ca018d4b00b91ae6f5139e2202bf7ce776c43e9f6084473f8348caa749b2f99753bd1954b9093c4b51901c5a8cbb685d75b170428d5a3a0340ec733674d29ad69422ad1231ac2c55dc57947d5357d7bdf1b27c52fb232e32201082b21e890c8e365ec246f2e5b313376605ba4135daaa386601ca4316390e86f23c4da35e1396d683fcc46d6c95dd2ccbb851851f7b83b61607f37c9d0b245bb7d817888cefa3468709ae34c2fdd4f4a039099fda4ea38a67af0334700dccbfabe9a103bd8ef40f0ba46140e7f78bc13b97fb3194c5ce11aa00d4ed90dfd8eb68176df5776ae77da621d1301df5f8974fe12ffb775bfb4c1968267d90e80fb1ca15660802208d64b2573

File diff suppressed because one or more lines are too long

View file

@ -1 +1 @@
0d504f08d26b48f7a12d2dc92fe8c8a25adacd8a20ffa62bb336ce319f696f93142529d721b9892fe70824245759b55228071c40a516f267927becd8a3ebf5bbf15be0f611c6e7c1be8f9dba5174e972e8f0e82840878077da2030a9b50fc109d83b9dd93a852d8ea36128aecc944dec2108db943b9d9bb0a8f3381e479c919042f2468f7472d09ff680861941434bc45a9125977753a5fd52cc59cff03b2db23d7ac7c937ad047811776f7b74a561d95a8b9f470c293cbed3dd9e91d7994918b8a244b1b18e3beafc6148dbe56f4a5f0e4a41ba6dc1b5fb4ba77896ee9c1f13a919e6ea8a0ed90c64f0953b65df27c9a2d7b6cb127c727a3c646c55b51c98cd18bdc2b6a801fa306157804c64c833c9bbfec995ce9f865c40d176bc29b5d278a276cdbeecf8a45fdf2b56be9cfc0720521604a1b390db4d86c81657114378c63cd8904ef5b5870f057c6007961b431ac0475ed7c5d812c3c3860476d284efaf9ecdb6fb5a357c5639c9dc8ec2b1e5542f48c35726f5dbe7f6901c6b8ab423a96070d41b867d6a7b35ce605506e7f1aa2fa64c516c419db578148b49634da6d8264105220da475d4310bd311b169f4376169b2e9b17c099cdcda38addf65b300aa823ad22c7769b5b65e576d8d1bec961370ffabd1aa689f04757337f739521a98f228042c624f97e071e1815c0468233945ee7424ec0e69049a18ce4cf20cd8434f1bf7cf9b22da7621fbf108487718f58384067056ccb00f6608e2eaddeb50a4dc2305463deba587ab2fe698f97eed2a9591c941f3a627b330acba92efbaeb454cfd472ce76c6f0f4f40524de9d13d39798798a6ea06e4d7a34a68c9133ece5e106a90341c6d657f3a58f7716eea373a081d2336d494946207d699f1a35f8bfeea448792f27f96e3ee6975a60b8f2aae0515df85b505662d997014fa11b6385ad1f063168a0a1bf76256f6fd1ad49695288f6f0cd87ea169546c2e736946a8da70e66efdb6d116cf1675f58aa7d9d978c2f2977b6bcf49867dacb986684edc820153c4230244b9d0b871287d70b92f6dc7dd83e50f27ad8cf8fc761055b53e9fdd4e59ec5bb3e74a5d93996ff5c2942ae5f92300ea7888b881ae325a848f2a3df0f50723fe82917f904b0ca244e86f4e80fff0e2379fed9ec7f927c0a2513551e13c3887e9b2f3af0fe796d3c432d667f9a278ac441d961e90b7a3ae51bbe4cdbae1e5f355a86c0093cd840b470772a616bb630ace6da2b23fb095f75ea86a18b3b32e0ab982817fefb84f2ae8b537ceed358d0765dc273cc89886429f1fa4fe0d4b09391a42e5a13fc4b41c5681ab58484ac5a4a2499ee8aaa31ab1964dfa3fb36dbb2135782416eb7fe6fbd7d00da175a32222255574cb1f9c45fdb0a9a3b606feeb94e053d6c6eaae3cd794807061fd8b9512a88d1b6640b3f072fe5512cc08fe7faab14fe3e675d00aa20a888b92d892c2a7d00d827d1c958b1bdedbd4cee616543dfff92036038b0553bea1d819152af26a6217f05baeac65a30c12ed9dd91bb719804bb25f322fed6cb44f2ba0011d0d4c9cb113c3ed3dc3eca68dce35e32c8215c6b2290bbe04814a7ceb5ad9d0bcb687905758ff30aa88d04d32bc9723822db9b9e2f266089ead84bb6f30503abe08cc8f2a648fa03ad479415c7f498d06f7862de627e6952343bd233995d79fdc69ae9c4dae181df71df060499e41d0180005a55f22ad5017b22819bb424fd04ddc84f64506f3d6773e257e1734542b9c2bddd85294c7a89bd210fe4d5ac1045d2805a8ce38376f28dc4737cf9e45b0c47587998f3ad71d0dfa92dd9d5d3074cd6bc445e468c40511094d95eeb4b2e8637f7eddc7ef1778eb86f258b38cb7255a4ec9ba20c86851ebe935a88e721822430c8c580134acc6183caf5b88919bcdff787325f1d04f37d4197c8028cf92827e8fd18a0aeb30f9afb3e08b247e07374d3b953d22558d0fb611b125ec5d66b29cfb2ee21637801fdfa3cb71fb54e61e815498672e5f21209ec3b63d6f35fada65e6c7fcdad56c8d6b720f312943b6783724759a76dba736fb2f4028a3e16a6d466bef22478c6800095bc57e9e39c5b5d32ea21cec8a6aa50a9e846020fa80b4e01044ad3324d9835ba37f8b848af030e4618ce13e6e30446c9df36f292f04da952581d0b2888cf82ba46cd3ed8f43c1e0ccf3ff0204f8a11bb9d6c86c23701dccc9818f7f9cd04235f9b6c3694da79c7b43b7f4f3eb99d074fd975809d8a789623a6b964f09e42f8b8a36cc51ffb54239bd7a15e780dc8c72f1a9bce1af816eb848e66be9448be5d038c3e9fae76cb61d534c75defa848238b2bfc705571fcc2f9be8d7fdc735f75f1c660906dc1652061a5151c41383e0cc5cddd6b5940bef2c435d1d1a243ac2a04004666c296dd0a39f70b388d8d82b991b0121217acb28141dd1abf717794079b9fa52f878b8ab4f7769ba8c2accc457d69dc99522a3455b90897e8c736f759c0a0903c53da1d3174d73bc6905e15ef93600511b612f193e2aa2c01a78f3eb16ec8c432382bb346d06f416365bbbdd6520e81d8de8c440b5f7a3ce88444d97e93f65dff0765cbd3c9b41fdbbd5c698f69213c12af3ab41d9986c978ef5cd96f804aadb5d09ad4cb05b4ca554961092ce4f1165b864b2f44a198ec5089caa51ec18301522051131a3d8ba182edb7dcdd39e9c9ff1040b4fc97c58b9033f4e3a874d64603b20aae23c24ea3fa998b8b453d17094ea6efe98ce622a454ed203032444ccf7cf34c0a1c4e98ca13ada6dfb31b9c2ea1e9b0f98164e44040d633d0adb39a7c113a1c2bdeb4340c95a4c25cd5eaea69c822b7d70e619fdf16fe2c8da7959d1ecc66b3c50adac9624f312eca5c3641b51e95ea254d8a1950f216a2e4af039c96b9259d15effab31af75ce4e3e01cad44181460136a044ec8f26f5d045a127d46a412ce340dc0b3b032d43c5822d3d18f94c6f5a2b0e272903332c4eb175f8ff839b0161dd4a6bb75dc91c920056807751a172a45d2310e5c450149b6b258275e5bfe0724f05c6f4f20245382741f6e5e3faadbc13465230818c455e1a6f6d4799fb29dfa17d512cf008666ddb70dc624d24f441bc6cf9934183ac0a099754025f3ac49b3de61f5d0ad8675371688eba4b72e321cde4680bd144f308438192eb9f4e2c9315580c3cf76611129bce6f53e12496bee773dc268854efdf581aa38a802afcc30da65a78b4708fef2727b33ac38eeb6e302f786615352fa0384784b91d4c79ff6698226ca673f051ede5f4b9f171b8c9955009fc9233b6c6e215b0d5816d89
a5dc8b828864323afe4092ba6d25aef4651e414ab8ad73764ca752663af3191d35861dfb41718741665b9b97909c962f9aa4c43dc347f32fd879814dfb18ffbbf2f5fffd6f23524d4bf036e60aa45aa642015a953bdf50284321e1270cf929d7c92d49a1b34ed61e09a80c19aefeffec08955243a4694523be89ba6e7f697b5930653e70a33f3bcfd7c0099e2c4b134dd0c5d9ff581cc2358c39f574963dac05e14c390963d752ca8ece0b030d9360122ab6c7ce312291cde286f1ee88f673c578b9348ca4e20c1de1220f3d77bf8ca0542b7c0e3adb544ae2035db754dfc05807972c2545cd8b289e0cebcb8811bbcbcc39cf6fd8667e4816f74f679c7ff868b1ec9e8bb8e36597289caab2bf2d9ee308cfbe94bf3a967c58e85a3be9de0270bc1e9c2bc4b0561b8b18e633a0636e6851b2aa2669913b316605afc01f96061c1887be3f0023223fa8db024217dafbd1186267cca7afa492217f4f3edd5d4202ccd7abe81d09f881d437319fd1db8dc48e8670e8bcafbc2a74fe163240cb82744b63e74dcc617af724039292557290dfbcd51e440954d8a1e2b65d51d6c5d0058689a602e4ca658e2c66ffe02d5b69951908a5035e803d074b03cd620396f30f7071ea4ffab642723598007fde2230bf282fd7e0cf810c98a24a0880c92cbac320db1466f22fa2009742347faa9e587f17229ed100ed8591481ae34c3c6ae4482fae47e43340cd484ebab1c47c23b3c99502774569a46d1650eeffe34180cd6a432a6082c8d7d3c0e8ed5792ce5b113a7557630a057d94412fb4dd0e1c6ba43a4e4500dfca37d8307188b66b3e2400ebcaf8174a89767d336ead8f84464e3dfad2c27e85fe3ec4f54f9e01b241a32a1e53cb9fa5ecf60a696a1622333d6c9ee4bcbe95322a4eab69654777c128cf9523ed6dc82e4fc5b6b636a771bd32b8c0b3cdef80a408e590575b048a3934869eaefccc7c6c57e909082d91fb5f16de07d458376e5ef3af324260fa5bec86ea93c4981b7baaa34194368d00ecf3310e89f2727236f50d3e4d77c2392f9c3a3544a0e4d0dba73eb0749f5948c4a8faa207d7ac35b60abcfde1412e300b48406d273ca78504c827327892be9b4f3550defd745c817f3b9fd3de2d111432eecf3b7dd85904d00838a8c09a98aefc273a355eeb3162c16a61aac4ebede7e7e7772d6c7ebecb66017f81e3d5add9ab1129ffdb840754b9a880ae6be7dd982f53c1007c404ebbaed91e0ceac902c35f2043226f24077b3c9d1ad85f9acd17d5d941337b0d026406192e0273af29fe73d3b6747de6d069896c66d910619327f15dcdc8da2edc0d986c3dff300cd021e1d98bee58bfecd0a92a103477b9b1db26c6f8c4543c848fc29d7534e2735793cebd72e63b06dc63cdc17808373070daad802afd0bf742fdfe79799cc21f47f00093bd2c88dc4a002a9d109ddaad842448c054b1efcb305778d7e2386c58084e078c53c3ddefbff715433b572b33f6f003cdd6852b02d333e649cf45b11ddd7bf21ab24066813463957415e6bce1ae79eb45ab560bf0f7df4a7bfe76f53d25d4d76c077943b2360332bf654af3ebf3cc26dbefafdce2367caf7f4da2886be4dab517e71871bf5e925d090adf8eeefbc6ca7742843aacaf0d3180877622393270c051e0cd8c0257596ccaaebde0362d27d3c293d93736286e3e1a240015203bea77410c809a2011308dc352e168afb6cf7248ea8e90abf02e007bf45ed93f87cc281fee32254039a2e826013ead6ddc89dd12328fc39bc591a3c6fd0902f0d4bbff2a303b2f0854b29b319aa983322f8595956c371a3f7d8d5f601105029dbd95b047fb299342bb413591aee6606ecbd1f0716593ab0737bd04aeab52fc9ad543a9ac2be7cc513e95e92ca1ee213aef85a93c638d1afa8e5989b686e1e50c7d9ee7a3706bc2fa64dd1788280d0fe36236ef6bde1511783743bab57875688687a8b250ad72e0a9179bf3b2406af488a189b027a610ecaf1ae50f7d49d168b1fd593d4468cb89491bd3353197bd3c5874289fa93d57bf3410ef9c7c57f61b0de1271bd9a14b5d2fd0ad07e75e6793cd81b46320088fe932674c063646f4431363673e365bf9bebb96fcdf09052802ce29ff062a25967f078c228d14e9781128d75ca1a0d519ebe580e942f79419fc19025a9aad8ad7da3e3d854ffc72edb24c5c61ccc5449a374b1b7efb44b4c1254d4f7c05ad6205e1d78368b20a46fe8e529ec7e0f97108a98b402d1d13d7739b5a56da1f9437f6317d1313697498a82f4cf18760d0ad241d02241266b4ca994978efa8ac517a24691104b07e1bc7dc637787ef38c52fd4ea72d2898f0fc9e81b96f93d9a0c00e26835abeac047a6b169e2c6886f52193b02df2d48c151b62ade7e8f8e0777b3c1469fe980c9b38af65bebb269afaf7cf540e40d8a335d4c39582d4825afca88647db4974bac3a1fec5812f9eb80a082baa9f13c6754a2fafb06ec3dce4d0ec241c928a5946cd2b4666cd857a1b37bdcc122eae22eb6d175cffb210b89c21c9e01810ecebe41e72dbe759664a440b473e54de98e07bc2c8330cb79f559cf341e42f297d8bc6bb855c97c4bbb9d63c5ee2859e99bc77cb532164abd1f540e2882b73f2dbda413ccfc5d2953a991a657cda442134e3d561d51871ce09a73fb3c64ebfa9ec49d8579e1c7b3de5179562188df2e1f5221b0cab12c9987df4127fc9e2e8129b8529c4f7b1fdd4ac9ee244296979a1d8d49b4dd5c09cf63cac4f525ae225392d5dfbb06fe8545d681949f2303cd6cf88fb42fed1b4127e1a7ae087692858146056929d61a0494aefe6a16b2202bc9b31ed8a062a791f624c1d098700bec0b81d2901f7aef6517113d36b0ad0f9a3db90b28c1d4cefaf29fe21c67c582a25f55600f7d8e14cf46b550b915fe829afae07d9eae0da0233cc4aa217937ef66e8ac7f7ce9034b2eaa8b9da17dca3ec1e4c8906acc6316c0c0204511bed27cd3ca7fbe45721b0db333ac5047134beca8c018929729816feb3570dd23eba262b5ef885346b23c79bc303bd310a3e19ddbbb71f30f3e263cdb7d79d91d4b06981f6ec4884a73cf92941e841e52d7553a490d1d1b8276626c88af5006082e4c84d1bccebedfe759dfef83ce860334aefed0f83c7d473ccc43de73d90aefd2d3b3ff8714c9ff652af66e61c4a0b1c1b22e5c1d7b4b78a8aa027904d1314ef349e25a11c38ae14e6ac39d25d44428ce91715b5ee27e2426236ec94845c2606137a78658193892cad62459d27c0412250467ab716331a0e105d9f9f5db5433d6c14da2e46f97cbcbb663c9051d4307f4bb175d20eb

View file

@ -1 +1 @@
a6e3535205438f18284909e732a17536eca0db24c9b8a4faf9ccc4db6386249e5ccc142be9c193ac7616368bbee0b7970bcdcb27776087c63efa053b944024b235f44ab7da677ccae3e704612bfbbbee5e419f25992c141cb0c4b948adac74d5fe3c760bcccd7f9c4286c38ba385d8b9aba02fdab3e64e9fb2c8b08c6c5c054c48f4d417c3ad8405ac18ad211aaf86e120073ea5581d6e3116350238f292d714c34f230296e9765f224358f5b8b07d6991a7d5de30ab2ae97867c0fad6fb1bbf04e584dfba6dbdb634db15ae9ff36a367a6dd5fa30635c2c4fd9df6684253b17752efb1393b3be262562e2bdabb2da2ef4aa961fd55a337f3b931cd9f812438bd3d6ccdd857081ee1d23a8cba151586c69cd915dac6a9a42ca189ba92bcfe4b7746cb41324e2f59f3f6eea2e12465bebdb3729edca8f1d774a6ac30544256deed4b95a0cf5e838461db2d79eff0aef5cedc90199eaaea0bd982a6f8e6caf5c33c2330c7d1de8b6620e429aad1933111e3ad84f0f29303d9a277f7a1201919c55d4d99beb83bc4cfb2fe653eab85cdcf07753ed3cdf80f35a9d257dd201dfcb3989cc43ddfbaaa8e12357207e17056a66149504b7ff3b15f4197c8def1b7e57a7a49f70b1bdbf4ac45c2a885023a7e6023494358549fb0125300c801e75360ce5db6a8153c10f3fdd0ac087648219880443a26914bf35011da34e3dab44671990a0907ba0c8f12678a7009d5bdeb27d9ca8463728326b412196444e40cb924585ff5dde5a05f0f3e4d6335d9046d05f8b8bd22d6f238f292aeac91fdfa40f66be808f78002b1634e49980a4e1ae06e07d12b1f948689be0cd67b6412d617920f96fccd97ded89d2ae70d1c0c28ed44cac2fb1f79e8f94e479d38448410adab5f204cb444ecf2abf65aca6e7f28657bbe669f8b0d17de090f7820ee384d5016c0e524cbde8e4663bf6c6dad0a3240615a14a8b0964bb22bb0fdd810f4c47bfb1ec7d184dc26cc88d54096752c6700ef26adc43a17c9a1d08506c5eea0f2f3f3bd7e05a8b2a82ede12a55bff9021a2f40a00c65608dd576e7e19dc64563aace530f27ba64f77ae0bbdcb9e158b8e2297762861f9aa4293ef764e5398918e3a4bae6b916f1280ab5ccac4870bd0fc8d46d0ad32c06505c85ffa9689e39b033a39dd6c78176b7326aa657625077032d2e43117e83e29db8626a5e5a0c0f24fa4fbcda766b52a238fab1720df50f423fe624628786fd3926a2d773ce2d271becd442055ac36e2c668a2a26ba03cf3d9f5ddbf02898cc3311a58e9236974a3a1a0539920f5aac23fd95dac356a5975d1dd3b6ae200bb540f1b3019ca641fa1eb4d9c364086e459cce1abebb1211cc29208f8772eba2d0d6bf087cdb1b8811ae57c91a8a7400b10d0f6cc457484298aec4e0a081380cab65b40cd6d15c238e4bc2454e802f4ba3d8e31f51e103ea62d1b834a810d7e11562d836fc1cf435598272618de8ecf80097882ef752d9fc1a0a494b9f908f97e90fbe2c53159744522d1f200768a698276b7be72e31664a15dd13e9278c8c12be9538b0cd432ee85c34ee623a49c3afe858618b09fe54c5aa490141acdbb2913b97983b99d86b5a189e2e7335e04e9befa6e85fb7c3faa9ff69049f503c229b9284c99320d9f2070e1af78207c342059e20cb5234ac7f39650eb1b446e1b96e7853a105c1b388a36a45dc47bcbf5c3f88ece710e5c45325e63b08bf574f905ef3bbfc50dc437f59628efaf354b03f08abac8ddcc48753c457566e1da8864a462a6f90d72b1f895703b926684c18fa47f689f03f082ad4d2e578756661ca6bb341bc26d965cf09dde1b93a8d87977688c1f1a933cc3786691544a68e60a92156440c651d88a055c7b86fa38770da5e54e229422ff402aa51a7ad9992dfb2b31d89c94c0b1aaaada36663deac16122feabf5c77571209f43f44607cc77598323bebeaee5f3505bb8bf42f5df85e023ce4067ca49722b4b960d641c1519f3a2fa5c56cf82a946299651a44ed4218e39f9852968be385fcf8cb7ead284bf4890875913609f3412706c2a8d200b550f8a6c3927c40a3cbc09b04316240230ead13fc55b908875390b321607570187b1e4fc2976109cf5bc21643e2d29ee4d70751361d3f5a31aa9f8053ce96673bb16680c340ea57cd3c3be3a77f5756bb80fe98b07e263e60657044eaca95d3d3dd9180f9d00b7f38fc3fee953a37f479585b3ea0736f83ab1080293482593fa46d3ce9be7397dca9ccc85420fd3c874ac6c4d481607540ed6c323d0acf3d018e70c5e2ce3a9320617ae74497c74895a048154dd7b2846f8d7b80c5fd785c215eb4b0208a589000d4deecacd68dbf0c05d23d4fbce20a1c5c32125355d2b7715dc7fbc260aef197a91b3fdb6a634c8c75455418480db947aaa1dafd9d549c7cf971f47fb673fe6409436a35daa3ab308cb212b42fc10c4b5e4cc5ed85c6b4656fc292f53326340735b9a1ddabd92a7797e2fcbab8e1ee4325b67403b765b5ee441975adc7c59611ebd03b94f5c2400791025d12ae1e83637a8894cccf7e2f64ce64037ce1c98bd4b34324afcb04fd1514dc3113071e30e7850d1a5c713c78943d1e85edb91a948be8faeee2e524ab2781f0099a6fcaecb15eb46e305d65bf8ba8f4117d93cef1abd111ddc04c7c4bd93e96491ad2bddaea3986eba29e3c26ad875619775c9350d52bb2a4eebb71f1eb531687d76ceda0f94f98137e50175d0ca2f7906347e4ddcd4698afc550f6a13289c9ad8ff4e0354184bf300c43d8e0672f8f2c77f9414f7dec24591edd19f944ac42e667500a5e2ff12fb47ef168c23efda8bc823edd9eff05ef218572d1516b5209eefad9f076e03f58e74318ca0c6b3314b20b863fd88a4d8527227a2487588ca509d7509ac881c7dbabbbd7e4b70943263979316ea7008554caa700264b952c1a48c45b793ea0b58bd2d530b0886cf17ae09150422c44f9104ae99dfeab87c88761e6640a55e8a627d531c7dbc7ceb50f5fa8c50b39e9ab35fff93cf0821a2df2fba38b7d0375480a454c24063e90290ea3c98ea54135f48e4595937184ea63380936aaf0a681a57b4a32e59b4614f6071a4edae933c52dd5569f434b0da238d0bd09e39fb1febc2bf62aa5479343684b109a31a97dacba8ff7f23a5663ca4c688ce709ef52579ff479fe40ee4ddcd876f2a62453f69d4d5002129bbd858b36ce2eb98d6e04c2ce904a4cc2917fc1676457963f526c73d792a65486534a36a8306403569acdaf349b821786e4e5631f3ddb067d5b65e8b81756e4390344cc044756475afb24ce01acc23fc436556489dcf7fdd7ca86cc3374762aa301780ab821d008863f1844942a3af2a6a9ee322f4e79eefc0e6046fbf795a55669278a8a8b4fbb11229d008a978e4d151c95bdae67a020eaa3ff7a166a38bf856aa38ad003342697f3fe5113d7538dadfcd6e705bc80
2790f7d2c5debd75aa5c1dcf118bed76d6077702641581e3249d785df66e39d1e24a29448b02edf184b5498d2715df90723293079b54b05d803a89a72aba19d655ff9975caa1d6561aaaca72fde8e0a01e4590ced736b1b657361304dd11242c82314c7863175d171dc543eecc30197b60eb356b95a6b7fa46e92553a164c5f8b0bd29124f57c8d2c0e7509f09f1bd4ea7da0dd50d3ce9778e2bc39a62c27124954d40d3e4169e9f5f39563e53de37f0ad752f084cff7c8ee8d812fdb1bda81de1f71f5c84bd0a3a9ded92b6792a686060d246069796d9f14abffd986a10273ac860ea5f85c6cdc4b52e36c4c99279bbea7aa1d001dbb4d29762a37ce2f01e0cab1a8cb8e428da24a6aaf1a1912bb58179e7574679dada9289ab36eec19c6df708c62d3baa701eea547614a3ec54e9e7528bcb8145162dc0f19e2d87e344c67ee4369f4ce8d53c4d2dc5ef2872bf212b045fd48483d8ced6ec260a464c65fe83d5d4d0b2e4169daa4d5a0a601fe005988a69f6c9a6b006bc17ba53a2b167e496c6cbcc7418bc7744bfd38e54adcbb1dd1e468e3807c41a95e308287ff7ed64c8574642873877ff9d6b95227b244a284cd5a9af2b88850b73fb44ad6a58b5fd29c70a1cdb8b252c505b7edc78d1cacfdc73aa7289d3b1a217d0876c1bc70c62e6668d0dd1a764eda49ce144424fe9a2be51485b9559a46c5db7e42f98776c46f28294d500d5ef97c05f15453057e3099b54c877d70d3c72856f1e726f34d0f4659e7c88d5d709f4fb3a87b3cde4fa137d497cc02dfd3b94927e0d723cb131e9bc6acf6fd172ec91f04f534374a97a8e58760a590cdf9bb14c4947681c2e4032dd32e1894c6a15c25216eba1763a3f8f9a708ecc843318064de3c307a9c66cd400be30dafe2119cc836900a328c07ec5438c2175daaef9db2bbbff13e3b5afdc8f125d6849372477a60f669e8d3dde8233520643fb0b18d4bc2f61aa95434b24bb730ae2103a62681f4ace74566ed92835698c136518f7fdcef8aaaca8871a8794ad4d3f74debb1e52f3d9bfdafa50bc728d0b3e5b46316886bfef2d4c57632a78d41b6a9243cc10769f72d2fd4c695c3cf281c9c779b06e45a53e0d3d81354b434473c543ba8ace3938f56ce7b99f8d646e0927dfc61eb0ab8fa0134a557e8684965a54e1a484864ab7614a928ebdee4e28a668b9983a90f614e9aa18799bf9e36d181ad1d418d2e7f5354923a593bf0c3064a0e6cab2e9e7f3074b9a8ab91060587f60f2292859f10196e32f5f9ba1f24893056286595be7f8e0c787a7a9d520449ff714136569ece8d099db56ad2bb20fbc21aa1fdfb844ad4ddc72d0963e9a075f41ff17d4ebc53845ae9af5266c001bfc6e9cf2306bc12351b99c3eec4196a8162dc41b51e551f7119320adac0be25bbf257c588d4fc7438a9f82486d00b9bc1fbc9bd5a577e6639ecfbad0401080c01b5d20e208213440aa47a9f956a737c749b376d0b4d0da192ba03070354bc31bfbe330f5cfde838fe4c00c27f9f757972cd0feeafbfc94b67b1ef4b9070ec9f4be70570777ac67c652c91b1c2ef9a1615d7e4ff54cb29120cab7fae66b6fca74d5c24894998374b1d54cba80ab92ef3edf6cd5a535db9ebaf840e0e685dd82bd97c8e1fc706a1bb7535c6f3fa798c96e529b87cb9364ea26658270132c0d92813938f5384ad79ab2e7486dfe293f08590de2fdf278f75017991255ac3132b85648a5734f0c8cea306b497ab49a1a2eea998f3c99c4cdc36d67567a9623140af23168747e882074b2e565333a328f875bc225b0b726cddb57d87dd560857f5baadbda32529d47e74466a55da6cd3e2b5f9cc062af34c0378e1744da6ccc61696344861bcffba338c3f645445cc57d5c5bc83c2da593372356305e1425eb43dea1095e56d4591a7fecc5ca9e6dd3718b071aa90ce20b716bdcfc483ee55886f9a491475545149e94b435260033d9a753cf82b86dba893e245ff221b729ac2343f81677cc0da1604fadfada3fccf7753c3fb5d2cf36a45144c39cc95b2c75683156e557287af67ede71cc59e5a0d7eac4b2add32a7ce15435702c36e4e08771da2a97cca1ea002d6b5b69dd72cdd78e0d05e5cce90791752b9e17dcae75e5d8db0ebbda2eaa8be6853621ab8544f150606e4e082f74a66a8b409c70d72f99df3a24296a6e0f0d92a9d756e38c6059990558146c191949d6ad88d2b64225090ee6977e00f46cf7dc5748bb10adf4c83ca2cacaa00690bdeb64ca1349b3e810901b454ad31e6d78d6713b69893c06b9a589bec45f3625ddb1978f4c4c382fad31f5077e65e239b0a5cc310b0efae80ee6a0eda7cd443b2628d1393e2d859f454d26db535e096e0ce536e33ba29ca3a535407c29845d7ff4e95a39c1a6ed3ec55d0ace1dc12a36ae6ea2cf2a3e2a2ddf5f3fa6cf75632b4511fa7ecfd67004fe366c02cd3c4f058f4cae7ea90a4febf258596ed415a8e5d1b4b0d1f3fe8197724e8d3c01964fb0de9f33c5cd25d3cef1a2bae7e1bda112865458c1af1158ba39a927820fbe175838a1ce3c446d0772e3f18642dfd6047776693a65199677295e9b3d65a2ca75b56533abcce86748ca79fb047ce4df66a69a2abc4c0311ce40a26005bd7d08f54b96a6c897cdde8df3458a6d4a4eb4ed7003b28885cae61f80bee3320ce44d9d133afca889fca522a29b085da3376d23aa130ee1110d89a5eab5943a7404035b11ebc83f50584e41835280556f62f3351e4d746e87ab0aa1981aa6de44cc8a3d3fc64c56d0785f7335b5c4b4c0db6ba94163a6a317aa1764974b69844fa0560caeba06fcec1f5bbb81ec6ec3d757c8e4927b1bc3a00cf07b091f3d7f8ac243c3bb6af919ca7093e901daf1875e1e744d366e8710eab2b39f077f9d058e11e0dd39e330446df953f76d77eef009ded591c8be2f2ab2bcedab8c67c3aebc39da545d622ed6cd9b3c99456c4f6de2d17d8a55c63a7e13f4b126bd10f21809af9c59ae08de7c3b5053ead02c28d7fd0ce603ef1b07f9be963ce18a6ffc2105a8c14251cd8685d1a24793b900b93029cb015eb76e6d3f9c888a4cc9840e386620d1945d787d865ef343f83f8fd6e3acee4db1fc09d4f088c162196bafcef0728184bf0f3d0ea1a139599b5a0496f4ae83f35d542afddd0e8f5de3dbd01212bce73510d2026a52702a8ccfa5113e14c15b02eaa64ec2d794222c8fcb302ae4abdcb167af9decebba506c6b5059dd9e001bed4e95d7cbe7045dffe9ffd0d34111bb0018f8932aef59ae09ba7f583a82c29a015b26d4b9bc3d67ed5fb8257bbb4f04072694d37ad30d8ef1eca9a73e5fe2e023e82415fa75f15cbfa65da05b422b4ad554569090dc05e67a5973e4ac9828f87ce38b647c9f0a84e1d3170142bcee197c9b21148355b383e113b5c6c4f47ae59ec90b9ad9ddacec2b6619588d2c3dcc7e1fbb3d64d96655b6e4c16be431

View file

@ -0,0 +1 @@
{"stream":{"url":"https://i-arch-400.lethe399key.com/stream2/i-arch-400/01df0d24fc785e08a44241ed17dc9aef/MJTMsp1RshGTygnMNRUR2N2MSlnWXZEdMNDZzQWe5MDZzMmdZJTO1R2RWVHZDljekhkSsl1VwYnWtx2cihVT2pFVNlnT6FVNPR1a04kMJlnTUJkaO1WWzklaNFTTHV1daRUW04ERFhnWUFVP:1767971011:193.233.230.8:338a99d2e898667664ed62657ac0b65a05ed7308fe98419b3a65225ee36a7ae1/index.m3u8"}}

View file

@ -0,0 +1 @@
{"stream":{"url":"https://khdiamondcdn.asia/gs/87EU555O0I0056A?q=.mp4"}}

View file

@ -0,0 +1 @@
{"stream":{"url":"https://i-cdn-0.lethe399key.com/stream2/i-cdn-0/01df0d24fc785e08a44241ed17dc9aef/MJTMsp1RshGTygnMNRUR2N2MSlnWXZEdMNDZzQWe5MDZzMmdZJTO1R2RWVHZDljekhkSsl1VwYnWtx2cihVT290VZBjTH1kMORVR390RFRTT6lFMPRUS18EVNhnWUtWMapWQ5l1VRJjTHlUP:1767971582:193.233.230.8:3e079e35a7d560d1b37aa2a38f4b3e6cf2d6449ab480651c4c3557eda220addd/index.m3u8"}}

View file

@ -0,0 +1,9 @@
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=640x358
./360/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=858x482
./480/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720
./720/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1920x1080
./1080/index.m3u8

View file

@ -0,0 +1,9 @@
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=400000,RESOLUTION=640x358
./360/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=800000,RESOLUTION=858x482
./480/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2000000,RESOLUTION=1280x720
./720/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=3000000,RESOLUTION=1920x1080
./1080/index.m3u8

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="93058" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/yYderAvjtKnYLBxKujVpmKTVlOM.jpg');">
<div id="iframe_title">
Full Metal Jacket (1987) </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YTBhMDVhYTBlMGU4ZTI5M2Y4OTU1MGFmODk1NjYxZWQ6VUdJMkwyZHJkbVpHV1M5Nk1rZDBPV05RTW1KVlUweHlSMEpGTkRJd1N6TktUM1ZsZGxCRlptSnZWbTVVYmxwaWIyeE1aakJCTWxsa01YY3JWVE01TTJZMVZUWlVMMjR2UkU1bWFEQnliM0J3UmxGSFZYTnFWREl3U1c5cU0zcFhVMVpPTnpselpuQnZXVlZITldGMlJrUm5NbWRKUkM5eWJsRXZNRWQ0WlN0b1p6Rk5SM2hzTlc5SlUyZDZURE0zTVRGcVdWRlpOVVJTYzJKNWNXdG5kRVo1YkUxeWJrTkVRa2RyTVVkUlVGb3JabXRXVEM5WVYxRkhNVFZKT0dWNVMzQjBWV1JDVjFneE4wcENWV3B5WkhwNUwwZE5aek4zVDA0cmNFSnZXVlpwVlVobk1IRjNkR3BPVVVoc2FXTnFhSEZUYm01bmVFOU9PSEFyTDBSUFVEQm1SbXB6V21Gbk4yWm9UMFpxVjB0a1RHbEdVR2hyZWs1cGRXeFFRMmx3VjFoaVZGSlNPVmhoTkVObWMxYzNSWEpoYjFwWlpHc3ZNSGsxWmpoTGVWSldSRzF3VFZWcVUzWTVjbE42Ukc1M01uazFkV1Y1Y2todk1UaFBTMGh4V0VnemVIRlZZVGczYTFkdVJ6RTBRbE41VUdoVmVYb3daR0ZtUzNveWRFUkxRbHBDTDBwVGRWUjZNbGxHTmxWeVVtdFZZbTlxUzFoWVJtVlhWREppTjJONVJDdDVNekpXVUVsNmEwbHRXU3RzUW5aR1pWRjFXWFZNYjBSak1UZHFZME5MYjBORVpFaGtNV2hEWm04MGJrRmhSSEJ4YUV0b1NraG5jQ3R6ZEhka1NISjZiR001WmpaUlkzazRWV3RSZWtaTFMybFViRlEzT1RselJrcERTRVprUkRoSVpsSXdhR2xoYVhVMk5uZDRVa0p4VkRWbFUyMW5VMkV6U2xoMWMwVlBkVVpEWm1GVVQzWmxkek5OZFVWRGNGTkdNbGRuZURCVmRETkxjM2hLTDNsR2EwcDBXQzlZVVU4M2RXTlhjR3AzUTJaSk9HbHlhWEJKY1hKVlkwdEdlRzFUWjNRck5WZE1jMHRtTmtSak4yZHBWM3B1UldacVJIZHRSa05OVEVoc1FsZ3pkWFlyWkhwNU4xcG9ZemhzVWpSMlVTdElTM2htYTJORVZGZEJZMEU0TmpSeWFUQndkbHAyZW10SWQxY3ZjVGhRWTNGWGREVkJabmsxUVRkblVVdDZNR280TUc5RlIwNVhaVVp3ZWtkME1VZFRTRkZ4TTFkdGFWaGtaRmxHYkRSeVVuQXhhM1pEWVV0UlVWb3pkV3g1WlVjelNqWnJNR3BTYWtSdGNHeEpVa3BqZDBWR1FrSnhjSGh4UVhKM1JGQXZRV0pHY0VKQlIyMVFOV3hrY25ndk1XSTFSREk1YWxoVlQxQkpWa2xsTkd4RVVFUlNORk5GVkRGb1dsaElOMDF1TW05UFp6aFFkMjVFWW1neWJVWnpjbUpyUTBzeWJESlFUVmxHWlRCaldGaFBUMjVTZUhONWEwdElXRWxoTkRZdk1sWldhbXgzVGpoa1RVNXhkbkJZVm1GcWREZ3ZVR2RaVEVwd09UUTJjMmRuTUV0QkszcHNialpQT0RWWmFuZFZlRUl4UmpOMGRVVmFRMlpIWlhKU2RGRkpkV2hIWkUwMFVVSXlNbEZhY3psT1VtRTRWbEF6V2xwc2R6YzJTbVJGWlhSUVMwNDVhbU5WUWtFeldISXdlbVpVY25CdlUwMVJNa1JJZEZac2NYTXJZazFCY2tNMFZXZzRibE5rUjNaSlNsaDBaRzh2Y25kRE0xVlZVbGxIV0c1NlRXZHRRa0pvUm5sdlJ6bFdRMFZZV0VaRk5rOTJNRGx0TkVJM2FqVm1RMU5MZEVKR1NGbFhSREpXZDJORWNERjZRMlZaYWpsVmRVSjFkMWhHVm1NM00waExSSFJKYjFwUVpGaDJOR05vVWtsVE1VZHJaMWRzVTNrNE1HSkZia01yVlVkalRtSmlSMUZUUkhoaEwxUXJaVU54WTBkR2VuVldZakpqWkdSaGFXOU5OVVpHVkZONVUzbFFZVkpWUlRCQ1QwVm1ZejA9',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="2085059_4x2" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/dg3OindVAGZBjlT3xYKqIAdukPL.jpg');">
<div id="iframe_title">
Black Mirror (2011) S04E02 </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YjA1NWVjMTUxNjM1ODVmMjg4NDE5YmJjMzc5N2IwYjk6YkZGMlRVdFhNWEZ4YXpSaVFUUnZOMDE2YzI1emFYaHRTVGhXVjJoVFNTOVhWSGw1WmpoNmJURnpNREpoZEZaM2JXOWlSWEJEWWxCNWVYcHJaaTlSUTNCWVREWjVOVk41UzNWM1dGaFpaMU0zZERCWE9VZHNhR2xIYmtFelJqZ3ZjbXQ2Y1U1NVFWQmpWSGxqTm1sWVFXOUlNRW93VjBKNFltZEZValZWTm5OT1pIWktTV2RpZDFFemIydzRibUl5UzBGR1JGSmxhbWxqUmpsamNIZERLM1JMTVhwSVpVVnpUVzVrUW5ZM2FHMTRWVk0wZUVOb01HbG5iRzkzV2pGTkwxQXhMMU5vWm13MVMyMVJZV2xEWVZwNmNGaFJNakJhVWpjM1pVbGFXVkU0UzBZMVpVMXFibXBDWjIxVFJWWm1kemROZVZCdGNWTkxlRnB0U1c0eloySTJRV056VVVzd2JFNXdVa00xTW5sS1ozWjRPVE5SWmt3NGVrcDFhbTlNV0c0MmNGcHlUMWR0UkVwV1ZqSmtaVUpDZFhCVVkwOTJjVTVXY3pJMGJUQTBaa1JOZFdaTE0zSmxlVnBsZERkUGQxWnVUeTh6Vm5KWGJtOXNUVWhHVTJ0UmR6VXdPWEZoTm01dmNIQmFUR3hHU1hKVVVHZG1lbXRPWWtKbVpGbDRRMnhXT1hSWFJHeFZjekV4Y3pKaE9YTkhiVzlRYUZCSldIRlhhRGhhYWxoTU1Vb3ZTWGRTVW5wNGNVWlRkSGRYZEhCek5ta3ZPR2hCTVVWQmVVdFlWR2hKVmpZdk4weHRWeXR5U1dWSVdtTkJkMVl6VlZsV2FIQnBRak5tVkZnelRUWXhNREZrVEZRcmNVMWFORVpRVjFaTU5qZFpZbVpHV2xWSE5XTlVjakZTVEZaWlUwNHpXbkJsWnpoMVFYQlNZM0ZGUVVVNGEyNUZOREpzTVRRdk9HZHdjeXN2Ym05VVprZGhjR2hDWVhaNmR6aERjVFZKV2taQ1dqUmlWR3BMUkhaMmRUWmhSblpJVW5ad2JIQndVVGt2UWtoSGFrZHlUQzkyTmxsVlJHdHpZVXMyZGtGaFNVTlhWRmRuTVVacVVXaFlVVmhTVXlzMVpFRkhNRGRPZVVkdmNXZHpSRzVPYlZCMlRWQXJSbFpXVEhCV1UwazBOMU5CU3l0SmVYaERVV05SVTJwYWRVc3dhelpWUWpRMllXNUtWVFZMY1hobFFWRnphRk5aUTA1clIyRTFaSGt6YlVKeldsQjRTamxKZWxkekwwdzFTMDh2V2xGS0wxRkhZVXBuUkVRcmMxRXlUalJKY0RkNlFtVTNWSE4zV1dSTkwyZDFaVEJzVmpkalMwcEZORVZoYzJSWWVrNVdSVXRDTXpZM00wWXJiVnBVZEVWWk1rdEJjM1pvTmpGbGFuRjRhaTlKV21zckx6VktVbVl2T1dac1MzcFhjbGQxVFM5Q1NGcFROSFp5ZVZadVltUnRablZrUjFGamNERTJjamhOYjNVMldEa3JaRzQxVFZndmRuY3dMeXRqYkhscVFVNUVjMUEyT0RCR1ZWSm5kbXhXY0ZvM01tOW5hamt4TldzeFRtaGpWMmhHVFVkd1ltOXhXWEF3Y0U5blpITndaV2xVVDNZelJXRXhaMWxGUVdsMmVsTjRiRXhuZGtOR2FVTk1SbVF3VDFVMFZrMDJkVmwyUzJGdVJtaDBiV0pwU1ZaNmJYY3ZORFJQZVVvM2JscFhlalF3TUhnM2FFaENkRVZqVWtSRGEySXdaMVZKVUdkQ1pWZ3pOeTh3T1ZoSVFqTjFSVUUyTDFFcldqbEZSRlF5UkVOQlVUSlpabEZxUzNkME5XdG5NVTEyYzBsVFNrMTRaMFp5VkVJelJXWkNhR1ZtYTAweVZtMXJZVGRpVnpsME9ETjVjMlJGUVZGNWN5dENObEpXU0RGVlNtTlBVazl1YTBsRFptWk1ORGRVTTNwaWQxbzRlbTFOTlhCMWJrdzRWMFpJUVZOQmFXNURjMmxETkZNeWF6UkxVME4xZFhGUGRubzNORTVYUW1sU1IxVnNRMjFrTUdOdFExcE1jWEZ6Umk5blIwNDFkMVZITldSQk5HdG1SV3RWWlU0MGVFSlVSa056VDBWcmQwdHNaelpUVkE9PQ--',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=884887,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x346,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/e2f2579229bebcfbb0eafde12cbc1bf9/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2911865,CODECS="mp4a.40.2,avc1.42c01f",RESOLUTION=1280x694,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/0e258eeccefba231686dc455bae2c1be/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5301648,CODECS="mp4a.40.2,avc1.42c028",RESOLUTION=1920x1040,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/f4afc016a800ba375016f4bc9771890f/index.m3u8

View file

@ -0,0 +1,6 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=833322,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x358,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/f2a0a2e3ac935bed168e40c6c28105d7/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2728709,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x714,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/ea18a1816b821e1ba4ee5d4a76b0b7cf/index.m3u8

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