chore: extract HubDrive handling into own extractor re-using HubCloud for better caching, increase both TTLs
This commit is contained in:
parent
546dee9799
commit
986db2cc67
11 changed files with 1299 additions and 13 deletions
|
|
@ -8,7 +8,7 @@ export class HubCloud extends Extractor {
|
|||
|
||||
public readonly label = 'HubCloud';
|
||||
|
||||
public override readonly ttl: number = 259200000; // 3d
|
||||
public override readonly ttl: number = 518400000; // 6d
|
||||
|
||||
public supports(_ctx: Context, url: URL): boolean {
|
||||
return null !== url.host.match(/hubcloud/);
|
||||
|
|
|
|||
25
src/extractor/HubDrive.test.ts
Normal file
25
src/extractor/HubDrive.test.ts
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import winston from 'winston';
|
||||
import { createTestContext } from '../test';
|
||||
import { FetcherMock } from '../utils';
|
||||
import { ExtractorRegistry } from './ExtractorRegistry';
|
||||
import { HubCloud } from './HubCloud';
|
||||
import { HubDrive } from './HubDrive';
|
||||
|
||||
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
|
||||
const extractorRegistry = new ExtractorRegistry(
|
||||
logger,
|
||||
[
|
||||
new HubDrive(
|
||||
new FetcherMock(`${__dirname}/__fixtures__/HubDrive`),
|
||||
new HubCloud(new FetcherMock(`${__dirname}/__fixtures__/HubDrive/HubCloud`)),
|
||||
),
|
||||
],
|
||||
);
|
||||
|
||||
const ctx = createTestContext();
|
||||
|
||||
describe('HubDrive', () => {
|
||||
test('handle avatar', async () => {
|
||||
expect(await extractorRegistry.handle(ctx, new URL('https://hubdrive.space/file/7283903021'))).toMatchSnapshot();
|
||||
});
|
||||
});
|
||||
36
src/extractor/HubDrive.ts
Normal file
36
src/extractor/HubDrive.ts
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
import * as cheerio from 'cheerio';
|
||||
import { Context, Meta, UrlResult } from '../types';
|
||||
import { Fetcher } from '../utils';
|
||||
import { Extractor } from './Extractor';
|
||||
import { HubCloud } from './HubCloud';
|
||||
|
||||
export class HubDrive extends Extractor {
|
||||
public readonly id = 'hubdrive';
|
||||
|
||||
public readonly label = 'HubDrive';
|
||||
|
||||
public override readonly ttl: number = 518400000; // 6d
|
||||
|
||||
private readonly hubCloud: HubCloud;
|
||||
|
||||
public constructor(fetcher: Fetcher, hubCloud: HubCloud) {
|
||||
super(fetcher);
|
||||
|
||||
this.hubCloud = hubCloud;
|
||||
}
|
||||
|
||||
public supports(_ctx: Context, url: URL): boolean {
|
||||
return null !== url.host.match(/hubdrive/);
|
||||
}
|
||||
|
||||
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
|
||||
const headers = { Referer: meta.referer ?? url.href };
|
||||
|
||||
const html = await this.fetcher.text(ctx, url, { headers });
|
||||
const $ = cheerio.load(html);
|
||||
|
||||
const hubCloudUrl = new URL($('a:contains("HubCloud")').attr('href') as string);
|
||||
|
||||
return this.hubCloud.extract(ctx, hubCloudUrl, meta);
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,373 @@
|
|||
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
|
||||
<script type="text/javascript">
|
||||
aclib.runPop({
|
||||
zoneId: '10553222',
|
||||
});
|
||||
</script>
|
||||
|
||||
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220853"></script>-->
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", function() {
|
||||
history.pushState(null, null, location.href);
|
||||
window.onpopstate = function () {
|
||||
history.go(1);
|
||||
window.location.href = 'https://push-me-once.com/go/1272663';
|
||||
};
|
||||
});Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
|
||||
</script>
|
||||
<html>
|
||||
<head>
|
||||
<title>Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
|
||||
<meta charset="utf-8">
|
||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
||||
<meta name="referrer" content="no-referrer">
|
||||
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
|
||||
|
||||
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
|
||||
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<style>
|
||||
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
|
||||
.btn-success1 {
|
||||
color: #fff;
|
||||
background-color: #28a745;
|
||||
border-color: #28a745;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
letter-spacing: .4px;
|
||||
font-family: 'Open Sans',sans-serif!important;
|
||||
font-weight: 600;
|
||||
text-decoration:none !important;
|
||||
vertical-align: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
border: 1px solid transparent;
|
||||
padding: .375rem .75rem;
|
||||
line-height: 1.5;
|
||||
border-radius: .30rem;
|
||||
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||
}
|
||||
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #1e7e34;
|
||||
border-color: #1c7430;
|
||||
}
|
||||
.btn-success1:hover {
|
||||
color: #fff;
|
||||
background-color: #218838;
|
||||
border-color: #1e7e34;
|
||||
}
|
||||
.btn-success1.focus, .btn-success1:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
|
||||
}
|
||||
.btn-lg, .btn-group-lg > .btn2 {
|
||||
padding: .5rem .6rem !important;
|
||||
font-family: 'Open Sans',sans-serif!important;
|
||||
letter-spacing: .1px;
|
||||
border-radius: 0.35rem!important;
|
||||
}
|
||||
.ads-btns {
|
||||
position: relative;
|
||||
overflow: hidden
|
||||
}
|
||||
.ads-btns a.btn2 {
|
||||
min-width: 40%
|
||||
}
|
||||
|
||||
.ads-btns svg {
|
||||
fill: #fff;
|
||||
width: 17px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.ads-btns svg path {
|
||||
fill: #fff;
|
||||
stroke: #fff
|
||||
}
|
||||
|
||||
.ads-btns svg:first-child path {
|
||||
fill: #fff;
|
||||
stroke: transparent
|
||||
}
|
||||
|
||||
.ads-btns svg:first-child {
|
||||
right: 20px
|
||||
}
|
||||
.downloads-btns-div .btn2 {
|
||||
margin: 0 3px 12px
|
||||
}
|
||||
.btn2 {
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
border: 2px solid #cbfc01;
|
||||
padding: 10px 15px;
|
||||
border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
background: #0ebac3;
|
||||
color: #000;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #cbfc01
|
||||
}
|
||||
|
||||
|
||||
.btn-zip {
|
||||
border-color: #00d0ff;
|
||||
background: #00d0ff;
|
||||
color: #000
|
||||
}
|
||||
</style>
|
||||
<body><center>
|
||||
<br/>
|
||||
<div class="header">
|
||||
HubCloud | <a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="card-body">
|
||||
<h2>
|
||||
<div class="main" id="section2">
|
||||
|
||||
<div class="card h6">
|
||||
|
||||
<div class="card-header text-white bg-primary mb-3">
|
||||
Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv </div>
|
||||
|
||||
<div class="card-body">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">60.21 GB</i></li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="date">13-May-2025 05:55:49</i></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
<p class="h3 text-success">Download Link Generated</p>
|
||||
<div class="input-group mb-3">
|
||||
<input onclick="copy_link('ilink')" type="text" class="form-control" value="https://hubcloud.foo/drive/1qepetxqp4nhxxq" readonly="" id="ilink">
|
||||
<div class="input-group-prepend">
|
||||
<span class="input-group-text btn" id="basic-addon2" onclick="copy_link('ilink')">Copy Share Link</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Banners -->
|
||||
<!--<ins data-revive-zoneid="6" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
|
||||
<!-- Mobile Banners -->
|
||||
<!--<ins data-revive-zoneid="7" data-revive-cphost="43509b58b68d940f8734726dfed6c5c8|1|hubcloud.in" data-revive-id="1d63e790351363d29b61f9cf59b98fad"></ins>-->
|
||||
<!--<script async src="//greenfox.ink/d/asyncjs.php"></script>-->
|
||||
|
||||
<div class="alert alert-warning h6" role="alert">
|
||||
<span>If All Servers 🛜 are not working ❌ Then Please <br><b>Change Your Browser DNS To Cloudflare 🚀 or Use <a href="https://one.one.one.one/" target="_blank">VPN</a></b> <br><a href="https://tinyurl.com/Unblock-Ban-Site" target="_blank">How ? Click Here 👉 to Watch Tutorial 👀</a></span>
|
||||
</div>
|
||||
|
||||
<div class="ad-container"></div>
|
||||
|
||||
|
||||
<div class="ad-containerx"></div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027" id="fsl" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-success btn-lg h6"><i class="fas fa-file-download fa-lg"></i> Download [FSL Server]</a>
|
||||
<script>
|
||||
const fsl = document.getElementById('fsl');
|
||||
if (fsl) fsl.href += '1' + new Date().getMinutes();
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="https://pixel.hubcdn.fans/?id=916e54dbbc3923cf404ca0c44108f91051021dd4d146df1f0a3c215750cbd8206c23b3e8663d75214d4d981882457c38140d33c6ee0a906d4c78089033814f7e562947cae9e7459bbcb9d84cdcda434d20e0fb72be56fe7e6b12f5c754c48d0b::fca3f06af5c7c4b06bda6feb79165ada" rel="noreferrer nofollow noopener" target="_blank" class="btn btn-danger btn-lg h6" style="background-color: #dc3545 !important;">
|
||||
<i class="fas fa-file-download fa-lg"></i> Download [Server : 10Gbps]</a>
|
||||
|
||||
<p style="font-size: 12px; padding-bottom:4px !important; margin-bottom:0px !important">
|
||||
Resume Not Supported in 10Gbps So Use only if you have stable internet (:
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<button id="android_launch" class="btn btn-success btn-lg h6 p-2 d-none" style="background: #0d0b15 !important;"><i class="fab fa-android fa-lg" style="color: #63E6BE;"></i> DL/Open with Android App</button>
|
||||
|
||||
<script>
|
||||
function createIntentURL({host, scheme = 'http', type = 'application/octet-stream'}) {
|
||||
let host_ = host.replace('https://', '');
|
||||
return `intent://${host_}#Intent;scheme=${scheme};action=android.intent.action.VIEW;type=${type};S.browser_fallback_url=${encodeURIComponent(host)};end`;
|
||||
}
|
||||
function isAndroid() {
|
||||
return /Android/i.test(navigator.userAgent);
|
||||
}
|
||||
|
||||
const android_launch = document.getElementById('android_launch');
|
||||
if(isAndroid()){
|
||||
android_launch.classList.remove("d-none");
|
||||
android_launch.addEventListener('click', ()=>{
|
||||
var anchor = document.createElement('a');anchor.href= createIntentURL({host: 'https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027',scheme: 'https',type: 'video/x-matrosk',
|
||||
});anchor.click();
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
</script>
|
||||
|
||||
</h2>
|
||||
|
||||
<div class="alert alert-warning" role="alert">
|
||||
<p><b>Note : </b>Please Use Download Manager like <a href="https://www.google.com/search?q=idm+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDM</a> Or <a href="https://www.google.com/search?q=IDA+dowload+manager" target="_blank" rel="noopener noreferrer nofollow">IDA</a> - To accelerate Your Download Speeds </p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-primary" role="alert">
|
||||
<p><b>Note:</b> <i>Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-info" role="alert">
|
||||
<p><b>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</b></p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<br>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade show active" id="link">
|
||||
<div class="text" align="center">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body" id="div1">
|
||||
<p id="sharelink" onclick="copy_link('div1')">https://hubcloud.foo/drive/1qepetxqp4nhxxq</p>
|
||||
</div>
|
||||
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
||||
<script>
|
||||
|
||||
var size = document.getElementById("size").innerHTML
|
||||
var sharelink = document.getElementById("sharelink").innerHTML
|
||||
if(size == 'NAN '){swal({
|
||||
title: "Token Expired!",
|
||||
text: "Token Link has been expired Please Click on Ok Button To Generate New Link!",
|
||||
type: "success"
|
||||
}).then(function() {
|
||||
window.location = document.location.href = sharelink;
|
||||
});}
|
||||
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied ! : "+e)}
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
// const L_=["aHR0cHM6Ly90aW55dXJsLmNvbS9hdm9ndXJsNHU="],localStorageKey="pds",hoursLimit=6;let opened=!1;document.addEventListener("click",function(){if(!opened){var a=localStorage.getItem(localStorageKey),l=(new Date).getTime();if(!(a&&l-a<216e5)){opened=!0;let e=L_[Math.floor(Math.random()*L_.length)],t=atob(e),o=document.createElement("a");o.href=t,o.target="_blank",o.rel="noopener noreferrer",a=new MouseEvent("click",{view:window,bubbles:!0,cancelable:!0}),o.dispatchEvent(a),setTimeout(()=>window.focus(),100),localStorage.setItem(localStorageKey,l)}}});
|
||||
</script>
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br><br>
|
||||
</div>
|
||||
Msc
|
||||
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.14.3/dist/umd/popper.min.js" integrity="sha384-ZMP7rVo3mIykV+2+9J3UJ46jBk0WLaUAdn689aCwoqbBJiSnjAK/l8WvCWPIPm49" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.1.3/dist/js/bootstrap.min.js" integrity="sha384-ChfqqxuZUCnJSK3+MXmPNIyE6ZbWh2IMqE241rYiqJxyMiZ6OW/JmZQ5stwEULTy" crossorigin="anonymous"></script>
|
||||
|
||||
<!--2dl-->
|
||||
|
||||
<div class="footer">
|
||||
|
||||
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html><script>
|
||||
window.sessionStorage.setItem('xl',window.location.href)
|
||||
function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}cn("/games/");
|
||||
</script>
|
||||
<script>
|
||||
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
|
||||
</script>
|
||||
|
||||
|
||||
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
|
||||
|
||||
<!--<script>let s__=!1,observer=null;const sc_="a, button";function opst(e){if(!s__)return;e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r=document.querySelectorAll(sc_);r.forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){let e=document.querySelectorAll(sc_);e.forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){}},!1);-->
|
||||
<!--</script>-->
|
||||
|
||||
|
||||
<script>
|
||||
function setCookie(e,t,i){let o=encodeURIComponent(t),$=new Date;$.setTime($.getTime()+36e5*i);let n=`${e}=${o}; expires=${$.toUTCString()}; path=/`;document.cookie=n}setCookie("xyt",1,24);
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<script data-cfasync="false" type="text/javascript" id="clever-core">
|
||||
/* <![CDATA[ */
|
||||
(function (document, window) {
|
||||
var a, c = document.createElement("script"), f = window.frameElement;
|
||||
|
||||
c.id = "CleverCoreLoader98023";
|
||||
c.src = "https://scripts.cleverwebserver.com/9afdf189fcae8189c250865783d52630.js";
|
||||
|
||||
c.async = !0;
|
||||
c.type = "text/javascript";
|
||||
c.setAttribute("data-target", window.name || (f && f.getAttribute("id")));
|
||||
c.setAttribute("data-callback", "put-your-callback-function-here");
|
||||
c.setAttribute("data-callback-url-click", "put-your-click-macro-here");
|
||||
c.setAttribute("data-callback-url-view", "put-your-view-macro-here");
|
||||
|
||||
try {
|
||||
a = parent.document.getElementsByTagName("script")[0] || document.getElementsByTagName("script")[0];
|
||||
} catch (e) {
|
||||
a = !1;
|
||||
}
|
||||
|
||||
a || (a = document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]);
|
||||
a.parentNode.insertBefore(c, a);
|
||||
})(document, window);
|
||||
/* ]]> */
|
||||
</script>
|
||||
328
src/extractor/__fixtures__/HubDrive/HubCloud/https:hubcloud.fyidrive1qepetxqp4nhxxq
generated
Normal file
328
src/extractor/__fixtures__/HubDrive/HubCloud/https:hubcloud.fyidrive1qepetxqp4nhxxq
generated
Normal file
|
|
@ -0,0 +1,328 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
|
||||
<meta charset="utf-8">
|
||||
<script async src="https://arc.io/widget.min.js#cmedRMLe"></script>
|
||||
<meta name="referrer" content="no-referrer">
|
||||
|
||||
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
|
||||
|
||||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-KyZXEAg3QhqLMpG8r+8fhAXLRk2vvoC2f3B09zVXn8CA5QIVfZOJ3BCsw2P0p/We" crossorigin="anonymous">
|
||||
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
|
||||
|
||||
<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>
|
||||
|
||||
<meta name=viewport content="width=device-width, initial-scale=1">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
|
||||
|
||||
<!--<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1220840"></script>-->
|
||||
|
||||
|
||||
<script id="aclib" type="text/javascript" src="//acscdn.com/script/aclib.js"></script>
|
||||
<script type="text/javascript">
|
||||
aclib.runPop({
|
||||
zoneId: '10550070',
|
||||
});
|
||||
</script>
|
||||
|
||||
<!-- Cloudflare Web Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "4a22bad849ab4d2da600be878e3c0fc2"}'></script><!-- End Cloudflare Web Analytics -->
|
||||
|
||||
<!--<script async src="https://greenanalytics.autos/recaptcha/v4_enc.js"></script>-->
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-VPX61DM9S8"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
gtag('config', 'G-VPX61DM9S8');Object.defineProperty(document,atob('cmVmZXJyZXI='),{get:function(){return atob('aHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS8=')}});
|
||||
</script>
|
||||
<script>
|
||||
// function cn(t){let e=window.location.protocol+"//"+window.location.host+t;history.replaceState({path:e},"",e)}
|
||||
// let p_ = document.location.pathname;
|
||||
// cn('/');
|
||||
// setTimeout(()=> cn(p_), 2200);
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
</head>
|
||||
<style>
|
||||
.icon{width:48px;height:48px}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0}.bg-primary{background-color:#4e73df!important}body{font-family:"Nunito",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"!important;font-weight:14px}.font-weight-bold{font-weight:700!important}.text-primary{color:#007bff!important;padding:.75rem 1.25rem;background-color:#f8f9fc;border-bottom:1px solid #e3e6f0;position:relative;display:flex;flex-direction:column;min-width:0;word-wrap:break-word;border:1px solid #e3e6f0;border-radius:.35rem;line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.font-weight-bold{font-weight:700!important}.m-0{margin:auto!important;width:100%}h4,.h4{font-size:1.4rem}.card-body{flex:1 1 auto;padding:1.25rem}.nav-tabs{border-bottom:1px solid #dddfeb}.nav{display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link.active,.nav-tabs .nav-item.show .nav-link{color:#6e707e;background-color:#fff;border-color:#007bff #dddfeb #fff;font-weight:600}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.35rem;border-top-right-radius:.35rem}.nav-link{display:block;padding:.5rem 1rem}a{color:#4e73df;text-decoration:none;background-color:transparent}.footer{width:100%;height:auto;position:absolute;right:0;padding:15px 50px 0 15px;font-size:15px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right}.tab-content{width:90%;height:auto;position:initial;right:0;padding:0;text-align:center}.btn{color:#fff!important;background-color:#007bff!important;border-color:#007bff!important;font-weight:700!important}.btn:hover{color:#fff!important;background-color:#0069d9!important;border-color:#0062cc!important}.btn-success:not(:disabled):not(.disabled):active:focus,.btn-success:not(:disabled):not(.disabled).active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-success:focus,.btn-success.focus{box-shadow:0 0 0 .2rem rgba(38,143,255,0.5)}.btn-lg,.btn-group-lg>.btn{padding:.5rem 1rem;font-size:1.2rem;border-radius:.45rem}.header{width:100%;height:auto;position:relative;right:0;padding:10px 50px 5px 15px;font-size:16px;color:#000;background-color:#F2F2F2;border-top:0 solid #E6E6E6;font-weight:600;text-align:right;margin-top:-25px}.alert-danger{background-color:#e74c3c;border-color:#e74c3c;color:#fff}.alert{padding:15px;margin-bottom:21px;border:1px solid transparent;border-radius:4px}.card{line-break:auto;word-break:break-all;white-space:normal;text-overflow:ellipsis;overflow:hidden}.m-5{margin:auto!important}.swal-button{background-color:#007bff!important}.card-header:first-child{font-weight:600}
|
||||
.btn-success1 {
|
||||
color: #fff;
|
||||
background-color: #28a745;
|
||||
border-color: #28a745;
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
letter-spacing: .4px;
|
||||
font-family: 'Open Sans',sans-serif!important;
|
||||
font-weight: 600;
|
||||
text-decoration:none !important;
|
||||
vertical-align: middle;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
border: 1px solid transparent;
|
||||
padding: .375rem .75rem;
|
||||
line-height: 1.5;
|
||||
border-radius: .30rem;
|
||||
transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;
|
||||
}
|
||||
.btn-success1:not(:disabled):not(.disabled).active, .btn-success1:not(:disabled):not(.disabled):active, .show>.btn-success1.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #1e7e34;
|
||||
border-color: #1c7430;
|
||||
}
|
||||
.btn-success1:hover {
|
||||
color: #fff;
|
||||
background-color: #218838;
|
||||
border-color: #1e7e34;
|
||||
}
|
||||
.btn-success1.focus, .btn-success1:focus {
|
||||
box-shadow: 0 0 0 0.2rem rgb(72 180 97 / 50%);
|
||||
}
|
||||
.btn-lg, .btn-group-lg > .btn2 {
|
||||
padding: .5rem .6rem !important;
|
||||
font-family: 'Open Sans',sans-serif!important;
|
||||
letter-spacing: .1px;
|
||||
border-radius: 0.35rem!important;
|
||||
}
|
||||
.ads-btns {
|
||||
position: relative;
|
||||
overflow: hidden
|
||||
}
|
||||
.ads-btns a.btn2 {
|
||||
min-width: 40%
|
||||
}
|
||||
|
||||
.ads-btns svg {
|
||||
fill: #fff;
|
||||
width: 17px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 0
|
||||
}
|
||||
|
||||
.ads-btns svg path {
|
||||
fill: #fff;
|
||||
stroke: #fff
|
||||
}
|
||||
|
||||
.ads-btns svg:first-child path {
|
||||
fill: #fff;
|
||||
stroke: transparent
|
||||
}
|
||||
|
||||
.ads-btns svg:first-child {
|
||||
right: 20px
|
||||
}
|
||||
.downloads-btns-div .btn2 {
|
||||
margin: 0 3px 12px
|
||||
}
|
||||
.btn2 {
|
||||
font-style: normal;
|
||||
font-weight: 500;
|
||||
font-size: 14px;
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
border: 2px solid #cbfc01;
|
||||
padding: 10px 15px;
|
||||
border-radius: 6px;
|
||||
-webkit-border-radius: 6px;
|
||||
-moz-border-radius: 6px;
|
||||
background: #0ebac3;
|
||||
color: #000;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
background: #cbfc01
|
||||
}
|
||||
|
||||
|
||||
.btn-zip {
|
||||
border-color: #00d0ff;
|
||||
background: #00d0ff;
|
||||
color: #000
|
||||
}
|
||||
</style>
|
||||
<body><center>
|
||||
<br/>
|
||||
|
||||
|
||||
<div class="header">
|
||||
HubCloud | <a href="https://hubcloud.fans/">Create An Account</a> |<a href="https://hubcloud.foo/drive/admin">Login</a>
|
||||
</div>
|
||||
<br>
|
||||
<div class="container container-fluid main">
|
||||
<div class="card-body">
|
||||
<h2>
|
||||
<div class="main" id="section2">
|
||||
|
||||
<div class="card h6">
|
||||
|
||||
<div class="card-header text-white bg-primary mb-3">
|
||||
Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv </div>
|
||||
|
||||
<div class="card-body">
|
||||
<ul class="list-group">
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">File Size<i id="size">60.21 GB</i></li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">File Type<i>video/x-matrosk</i></li>
|
||||
<li class="list-group-item d-flex justify-content-between align-items-center">Share Date<i id="size">13-May-2025 05:55:49</i></li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<div class="alert alert-warning h6" role="alert">
|
||||
<span>
|
||||
<p>Experience the magic of Hubcloud where files effortlessly find their way into your downloads!</p>
|
||||
<b>Hubcloud Means File will get Downloaded by anyhow (: </b>
|
||||
</span>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
<center>
|
||||
<!--<a href="https://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/header.gif" style="-->
|
||||
<!-- width: 820px;-->
|
||||
<!-- height: 90px;-->
|
||||
<!-- padding: -17px;-->
|
||||
<!--" class="img-fluid"></a>-->
|
||||
</center>
|
||||
|
||||
<div class="loading">
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="margin:auto;background:#fff;display:block;" width="200px" height="200px" viewBox="0 0 100 100" preserveAspectRatio="xMidYMid">
|
||||
<g><circle cx="73.801" cy="68.263" fill="#e15b64" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="0s"></animateTransform>
|
||||
</circle><circle cx="68.263" cy="73.801" fill="#f47e60" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.062s"></animateTransform>
|
||||
</circle><circle cx="61.481" cy="77.716" fill="#f8b26a" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.125s"></animateTransform>
|
||||
</circle><circle cx="53.916" cy="79.743" fill="#abbd81" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.187s"></animateTransform>
|
||||
</circle><circle cx="46.084" cy="79.743" fill="#849b87" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.25s"></animateTransform>
|
||||
</circle><circle cx="38.519" cy="77.716" fill="#6492ac" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.312s"></animateTransform>
|
||||
</circle><circle cx="31.737" cy="73.801" fill="#637cb5" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.375s"></animateTransform>
|
||||
</circle><circle cx="26.199" cy="68.263" fill="#6a63b6" r="3">
|
||||
<animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;360 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s" begin="-0.437s"></animateTransform>
|
||||
</circle><animateTransform attributeName="transform" type="rotate" calcMode="spline" values="0 50 50;0 50 50" times="0;1" keySplines="0.5 0 0.5 1" repeatCount="indefinite" dur="1.4925373134328357s"></animateTransform></g>
|
||||
</svg>
|
||||
<h3>Please Wait While Page is loading</h3>
|
||||
</div>
|
||||
<div class="vd d-none">
|
||||
|
||||
|
||||
|
||||
<a id="download" href="https://gamerxyt.com/hubcloud.php?host=hubcloud&id=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=" rel="noopener noreferrer nofollow" class="btn btn-primary h6 p-2"><i class="fas fa-file-download fa-lg"></i> Generate Direct Download Link</a>
|
||||
|
||||
|
||||
<center>
|
||||
<!--<div class="ads-btns">-->
|
||||
<!--<div class="downloads-btns-div"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M7.5,1.5a6,6,0,1,0,0,12a6,6,0,1,0,0,-12m0,1a5,5,0,1,1,0,10a5,5,0,1,1,0,-10ZM6.625,11l1.75,0l0,-4.5l-1.75,0ZM7.5,3.75a1,1,0,1,0,0,2a1,1,0,1,0,0,-2Z"></path></svg><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 15 15"><path d="M3.25,3.25l8.5,8.5M11.75,3.25l-8.5,8.5"></path></svg><a class="btn2" href="https://winexch.com/?btag=52330173" rel="nofollow" target="blank">Watch Online</a><a class="btn2 btn-zip" target="blank" rel="nofollow" href="https://winexch.com/?btag=52330173">Download</a></div>-->
|
||||
<!--</div>-->
|
||||
</center>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
</h2>
|
||||
<center>
|
||||
<!-- <a href="http://winexch.com/?btag=52330173" target="_blank"><img src="https://hubcloud.club/drive/assets/footer.gif" style="-->
|
||||
<!-- width: 820px;-->
|
||||
<!-- height: 90px;-->
|
||||
<!-- padding: -17px;-->
|
||||
<!--" class="img-fluid"></a>-->
|
||||
</center>
|
||||
|
||||
<div class="alert alert-info" role="alert">
|
||||
<P><a href="https://tinyurl.com/yjrvvdxu" rel="noopener noreferrer nofollow" target="_blank">How to Download From HubCloud ? Click here to Watch Tutorial</a></P>
|
||||
</div>
|
||||
|
||||
<div class="alert alert-primary" role="alert">
|
||||
<p><b>Note:</b> <i> Always Use Updated Chrome Browser With Cookies Enabled .</i>| Refresh this Page & click Download again if you get any error.</i> ! Resume is Supported-Enjoy :)</p>
|
||||
</div>
|
||||
<div class="alert alert-info" role="alert">
|
||||
<p>If you're getting any error please report at <a href="https://t.me/hubcloudreport">@Telegram Group</a> with Share Link And Screenshot (:</p>
|
||||
</div>
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
<!--<div class="m-5 font-weight-normal text-primary">-->
|
||||
<!--<a href="https://a-ads.com?partner=1490501">Advertise with Anonymous Ads</a>-->
|
||||
<!--</div>-->
|
||||
<br>
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade show active" id="link">
|
||||
<div class="text" align="center">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" id="button1" role="tab" data-toggle="tab">Copy Link</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="card">
|
||||
<div class="card-body" id="div1">
|
||||
<p onclick="copy_link('div1')">https://hubcloud.foo/drive/1qepetxqp4nhxxq</p>
|
||||
</div>
|
||||
<button class="btn btn-success btn-sm" id="button1" onclick="copy_link('div1')"><i class="fa fa-copy"></i> Copy Link</button>
|
||||
<script>
|
||||
|
||||
setTimeout(function(){
|
||||
document.querySelector(".loading").classList.add("d-none");
|
||||
document.querySelector(".vd").classList.remove("d-none");
|
||||
}, 2000);
|
||||
var url = 'https://gamerxyt.com/hubcloud.php?host=hubcloud&id=1qepetxqp4nhxxq&token=dDU4Z2M5RGgxcGl0Y01yTzd0eWRnTmdDS2QzVTVUQWpIR2xtS1R5RGhWaz0=';
|
||||
|
||||
var download = document.getElementById('download');
|
||||
download.onclick = function() {
|
||||
if (this.classList.contains('disabled')) {
|
||||
event.preventDefault();
|
||||
return;
|
||||
}
|
||||
window.location.href = url;
|
||||
download.classList.add('disabled');
|
||||
setTimeout(function() {
|
||||
download.classList.remove('disabled');
|
||||
}, 6000);
|
||||
}
|
||||
</script>
|
||||
<script>
|
||||
function copy_link(e){let el=e;e = document.getElementById(el).value; if(typeof e == 'undefined'){e=document.getElementById(el).innerText}a=document.createElement("textarea");a.innerHTML=e,document.body.appendChild(a),a.select();document.execCommand("copy");document.body.removeChild(a),swal("Link Copied! : "+e)}function stck(e,t,i){let o="";if(i){let e=new Date;e.setTime(e.getTime()+60*i*1e3),o="; expires="+e.toUTCString()}document.cookie=`${e}=${t||""}${o}; path=/; SameSite=None; Secure`}stck('xla',"s4t",30240);
|
||||
</script>
|
||||
<script>
|
||||
// function sT(e){let t=hashKey(e),r=Date.now();localStorage.setItem(t,r.toString())}function hashKey(e){let t=0;for(let r=0;r<e.length;r++)t=(t<<5)-t+e.charCodeAt(r);t=Math.abs(t);let n="";for(let o=0;o<6;o++)n+="abcdefghijklmnopqrstuvwxyz"[t%26],t=Math.floor(t/26);return n}function is_v(e,t){let r=hashKey(e),n=localStorage.getItem(r);return!!n&&(Date.now()-parseInt(n))/6e4<=t}var s__=!1,observer=null,sc_="a, button",d_=!1;function clsd(){s__=!1,d_=!0,sT("dfdf")}var E_=["aHR0cHM6Ly9wYWlzYXZ5YXBhcmkuY29tL2J1c2luZXNzLw==","aHR0cHM6Ly92aXNoZXNodG9kYXkuY29tL3RlY2hub2xvZ3kv"];function isD(){return!/Mobi|Android/i.test(navigator.userAgent)}let t_=[];for(let e_=0;e_<4 && (true || !d_ && !isD());e_++){let e=E_[Math.floor(Math.random()*E_.length)];if(!t_.includes(e)){var t,r=document.createElement("iframe");if(sT(e),t_.push(e),r.src=atob(e),r.width="0",r.height="0",r.style.display="none",r.referrerPolicy="no-referrer",document.querySelector("body")){console.log("inserted"),document.body.appendChild(r);break}}}function opst(e){if(d_){console.log("closed d_");return}if(!s__){console.log("no s__");return}e.preventDefault(),e.stopImmediatePropagation();let t=document.createElement("a");t.href=s__,t.target="_blank",t.rel="noopener noreferrer",t.click();let r;s__=!1,document.querySelectorAll(sc_).forEach(e=>{e.removeEventListener("click",opst)}),observer.disconnect()}function atchs(){document.querySelectorAll(sc_).forEach(e=>{e.addEventListener("click",opst,{once:!0})})}window.addEventListener("message",function(e){try{let t=JSON.parse(e.data);console.log(t),t?.url&&(s__=t.url,atchs(),(observer=new MutationObserver(atchs)).observe(document.body,{childList:!0,subtree:!0}))}catch(r){console.log("Error: ",r)}},!1);
|
||||
</script>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<br>
|
||||
<br>
|
||||
<br>
|
||||
<br><br>
|
||||
</div>
|
||||
|
||||
|
||||
<div class="footer">
|
||||
|
||||
<p>Made with <svg width="1em" height="1em" viewBox="0 0 16 16" class="bi bi-heart-fill" fill="red" xmlns="http://www.w3.org/2000/svg"> <path fill-rule="evenodd" d="M8 1.314C12.438-3.248 23.534 4.735 8 15-7.534 4.736 3.562-3.248 8 1.314z" /> </svg></p>
|
||||
</div>
|
||||
|
||||
<script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'9bede0942dcf4e6c',t:'MTc2ODU2OTI4MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body>
|
||||
</html>
|
||||
506
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile7283903021
generated
Normal file
506
src/extractor/__fixtures__/HubDrive/https:hubdrive.spacefile7283903021
generated
Normal file
|
|
@ -0,0 +1,506 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta name='admaven-placement' content=BrHCGpjC9>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<meta name="referrer" content="no-referrer"/>
|
||||
<meta name="referrer" content="none"/>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta property="og:image" content="/assets/img/favicon.png">
|
||||
<meta property="og:type" content="website"/>
|
||||
<meta name="author" content="HubDrive">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<title>HubDrive | Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</title>
|
||||
<!-- Custom fonts for this template-->
|
||||
<script src="https://cdn.jsdelivr.net/clipboard.js/1.5.12/clipboard.min.js"></script>
|
||||
<script src="https://unpkg.com/sweetalert@2.1.2/dist/sweetalert.min.js"></script>
|
||||
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
|
||||
<script async="async" type="text/javascript" src="/assets/js/neodrivev2.5.min.js?v=3"></script>
|
||||
<script src="https://use.fontawesome.com/746f656c7a.js"></script>
|
||||
<link href="/assets/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link href="/assets/css/sb-admin-2.css" rel="stylesheet">
|
||||
<link href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i" rel="stylesheet">
|
||||
<link rel="icon" href="/assets/img/favicon.png">
|
||||
<style>
|
||||
h4, .h4 {
|
||||
font-size: 1.4rem;
|
||||
}
|
||||
.table {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
#sticky-footer2 {
|
||||
display: none !important;
|
||||
}
|
||||
.Blink {
|
||||
animation: blinker 0.3s cubic-bezier(.5, 0, 1, 1) infinite alternate;
|
||||
}
|
||||
@keyframes blinker {
|
||||
from { opacity: 1; }
|
||||
to { opacity: 0; }
|
||||
}
|
||||
.sidebar .sidebar-brand {
|
||||
font-size: .65rem;
|
||||
}
|
||||
.sidebar .nav-item .nav-link span {
|
||||
color: #fff !important;
|
||||
}
|
||||
.sidebar .sidebar-brand i {
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.bg-white {
|
||||
background-color: #171717!important;
|
||||
}
|
||||
.container, .container-fluid {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
.card-header {
|
||||
background-color: transparent;
|
||||
}
|
||||
#wrapper #content-wrapper #content {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
#wrapper #content-wrapper {
|
||||
background-color: transparent !important;
|
||||
}
|
||||
.text-primary {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
.card-body {
|
||||
background-color: transparent !IMPORTANT;
|
||||
}
|
||||
.card {
|
||||
background-color: transparent;
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.table {
|
||||
color: rgb(217, 217, 217);
|
||||
}
|
||||
.bg-gradient-primary {
|
||||
background-image: linear-gradient(180deg,rgb(0, 28, 67)10%,rgb(0, 28, 67) 100%);
|
||||
}
|
||||
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
|
||||
color: rgb(130, 182, 255);
|
||||
background-color: rgb(0, 28, 67);
|
||||
}
|
||||
footer.sticky-footer {
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.navbar {
|
||||
border-bottom: 2px solid hsl(213deg 69.03% 35.03% / 68%);
|
||||
border-radius: 5px;
|
||||
}
|
||||
.btn-primary {
|
||||
background-color: rgb(0 63 151);
|
||||
font-weight: 600;
|
||||
}
|
||||
.text-gray-800 {
|
||||
color: rgb(130, 182, 255);
|
||||
}
|
||||
.card-file{
|
||||
color: rgb(217, 217, 217);
|
||||
}
|
||||
.h5 {
|
||||
color:rgb(130, 182, 255) !Important;
|
||||
}
|
||||
hr {
|
||||
border: 1px solid rgb(255 255 255 / 23%);
|
||||
}
|
||||
.text-gray-400 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-500 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-600 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-700 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-800 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
|
||||
.text-gray-900 {
|
||||
color: rgb(130, 182, 255) !important;
|
||||
}
|
||||
.dropdown-menu {
|
||||
background-color: #171717;
|
||||
border: 2px solid rgb(49, 49, 49);
|
||||
}
|
||||
.form-control {
|
||||
background-color: rgb(239 239 239);
|
||||
}
|
||||
body {
|
||||
background-color: #171717;
|
||||
}
|
||||
.btn-info {
|
||||
border-radius: 0.25rem !important;
|
||||
background-color: #1a73e8 !important;
|
||||
border-color: #1a73e8 !important;
|
||||
}
|
||||
.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active, .show > .btn-info.dropdown-toggle {
|
||||
background-color: #093d94 !important;
|
||||
|
||||
}
|
||||
.btn-info:hover {
|
||||
background-color: #093d94 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<!-- Google tag (gtag.js) -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id=G-8QTNRD0R4M"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', 'G-8QTNRD0R4M');
|
||||
</script>
|
||||
|
||||
</head>
|
||||
<body id="page-top">
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div id="wrapper">
|
||||
<!-- Sidebar -->
|
||||
<ul class="navbar-nav bg-gradient-primary sidebar sidebar-dark accordion toggled" id="accordionSidebar">
|
||||
<!-- Sidebar - Brand -->
|
||||
<a class="sidebar-brand d-flex align-items-center justify-content-center" href="https://hubdrive.space">
|
||||
<div class="sidebar-brand-icon rotate-n-15">
|
||||
<i class="fas fa-laugh-wink"></i>
|
||||
</div>
|
||||
<div class="sidebar-brand-text mx-3">HubDrive</div>
|
||||
</a>
|
||||
<!-- Divider -->
|
||||
|
||||
<hr class="sidebar-divider my-0">
|
||||
<!-- Nav Item - Dashboard -->
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/sign">
|
||||
<i class="fas fa-fw fa-sign-in-alt"></i>
|
||||
<span>Login</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/privacy-policy">
|
||||
<i class="fas fa-fw fa-user-secret"></i>
|
||||
<span>Privacy Policy</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/terms-conditions">
|
||||
<i class="fas fa-fw fa-align-justify"></i>
|
||||
<span>Terms & Conditions</span></a>
|
||||
</li>
|
||||
<li class="nav-item active">
|
||||
<a class="nav-link" href="/page/copyright-policy">
|
||||
<i class="fas fa-fw fa-copyright"></i>
|
||||
<span>Copyright Policy</span></a>
|
||||
</li>
|
||||
<!-- Divider -->
|
||||
<hr class="sidebar-divider d-none d-md-block">
|
||||
<!-- Sidebar Toggler (Sidebar) -->
|
||||
<div class="text-center d-none d-md-inline">
|
||||
<button class="rounded-circle border-0" id="sidebarToggle"></button>
|
||||
</div>
|
||||
</ul>
|
||||
<!-- End of Sidebar -->
|
||||
<!-- Content Wrapper -->
|
||||
<div id="content-wrapper" class="d-flex flex-column">
|
||||
<!-- Main Content -->
|
||||
<div id="content">
|
||||
<!-- Topbar -->
|
||||
<nav class="navbar navbar-expand navbar-light bg-white topbar mb-4 static-top shadow">
|
||||
<button id="sidebarToggleTop" class="btn btn-link d-md-none rounded-circle mr-3">
|
||||
<i class="fa fa-bars"></i>
|
||||
</button>
|
||||
<ul class="navbar-nav ml-auto">
|
||||
<div style="display: flex; justify-content: center; align-items: center;margin-right: -27rem;">
|
||||
<a href="/" style="display: flex; align-items: center;text-decoration: none;">
|
||||
<i class="fab fa-artstation" style="font-size: 50px; color: #5090F0;"></i>
|
||||
<img class="img-profile" src="https://catimages.org/images/2024/04/23/1b1be1f6932ecf270.png" style="width: 25%; filter: invert(1); margin-left: 5px;">
|
||||
</a>
|
||||
</div>
|
||||
<div class="topbar-divider d-none d-sm-block" style="margin-left: -2px;"></div>
|
||||
</ul>
|
||||
</nav> <style>
|
||||
.btn.btn-primary.btn-user1 {
|
||||
background-color: #a10dff;
|
||||
border-color: #ba50fd;
|
||||
}
|
||||
.btn-primary.btn-user1:hover {
|
||||
color: #fff;
|
||||
background-color: #b542ff;
|
||||
}
|
||||
.btn-primary.btn-user1:not(:disabled):not(.disabled):active, .btn-primary.btn-user1:not(:disabled):not(.disabled).active, .show > .btn-primary.btn-user1.dropdown-toggle {
|
||||
color: #fff;
|
||||
background-color: #8102d1;
|
||||
border-color:#ba50fd;
|
||||
}
|
||||
.btn-primary.btn-user1:focus, .btn-primary.btn-user1.focus {
|
||||
box-shadow: 0 0 0 .25rem rgba(151, 51, 215, .5);
|
||||
}
|
||||
.nav-tabs .nav-link.active, .nav-tabs .nav-item.show .nav-link {
|
||||
color: rgb(255 255 255);
|
||||
background-color: rgb(13 60 125);
|
||||
border-color: rgb(13 60 125);
|
||||
}
|
||||
.nav-tabs {
|
||||
border-bottom: rgb(49, 49, 49);
|
||||
}
|
||||
</style>
|
||||
|
||||
<!-- http://caniuse.com/#feat=referrer-policy -->
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
<meta name="googlebot" content="noindex,nofollow">
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<!-- For Edge and Safari -->
|
||||
<meta name="referrer" content="none" />
|
||||
<script>(s=>{s.dataset.zone='9824726',s.src='https://bvtpk.com/tag.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
|
||||
|
||||
<div class="container-fluid">
|
||||
<div id="down-id" hidden="true">7283903021</div>
|
||||
<!-- Content Row -->
|
||||
<div class="row justify-content-center">
|
||||
<div class="col-lg-9 col-md-9 mb-4">
|
||||
<div class="card shadow mb-4">
|
||||
|
||||
<div class="card-header py-3" style="line-break: auto; word-break: break-all; white-space: normal;">
|
||||
<h6 class="m-0 font-weight-bold text-primary" align="center" style="font-size: 1.2rem;">Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv</h6>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-borderless" id="dataTable" width="100%" cellspacing="0" style="line-break: auto; word-break: initial; white-space: initial;">
|
||||
<tbody>
|
||||
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
|
||||
<td>File Size</td>
|
||||
<td align="right">60.21 GB</td>
|
||||
</tr>
|
||||
<tr style="border-bottom: 2px solid rgb(63 63 63); line-height: 1.8em;">
|
||||
<td>File Type</td>
|
||||
<td align="right">video/x-matroska</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>File Owner</td>
|
||||
<td align="right">HubCloud User</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<br>
|
||||
<div class="text" align="center">
|
||||
<form action="/gsign.php" method="GET">
|
||||
<input name="r" value="https://hubdrive.space/file/7283903021" type="hidden">
|
||||
<button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> GDrive [Login]</button>
|
||||
<!--button class="btn btn-primary btn-user" type="submit"><i class="fa fa-sign-in fa-lg"></i> Download [60.21 GB] [Login]</button-->
|
||||
</form>
|
||||
<div>
|
||||
<button onclick="myDirectDownload()" id="dl-down" type="button" class="btn btn-primary btn-user1" style="margin:10px;"><i class="fas fa-file-download fa-lg"></i> Direct/Instant Download</button>
|
||||
<div>
|
||||
|
||||
<h5><a class="btn btn-primary btn-user btn-success1 m-1" href="https://hubcloud.fyi/drive/1qepetxqp4nhxxq" target="_blank" rel="noreferrer nofollow"><i class="fab fa-artstation"></i> [HubCloud Server]</a></h5>
|
||||
|
||||
|
||||
|
||||
|
||||
<br><br>
|
||||
</div>
|
||||
|
||||
<div class="text" align="left">
|
||||
<ul class="nav nav-tabs" role="tablist">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link active" href="#" onclick="copyLink()" role="tab" data-toggle="tab"><i class="fa fa-copy"></i> Copy Link</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<!-- Tab panes -->
|
||||
<div class="tab-content">
|
||||
<div role="tabpanel" class="tab-pane fade show active" id="link">
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<p id="copyText" style="text-align:left; color:rgb(116 174 255);">https://hubdrive.space/file/7283903021</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/sweetalert2@11"></script>
|
||||
|
||||
<script>
|
||||
function copyLink() {
|
||||
var copyText = document.getElementById("copyText");
|
||||
var textArea = document.createElement("textarea");
|
||||
textArea.value = copyText.textContent;
|
||||
document.body.appendChild(textArea);
|
||||
textArea.select();
|
||||
document.execCommand("copy");
|
||||
document.body.removeChild(textArea);
|
||||
|
||||
Swal.fire({
|
||||
title: "Link Copied",
|
||||
icon: "success",
|
||||
showConfirmButton: false,
|
||||
timer: 1500
|
||||
});
|
||||
}
|
||||
</script>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /.container-fluid -->
|
||||
</div>
|
||||
|
||||
<noscript>
|
||||
alert("please enable JavaScript in your browser");
|
||||
</noscript>
|
||||
<script>
|
||||
function myDownloadV2() {
|
||||
var e = document.getElementById("down-id").innerHTML;
|
||||
document.getElementById("down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Downloading.. !',
|
||||
document.getElementById("down").disabled = !0;
|
||||
var b = window.setTimeout(function() {
|
||||
document.getElementById("down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i> Generating Link.. !'
|
||||
}, 6e3);
|
||||
|
||||
window.setTimeout(function() {
|
||||
$.ajax({
|
||||
url: "/ajax.php?ajax=download",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: "id=" + e,
|
||||
success: function(a) {
|
||||
if ("200" == a.code) {
|
||||
window.clearTimeout(b);
|
||||
localStorage.setItem("dls", JSON.stringify(a?.data));
|
||||
// window.location.href = a.file;
|
||||
window.location.href = "/newdl";
|
||||
|
||||
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
|
||||
},
|
||||
error: function(e, a, t) {
|
||||
alert("Status: " + a + "\n" + t)
|
||||
}
|
||||
})
|
||||
}, 5000);
|
||||
}
|
||||
|
||||
function myDirectDownload() {
|
||||
var a = document.getElementById("down-id").innerHTML;
|
||||
document.getElementById("dl-down").innerHTML = '<i class="fa fa-spinner fa-spin"></i> Generating Link ...';
|
||||
document.getElementById("dl-down").disabled = !0;
|
||||
|
||||
var b = window.setTimeout(function() {
|
||||
document.getElementById("dl-down").innerHTML = '<i class="fa fa-cog fa-spin fa-lg"></i>Downloading .. !';
|
||||
}, 6e3);
|
||||
|
||||
window.setTimeout(function() {
|
||||
$.ajax({
|
||||
url: "/ajax.php?ajax=direct-download",
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: "id=" + a,
|
||||
success: function(a) {
|
||||
if ("200" == a.code) {
|
||||
window.clearTimeout(b);
|
||||
localStorage.setItem("dls", JSON.stringify(a?.data));
|
||||
// window.location.href = a.file;
|
||||
window.location.href = "/newdl";
|
||||
|
||||
} else swal.fire("Code : " + a.code, "Message : " + a.file, "error");
|
||||
},
|
||||
error: function(a, b, c) {
|
||||
alert("Status: " + b + "\n" + c);
|
||||
}
|
||||
});
|
||||
}, 5000)
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<main class="min-h-screen flex flex-col" >
|
||||
<header class="container mx-auto px-4 py-4 lg:text-center lg:flex lg:items-center lg:justify-between">
|
||||
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
|
||||
<script src='https://kit.fontawesome.com/a076d05399.js' crossorigin='anonymous'></script>
|
||||
<!--
|
||||
<footer class="sticky-footer bg-white">
|
||||
<div class="container my-auto">
|
||||
<div class="copyright text-center my-auto">
|
||||
<span>Copyright © 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>
|
||||
|
|
@ -10,7 +10,7 @@ exports[`HubCloud handle crayon shin-chan 1993 1`] = `
|
|||
"extractorId": "hubcloud_fsl",
|
||||
"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": 259200000,
|
||||
"ttl": 518400000,
|
||||
"url": "https://pub-6b25c191839c4b01a878de4fdde0227b.r2.dev/e35ec4a9a4efb5a154d0d10f9481dafc?token=1765557445",
|
||||
},
|
||||
]
|
||||
|
|
@ -26,7 +26,7 @@ exports[`HubCloud handle dark 2017 s03e08 1`] = `
|
|||
"extractorId": "hubcloud_pixelserver",
|
||||
"title": "Dark.S03E08.The.Paradise.1080p.NF.WEB-DL.English.DDP5.1-German.DDP5.1.H.264-4kHdHub.Com.mkv",
|
||||
},
|
||||
"ttl": 259200000,
|
||||
"ttl": 518400000,
|
||||
"url": "https://pixeldrain.dev/api/file/2kFQBQio",
|
||||
},
|
||||
]
|
||||
|
|
@ -42,7 +42,7 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
|
|||
"extractorId": "hubcloud_fsl",
|
||||
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
||||
},
|
||||
"ttl": 259200000,
|
||||
"ttl": 518400000,
|
||||
"url": "https://pub-b5ecaffddf2344a0ae2222f5e8913e1b.r2.dev/Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv?token=1765557444",
|
||||
},
|
||||
{
|
||||
|
|
@ -53,7 +53,7 @@ exports[`HubCloud handle dexter original sin 2024 s01e01 1`] = `
|
|||
"extractorId": "hubcloud_pixelserver",
|
||||
"title": "Dexter.Original.Sin.S01E01.2160p.SKST.WEB-DL.H.265.DDP5.1-Tyrell.mkv",
|
||||
},
|
||||
"ttl": 259200000,
|
||||
"ttl": 518400000,
|
||||
"url": "https://pixeldrain.dev/api/file/HqAiguQV",
|
||||
},
|
||||
]
|
||||
|
|
|
|||
17
src/extractor/__snapshots__/HubDrive.test.ts.snap
Normal file
17
src/extractor/__snapshots__/HubDrive.test.ts.snap
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
|
||||
|
||||
exports[`HubDrive handle avatar 1`] = `
|
||||
[
|
||||
{
|
||||
"format": "unknown",
|
||||
"label": "HubCloud (FSL)",
|
||||
"meta": {
|
||||
"bytes": 64649995223,
|
||||
"extractorId": "hubcloud_fsl",
|
||||
"title": "Avatar (2009) Extended Collector's Edition IMAX 2160p UHD BluRay REMUX DV HDR 10bit HEVC [Hindi DDP 5.1 + English DTS-HD MA 5.1] x265 (LM-LUMiX) 4KHDHUB.[Com].mkv",
|
||||
},
|
||||
"ttl": 518400000,
|
||||
"url": "https://love.polgen.buzz/9eb5c280ca70adc5c98417476ff16743?token=1768569027",
|
||||
},
|
||||
]
|
||||
`;
|
||||
|
|
@ -8,6 +8,7 @@ import { FileLions } from './FileLions';
|
|||
import { FileMoon } from './FileMoon';
|
||||
import { Fsst } from './Fsst';
|
||||
import { HubCloud } from './HubCloud';
|
||||
import { HubDrive } from './HubDrive';
|
||||
import { KinoGer } from './KinoGer';
|
||||
import { LuluStream } from './LuluStream';
|
||||
import { Mixdrop } from './Mixdrop';
|
||||
|
|
@ -30,6 +31,8 @@ export * from './ExtractorRegistry';
|
|||
export const createExtractors = (fetcher: Fetcher): Extractor[] => {
|
||||
const disabledExtractors = envGet('DISABLED_EXTRACTORS')?.split(',') ?? [];
|
||||
|
||||
const hubCloud = new HubCloud(fetcher);
|
||||
|
||||
return [
|
||||
new DoodStream(fetcher),
|
||||
new Dropload(fetcher),
|
||||
|
|
@ -37,7 +40,8 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => {
|
|||
new FileLions(fetcher),
|
||||
new FileMoon(fetcher),
|
||||
new Fsst(fetcher),
|
||||
new HubCloud(fetcher),
|
||||
hubCloud,
|
||||
new HubDrive(fetcher, hubCloud),
|
||||
new KinoGer(fetcher),
|
||||
new LuluStream(fetcher),
|
||||
new Mixdrop(fetcher),
|
||||
|
|
|
|||
|
|
@ -123,10 +123,7 @@ export class FourKHDHub extends Source {
|
|||
.map((_i, el) => new URL($(el).attr('href') as string))
|
||||
.get(0) as URL;
|
||||
|
||||
const hubDriveHtml = await this.fetcher.text(ctx, await this.resolveRedirectUrl(ctx, redirectUrlHubDrive));
|
||||
const $2 = cheerio.load(hubDriveHtml);
|
||||
|
||||
return { url: new URL($2('a:contains("HubCloud")').attr('href') as string), meta };
|
||||
return { url: await this.resolveRedirectUrl(ctx, redirectUrlHubDrive), meta };
|
||||
};
|
||||
|
||||
private async resolveRedirectUrl(ctx: Context, redirectUrl: URL): Promise<URL> {
|
||||
|
|
|
|||
|
|
@ -187,7 +187,7 @@ exports[`FourKHDHub handle crank 2006 1`] = `
|
|||
"height": 1080,
|
||||
"title": "Crank (2006) Director's Cut 1080p BluRay REMUX VC-1 [Hindi AMZN DDP 5.1 ~ 640kbps + English DTS-HD HRA 5.1] ESubs ~ (Arrow) FraMeSToR.mkv",
|
||||
},
|
||||
"url": "https://hubcloud.fyi/drive/lqa8qw881tasohi",
|
||||
"url": "https://hubdrive.space/file/14019654338",
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
|
|
@ -200,7 +200,7 @@ exports[`FourKHDHub handle crank 2006 1`] = `
|
|||
"height": 1080,
|
||||
"title": "Crank (2006) Director's Cut 1080p BluRay x264 [Hindi AMZN DDP 5.1 ~ 640kbps + English DTS] ESubs ~ (Arrow) CtrlHD.mkv",
|
||||
},
|
||||
"url": "https://hubcloud.fyi/drive/eijzmr9jiwy1r4z",
|
||||
"url": "https://hubdrive.space/file/3499951460",
|
||||
},
|
||||
{
|
||||
"meta": {
|
||||
|
|
@ -213,7 +213,7 @@ exports[`FourKHDHub handle crank 2006 1`] = `
|
|||
"height": 1080,
|
||||
"title": "Crank (2006) Director's Cut 1080p 10bit BluRay x265 HEVC [Hindi AMZN DDP 5.1 ~ 640Kbps + English DD 5.1] ESubs ~ (Arrow) Chivaman.mkv",
|
||||
},
|
||||
"url": "https://hubcloud.fyi/drive/sc0yyca6hq11y0r",
|
||||
"url": "https://hubdrive.space/file/2344141892",
|
||||
},
|
||||
]
|
||||
`;
|
||||
|
|
|
|||
Loading…
Reference in a new issue