Compare commits
17 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
720c9bb651 | ||
|
|
f05cf5040c | ||
|
|
65191cfc8d | ||
|
|
bd2dec0392 | ||
|
|
5f9fbbb30d | ||
|
|
43f04455f1 | ||
|
|
43637a2ff4 | ||
|
|
b87bf62362 | ||
|
|
89e57d48d9 | ||
|
|
ad47aecea3 | ||
|
|
f192fd0b75 | ||
|
|
557efd2079 | ||
|
|
373c6c1d4c | ||
|
|
4c7da5dc20 | ||
|
|
bed5b00300 | ||
|
|
e36d460d57 | ||
|
|
5cffa112ba |
63 changed files with 31545 additions and 436 deletions
|
|
@ -1,3 +1,3 @@
|
||||||
{
|
{
|
||||||
".": "0.66.16"
|
".": "0.69.1"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
52
CHANGELOG.md
52
CHANGELOG.md
|
|
@ -1,5 +1,57 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [0.69.1](https://github.com/webstreamr/webstreamr/compare/v0.69.0...v0.69.1) (2026-03-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **source:** exclude ad videos in HDHub4u ([65191cf](https://github.com/webstreamr/webstreamr/commit/65191cfc8dad8f58b44e2c355b9adc600b99b2bf))
|
||||||
|
* **source:** remove stray console.log ([bd2dec0](https://github.com/webstreamr/webstreamr/commit/bd2dec03925d8b7760044dbfaaaec00b48f7cb66))
|
||||||
|
|
||||||
|
## [0.69.0](https://github.com/webstreamr/webstreamr/compare/v0.68.0...v0.69.0) (2026-03-27)
|
||||||
|
|
||||||
|
|
||||||
|
### Miscellaneous Chores
|
||||||
|
|
||||||
|
* **deps:** update dependency axios to v1.14.0 ([#800](https://github.com/webstreamr/webstreamr/issues/800)) ([ad47aec](https://github.com/webstreamr/webstreamr/commit/ad47aecea3f3d34700add442e023bd54f73451c8))
|
||||||
|
* **extractor:** detect languages from HubCloud title ([89e57d4](https://github.com/webstreamr/webstreamr/commit/89e57d48d95a6f8dd6446048ae72de51dd481f37))
|
||||||
|
* **extractor:** detect resolution from HubCloud title ([f192fd0](https://github.com/webstreamr/webstreamr/commit/f192fd0b7523094746148989e0cf06717db8152e))
|
||||||
|
* remove duplicate URLs ([b87bf62](https://github.com/webstreamr/webstreamr/commit/b87bf62362f3cd6b3ea055ecdaec44511bf2ec84))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **source:** add HDHub4u ([43f0445](https://github.com/webstreamr/webstreamr/commit/43f04455f17063e459df7e7a34af44de36afd6fc))
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* **extractor:** don't fail for HubDrive if HubCloud link is missing ([557efd2](https://github.com/webstreamr/webstreamr/commit/557efd207945ea7ada0bcaf475b0b9b9d60d8f5b))
|
||||||
|
|
||||||
|
|
||||||
|
### Code Refactoring
|
||||||
|
|
||||||
|
* **source:** extract hd hub link redirect resolver ([43637a2](https://github.com/webstreamr/webstreamr/commit/43637a2ff4280db208ec9c94c0a5d52a49dc6672))
|
||||||
|
|
||||||
|
## [0.68.0](https://github.com/webstreamr/webstreamr/compare/v0.67.0...v0.68.0) (2026-03-26)
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* exclude resolution config options ([4c7da5d](https://github.com/webstreamr/webstreamr/commit/4c7da5dc208a1854a17aa43a26553fb6c83e7287))
|
||||||
|
|
||||||
|
## [0.67.0](https://github.com/webstreamr/webstreamr/compare/v0.66.16...v0.67.0) (2026-03-25)
|
||||||
|
|
||||||
|
|
||||||
|
### Miscellaneous Chores
|
||||||
|
|
||||||
|
* **deps:** update dependency typescript-eslint to v8.57.2 ([#795](https://github.com/webstreamr/webstreamr/issues/795)) ([5cffa11](https://github.com/webstreamr/webstreamr/commit/5cffa112bac29ee4eb18958f5345f0a3ae68ff30))
|
||||||
|
|
||||||
|
|
||||||
|
### Features
|
||||||
|
|
||||||
|
* **extractor:** support FSLv2 server in HubCloud ([e36d460](https://github.com/webstreamr/webstreamr/commit/e36d460d57bdc071fc111b1459ea26184a3233e3))
|
||||||
|
|
||||||
## [0.66.16](https://github.com/webstreamr/webstreamr/compare/v0.66.15...v0.66.16) (2026-03-23)
|
## [0.66.16](https://github.com/webstreamr/webstreamr/compare/v0.66.15...v0.66.16) (2026-03-23)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,7 @@ A public instance is available at https://webstreamr.hayd.uk. Hosting infrastruc
|
||||||
|
|
||||||
## Known issues / limitations
|
## 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
|
- 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
|
- 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.
|
- 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.
|
||||||
|
|
|
||||||
145
package-lock.json
generated
145
package-lock.json
generated
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"name": "webstreamr",
|
"name": "webstreamr",
|
||||||
"version": "0.66.16",
|
"version": "0.69.1",
|
||||||
"lockfileVersion": 3,
|
"lockfileVersion": 3,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "webstreamr",
|
"name": "webstreamr",
|
||||||
"version": "0.66.16",
|
"version": "0.69.1",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@keyv/sqlite": "^4.0.5",
|
"@keyv/sqlite": "^4.0.5",
|
||||||
|
|
@ -2043,17 +2043,17 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/eslint-plugin": {
|
"node_modules/@typescript-eslint/eslint-plugin": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.57.2.tgz",
|
||||||
"integrity": "sha512-Gn3aqnvNl4NGc6x3/Bqk1AOn0thyTU9bqDRhiRnUWezgvr2OnhYCWCgC8zXXRVqBsIL1pSDt7T9nJUe0oM0kDQ==",
|
"integrity": "sha512-NZZgp0Fm2IkD+La5PR81sd+g+8oS6JwJje+aRWsDocxHkjyRw0J5L5ZTlN3LI1LlOcGL7ph3eaIUmTXMIjLk0w==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/regexpp": "^4.12.2",
|
"@eslint-community/regexpp": "^4.12.2",
|
||||||
"@typescript-eslint/scope-manager": "8.57.1",
|
"@typescript-eslint/scope-manager": "8.57.2",
|
||||||
"@typescript-eslint/type-utils": "8.57.1",
|
"@typescript-eslint/type-utils": "8.57.2",
|
||||||
"@typescript-eslint/utils": "8.57.1",
|
"@typescript-eslint/utils": "8.57.2",
|
||||||
"@typescript-eslint/visitor-keys": "8.57.1",
|
"@typescript-eslint/visitor-keys": "8.57.2",
|
||||||
"ignore": "^7.0.5",
|
"ignore": "^7.0.5",
|
||||||
"natural-compare": "^1.4.0",
|
"natural-compare": "^1.4.0",
|
||||||
"ts-api-utils": "^2.4.0"
|
"ts-api-utils": "^2.4.0"
|
||||||
|
|
@ -2066,7 +2066,7 @@
|
||||||
"url": "https://opencollective.com/typescript-eslint"
|
"url": "https://opencollective.com/typescript-eslint"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
"@typescript-eslint/parser": "^8.57.1",
|
"@typescript-eslint/parser": "^8.57.2",
|
||||||
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
|
"eslint": "^8.57.0 || ^9.0.0 || ^10.0.0",
|
||||||
"typescript": ">=4.8.4 <6.0.0"
|
"typescript": ">=4.8.4 <6.0.0"
|
||||||
}
|
}
|
||||||
|
|
@ -2082,16 +2082,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/parser": {
|
"node_modules/@typescript-eslint/parser": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.57.2.tgz",
|
||||||
"integrity": "sha512-k4eNDan0EIMTT/dUKc/g+rsJ6wcHYhNPdY19VoX/EOtaAG8DLtKCykhrUnuHPYvinn5jhAPgD2Qw9hXBwrahsw==",
|
"integrity": "sha512-30ScMRHIAD33JJQkgfGW1t8CURZtjc2JpTrq5n2HFhOefbAhb7ucc7xJwdWcrEtqUIYJ73Nybpsggii6GtAHjA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.57.1",
|
"@typescript-eslint/scope-manager": "8.57.2",
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"@typescript-eslint/typescript-estree": "8.57.1",
|
"@typescript-eslint/typescript-estree": "8.57.2",
|
||||||
"@typescript-eslint/visitor-keys": "8.57.1",
|
"@typescript-eslint/visitor-keys": "8.57.2",
|
||||||
"debug": "^4.4.3"
|
"debug": "^4.4.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -2107,14 +2107,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/project-service": {
|
"node_modules/@typescript-eslint/project-service": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.57.2.tgz",
|
||||||
"integrity": "sha512-vx1F37BRO1OftsYlmG9xay1TqnjNVlqALymwWVuYTdo18XuKxtBpCj1QlzNIEHlvlB27osvXFWptYiEWsVdYsg==",
|
"integrity": "sha512-FuH0wipFywXRTHf+bTTjNyuNQQsQC3qh/dYzaM4I4W0jrCqjCVuUh99+xd9KamUfmCGPvbO8NDngo/vsnNVqgw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/tsconfig-utils": "^8.57.1",
|
"@typescript-eslint/tsconfig-utils": "^8.57.2",
|
||||||
"@typescript-eslint/types": "^8.57.1",
|
"@typescript-eslint/types": "^8.57.2",
|
||||||
"debug": "^4.4.3"
|
"debug": "^4.4.3"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -2129,14 +2129,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/scope-manager": {
|
"node_modules/@typescript-eslint/scope-manager": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.57.2.tgz",
|
||||||
"integrity": "sha512-hs/QcpCwlwT2L5S+3fT6gp0PabyGk4Q0Rv2doJXA0435/OpnSR3VRgvrp8Xdoc3UAYSg9cyUjTeFXZEPg/3OKg==",
|
"integrity": "sha512-snZKH+W4WbWkrBqj4gUNRIGb/jipDW3qMqVJ4C9rzdFc+wLwruxk+2a5D+uoFcKPAqyqEnSb4l2ULuZf95eSkw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"@typescript-eslint/visitor-keys": "8.57.1"
|
"@typescript-eslint/visitor-keys": "8.57.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
|
|
@ -2147,9 +2147,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/tsconfig-utils": {
|
"node_modules/@typescript-eslint/tsconfig-utils": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.57.2.tgz",
|
||||||
"integrity": "sha512-0lgOZB8cl19fHO4eI46YUx2EceQqhgkPSuCGLlGi79L2jwYY1cxeYc1Nae8Aw1xjgW3PKVDLlr3YJ6Bxx8HkWg==",
|
"integrity": "sha512-3Lm5DSM+DCowsUOJC+YqHHnKEfFh5CoGkj5Z31NQSNF4l5wdOwqGn99wmwN/LImhfY3KJnmordBq/4+VDe2eKw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -2164,15 +2164,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/type-utils": {
|
"node_modules/@typescript-eslint/type-utils": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.57.2.tgz",
|
||||||
"integrity": "sha512-+Bwwm0ScukFdyoJsh2u6pp4S9ktegF98pYUU0hkphOOqdMB+1sNQhIz8y5E9+4pOioZijrkfNO/HUJVAFFfPKA==",
|
"integrity": "sha512-Co6ZCShm6kIbAM/s+oYVpKFfW7LBc6FXoPXjTRQ449PPNBY8U0KZXuevz5IFuuUj2H9ss40atTaf9dlGLzbWZg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"@typescript-eslint/typescript-estree": "8.57.1",
|
"@typescript-eslint/typescript-estree": "8.57.2",
|
||||||
"@typescript-eslint/utils": "8.57.1",
|
"@typescript-eslint/utils": "8.57.2",
|
||||||
"debug": "^4.4.3",
|
"debug": "^4.4.3",
|
||||||
"ts-api-utils": "^2.4.0"
|
"ts-api-utils": "^2.4.0"
|
||||||
},
|
},
|
||||||
|
|
@ -2189,9 +2189,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/types": {
|
"node_modules/@typescript-eslint/types": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.57.2.tgz",
|
||||||
"integrity": "sha512-S29BOBPJSFUiblEl6RzPPjJt6w25A6XsBqRVDt53tA/tlL8q7ceQNZHTjPeONt/3S7KRI4quk+yP9jK2WjBiPQ==",
|
"integrity": "sha512-/iZM6FnM4tnx9csuTxspMW4BOSegshwX5oBDznJ7S4WggL7Vczz5d2W11ecc4vRrQMQHXRSxzrCsyG5EsPPTbA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -2203,16 +2203,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/typescript-estree": {
|
"node_modules/@typescript-eslint/typescript-estree": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.57.2.tgz",
|
||||||
"integrity": "sha512-ybe2hS9G6pXpqGtPli9Gx9quNV0TWLOmh58ADlmZe9DguLq0tiAKVjirSbtM1szG6+QH6rVXyU6GTLQbWnMY+g==",
|
"integrity": "sha512-2MKM+I6g8tJxfSmFKOnHv2t8Sk3T6rF20A1Puk0svLK+uVapDZB/4pfAeB7nE83uAZrU6OxW+HmOd5wHVdXwXA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/project-service": "8.57.1",
|
"@typescript-eslint/project-service": "8.57.2",
|
||||||
"@typescript-eslint/tsconfig-utils": "8.57.1",
|
"@typescript-eslint/tsconfig-utils": "8.57.2",
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"@typescript-eslint/visitor-keys": "8.57.1",
|
"@typescript-eslint/visitor-keys": "8.57.2",
|
||||||
"debug": "^4.4.3",
|
"debug": "^4.4.3",
|
||||||
"minimatch": "^10.2.2",
|
"minimatch": "^10.2.2",
|
||||||
"semver": "^7.7.3",
|
"semver": "^7.7.3",
|
||||||
|
|
@ -2244,16 +2244,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/utils": {
|
"node_modules/@typescript-eslint/utils": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.57.2.tgz",
|
||||||
"integrity": "sha512-XUNSJ/lEVFttPMMoDVA2r2bwrl8/oPx8cURtczkSEswY5T3AeLmCy+EKWQNdL4u0MmAHOjcWrqJp2cdvgjn8dQ==",
|
"integrity": "sha512-krRIbvPK1ju1WBKIefiX+bngPs+odIQUtR7kymzPfo1POVw3jlF+nLkmexdSSd4UCbDcQn+wMBATOOmpBbqgKg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.9.1",
|
"@eslint-community/eslint-utils": "^4.9.1",
|
||||||
"@typescript-eslint/scope-manager": "8.57.1",
|
"@typescript-eslint/scope-manager": "8.57.2",
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"@typescript-eslint/typescript-estree": "8.57.1"
|
"@typescript-eslint/typescript-estree": "8.57.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
|
|
@ -2268,13 +2268,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@typescript-eslint/visitor-keys": {
|
"node_modules/@typescript-eslint/visitor-keys": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.57.2.tgz",
|
||||||
"integrity": "sha512-YWnmJkXbofiz9KbnbbwuA2rpGkFPLbAIetcCNO6mJ8gdhdZ/v7WDXsoGFAJuM6ikUFKTlSQnjWnVO4ux+UzS6A==",
|
"integrity": "sha512-zhahknjobV2FiD6Ee9iLbS7OV9zi10rG26odsQdfBO/hjSzUQbkIYgda+iNKK1zNiW2ey+Lf8MU5btN17V3dUw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/types": "8.57.1",
|
"@typescript-eslint/types": "8.57.2",
|
||||||
"eslint-visitor-keys": "^5.0.0"
|
"eslint-visitor-keys": "^5.0.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
|
|
@ -2961,14 +2961,14 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "1.13.6",
|
"version": "1.14.0",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-1.13.6.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-1.14.0.tgz",
|
||||||
"integrity": "sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==",
|
"integrity": "sha512-3Y8yrqLSwjuzpXuZ0oIYZ/XGgLwUIBU3uLvbcpb0pidD9ctpShJd43KSlEEkVQg6DS0G9NKyzOvBfUtDKEyHvQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.11",
|
"follow-redirects": "^1.15.11",
|
||||||
"form-data": "^4.0.5",
|
"form-data": "^4.0.5",
|
||||||
"proxy-from-env": "^1.1.0"
|
"proxy-from-env": "^2.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/axios-cache-interceptor": {
|
"node_modules/axios-cache-interceptor": {
|
||||||
|
|
@ -9197,10 +9197,13 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/proxy-from-env": {
|
"node_modules/proxy-from-env": {
|
||||||
"version": "1.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz",
|
||||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
"integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"node_modules/pstree.remy": {
|
"node_modules/pstree.remy": {
|
||||||
"version": "1.1.8",
|
"version": "1.1.8",
|
||||||
|
|
@ -11012,16 +11015,16 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/typescript-eslint": {
|
"node_modules/typescript-eslint": {
|
||||||
"version": "8.57.1",
|
"version": "8.57.2",
|
||||||
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.1.tgz",
|
"resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.57.2.tgz",
|
||||||
"integrity": "sha512-fLvZWf+cAGw3tqMCYzGIU6yR8K+Y9NT2z23RwOjlNFF2HwSB3KhdEFI5lSBv8tNmFkkBShSjsCjzx1vahZfISA==",
|
"integrity": "sha512-VEPQ0iPgWO/sBaZOU1xo4nuNdODVOajPnTIbog2GKYr31nIlZ0fWPoCQgGfF3ETyBl1vn63F/p50Um9Z4J8O8A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/eslint-plugin": "8.57.1",
|
"@typescript-eslint/eslint-plugin": "8.57.2",
|
||||||
"@typescript-eslint/parser": "8.57.1",
|
"@typescript-eslint/parser": "8.57.2",
|
||||||
"@typescript-eslint/typescript-estree": "8.57.1",
|
"@typescript-eslint/typescript-estree": "8.57.2",
|
||||||
"@typescript-eslint/utils": "8.57.1"
|
"@typescript-eslint/utils": "8.57.2"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
"node": "^18.18.0 || ^20.9.0 || >=21.1.0"
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
{
|
{
|
||||||
"name": "webstreamr",
|
"name": "webstreamr",
|
||||||
"description": "Provides HTTP URLs from streaming websites.",
|
"description": "Provides HTTP URLs from streaming websites.",
|
||||||
"version": "0.66.16",
|
"version": "0.69.1",
|
||||||
"type": "commonjs",
|
"type": "commonjs",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"analyse": "tsc --noEmit --project ./tsconfig.dev.json",
|
"analyse": "tsc --noEmit --project ./tsconfig.dev.json",
|
||||||
|
|
|
||||||
|
|
@ -21,4 +21,8 @@ describe('HubCloud', () => {
|
||||||
test('handle dark 2017 s03e08', async () => {
|
test('handle dark 2017 s03e08', async () => {
|
||||||
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot();
|
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.one/drive/nknlofk8snfnknh'))).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('handle goat 2026', async () => {
|
||||||
|
expect(await extractorRegistry.handle(ctx, new URL('https://hubcloud.foo/drive/p94k4dccjwxjcx4'))).toMatchSnapshot();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import bytes from 'bytes';
|
import bytes from 'bytes';
|
||||||
import * as cheerio from 'cheerio';
|
import * as cheerio from 'cheerio';
|
||||||
import { Context, Format, InternalUrlResult, Meta } from '../types';
|
import { Context, Format, InternalUrlResult, Meta } from '../types';
|
||||||
|
import { findCountryCodes, findHeight } from '../utils';
|
||||||
import { Extractor } from './Extractor';
|
import { Extractor } from './Extractor';
|
||||||
|
|
||||||
export class HubCloud extends Extractor {
|
export class HubCloud extends Extractor {
|
||||||
|
|
@ -25,6 +26,10 @@ export class HubCloud extends Extractor {
|
||||||
const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } });
|
const linksHtml = await this.fetcher.text(ctx, new URL(redirectUrlMatch[1] as string), { headers: { Referer: url.href } });
|
||||||
const $ = cheerio.load(linksHtml);
|
const $ = cheerio.load(linksHtml);
|
||||||
|
|
||||||
|
const title = $('title').text().trim();
|
||||||
|
const countryCodes = [...new Set([...meta.countryCodes ?? [], ...findCountryCodes(title)])];
|
||||||
|
const height = meta.height ?? findHeight(title);
|
||||||
|
|
||||||
return Promise.all([
|
return Promise.all([
|
||||||
...$('a')
|
...$('a')
|
||||||
.filter((_i, el) => {
|
.filter((_i, el) => {
|
||||||
|
|
@ -42,7 +47,31 @@ export class HubCloud extends Extractor {
|
||||||
...meta,
|
...meta,
|
||||||
bytes: bytes.parse($('#size').text()) as number,
|
bytes: bytes.parse($('#size').text()) as number,
|
||||||
extractorId: `${this.id}_fsl`,
|
extractorId: `${this.id}_fsl`,
|
||||||
title: $('title').text().trim(),
|
countryCodes,
|
||||||
|
height,
|
||||||
|
title,
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}).toArray(),
|
||||||
|
...$('a')
|
||||||
|
.filter((_i, el) => {
|
||||||
|
const text = $(el).text();
|
||||||
|
|
||||||
|
return text.includes('FSLv2');
|
||||||
|
})
|
||||||
|
.map((_i, el) => {
|
||||||
|
const url = new URL($(el).attr('href') as string);
|
||||||
|
return {
|
||||||
|
url,
|
||||||
|
format: Format.unknown,
|
||||||
|
label: `${this.label} (FSLv2)`,
|
||||||
|
meta: {
|
||||||
|
...meta,
|
||||||
|
bytes: bytes.parse($('#size').text()) as number,
|
||||||
|
extractorId: `${this.id}_fslv2`,
|
||||||
|
countryCodes,
|
||||||
|
height,
|
||||||
|
title,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}).toArray(),
|
}).toArray(),
|
||||||
|
|
@ -61,7 +90,9 @@ export class HubCloud extends Extractor {
|
||||||
...meta,
|
...meta,
|
||||||
bytes: bytes.parse($('#size').text()) as number,
|
bytes: bytes.parse($('#size').text()) as number,
|
||||||
extractorId: `${this.id}_pixelserver`,
|
extractorId: `${this.id}_pixelserver`,
|
||||||
title: $('title').text().trim(),
|
countryCodes,
|
||||||
|
height,
|
||||||
|
title,
|
||||||
},
|
},
|
||||||
requestHeaders: { Referer: userUrl.href },
|
requestHeaders: { Referer: userUrl.href },
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -22,4 +22,8 @@ describe('HubDrive', () => {
|
||||||
test('handle avatar', async () => {
|
test('handle avatar', async () => {
|
||||||
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
|
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('handle missing hubcloud', async () => {
|
||||||
|
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/2243124026'))).toMatchSnapshot();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -31,8 +31,10 @@ export class HubDrive extends Extractor {
|
||||||
const html = await this.fetcher.text(ctx, url, { headers });
|
const html = await this.fetcher.text(ctx, url, { headers });
|
||||||
const $ = cheerio.load(html);
|
const $ = cheerio.load(html);
|
||||||
|
|
||||||
const hubCloudUrl = new URL($('a:contains("HubCloud")').attr('href') as string);
|
const hubCloudUrl = $('a:contains("HubCloud")')
|
||||||
|
.map((_i, el) => new URL($(el).attr('href') as string))
|
||||||
|
.get(0);
|
||||||
|
|
||||||
return this.hubCloud.extract(ctx, hubCloudUrl, meta);
|
return hubCloudUrl ? this.hubCloud.extract(ctx, hubCloudUrl, meta) : [];
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
<head>
|
<head>
|
||||||
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
|
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const fsl = document.getElementById('s3');
|
|
||||||
if (fsl) fsl.href += '_1' + new Date().getMinutes();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="ad-container"></div>
|
<div class="ad-container"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -201,7 +192,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
<a href="https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
||||||
<script>
|
<script>
|
||||||
const fsl = document.getElementById('fsl');
|
const fsl = document.getElementById('fsl');
|
||||||
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
||||||
|
|
@ -213,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pixel.hubcdn.fans/?id=cf9da6de5b5cc1ca5b3e2520b5acf717edf501be7d93b65e393737c54cc02414e98b792baef67306766e1ada227050e941565d787d593d01503ab42aa92cc97a47e47ddd48df7d80a8e8c69d566d8d71fb824057bb75356c67cd624ebbd1497f::e0be1d5c31c2e9e9bce4002ad9cce30a" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
<a href="https://pixel.hubcdn.fans/?id=5c7253dc7782ea14f891ed9f4c4d7f7ee43284d5e72e6ff401de6f1906046db7713b6d892a040a4b3dd31c9f47eee611a17924f224fc27dd70a921d4e9025c6b7d8b937e11b44e737bd4d5cfd203e361f77a8496dd75025ad8ce3e200905ef3f::853f8b4709e1acb8413ec14270adf205" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
||||||
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
||||||
|
|
||||||
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
||||||
|
|
@ -227,6 +218,11 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://hidden-boat-e87c.hivegic619569.workers.dev/1397962425/53eaea70751039409adff7a1b54377f9aa8e590cd610a6452c849a7cbd2e40af66e667588bada714c63a9cf5360712f266b304e379bfde1d12c46aa2ccedf6eb::6170837909b2ffc3fc7f892bc959bd7e/Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" download="Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #6f42c1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [PDL Server]</a>
|
||||||
|
<script>
|
||||||
|
fetch('https://ping.rojgaartakkar.com/bmRFb0YweUVYZ1QvZys0OTRsNk53T2JMRG13QWRxYW5YcWYxYzNHYjhHZz0=');
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -253,7 +249,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
if(isAndroid()){
|
if(isAndroid()){
|
||||||
android_launch.classList.remove("d-none");
|
android_launch.classList.remove("d-none");
|
||||||
android_launch.addEventListener('click', ()=>{
|
android_launch.addEventListener('click', ()=>{
|
||||||
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445',scheme: 'https',type: 'video/x-matrosk',
|
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
|
||||||
});anchor.click();
|
});anchor.click();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -319,6 +315,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
|
||||||
<br><br>
|
<br><br>
|
||||||
</div>
|
</div>
|
||||||
Msc
|
Msc
|
||||||
|
|
||||||
|
<video autoplay muted playsinline preload="metadata" hidden>
|
||||||
|
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
||||||
|
|
@ -330,6 +330,7 @@ Msc
|
||||||
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
</html><script>
|
</html><script>
|
||||||
window.sessionStorage.setItem('xl',window.location.href)
|
window.sessionStorage.setItem('xl',window.location.href)
|
||||||
|
|
@ -345,38 +346,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
|
||||||
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
||||||
<!--</script>-->
|
<!--</script>-->
|
||||||
|
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
|
||||||
|
|
||||||
<script>
|
|
||||||
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script data-cfasync="false" type="text/javascript" id="clever-core">
|
|
||||||
/* <![CDATA[ */
|
|
||||||
(function (document, window) {
|
|
||||||
var a, c = document.createElement("script"), f = window.frameElement;
|
|
||||||
|
|
||||||
c.id = "CleverCoreLoader98023";
|
|
||||||
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
|
|
||||||
|
|
||||||
c.async = !0;
|
|
||||||
c.type = "text/javascript";
|
|
||||||
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
|
|
||||||
c.setAttribute("data-callback", "put-your-callback-function-here");
|
|
||||||
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
|
|
||||||
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
|
|
||||||
|
|
||||||
try {
|
|
||||||
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
|
|
||||||
} catch (e) {
|
|
||||||
a = !1;
|
|
||||||
}
|
|
||||||
|
|
||||||
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
|
|
||||||
a.parentNode.insertBefore(c, a);
|
|
||||||
})(document, window);
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
||||||
|
|
@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
<head>
|
<head>
|
||||||
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
|
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const fsl = document.getElementById('s3');
|
|
||||||
if (fsl) fsl.href += '_1' + new Date().getMinutes();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="ad-container"></div>
|
<div class="ad-container"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -201,7 +192,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
<a href="https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
||||||
<script>
|
<script>
|
||||||
const fsl = document.getElementById('fsl');
|
const fsl = document.getElementById('fsl');
|
||||||
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
||||||
|
|
@ -213,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pixel.hubcdn.fans/?id=93cbf9a8a64bd73e509803a9c1a42d3ca3c1b5e6eedf0306d86e7862fe38d6450d7165aa485b86286f5e95151d3af31e89350676e5cca8b54f56737388e81172998605a935e8c1828f026797bc158ff23921f09201c464a9d4a29c75f5e12026::43a5d16883d6f6cd09d2487e56f0836d" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
<a href="https://pixel.hubcdn.fans/?id=fb8c076011baaf9fd0cd6d349d86da6d8bf9c1a241cdcfb8ec27e07979b905608e125fadd030f801fa79752521d434885fe414c584c60919d282af9562b752b7fbaaad7784bd8251ce8eb1f5dacaf711bee65758b9f7fb78c4935b0b08afde16::837d46bfad85ed4f96ad7d9246ba302e" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
||||||
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
||||||
|
|
||||||
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
||||||
|
|
@ -241,6 +232,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
|
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
@ -256,7 +248,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
if(isAndroid()){
|
if(isAndroid()){
|
||||||
android_launch.classList.remove("d-none");
|
android_launch.classList.remove("d-none");
|
||||||
android_launch.addEventListener('click', ()=>{
|
android_launch.addEventListener('click', ()=>{
|
||||||
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444',scheme: 'https',type: 'video/x-matrosk',
|
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
|
||||||
});anchor.click();
|
});anchor.click();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -322,6 +314,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
|
||||||
<br><br>
|
<br><br>
|
||||||
</div>
|
</div>
|
||||||
Msc
|
Msc
|
||||||
|
|
||||||
|
<video autoplay muted playsinline preload="metadata" hidden>
|
||||||
|
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
||||||
|
|
@ -333,6 +329,7 @@ Msc
|
||||||
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
</html><script>
|
</html><script>
|
||||||
window.sessionStorage.setItem('xl',window.location.href)
|
window.sessionStorage.setItem('xl',window.location.href)
|
||||||
|
|
@ -348,38 +345,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
|
||||||
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
||||||
<!--</script>-->
|
<!--</script>-->
|
||||||
|
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
|
||||||
|
|
||||||
<script>
|
|
||||||
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script data-cfasync="false" type="text/javascript" id="clever-core">
|
|
||||||
/* <![CDATA[ */
|
|
||||||
(function (document, window) {
|
|
||||||
var a, c = document.createElement("script"), f = window.frameElement;
|
|
||||||
|
|
||||||
c.id = "CleverCoreLoader98023";
|
|
||||||
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
|
|
||||||
|
|
||||||
c.async = !0;
|
|
||||||
c.type = "text/javascript";
|
|
||||||
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
|
|
||||||
c.setAttribute("data-callback", "put-your-callback-function-here");
|
|
||||||
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
|
|
||||||
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
|
|
||||||
|
|
||||||
try {
|
|
||||||
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
|
|
||||||
} catch (e) {
|
|
||||||
a = !1;
|
|
||||||
}
|
|
||||||
|
|
||||||
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
|
|
||||||
a.parentNode.insertBefore(c, a);
|
|
||||||
})(document, window);
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
||||||
|
|
@ -19,8 +19,7 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
<head>
|
<head>
|
||||||
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
|
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -137,7 +136,8 @@ document.addEventListener("DOMContentLoaded", function() {
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
<div class="header">
|
<div class="header">
|
||||||
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
@ -183,15 +183,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
||||||
<a href="?token=a05d8e6416ce6b745a1073feeb9128a4" id="s3" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6" style="background-color: #2d50e2d1 !important;"><i class="fas fa-file-download fa-lg"></i> Download [FSLv2 Server]</a>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
const fsl = document.getElementById('s3');
|
|
||||||
if (fsl) fsl.href += '_1' + new Date().getMinutes();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="ad-container"></div>
|
<div class="ad-container"></div>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -201,6 +192,11 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
<a href="https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
||||||
|
<script>
|
||||||
|
const fsl = document.getElementById('fsl');
|
||||||
|
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -208,7 +204,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pixel.hubcdn.fans/?id=8e81a3ddfb35a8f62a21c629b0a08f08a27f8f19be22ca584532726183bbe7cf4dc97e6ba2b4df7a1d76d124164dd6322999e62b058f6af48e4d7ff85a49ee9076155b673b872fa61f8fdeb04ce6540eec83233edac385159a9af83c16643f8f::3e17e91b2006e6622ac681dfceb43068" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
<a href="https://pixel.hubcdn.fans/?id=d4697e0d4f27ea5067265503a820f05245ffd2d64a88ce6ecce4e18b6cace173bebc13920763a92baeaefe65f8c8a26efd836a0c1b3e92b4ce717874a5ff26a0764642b8090a5f7ef227bdb0bd6744ea8aa7edc43957e94b6ac9d2034c5a1d29::bada52a274d97488e2e76c1718bc16f5" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
||||||
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
||||||
|
|
||||||
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
||||||
|
|
@ -226,9 +222,6 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download File [3.15 GB]</a>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -240,7 +233,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
|
|
||||||
|
|
||||||
<br>
|
<br>
|
||||||
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram 🔥</a>
|
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeTdPK3lOM0QyOHJmbyt6Q3dlVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Downoad From Telegram </a>
|
||||||
|
|
||||||
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
|
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
|
||||||
|
|
||||||
|
|
@ -257,7 +250,7 @@ HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||||
if(isAndroid()){
|
if(isAndroid()){
|
||||||
android_launch.classList.remove("d-none");
|
android_launch.classList.remove("d-none");
|
||||||
android_launch.addEventListener('click', ()=>{
|
android_launch.addEventListener('click', ()=>{
|
||||||
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-c0c400d353df4c68ae3a2d5e089ecf60.r2.dev/Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv',scheme: 'https',type: 'video/x-matrosk',
|
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754',scheme: 'https',type: 'video/x-matrosk',
|
||||||
});anchor.click();
|
});anchor.click();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
@ -323,6 +316,10 @@ function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof
|
||||||
<br><br>
|
<br><br>
|
||||||
</div>
|
</div>
|
||||||
Msc
|
Msc
|
||||||
|
|
||||||
|
<video autoplay muted playsinline preload="metadata" hidden>
|
||||||
|
<source src="https://lh3.googleusercontent.com/pw/AP1GczPvuSJv__IfKHEWza111gQ8cf-7_HNU3Mi1oSxHgtoUmS3z22DcgLvk9zNq5_zQGxp3_asDWKLY6cLB-5BYRip6ElCgllgQccSk4-p_7YwGDCQnx0E=m18#t=0,1" type="video/mp4"></video>
|
||||||
|
|
||||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
||||||
|
|
@ -334,6 +331,7 @@ Msc
|
||||||
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<script defer src="https://static.cloudflareinsights.com/beacon.min.js/v8c78df7c7c0f484497ecbca7046644da1771523124516" integrity="sha512-8DS7rgIrAmghBFwoOTujcf6D9rXvH8xm8JQ1Ja01h9QX8EzXldiszufYa4IFfKdLUKTTrnSFXLDkUEOTrZQ8Qg==" data-cf-beacon='{"version":"2024.11.0","token":"ce57d66a8dc54ff7a63a7a9b493d15a0","r":1,"server_timing":{"name":{"cfCacheStatus":true,"cfEdge":true,"cfExtPri":true,"cfL4":true,"cfOrigin":true,"cfSpeedBrain":true},"location_startswith":null}}' crossorigin="anonymous"></script>
|
||||||
</body>
|
</body>
|
||||||
</html><script>
|
</html><script>
|
||||||
window.sessionStorage.setItem('xl',window.location.href)
|
window.sessionStorage.setItem('xl',window.location.href)
|
||||||
|
|
@ -349,38 +347,5 @@ function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.get
|
||||||
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
||||||
<!--</script>-->
|
<!--</script>-->
|
||||||
|
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100641" src="https://sads.adsboosters.xyz/60e6df74e82f934b77ca81ccdfccfd40.js"></script>
|
||||||
|
|
||||||
<script>
|
|
||||||
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
|
|
||||||
</script>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script data-cfasync="false" type="text/javascript" id="clever-core">
|
|
||||||
/* <![CDATA[ */
|
|
||||||
(function (document, window) {
|
|
||||||
var a, c = document.createElement("script"), f = window.frameElement;
|
|
||||||
|
|
||||||
c.id = "CleverCoreLoader98023";
|
|
||||||
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
|
|
||||||
|
|
||||||
c.async = !0;
|
|
||||||
c.type = "text/javascript";
|
|
||||||
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
|
|
||||||
c.setAttribute("data-callback", "put-your-callback-function-here");
|
|
||||||
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
|
|
||||||
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
|
|
||||||
|
|
||||||
try {
|
|
||||||
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
|
|
||||||
} catch (e) {
|
|
||||||
a = !1;
|
|
||||||
}
|
|
||||||
|
|
||||||
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
|
|
||||||
a.parentNode.insertBefore(c, a);
|
|
||||||
})(document, window);
|
|
||||||
/* ]]> */
|
|
||||||
</script>
|
|
||||||
|
|
@ -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>
|
||||||
|
|
||||||
343
src/extractor/__fixtures__/HubCloud/https:hubcloud.foodrivep94k4dccjwxjcx4
generated
Normal file
343
src/extractor/__fixtures__/HubCloud/https:hubcloud.foodrivep94k4dccjwxjcx4
generated
Normal 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>
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
|
<title>Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -18,15 +17,14 @@
|
||||||
<meta name="googlebot" content="noindex,nofollow">
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
|
||||||
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
|
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
|
||||||
|
|
||||||
|
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
|
||||||
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
|
<!--<script type="text/javascript">-->
|
||||||
<script type="text/javascript">
|
<!-- aclib.runPop({-->
|
||||||
aclib.runPop({
|
<!-- zoneId: '10550070',-->
|
||||||
zoneId: '10550070',
|
<!-- });-->
|
||||||
});
|
<!--</script>-->
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
||||||
|
|
||||||
|
|
@ -150,7 +148,12 @@
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
|
||||||
|
<div class="ads-core-ads-100892"></div>
|
||||||
|
<div class="ads-core-ads-101001"></div>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
||||||
|
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
|
|
@ -280,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
|
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/bffzqlpqfllfcld</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
|
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
|
||||||
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxU1ZQelhidzNibXJ5TXk1eDdydjFJcz0=';
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
document.querySelector(".loading").classList.add("d-none");
|
document.querySelector(".loading").classList.add("d-none");
|
||||||
document.querySelector(".vd").classList.remove("d-none");
|
document.querySelector(".vd").classList.remove("d-none");
|
||||||
|
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
|
||||||
|
stck('xlax',"s4t",1440);
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=bffzqlpqfllfcld&token=ZDdhbnhoS3dXSzlGOGhnN3ErdTUxVEl6a2RJOUt6ZTkwSXZMa1JXOFd2WT0=';
|
|
||||||
|
|
||||||
var download = document.getElementById('download');
|
var download = document.getElementById('download');
|
||||||
download.onclick = function() {
|
download.onclick = function() {
|
||||||
if (this.classList.contains('disabled')) {
|
if (this.classList.contains('disabled')) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
download.classList.add('disabled');
|
download.classList.add('disabled');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
|
@ -303,9 +316,9 @@ download.onclick = function() {
|
||||||
}, 6000);
|
}, 6000);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
|
<title>Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -18,15 +17,14 @@
|
||||||
<meta name="googlebot" content="noindex,nofollow">
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
|
||||||
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
|
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
|
||||||
|
|
||||||
|
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
|
||||||
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
|
<!--<script type="text/javascript">-->
|
||||||
<script type="text/javascript">
|
<!-- aclib.runPop({-->
|
||||||
aclib.runPop({
|
<!-- zoneId: '10550070',-->
|
||||||
zoneId: '10550070',
|
<!-- });-->
|
||||||
});
|
<!--</script>-->
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
||||||
|
|
||||||
|
|
@ -150,7 +148,12 @@
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
|
||||||
|
<div class="ads-core-ads-100892"></div>
|
||||||
|
<div class="ads-core-ads-101001"></div>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
||||||
|
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
|
|
@ -280,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
|
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/idt1evqfuviqiei</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
|
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
|
||||||
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSSFJidWE2bjFma1JRSWNEZmVXcys4VT0=';
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
document.querySelector(".loading").classList.add("d-none");
|
document.querySelector(".loading").classList.add("d-none");
|
||||||
document.querySelector(".vd").classList.remove("d-none");
|
document.querySelector(".vd").classList.remove("d-none");
|
||||||
|
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
|
||||||
|
stck('xlax',"s4t",1440);
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=idt1evqfuviqiei&token=RUhXL2kvWnI3MmtFTTlyc1VGY2JSUDFDT2lKbHJxeHZBNk5reExFai9BMD0=';
|
|
||||||
|
|
||||||
var download = document.getElementById('download');
|
var download = document.getElementById('download');
|
||||||
download.onclick = function() {
|
download.onclick = function() {
|
||||||
if (this.classList.contains('disabled')) {
|
if (this.classList.contains('disabled')) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
download.classList.add('disabled');
|
download.classList.add('disabled');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
|
@ -303,9 +316,9 @@ download.onclick = function() {
|
||||||
}, 6000);
|
}, 6000);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,7 @@
|
||||||
<head>
|
<head>
|
||||||
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
|
<title>Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
<meta name="referrer" content="no-referrer"/>
|
||||||
<meta name="referrer" content="no-referrer">
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||||
|
|
||||||
|
|
@ -18,15 +17,14 @@
|
||||||
<meta name="googlebot" content="noindex,nofollow">
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
|
||||||
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
|
<script data-cfasync="false" src="//d33f51dyacx7bd.cloudfront.net/?aydfd=1015073"></script>
|
||||||
|
|
||||||
|
<!--<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>-->
|
||||||
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
|
<!--<script type="text/javascript">-->
|
||||||
<script type="text/javascript">
|
<!-- aclib.runPop({-->
|
||||||
aclib.runPop({
|
<!-- zoneId: '10550070',-->
|
||||||
zoneId: '10550070',
|
<!-- });-->
|
||||||
});
|
<!--</script>-->
|
||||||
</script>
|
|
||||||
|
|
||||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
||||||
|
|
||||||
|
|
@ -150,7 +148,12 @@
|
||||||
color: #000
|
color: #000
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<body><center>
|
<body>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader100892" src="https://sads.adsboosters.xyz/e782f10ef81a2b65f5c2b85518948f4b.js"></script>
|
||||||
|
<script data-cfasync="false" type="text/javascript" id="AdsCoreLoader101001" src="https://sads.adsboosters.xyz/1c76fee9418816ee07f81c9d3386f754.js"></script>
|
||||||
|
<div class="ads-core-ads-100892"></div>
|
||||||
|
<div class="ads-core-ads-101001"></div>
|
||||||
|
<center>
|
||||||
<br/>
|
<br/>
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -225,7 +228,7 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
||||||
|
|
||||||
|
|
||||||
<center>
|
<center>
|
||||||
|
|
@ -236,7 +239,6 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://www-google-com.cdn.ampproject.org/c/s/bloggingvector.shop/foo/aHR0cHM6Ly93d3ctZ29vZ2xlLWNvbS5jZG4uYW1wcHJvamVjdC5vcmcvYy9zL25ld3NvbmdzLmNvLmluL2dvP2lkPTNPZnAzZHl1b3FUaHp1RFkzTi9LNGFIWjNOQ2p1K3JQek9EaTZ0SGgyTlhrNGFqbjU5YmYzYkhEeThPdXlOMjMxNys1cCszRHdPVEN3cDIvcXNxOTFiL0t1S3FpeXFianhNZlV2cmpKMjlXNjJPQ2htc2pMNWJ6T3ljbTZ3Y0hZdWN1eTRMRT0=" target="_blank" rel="noopener noreferrer nofollow" class="btn btn-primary h5 p-2" id="tgbtn" style="margin-top: 11px;"><i class="fab fa-telegram fa-lg"></i></i> Download From Telegram</a>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -281,22 +283,32 @@ HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="http
|
||||||
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
|
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/nknlofk8snfnknh</p>
|
||||||
</div>
|
</div>
|
||||||
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
// function d(e){document.cookie=e+"=; path=/; SameSite=None; Secure; expires=Thu, 01 Jan 1970 00:00:01 GMT;"}setTimeout(()=>{d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))},2000);
|
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
|
||||||
// function clsd(){d(atob('Y2xldmVyLWNvdW50ZXItODk4Nzg='))}
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
|
||||||
|
|
||||||
|
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzMGxsdGd3eERlOWs1Z1AydDFjRUp4cz0=';
|
||||||
|
|
||||||
setTimeout(function(){
|
setTimeout(function(){
|
||||||
document.querySelector(".loading").classList.add("d-none");
|
document.querySelector(".loading").classList.add("d-none");
|
||||||
document.querySelector(".vd").classList.remove("d-none");
|
document.querySelector(".vd").classList.remove("d-none");
|
||||||
|
if (!document.cookie.split(';').some(item => item.trim().startsWith('xlax='))) {
|
||||||
|
stck('xlax',"s4t",1440);
|
||||||
|
window.location.href = url;
|
||||||
|
}
|
||||||
}, 2000);
|
}, 2000);
|
||||||
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=nknlofk8snfnknh&token=eWJLS25YL0hUektLS0k0a3htWVJzOVAxdWdnL01tM2FOcGtHNjlNa1Z4ST0=';
|
|
||||||
|
|
||||||
var download = document.getElementById('download');
|
var download = document.getElementById('download');
|
||||||
download.onclick = function() {
|
download.onclick = function() {
|
||||||
if (this.classList.contains('disabled')) {
|
if (this.classList.contains('disabled')) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
window.location.href = url;
|
window.location.href = url;
|
||||||
download.classList.add('disabled');
|
download.classList.add('disabled');
|
||||||
setTimeout(function() {
|
setTimeout(function() {
|
||||||
|
|
@ -304,9 +316,9 @@ download.onclick = function() {
|
||||||
}, 6000);
|
}, 6000);
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<script>
|
|
||||||
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}
|
|
||||||
</script>
|
|
||||||
<script>
|
<script>
|
||||||
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
||||||
512
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile2243124026
generated
Normal file
512
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile2243124026
generated
Normal 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 © 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>
|
||||||
|
|
@ -7,23 +7,49 @@ exports[`HubCloud handle crayon shin-chan 1993 1`] = `
|
||||||
"label": "HubCloud (FSL)",
|
"label": "HubCloud (FSL)",
|
||||||
"meta": {
|
"meta": {
|
||||||
"bytes": 28550795100,
|
"bytes": 28550795100,
|
||||||
|
"countryCodes": [
|
||||||
|
"hi",
|
||||||
|
"ja",
|
||||||
|
],
|
||||||
"extractorId": "hubcloud_fsl",
|
"extractorId": "hubcloud_fsl",
|
||||||
|
"height": 1080,
|
||||||
"title": "Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv",
|
"title": "Crayon Shinchan Action Kamen vs Demon (1993) 1080p BluRay REMUX AVC [Hindi DD 2.0 + Japanese FLAC 2.0] (PitiPati-Ionicboy) (4kHDHub.com).mkv",
|
||||||
},
|
},
|
||||||
"ttl": 43200000,
|
"ttl": 43200000,
|
||||||
"url": "https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445",
|
"url": "https://hub.oreao-cdn.buzz/e35ec4a9a4efb5a154d0d10f9481dafc?token=1774428754",
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
exports[`HubCloud handle dark 2017 s03e08 1`] = `
|
exports[`HubCloud handle dark 2017 s03e08 1`] = `
|
||||||
[
|
[
|
||||||
|
{
|
||||||
|
"format": "unknown",
|
||||||
|
"label": "HubCloud (FSL)",
|
||||||
|
"meta": {
|
||||||
|
"bytes": 3382286745,
|
||||||
|
"countryCodes": [
|
||||||
|
"de",
|
||||||
|
"en",
|
||||||
|
],
|
||||||
|
"extractorId": "hubcloud_fsl",
|
||||||
|
"height": 1080,
|
||||||
|
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
|
||||||
|
},
|
||||||
|
"ttl": 43200000,
|
||||||
|
"url": "https://pub-0cef6721657649918259091880efe12f.r2.dev/c8c652be7fb5a8d731b9c7ddc465d37f?token=1774428754",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"format": "unknown",
|
"format": "unknown",
|
||||||
"label": "HubCloud (PixelServer)",
|
"label": "HubCloud (PixelServer)",
|
||||||
"meta": {
|
"meta": {
|
||||||
"bytes": 3382286745,
|
"bytes": 3382286745,
|
||||||
|
"countryCodes": [
|
||||||
|
"de",
|
||||||
|
"en",
|
||||||
|
],
|
||||||
"extractorId": "hubcloud_pixelserver",
|
"extractorId": "hubcloud_pixelserver",
|
||||||
|
"height": 1080,
|
||||||
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
|
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
|
||||||
},
|
},
|
||||||
"requestHeaders": {
|
"requestHeaders": {
|
||||||
|
|
@ -42,18 +68,22 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
|
||||||
"label": "HubCloud (FSL)",
|
"label": "HubCloud (FSL)",
|
||||||
"meta": {
|
"meta": {
|
||||||
"bytes": 5733781340,
|
"bytes": 5733781340,
|
||||||
|
"countryCodes": [],
|
||||||
"extractorId": "hubcloud_fsl",
|
"extractorId": "hubcloud_fsl",
|
||||||
|
"height": 2160,
|
||||||
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
||||||
},
|
},
|
||||||
"ttl": 43200000,
|
"ttl": 43200000,
|
||||||
"url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444",
|
"url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1774428754",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"format": "unknown",
|
"format": "unknown",
|
||||||
"label": "HubCloud (PixelServer)",
|
"label": "HubCloud (PixelServer)",
|
||||||
"meta": {
|
"meta": {
|
||||||
"bytes": 5733781340,
|
"bytes": 5733781340,
|
||||||
|
"countryCodes": [],
|
||||||
"extractorId": "hubcloud_pixelserver",
|
"extractorId": "hubcloud_pixelserver",
|
||||||
|
"height": 2160,
|
||||||
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
||||||
},
|
},
|
||||||
"requestHeaders": {
|
"requestHeaders": {
|
||||||
|
|
@ -64,3 +94,40 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`HubCloud handle goat 2026 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"format": "unknown",
|
||||||
|
"label": "HubCloud (FSL)",
|
||||||
|
"meta": {
|
||||||
|
"bytes": 19091129630,
|
||||||
|
"countryCodes": [
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"extractorId": "hubcloud_fsl",
|
||||||
|
"height": 2160,
|
||||||
|
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
|
||||||
|
},
|
||||||
|
"ttl": 43200000,
|
||||||
|
"url": "https://hub.shipcdn.buzz/06a50fe95983473b5eeb7fa0ed1b453b?token=1774428722",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"format": "unknown",
|
||||||
|
"label": "HubCloud (FSLv2)",
|
||||||
|
"meta": {
|
||||||
|
"bytes": 19091129630,
|
||||||
|
"countryCodes": [
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"extractorId": "hubcloud_fslv2",
|
||||||
|
"height": 2160,
|
||||||
|
"title": "Goat (2026) 2160p 10bit HDR10+ DV iTunes WEB-DL HEVC x265 [Hindi AMZN DDP 5.1 640kbps + English DDP Atmos 5.1] ESub-(BYNDR-4kHdHub).mkv",
|
||||||
|
},
|
||||||
|
"ttl": 43200000,
|
||||||
|
"url": "https://cdn.fsl-buckets.life/Goat%202026%202160p%2010bit%20HDR10+%20DV%20iTunes%20WEB-DL%20HEVC%20x265%20[Hindi%20AMZN%20DDP%205.1%20640kbps%20+%20English%20DDP%20Atmos%205.1]%20ESub-BYNDR-4kHdHub.mkv?token=af180cafc2418c7c47249d0167ba9704",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,12 @@ exports[`HubDrive handle avatar 1`] = `
|
||||||
"label": "HubCloud (FSL)",
|
"label": "HubCloud (FSL)",
|
||||||
"meta": {
|
"meta": {
|
||||||
"bytes": 64649995223,
|
"bytes": 64649995223,
|
||||||
|
"countryCodes": [
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
"extractorId": "hubcloud_fsl",
|
"extractorId": "hubcloud_fsl",
|
||||||
|
"height": 2160,
|
||||||
"title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv",
|
"title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv",
|
||||||
},
|
},
|
||||||
"ttl": 43200000,
|
"ttl": 43200000,
|
||||||
|
|
@ -15,3 +20,5 @@ exports[`HubDrive handle avatar 1`] = `
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`HubDrive handle missing hubcloud 1`] = `[]`;
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,10 @@ import { BasicAcceptedElems, CheerioAPI } from 'cheerio';
|
||||||
import { AnyNode } from 'domhandler';
|
import { AnyNode } from 'domhandler';
|
||||||
import levenshtein from 'fast-levenshtein';
|
import levenshtein from 'fast-levenshtein';
|
||||||
import memoize from 'memoizee';
|
import memoize from 'memoizee';
|
||||||
import rot13Cipher from 'rot13-cipher';
|
|
||||||
import { ContentType } from 'stremio-addon-sdk';
|
import { ContentType } from 'stremio-addon-sdk';
|
||||||
import { Context, CountryCode, Meta } from '../types';
|
import { Context, CountryCode, Meta } from '../types';
|
||||||
import { Fetcher, findCountryCodes, getTmdbId, getTmdbNameAndYear, Id, TmdbId } from '../utils';
|
import { Fetcher, findCountryCodes, getTmdbId, getTmdbNameAndYear, Id, TmdbId } from '../utils';
|
||||||
|
import { resolveRedirectUrl } from './hd-hub-helper';
|
||||||
import { Source, SourceResult } from './Source';
|
import { Source, SourceResult } from './Source';
|
||||||
|
|
||||||
export class FourKHDHub extends Source {
|
export class FourKHDHub extends Source {
|
||||||
|
|
@ -115,7 +115,7 @@ export class FourKHDHub extends Source {
|
||||||
.get(0);
|
.get(0);
|
||||||
|
|
||||||
if (redirectUrlHubCloud) {
|
if (redirectUrlHubCloud) {
|
||||||
return { url: await this.resolveRedirectUrl(ctx, redirectUrlHubCloud), meta };
|
return { url: await resolveRedirectUrl(ctx, this.fetcher, redirectUrlHubCloud), meta };
|
||||||
}
|
}
|
||||||
|
|
||||||
const redirectUrlHubDrive = $('a', el)
|
const redirectUrlHubDrive = $('a', el)
|
||||||
|
|
@ -123,17 +123,9 @@ export class FourKHDHub extends Source {
|
||||||
.map((_i, el) => new URL($(el).attr('href') as string))
|
.map((_i, el) => new URL($(el).attr('href') as string))
|
||||||
.get(0) as URL;
|
.get(0) as URL;
|
||||||
|
|
||||||
return { url: await this.resolveRedirectUrl(ctx, redirectUrlHubDrive), meta };
|
return { url: await resolveRedirectUrl(ctx, this.fetcher, redirectUrlHubDrive), meta };
|
||||||
};
|
};
|
||||||
|
|
||||||
private async resolveRedirectUrl(ctx: Context, redirectUrl: URL): Promise<URL> {
|
|
||||||
const redirectHtml = await this.fetcher.text(ctx, redirectUrl);
|
|
||||||
const redirectDataMatch = redirectHtml.match(/'o','(.*?)'/) as string[];
|
|
||||||
const redirectData = JSON.parse(atob(rot13Cipher(atob(atob(redirectDataMatch[1] as string))))) as { o: string };
|
|
||||||
|
|
||||||
return new URL(atob(redirectData['o']));
|
|
||||||
}
|
|
||||||
|
|
||||||
private readonly getBaseUrl = async (ctx: Context): Promise<URL> => {
|
private readonly getBaseUrl = async (ctx: Context): Promise<URL> => {
|
||||||
return await this.fetcher.getFinalRedirectUrl(ctx, new URL(this.baseUrl));
|
return await this.fetcher.getFinalRedirectUrl(ctx, new URL(this.baseUrl));
|
||||||
};
|
};
|
||||||
|
|
|
||||||
33
src/source/HDHub4u.test.ts
Normal file
33
src/source/HDHub4u.test.ts
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
import { createTestContext } from '../test';
|
||||||
|
import { FetcherMock, ImdbId } from '../utils';
|
||||||
|
import { HDHub4u } from './HDHub4u';
|
||||||
|
|
||||||
|
const ctx = createTestContext();
|
||||||
|
|
||||||
|
describe('HDHub4u', () => {
|
||||||
|
let source: HDHub4u;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
source = new HDHub4u(new FetcherMock(`${__dirname}/__fixtures__/HDHub4u`));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('handle superman 2025', async () => {
|
||||||
|
const streams = await source.handle(ctx, 'movie', new ImdbId('tt5950044', undefined, undefined));
|
||||||
|
expect(streams).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('handle the bone temple 2026', async () => {
|
||||||
|
const streams = await source.handle(ctx, 'movie', new ImdbId('tt32141377', undefined, undefined));
|
||||||
|
expect(streams).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('handle stranger things s05e01', async () => {
|
||||||
|
const streams = await source.handle(ctx, 'series', new ImdbId('tt4574334', 5, 1));
|
||||||
|
expect(streams).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
|
||||||
|
test('handle stranger things s05e08', async () => {
|
||||||
|
const streams = await source.handle(ctx, 'series', new ImdbId('tt4574334', 5, 8));
|
||||||
|
expect(streams).toMatchSnapshot();
|
||||||
|
});
|
||||||
|
});
|
||||||
119
src/source/HDHub4u.ts
Normal file
119
src/source/HDHub4u.ts
Normal file
|
|
@ -0,0 +1,119 @@
|
||||||
|
import * as cheerio from 'cheerio';
|
||||||
|
import { ContentType } from 'stremio-addon-sdk';
|
||||||
|
import { Context, CountryCode, Meta } from '../types';
|
||||||
|
import { Fetcher, findCountryCodes, getImdbId, Id, ImdbId } from '../utils';
|
||||||
|
import { resolveRedirectUrl } from './hd-hub-helper';
|
||||||
|
import { Source, SourceResult } from './Source';
|
||||||
|
|
||||||
|
interface SearchResponsePartial {
|
||||||
|
hits: {
|
||||||
|
document: {
|
||||||
|
imdb_id: string;
|
||||||
|
permalink: string;
|
||||||
|
post_title: string;
|
||||||
|
};
|
||||||
|
}[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export class HDHub4u extends Source {
|
||||||
|
public readonly id = 'hdhub4u';
|
||||||
|
|
||||||
|
public readonly label = 'HDHub4u';
|
||||||
|
|
||||||
|
public readonly contentTypes: ContentType[] = ['movie', 'series'];
|
||||||
|
|
||||||
|
public readonly countryCodes: CountryCode[] = [CountryCode.multi, CountryCode.gu, CountryCode.hi, CountryCode.ml, CountryCode.pa, CountryCode.ta, CountryCode.te];
|
||||||
|
|
||||||
|
public readonly baseUrl = 'https://new5.hdhub4u.fo';
|
||||||
|
|
||||||
|
private readonly searchUrl = 'https://search.pingora.fyi';
|
||||||
|
|
||||||
|
private readonly fetcher: Fetcher;
|
||||||
|
|
||||||
|
public constructor(fetcher: Fetcher) {
|
||||||
|
super();
|
||||||
|
|
||||||
|
this.fetcher = fetcher;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async handleInternal(ctx: Context, _type: string, id: Id): Promise<SourceResult[]> {
|
||||||
|
const imdbId = await getImdbId(ctx, this.fetcher, id);
|
||||||
|
|
||||||
|
const pageUrls = await this.fetchPageUrls(ctx, imdbId);
|
||||||
|
|
||||||
|
return (await Promise.all(
|
||||||
|
pageUrls.map(async (pageUrl) => {
|
||||||
|
return await this.handlePage(ctx, pageUrl, imdbId);
|
||||||
|
}),
|
||||||
|
)).flat();
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly handlePage = async (ctx: Context, pageUrl: URL, imdbId: ImdbId): Promise<SourceResult[]> => {
|
||||||
|
const html = await this.fetcher.text(ctx, pageUrl);
|
||||||
|
|
||||||
|
const $ = cheerio.load(html);
|
||||||
|
|
||||||
|
const meta = {
|
||||||
|
countryCodes: [CountryCode.multi, ...findCountryCodes($('div:contains("Language"):not(:has(div)):first').text())],
|
||||||
|
};
|
||||||
|
|
||||||
|
if (!imdbId.episode) {
|
||||||
|
return [
|
||||||
|
...this.extractHubDriveUrlResults(html, meta),
|
||||||
|
...(await Promise.all(
|
||||||
|
$('a[href*="gadgetsweb"]').map((_i, el) => this.handleHubLinks(ctx, new URL($(el).attr('href') as string), pageUrl, meta)),
|
||||||
|
)).flat(),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
return [
|
||||||
|
...(await Promise.all(
|
||||||
|
$(`a:contains("EPiSODE ${imdbId.episode}"), a:contains("EPiSODE ${String(imdbId.episode).padStart(2, '0')}")`)
|
||||||
|
.map(async (_i, el) => this.handleHubLinks(ctx, new URL($(el).attr('href') as string), pageUrl, meta)),
|
||||||
|
)).flat(),
|
||||||
|
...this.extractHubDriveUrlResults(
|
||||||
|
$(`h4:contains("EPiSODE ${imdbId.episode}"), h4:contains("EPiSODE ${String(imdbId.episode).padStart(2, '0')}")`)
|
||||||
|
.first()
|
||||||
|
.nextUntil('hr')
|
||||||
|
.map((_i, el) => $.html(el))
|
||||||
|
.get()
|
||||||
|
.join(''),
|
||||||
|
meta,
|
||||||
|
),
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly handleHubLinks = async (ctx: Context, redirectUrl: URL, refererUrl: URL, meta: Meta): Promise<SourceResult[]> => {
|
||||||
|
const hubLinksUrl = await resolveRedirectUrl(ctx, this.fetcher, redirectUrl);
|
||||||
|
const hubLinksHtml = await this.fetcher.text(ctx, hubLinksUrl, { headers: { Referer: refererUrl.href } });
|
||||||
|
|
||||||
|
return [
|
||||||
|
...this.extractHubDriveUrlResults(hubLinksHtml, { ...meta, referer: hubLinksUrl.href }),
|
||||||
|
];
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly extractHubDriveUrlResults = (html: string, meta: Meta): SourceResult[] => {
|
||||||
|
const $ = cheerio.load(html);
|
||||||
|
|
||||||
|
return $('a[href*="hubdrive"]:not(:contains("⚡"))')
|
||||||
|
.map((_i, el) => ({ url: new URL($(el).attr('href') as string), meta }))
|
||||||
|
.toArray();
|
||||||
|
};
|
||||||
|
|
||||||
|
private readonly fetchPageUrls = async (ctx: Context, imdbId: ImdbId): Promise<URL[]> => {
|
||||||
|
const searchUrl = new URL(`/collections/post/documents/search?query_by=imdb_id&q=${encodeURIComponent(imdbId.id)}`, this.searchUrl);
|
||||||
|
const searchResponse = await this.fetcher.json(ctx, searchUrl, { headers: { Referer: this.baseUrl } }) as SearchResponsePartial;
|
||||||
|
|
||||||
|
return searchResponse.hits
|
||||||
|
.filter(hit =>
|
||||||
|
hit.document.imdb_id === imdbId.id
|
||||||
|
&& (
|
||||||
|
!imdbId.season
|
||||||
|
|| hit.document.post_title.includes(`Season ${imdbId.season}`)
|
||||||
|
|| hit.document.post_title.includes(`S${String(imdbId.season)}`)
|
||||||
|
|| hit.document.post_title.includes(`S${String(imdbId.season).padStart(2, '0')}`)
|
||||||
|
),
|
||||||
|
)
|
||||||
|
.map(hit => new URL(hit.document.permalink, this.baseUrl));
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZCVFcwd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZDUkVjd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZDU0Vjd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkVGSU5VaE5iVVZCY1cwd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oSU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oU09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSbU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
|
|
@ -0,0 +1,20 @@
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>Redirecting ...</title>
|
||||||
|
<meta name="referrer" content="no-referrer">
|
||||||
|
<meta name="robots" content="noindex, nofollow">
|
||||||
|
<meta name="author" content="s-b0t">
|
||||||
|
<meta name="googlebot" content="noindex,nofollow">
|
||||||
|
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
|
||||||
|
<style>#container{width:100%;aspect-ratio:100 / 29}@media only screen and (min-width: 992px){img{height:80%!important;width:50%!important}}@media only screen and (min-width: 1200px){img{height:80%!important;width:50%!important}}.relative{position:relative}.bottom-left{position:absolute}.PurpleTxt{color:#7e41ff!important;font-weight:600;margin-left:.5ch;margin-right:.5ch}</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
Redirecting ..
|
||||||
|
<script type="text/javascript">
|
||||||
|
function stck(e,t,i){let n="";if(i){let o=new Date;o.setTime(o.getTime()+6e4*i),n="; expires="+o.toUTCString()}document.cookie=`${e}=${t}; path=/; SameSite=None; Secure${n}`}
|
||||||
|
function s(e,t,i){let n=new Date,m={value:t,expiry:n.getTime()+i};window.localStorage.setItem(e,JSON.stringify(m));stck('xla',"s4t",4);}s('o','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkdTMk5CU1ZSbU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
|
||||||
|
</script>
|
||||||
|
|
||||||
|
|
||||||
|
</body></html>
|
||||||
373
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives102319
generated
Normal file
373
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives102319
generated
Normal file
File diff suppressed because one or more lines are too long
363
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives103118
generated
Normal file
363
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives103118
generated
Normal file
File diff suppressed because one or more lines are too long
363
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives103119
generated
Normal file
363
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives103119
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives104570
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives104570
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives104571
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives104571
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95882
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95882
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95883
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95883
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95884
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95884
generated
Normal file
File diff suppressed because one or more lines are too long
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95885
generated
Normal file
365
src/source/__fixtures__/HDHub4u/https:hblinks.dadarchives95885
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
5343
src/source/__fixtures__/HDHub4u/https:new5.hdhub4u.fostranger-things-season-5-hindi-webrip-all-episodes
generated
Normal file
5343
src/source/__fixtures__/HDHub4u/https:new5.hdhub4u.fostranger-things-season-5-hindi-webrip-all-episodes
generated
Normal file
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
3079
src/source/__fixtures__/HDHub4u/https:new5.hdhub4u.fosuperman-2025-hindi-webrip-full-movie
generated
Normal file
3079
src/source/__fixtures__/HDHub4u/https:new5.hdhub4u.fosuperman-2025-hindi-webrip-full-movie
generated
Normal file
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
{"facet_counts":[],"found":2,"hits":[{"document":{"category":["300MB Movies","Dual Audio","HD Movies","Hindi Dubbed","HollyWood","Horror","Sci-Fi","Thriller"],"director":["Nia DaCosta"],"id":"183681","imdb_id":"tt32141377","permalink":"/28-years-later-the-bone-temple-2026-hindi-webrip-full-movie/","post_date":"February 17, 2026","post_thumbnail":"https://image.tmdb.org/t/p/w500/fVlbHQvKgZHF1uEIYePZqpfDqaJ.jpg","post_title":"28 Years Later: The Bone Temple (2026) WEB-DL [Hindi (DD5.1) & English] 4K 1080p 720p & 480p Dual Audio [x264/10Bit-HEVC] | Full Movie","post_type":"post","sort_by_date":1771333131,"stars":["Ralph Fiennes","Jack O'Connell","Alfie Williams"]},"highlight":{"imdb_id":{"matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}},"highlights":[{"field":"imdb_id","matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}],"text_match":578730123365711993,"text_match_info":{"best_field_score":"1108091339008","best_field_weight":15,"fields_matched":1,"num_tokens_dropped":0,"score":"578730123365711993","tokens_matched":1,"typo_prefix_score":0}},{"document":{"category":["HollyWood","Horror","Sci-Fi","Thriller"],"director":["Nia DaCosta"],"id":"182051","imdb_id":"tt32141377","permalink":"/28-years-later-the-bone-temple-2026-hdtc-hindi-full-movie/","post_date":"January 19, 2026","post_thumbnail":"https://image.tmdb.org/t/p/w400/kK1BGkG3KAvWB0WMV1DfOx9yTMZ.jpg","post_title":"28 Years Later: The Bone Temple (2026) HDTC [Hindi (Clean)] 1080p 720p & 480p [x264] | Full Movie","post_type":"post","sort_by_date":1768822585,"stars":["Ralph Fiennes","Jack O'Connell","Alfie Williams"]},"highlight":{"imdb_id":{"matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}},"highlights":[{"field":"imdb_id","matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}],"text_match":578730123365711993,"text_match_info":{"best_field_score":"1108091339008","best_field_weight":15,"fields_matched":1,"num_tokens_dropped":0,"score":"578730123365711993","tokens_matched":1,"typo_prefix_score":0}}],"out_of":13464,"page":1,"request_params":{"collection_name":"post","first_q":"tt32141377","per_page":10,"q":"tt32141377"},"search_cutoff":false,"search_time_ms":0}
|
||||||
File diff suppressed because one or more lines are too long
|
|
@ -0,0 +1 @@
|
||||||
|
{"facet_counts":[],"found":1,"hits":[{"document":{"category":["300MB Movies","Action","Adventure","Dual Audio","HD Movies","Hindi Dubbed","HollyWood","Sci-Fi"],"director":["James Gunn"],"id":"174394","imdb_id":"tt5950044","permalink":"/superman-2025-hindi-webrip-full-movie/","post_date":"August 24, 2025","post_thumbnail":"https://image.tmdb.org/t/p/w500/1H9hdeRoniz30RKhyr1uLdBTfpG.jpg","post_title":"Superman (2025) iMAX DS4K WEB-DL [Hindi (DD5.1) & English] 4K 1080p 720p & 480p Dual Audio [x264/10Bit-HEVC] | Full Movie","post_type":"post","sort_by_date":1756030053,"stars":["David Corenswet","Rachel Brosnahan","Nicholas Hoult"]},"highlight":{"imdb_id":{"matched_tokens":["tt5950044"],"snippet":"<mark>tt5950044</mark>"}},"highlights":[{"field":"imdb_id","matched_tokens":["tt5950044"],"snippet":"<mark>tt5950044</mark>"}],"text_match":578730123365711993,"text_match_info":{"best_field_score":"1108091339008","best_field_weight":15,"fields_matched":1,"num_tokens_dropped":0,"score":"578730123365711993","tokens_matched":1,"typo_prefix_score":0}}],"out_of":13464,"page":1,"request_params":{"collection_name":"post","first_q":"tt5950044","per_page":10,"q":"tt5950044"},"search_cutoff":false,"search_time_ms":0}
|
||||||
304
src/source/__snapshots__/HDHub4u.test.ts.snap
Normal file
304
src/source/__snapshots__/HDHub4u.test.ts.snap
Normal file
|
|
@ -0,0 +1,304 @@
|
||||||
|
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||||
|
|
||||||
|
exports[`HDHub4u handle stranger things s05e01 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2452204677",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/1788432714",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`HDHub4u handle stranger things s05e08 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/1793632174",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2655940410",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2007803192",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2913823672",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/1898122266",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/3043520687",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/4664307676",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/102319",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/8835271729",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`HDHub4u handle superman 2025 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2048323831",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/1931317982",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/7875454809",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/3608508909",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/95885",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2171324800",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/95884",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/1866728891",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/95883",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/3938026297",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/95882",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2823990434",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
|
exports[`HDHub4u handle the bone temple 2026 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2165806385",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2777734670",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/6051118182",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/13783802255",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/104571",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2026023433",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"en",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/104570",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/4232622187",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2298599706",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/103118",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2291074311",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"meta": {
|
||||||
|
"countryCodes": [
|
||||||
|
"multi",
|
||||||
|
"hi",
|
||||||
|
],
|
||||||
|
"referer": "https://hblinks.dad/archives/103119",
|
||||||
|
},
|
||||||
|
"url": "https://hubdrive.space/file/2244066767",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
11
src/source/hd-hub-helper.ts
Normal file
11
src/source/hd-hub-helper.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
import rot13Cipher from 'rot13-cipher';
|
||||||
|
import { Context } from '../types';
|
||||||
|
import { Fetcher } from '../utils';
|
||||||
|
|
||||||
|
export const resolveRedirectUrl = async (ctx: Context, fetcher: Fetcher, redirectUrl: URL): Promise<URL> => {
|
||||||
|
const redirectHtml = await fetcher.text(ctx, redirectUrl);
|
||||||
|
const redirectDataMatch = redirectHtml.match(/'o','(.*?)'/) as string[];
|
||||||
|
const redirectData = JSON.parse(atob(rot13Cipher(atob(atob(redirectDataMatch[1] as string))))) as { o: string };
|
||||||
|
|
||||||
|
return new URL(atob(redirectData['o']));
|
||||||
|
};
|
||||||
|
|
@ -6,6 +6,7 @@ import { Eurostreaming } from './Eurostreaming';
|
||||||
import { FourKHDHub } from './FourKHDHub';
|
import { FourKHDHub } from './FourKHDHub';
|
||||||
import { Frembed } from './Frembed';
|
import { Frembed } from './Frembed';
|
||||||
import { FrenchCloud } from './FrenchCloud';
|
import { FrenchCloud } from './FrenchCloud';
|
||||||
|
import { HDHub4u } from './HDHub4u';
|
||||||
import { HomeCine } from './HomeCine';
|
import { HomeCine } from './HomeCine';
|
||||||
import { KinoGer } from './KinoGer';
|
import { KinoGer } from './KinoGer';
|
||||||
import { Kokoshka } from './Kokoshka';
|
import { Kokoshka } from './Kokoshka';
|
||||||
|
|
@ -28,6 +29,7 @@ export const createSources = (fetcher: Fetcher): Source[] => {
|
||||||
return [
|
return [
|
||||||
// multi
|
// multi
|
||||||
new FourKHDHub(fetcher),
|
new FourKHDHub(fetcher),
|
||||||
|
new HDHub4u(fetcher),
|
||||||
new VixSrc(fetcher),
|
new VixSrc(fetcher),
|
||||||
new VidSrc(),
|
new VidSrc(),
|
||||||
new RgShows(fetcher),
|
new RgShows(fetcher),
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ export type CustomManifest = Manifest & {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type Config = Partial<Record<CountryCode | 'showErrors' | 'includeExternalUrls' | 'mediaFlowProxyUrl' | 'mediaFlowProxyPassword', string> & Record<`disableExtractor_${string}`, string>>;
|
export type Config = Partial<Record<CountryCode | 'showErrors' | 'includeExternalUrls' | 'mediaFlowProxyUrl' | 'mediaFlowProxyPassword', string> & Record<`disableExtractor_${string}`, string> & Record<`excludeResolution_${string}`, string>>;
|
||||||
|
|
||||||
export enum CountryCode {
|
export enum CountryCode {
|
||||||
multi = 'multi',
|
multi = 'multi',
|
||||||
|
|
|
||||||
|
|
@ -128,7 +128,7 @@ describe('resolve', () => {
|
||||||
protected readonly extractInternal = async (): Promise<UrlResult[]> =>
|
protected readonly extractInternal = async (): Promise<UrlResult[]> =>
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
url: new URL('https://example.com'),
|
url: new URL('https://example1.com'),
|
||||||
format: Format.unknown,
|
format: Format.unknown,
|
||||||
isExternal: true,
|
isExternal: true,
|
||||||
label: 'hoster.com',
|
label: 'hoster.com',
|
||||||
|
|
@ -137,106 +137,11 @@ describe('resolve', () => {
|
||||||
countryCodes: [CountryCode.de],
|
countryCodes: [CountryCode.de],
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new BlockedError(new URL('https://example.com'), BlockedReason.cloudflare_challenge, {}),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new BlockedError(new URL('https://example.com'), BlockedReason.cloudflare_censor, {}),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new BlockedError(new URL('https://example.com'), BlockedReason.media_flow_proxy_auth, {}),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new BlockedError(new URL('https://example.com'), BlockedReason.unknown, {}),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://working2.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
label: 'working1',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new TooManyRequestsError(new URL('https://example.com'), 10),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new TooManyTimeoutsError(new URL('https://example.com')),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://working1.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
label: 'working2',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
url: new URL('https://example2.com'),
|
|
||||||
format: Format.unknown,
|
|
||||||
isExternal: true,
|
|
||||||
error: new TypeError(),
|
|
||||||
label: 'hoster.com',
|
|
||||||
ttl: this.ttl,
|
|
||||||
meta: {
|
|
||||||
countryCodes: [CountryCode.de],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
url: new URL('https://example2.com'),
|
url: new URL('https://example2.com'),
|
||||||
format: Format.unknown,
|
format: Format.unknown,
|
||||||
isExternal: true,
|
isExternal: true,
|
||||||
error: new TimeoutError(new URL('https://example2.com')),
|
error: new BlockedError(new URL('https://example2.com'), BlockedReason.cloudflare_challenge, {}),
|
||||||
label: 'hoster.com',
|
label: 'hoster.com',
|
||||||
ttl: this.ttl,
|
ttl: this.ttl,
|
||||||
meta: {
|
meta: {
|
||||||
|
|
@ -247,7 +152,7 @@ describe('resolve', () => {
|
||||||
url: new URL('https://example3.com'),
|
url: new URL('https://example3.com'),
|
||||||
format: Format.unknown,
|
format: Format.unknown,
|
||||||
isExternal: true,
|
isExternal: true,
|
||||||
error: new QueueIsFullError(new URL('https://example3.com')),
|
error: new BlockedError(new URL('https://example3.com'), BlockedReason.cloudflare_censor, {}),
|
||||||
label: 'hoster.com',
|
label: 'hoster.com',
|
||||||
ttl: this.ttl,
|
ttl: this.ttl,
|
||||||
meta: {
|
meta: {
|
||||||
|
|
@ -258,7 +163,7 @@ describe('resolve', () => {
|
||||||
url: new URL('https://example4.com'),
|
url: new URL('https://example4.com'),
|
||||||
format: Format.unknown,
|
format: Format.unknown,
|
||||||
isExternal: true,
|
isExternal: true,
|
||||||
error: new HttpError(new URL('https://example4.com'), 500, 'Internal Server Error', { 'x-foo': 'bar' }),
|
error: new BlockedError(new URL('https://example4.com'), BlockedReason.media_flow_proxy_auth, {}),
|
||||||
label: 'hoster.com',
|
label: 'hoster.com',
|
||||||
ttl: this.ttl,
|
ttl: this.ttl,
|
||||||
meta: {
|
meta: {
|
||||||
|
|
@ -269,7 +174,102 @@ describe('resolve', () => {
|
||||||
url: new URL('https://example5.com'),
|
url: new URL('https://example5.com'),
|
||||||
format: Format.unknown,
|
format: Format.unknown,
|
||||||
isExternal: true,
|
isExternal: true,
|
||||||
error: new HttpError(new URL('https://example5.com'), 418, 'I\'m a tea pot', { 'x-foo': 'bar' }),
|
error: new BlockedError(new URL('https://example5.com'), BlockedReason.unknown, {}),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example6.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
label: 'working1',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example7.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new TooManyRequestsError(new URL('https://example7.com'), 10),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example8.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new TooManyTimeoutsError(new URL('https://example8.com')),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example9.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
label: 'working2',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example10.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new TypeError(),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example11.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new TimeoutError(new URL('https://example11.com')),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example12.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new QueueIsFullError(new URL('https://example12.com')),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example13.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new HttpError(new URL('https://example13.com'), 500, 'Internal Server Error', { 'x-foo': 'bar' }),
|
||||||
|
label: 'hoster.com',
|
||||||
|
ttl: this.ttl,
|
||||||
|
meta: {
|
||||||
|
countryCodes: [CountryCode.de],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
url: new URL('https://example14.com'),
|
||||||
|
format: Format.unknown,
|
||||||
|
isExternal: true,
|
||||||
|
error: new HttpError(new URL('https://example14.com'), 418, 'I\'m a tea pot', { 'x-foo': 'bar' }),
|
||||||
label: 'hoster.com',
|
label: 'hoster.com',
|
||||||
ttl: this.ttl,
|
ttl: this.ttl,
|
||||||
meta: {
|
meta: {
|
||||||
|
|
|
||||||
|
|
@ -6,10 +6,11 @@ import { logErrorAndReturnNiceString } from '../error';
|
||||||
import { ExtractorRegistry } from '../extractor';
|
import { ExtractorRegistry } from '../extractor';
|
||||||
import { Source } from '../source';
|
import { Source } from '../source';
|
||||||
import { Context, CountryCode, Format, UrlResult } from '../types';
|
import { Context, CountryCode, Format, UrlResult } from '../types';
|
||||||
import { showErrors, showExternalUrls } from './config';
|
import { isResolutionExcluded, showErrors, showExternalUrls } from './config';
|
||||||
import { envGetAppName } from './env';
|
import { envGetAppName } from './env';
|
||||||
import { Id } from './id';
|
import { Id } from './id';
|
||||||
import { flagFromCountryCode } from './language';
|
import { flagFromCountryCode } from './language';
|
||||||
|
import { getClosestResolution } from './resolution';
|
||||||
|
|
||||||
interface ResolveResponse {
|
interface ResolveResponse {
|
||||||
streams: Stream[];
|
streams: Stream[];
|
||||||
|
|
@ -142,7 +143,11 @@ export class StreamResolver {
|
||||||
this.logger.info(`Got ${urlResults.length} url results, including ${errorCount} errors`, ctx);
|
this.logger.info(`Got ${urlResults.length} url results, including ${errorCount} errors`, ctx);
|
||||||
|
|
||||||
streams.push(
|
streams.push(
|
||||||
...urlResults.filter(urlResult => !urlResult.error || showErrors(ctx.config))
|
...urlResults.filter(urlResult => (!urlResult.error || showErrors(ctx.config)) && !isResolutionExcluded(ctx.config, getClosestResolution(urlResult.meta?.height)))
|
||||||
|
.filter((urlResult, index, self) =>
|
||||||
|
// Remove duplicate URLs
|
||||||
|
index === self.findIndex(t => t.url.href === urlResult.url.href),
|
||||||
|
)
|
||||||
.map(urlResult => ({
|
.map(urlResult => ({
|
||||||
...this.buildUrl(urlResult),
|
...this.buildUrl(urlResult),
|
||||||
name: this.buildName(ctx, urlResult),
|
name: this.buildName(ctx, urlResult),
|
||||||
|
|
@ -200,7 +205,7 @@ export class StreamResolver {
|
||||||
});
|
});
|
||||||
|
|
||||||
if (urlResult.meta?.height) {
|
if (urlResult.meta?.height) {
|
||||||
name += ` ${urlResult.meta.height}p`;
|
name += ` ${getClosestResolution(urlResult.meta.height)}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (urlResult.isExternal && showExternalUrls(ctx.config)) {
|
if (urlResult.isExternal && showExternalUrls(ctx.config)) {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ exports[`resolve adds error info 1`] = `
|
||||||
},
|
},
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 working1",
|
"title": "🔗 working1",
|
||||||
"url": "https://working2.com/",
|
"url": "https://example6.com/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
|
|
@ -19,14 +19,14 @@ exports[`resolve adds error info 1`] = `
|
||||||
},
|
},
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 working2",
|
"title": "🔗 working2",
|
||||||
"url": "https://working1.com/",
|
"url": "https://example9.com/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example1.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com",
|
"title": "🔗 hoster.com",
|
||||||
},
|
},
|
||||||
|
|
@ -43,47 +43,47 @@ exports[`resolve adds error info 2`] = `
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example5.com/",
|
"externalUrl": "https://example14.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
❌ Request to example5.com failed with status 418 (I'm a tea pot). Request-id: test.",
|
❌ Request to example14.com failed with status 418 (I'm a tea pot). Request-id: test.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example4.com/",
|
"externalUrl": "https://example13.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
❌ Remote server example4.com has issues. We can't fix this, please try later again.",
|
❌ Remote server example13.com has issues. We can't fix this, please try later again.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example3.com/",
|
"externalUrl": "https://example12.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
⏳ Request queue for example3.com is full. Please try again later or consider self-hosting.",
|
⏳ Request queue for example12.com is full. Please try again later or consider self-hosting.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example2.com/",
|
"externalUrl": "https://example11.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
🐢 Request to example2.com timed out.",
|
🐢 Request to example11.com timed out.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example2.com/",
|
"externalUrl": "https://example10.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
❌ Request failed. Request-id: test.",
|
❌ Request failed. Request-id: test.",
|
||||||
|
|
@ -93,37 +93,37 @@ exports[`resolve adds error info 2`] = `
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example8.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
🚦 Too many recent timeouts when requesting example.com. Please try again later.",
|
🚦 Too many recent timeouts when requesting example8.com. Please try again later.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example7.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
🚦 Request to example.com was rate-limited. Please try again later or consider self-hosting.",
|
🚦 Request to example7.com was rate-limited. Please try again later or consider self-hosting.",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example5.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
⚠️ Request to example.com was blocked. Reason: unknown",
|
⚠️ Request to example5.com was blocked. Reason: unknown",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example4.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
⚠️ MediaFlow Proxy authentication failed. Please set the correct password.",
|
⚠️ MediaFlow Proxy authentication failed. Please set the correct password.",
|
||||||
|
|
@ -133,20 +133,20 @@ exports[`resolve adds error info 2`] = `
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example3.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
⚠️ Request to example.com was blocked. Reason: cloudflare_censor",
|
⚠️ Request to example3.com was blocked. Reason: cloudflare_censor",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example2.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com
|
"title": "🔗 hoster.com
|
||||||
⚠️ Request to example.com was blocked. Reason: cloudflare_challenge",
|
⚠️ Request to example2.com was blocked. Reason: cloudflare_challenge",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
|
|
@ -155,7 +155,7 @@ exports[`resolve adds error info 2`] = `
|
||||||
},
|
},
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 working1",
|
"title": "🔗 working1",
|
||||||
"url": "https://working2.com/",
|
"url": "https://example6.com/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
|
|
@ -164,14 +164,14 @@ exports[`resolve adds error info 2`] = `
|
||||||
},
|
},
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 working2",
|
"title": "🔗 working2",
|
||||||
"url": "https://working1.com/",
|
"url": "https://example9.com/",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"behaviorHints": {
|
"behaviorHints": {
|
||||||
"bingeGroup": "webstreamr-undefined-undefined-de",
|
"bingeGroup": "webstreamr-undefined-undefined-de",
|
||||||
"notWebReady": true,
|
"notWebReady": true,
|
||||||
},
|
},
|
||||||
"externalUrl": "https://example.com/",
|
"externalUrl": "https://example1.com/",
|
||||||
"name": "WebStreamr 🇩🇪",
|
"name": "WebStreamr 🇩🇪",
|
||||||
"title": "🔗 hoster.com",
|
"title": "🔗 hoster.com",
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ exports[`buildManifest default manifest 1`] = `
|
||||||
"config": [
|
"config": [
|
||||||
{
|
{
|
||||||
"key": "multi",
|
"key": "multi",
|
||||||
"title": "Multi 🌐 (4KHDHub, RgShows, VidSrc, VixSrc)",
|
"title": "Multi 🌐 (4KHDHub, HDHub4u, RgShows, VidSrc, VixSrc)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -34,9 +34,14 @@ exports[`buildManifest default manifest 1`] = `
|
||||||
"title": "French 🇫🇷 (Frembed, FrenchCloud, Movix)",
|
"title": "French 🇫🇷 (Frembed, FrenchCloud, Movix)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "gu",
|
||||||
|
"title": "Gujarati 🇮🇳 (HDHub4u)",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "hi",
|
"key": "hi",
|
||||||
"title": "Hindi 🇮🇳 (4KHDHub)",
|
"title": "Hindi 🇮🇳 (4KHDHub, HDHub4u)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -44,19 +49,29 @@ exports[`buildManifest default manifest 1`] = `
|
||||||
"title": "Italian 🇮🇹 (Eurostreaming, MostraGuarda, VixSrc)",
|
"title": "Italian 🇮🇹 (Eurostreaming, MostraGuarda, VixSrc)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "ml",
|
||||||
|
"title": "Malayalam 🇮🇳 (HDHub4u)",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "mx",
|
"key": "mx",
|
||||||
"title": "Latin American Spanish 🇲🇽 (CineHDPlus, Cuevana, HomeCine, VerHdLink)",
|
"title": "Latin American Spanish 🇲🇽 (CineHDPlus, Cuevana, HomeCine, VerHdLink)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "pa",
|
||||||
|
"title": "Punjabi 🇮🇳 (HDHub4u)",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"key": "ta",
|
"key": "ta",
|
||||||
"title": "Tamil 🇮🇳 (4KHDHub)",
|
"title": "Tamil 🇮🇳 (4KHDHub, HDHub4u)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"key": "te",
|
"key": "te",
|
||||||
"title": "Telugu 🇮🇳 (4KHDHub)",
|
"title": "Telugu 🇮🇳 (4KHDHub, HDHub4u)",
|
||||||
"type": "checkbox",
|
"type": "checkbox",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -81,12 +96,62 @@ exports[`buildManifest default manifest 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
],
|
],
|
||||||
"description": "Provides HTTP URLs from streaming websites. Configure add-on for additional languages. Add MediaFlow proxy for more URLs.
|
"description": "Provides HTTP URLs from streaming websites. Configure add-on for additional languages. Add MediaFlow proxy for more URLs.
|
||||||
|
|
||||||
Supported languages: Albanian, German, Castilian Spanish, French, Hindi, Italian, Latin American Spanish, Tamil, Telugu
|
Supported languages: Albanian, German, Castilian Spanish, French, Gujarati, Hindi, Italian, Malayalam, Latin American Spanish, Punjabi, Tamil, Telugu
|
||||||
|
|
||||||
Supported sources: 4KHDHub, CineHDPlus, Cuevana, Einschalten, Eurostreaming, Frembed, FrenchCloud, HomeCine, KinoGer, Kokoshka, MegaKino, MeineCloud, MostraGuarda, Movix, RgShows, StreamKiste, VerHdLink, VidSrc, VixSrc
|
Supported sources: 4KHDHub, CineHDPlus, Cuevana, Einschalten, Eurostreaming, Frembed, FrenchCloud, HDHub4u, HomeCine, KinoGer, Kokoshka, MegaKino, MeineCloud, MostraGuarda, Movix, RgShows, StreamKiste, VerHdLink, VidSrc, VixSrc
|
||||||
|
|
||||||
Supported extractors: ",
|
Supported extractors: ",
|
||||||
"id": "webstreamr",
|
"id": "webstreamr",
|
||||||
|
|
@ -135,6 +200,56 @@ exports[`buildManifest disable extractors 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"default": "checked",
|
"default": "checked",
|
||||||
"key": "disableExtractor_doodstream",
|
"key": "disableExtractor_doodstream",
|
||||||
|
|
@ -149,6 +264,84 @@ exports[`buildManifest disable extractors 1`] = `
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
exports[`buildManifest has checked excludeResolution_2160p 1`] = `
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"key": "showErrors",
|
||||||
|
"title": "Show errors",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "includeExternalUrls",
|
||||||
|
"title": "Include external URLs in results",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "",
|
||||||
|
"key": "mediaFlowProxyUrl",
|
||||||
|
"title": "MediaFlow Proxy URL",
|
||||||
|
"type": "text",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "",
|
||||||
|
"key": "mediaFlowProxyPassword",
|
||||||
|
"title": "MediaFlow Proxy Password",
|
||||||
|
"type": "password",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "checked",
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
`;
|
||||||
|
|
||||||
exports[`buildManifest has checked includeExternalUrls 1`] = `
|
exports[`buildManifest has checked includeExternalUrls 1`] = `
|
||||||
[
|
[
|
||||||
{
|
{
|
||||||
|
|
@ -174,6 +367,56 @@ exports[`buildManifest has checked includeExternalUrls 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
@ -202,6 +445,56 @@ exports[`buildManifest has checked showErrors 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
@ -246,6 +539,56 @@ exports[`buildManifest has checked source with appropriate config 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
@ -298,6 +641,56 @@ exports[`buildManifest has unchecked source without a config 1`] = `
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
||||||
|
|
@ -325,5 +718,55 @@ exports[`buildManifest showErrors and includeExternalUrls are unchecked by defau
|
||||||
"title": "MediaFlow Proxy Password",
|
"title": "MediaFlow Proxy Password",
|
||||||
"type": "password",
|
"type": "password",
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_2160p",
|
||||||
|
"title": "Exclude resolution 2160p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1440p",
|
||||||
|
"title": "Exclude resolution 1440p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_1080p",
|
||||||
|
"title": "Exclude resolution 1080p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_720p",
|
||||||
|
"title": "Exclude resolution 720p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_576p",
|
||||||
|
"title": "Exclude resolution 576p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_480p",
|
||||||
|
"title": "Exclude resolution 480p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_360p",
|
||||||
|
"title": "Exclude resolution 360p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_240p",
|
||||||
|
"title": "Exclude resolution 240p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_144p",
|
||||||
|
"title": "Exclude resolution 144p",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"key": "excludeResolution_Unknown",
|
||||||
|
"title": "Exclude resolution Unknown",
|
||||||
|
"type": "checkbox",
|
||||||
|
},
|
||||||
]
|
]
|
||||||
`;
|
`;
|
||||||
|
|
|
||||||
|
|
@ -14,3 +14,7 @@ export const hasMultiEnabled = (config: Config): boolean => 'multi' in config;
|
||||||
export const disableExtractorConfigKey = (extractor: Extractor): string => `disableExtractor_${extractor.id}`;
|
export const disableExtractorConfigKey = (extractor: Extractor): string => `disableExtractor_${extractor.id}`;
|
||||||
|
|
||||||
export const isExtractorDisabled = (config: Config, extractor: Extractor): boolean => disableExtractorConfigKey(extractor) in config;
|
export const isExtractorDisabled = (config: Config, extractor: Extractor): boolean => disableExtractorConfigKey(extractor) in config;
|
||||||
|
|
||||||
|
export const excludeResolutionConfigKey = (resolution: string): string => `excludeResolution_${resolution}`;
|
||||||
|
|
||||||
|
export const isResolutionExcluded = (config: Config, resolution: string): boolean => excludeResolutionConfigKey(resolution) in config;
|
||||||
|
|
|
||||||
|
|
@ -11,4 +11,5 @@ export * from './id';
|
||||||
export * from './language';
|
export * from './language';
|
||||||
export * from './manifest';
|
export * from './manifest';
|
||||||
export * from './media-flow-proxy';
|
export * from './media-flow-proxy';
|
||||||
|
export * from './resolution';
|
||||||
export * from './tmdb';
|
export * from './tmdb';
|
||||||
|
|
|
||||||
|
|
@ -72,4 +72,10 @@ describe('buildManifest', () => {
|
||||||
|
|
||||||
expect(manifest.config).toMatchSnapshot();
|
expect(manifest.config).toMatchSnapshot();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('has checked excludeResolution_2160p', () => {
|
||||||
|
const manifest = buildManifest([], [], { excludeResolution_2160p: 'on' });
|
||||||
|
|
||||||
|
expect(manifest.config).toMatchSnapshot();
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,22 @@
|
||||||
import { Extractor } from '../extractor';
|
import { Extractor } from '../extractor';
|
||||||
import { Source } from '../source';
|
import { Source } from '../source';
|
||||||
import { Config, CountryCode, CustomManifest } from '../types';
|
import { Config, CountryCode, CustomManifest } from '../types';
|
||||||
import { disableExtractorConfigKey, isExtractorDisabled } from './config';
|
import {
|
||||||
|
disableExtractorConfigKey,
|
||||||
|
excludeResolutionConfigKey,
|
||||||
|
isExtractorDisabled,
|
||||||
|
isResolutionExcluded,
|
||||||
|
} from './config';
|
||||||
import { envGetAppId, envGetAppName } from './env';
|
import { envGetAppId, envGetAppName } from './env';
|
||||||
import { flagFromCountryCode, languageFromCountryCode } from './language';
|
import { flagFromCountryCode, languageFromCountryCode } from './language';
|
||||||
|
import { RESOLUTIONS } from './resolution';
|
||||||
|
|
||||||
const typedEntries = <T extends object>(obj: T): [keyof T, T[keyof T]][] => (Object.entries(obj) as [keyof T, T[keyof T]][]);
|
const typedEntries = <T extends object>(obj: T): [keyof T, T[keyof T]][] => (Object.entries(obj) as [keyof T, T[keyof T]][]);
|
||||||
|
|
||||||
export const buildManifest = (sources: Source[], extractors: Extractor[], config: Config): CustomManifest => {
|
export const buildManifest = (sources: Source[], extractors: Extractor[], config: Config): CustomManifest => {
|
||||||
const manifest: CustomManifest = {
|
const manifest: CustomManifest = {
|
||||||
id: envGetAppId(),
|
id: envGetAppId(),
|
||||||
version: '0.66.16', // x-release-please-version
|
version: '0.69.1', // x-release-please-version
|
||||||
name: envGetAppName(),
|
name: envGetAppName(),
|
||||||
description: 'Provides HTTP URLs from streaming websites. Configure add-on for additional languages. Add MediaFlow proxy for more URLs.',
|
description: 'Provides HTTP URLs from streaming websites. Configure add-on for additional languages. Add MediaFlow proxy for more URLs.',
|
||||||
resources: [
|
resources: [
|
||||||
|
|
@ -92,6 +98,15 @@ export const buildManifest = (sources: Source[], extractors: Extractor[], config
|
||||||
default: config['mediaFlowProxyPassword'] ?? '',
|
default: config['mediaFlowProxyPassword'] ?? '',
|
||||||
});
|
});
|
||||||
|
|
||||||
|
RESOLUTIONS.forEach((resolution) => {
|
||||||
|
manifest.config.push({
|
||||||
|
key: excludeResolutionConfigKey(resolution),
|
||||||
|
type: 'checkbox',
|
||||||
|
title: `Exclude resolution ${resolution}`,
|
||||||
|
...(isResolutionExcluded(config, resolution) && { default: 'checked' }),
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
extractors.forEach((extractor) => {
|
extractors.forEach((extractor) => {
|
||||||
if (extractor.id === 'external') {
|
if (extractor.id === 'external') {
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
32
src/utils/resolution.ts
Normal file
32
src/utils/resolution.ts
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
export const RESOLUTIONS = [
|
||||||
|
'2160p',
|
||||||
|
'1440p',
|
||||||
|
'1080p',
|
||||||
|
'720p',
|
||||||
|
'576p',
|
||||||
|
'480p',
|
||||||
|
'360p',
|
||||||
|
'240p',
|
||||||
|
'144p',
|
||||||
|
'Unknown',
|
||||||
|
] as const;
|
||||||
|
|
||||||
|
export const getClosestResolution = (height: number | undefined) => {
|
||||||
|
if (!height) {
|
||||||
|
return 'Unknown';
|
||||||
|
}
|
||||||
|
|
||||||
|
return `${RESOLUTIONS.map(r => Number(r.replace('p', '')))
|
||||||
|
.filter(n => !isNaN(n))
|
||||||
|
.reduce((prev, curr) => {
|
||||||
|
return Math.abs(curr - height) < Math.abs(prev - height) ? curr : prev;
|
||||||
|
})}p`;
|
||||||
|
};
|
||||||
|
|
||||||
|
export const findHeight = (value: string): number | undefined => {
|
||||||
|
/* istanbul ignore next */
|
||||||
|
const height = parseInt(RESOLUTIONS.find(res => value.toLowerCase().includes(res))?.replace('p', '') ?? '', 10);
|
||||||
|
|
||||||
|
/* istanbul ignore next */
|
||||||
|
return isNaN(height) ? undefined : height;
|
||||||
|
};
|
||||||
Loading…
Reference in a new issue