chore(extractor): normalize Dropload download URLs

This commit is contained in:
WebStreamr 2025-07-15 20:59:08 +00:00
parent e03621db0b
commit 69afcdcdb2
No known key found for this signature in database
4 changed files with 540 additions and 1 deletions

View file

@ -22,4 +22,8 @@ describe('Dropload', () => {
test('processing / internal problem', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://dropload.io/7xtxuac84xyh.html'), CountryCode.de)).toMatchSnapshot();
});
test('download URL', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://dropload.io/d/xhcmgcc2txnv'), CountryCode.en)).toMatchSnapshot();
});
});

View file

@ -22,7 +22,7 @@ export class Dropload extends Extractor {
return null !== url.host.match(/dropload/);
}
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/e/', '/').replace('/embed-', '/'));
public override readonly normalize = (url: URL): URL => new URL(url.href.replace('/d/', '/').replace('/e/', '/').replace('/embed-', '/'));
protected async extractInternal(ctx: Context, url: URL, countryCode: CountryCode): Promise<UrlResult[]> {
const html = await this.fetcher.text(ctx, url);

View file

@ -0,0 +1,515 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Dropload - Revolution Video Hosting</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="theme-color" content="#FFF">
<meta name="format-detection" conten="telephone=no">
<link rel="apple-touch-icon" href="https://dropload.io/assets2/images/favicon/apple-touch-icon.png" sizes="180x180">
<link rel="icon" href="https://dropload.io/assets2/images/favicon/favicon-32x32.png" sizes="32x32">
<link rel="icon" href="https://dropload.io/assets2/images/favicon/favicon-16x16.png" sizes="16x16">
<link rel="manifest" href="https://dropload.io/assets2/images/favicon/manifest.json">
<link rel="icon" href="https://dropload.io/assets2/images/favicon/favicon.ico">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="crossorigin">
<link href="https://fonts.googleapis.com/css2?family=Poppins:wght@400;500;700&display=swap" rel="stylesheet">
<link href="https://dropload.io/assets2/css/style.css?v=2" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.2.1.min.js" type="45a2a97ee4145248610fba09-text/javascript"></script>
<script src="https://dropload.io/assets2/js/bootstrap.bundle.min.js" type="45a2a97ee4145248610fba09-text/javascript"></script>
<script src="https://dropload.io/assets2/js/xupload.js?v=13" type="45a2a97ee4145248610fba09-text/javascript"></script>
<script src="https://dropload.io/assets2/js/app.js" type="45a2a97ee4145248610fba09-text/javascript"></script>
</head>
<body>
<header class="header">
<div class="container">
<div class="row align-items-center flex-nowrap">
<div class="col-auto d-lg-none me-auto">
<div class="dropdown">
<button class="btn icon-btn text-primary" data-bs-toggle="dropdown" data-bs-offset="0, 16">
<i class="icon icon-menu icon-size-18"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<a href="/?op=registration" class="dropdown-item">Upload</a>
<a href="/make_money.html" class="dropdown-item">Earn money</a>
<a href="/api.html" class="dropdown-item">Service API</a>
<a href="/tos" class="dropdown-item">Terms and Conditions</a>
<a href="/contact" class="dropdown-item">Contacts</a>
</ul>
</div>
</div>
<div class="col-auto me-lg-5">
<a href="/">
<img src="https://dropload.io/assets2/images/logo.svg" class="logo" alt="Dropload.io - ">
</a>
</div>
<div class="col-auto d-none d-lg-block">
<nav class="nav">
<a href="/?op=registration" class="nav-link">Upload</a>
<a href="/make_money.html" class="nav-link">Earn money</a>
</nav>
</div>
<div class="col-auto d-none d-lg-block ms-auto">
<a href="/login.html" class="btn login-btn me-2">
<i class="icon icon-account me-2"></i>Login</a>
<a href="/?op=registration" class="btn reg-btn">Create an Account</a>
</div>
<div class="col-auto d-lg-none ms-auto">
<div class="dropdown">
<button class="btn icon-btn text-primary" data-bs-toggle="dropdown" data-bs-offset="0, 16">
<i class="icon icon-account icon-size-18"></i>
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li>
<a class="dropdown-item" href="/login.html">Login</a>
</li>
<li>
<a class="dropdown-item" href="/?op=registration">Create an Account</a>
</li>
</ul>
</div>
</div>
</div>
</div>
</header>
<main>
<script src="https://dropload.io/js/jquery.cookie.js" type="45a2a97ee4145248610fba09-text/javascript"></script>
<script type="45a2a97ee4145248610fba09-text/javascript">
$.cookie('file_id', '1526758', { expires: 10 });
$.cookie('aff', '7208', { expires: 10 });
</script>
<section class="mb-5 mb-lg-7">
<div class="container">
<div class="videoplayer">
<div class="videoplayer-embed">
<div id="pdiv" style="position: absolute;left:0;top:0;width: 100%;height:100%;">
<!-- Over player banner ADs code start here -->
<!-- Over player banner ADs code end here -->
<!--div id="adbd" class="overdiv">
<div>Disable ADBlock plugin and allow pop-ups in your browser to watch video</div>
</div-->
<!-- <div id="play_limit_box" class="d-flex flex-column justify-content-center p-3 text-center" style="position:absolute;left:0;top:0;width:100%;height:100%;background-color:rgba(0,0,0,.55);z-index:10;">
<div class="mb-2">
<a class="btn btn-gradient" href="/premium.html">Upgrade your account</a>
</div>
to watch videos with no limits!
</div> -->
<script type="45a2a97ee4145248610fba09-text/javascript" src='https://dropload.io/player/jw8/jwplayer.js'></script>
<script type="45a2a97ee4145248610fba09-text/javascript">jwplayer.key="";</script>
<div id="resume-modal" style="color:#fff; font-family:Roboto, Arial; display:none; padding:2rem; justify-content:center; align-items:center; position:absolute; top:0; left:0; right:0; bottom:0; background-color: rgba(0,0,0,.1); font-size: 12px; z-index:200;">
<div style="max-width:420px; background-color: rgba(28, 37, 52, .65); -webkit-backdrop-filter: blur(20px); backdrop-filter:blur(20px); text-align:center;padding:1.5rem; border-radius:8px;border: 1px solid rgba(255,255,255,.18);">
<h5 style="margin-bottom:10px;font-weight:bold; font-size:15px;" id="resume-title"></h5>
<p style="margin-bottom:10px;opacity:.65" id="resume-text"></p>
<div style="display:flex;gap:.4rem; align-items-center;justify-content:center">
<button onclick="if (!window.__cfRLUnblockHandlers) return false; resumeVideo()" id="resume-btn" style="border:0;cursor:pointer;border-radius:5px; padding:.5rem .75rem; color:#fff;background: linear-gradient(90deg, #3EB6D3 0%, #69CEA6 100%);color:#fff" data-cf-modified-45a2a97ee4145248610fba09-=""></button>
<button onclick="if (!window.__cfRLUnblockHandlers) return false; cancelResume()" id="cancel-text" style="border:0;cursor:pointer;border-radius:5px;padding:.5rem .75rem; color:#fff;background:#476177;color:#fff" data-cf-modified-45a2a97ee4145248610fba09-=""></button>
</div>
</div>
</div>
<style>
.jw-text-track-cue {
text-shadow: 1px 1px 2px transparent !important;
line-height: 1.53em;
padding-left: 0.3em !important;
padding-right: 0.3em !important;
padding-bottom: 0.2em !important;
border-radius: 6px;
}
</style><script src="/js/localstorage-slim.js" type="45a2a97ee4145248610fba09-text/javascript"></script><script src="https://dropload.io/js/dnsads.js?dfp=1&ad_code=2&adsrc=3" type="45a2a97ee4145248610fba09-text/javascript"></script>
<div id='vplayer' style="width:100%;height:100%;text-align:center;"><img src='/images/back2.jpg' style='width:100%;height:100%;'></div>
</div>
<button type="button" class="btn lightdown"></button>
</div>
<div class="lightdown-backdrop"></div>
<h1>[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~ </h1>
<div class="videoplayer-controlbar">
<div class="row g-1">
<div class="col-auto flex-grow-1 flex-shrink-1 mw-0">
<div class="videoplayer-details">
<div class="row align-items-center flex-nowrap">
<div class="col-auto flex-shrink-1 mw-0">
<div class="row flex-lg-nowrap">
<div class="col-auto d-flex align-items-center">
<i class="icon icon-clock icon-size-16 me-2 opacity-50"></i>
on Jun 27, 2025
</div>
<div class="col-auto d-flex align-items-center">
<i class="icon icon-download2 icon-size-16 me-2 opacity-50"></i>
<span id="size"></span>
</div>
<div class="col-auto d-flex align-items-center">
<i class="icon icon-clock icon-size-16 me-2 opacity-50"></i>
00:57:13
</div>
</div>
</div>
<div class="col-auto d-flex align-items-center">
<button class="btn icon-btn me-4" data-bs-toggle="modal" data-bs-target="#modal_addplaylist">
<i class="icon icon-addlist icon-size-16"></i>
</button>
<button type="button" class="btn icon-btn text-danger" data-bs-toggle="modal" data-bs-target="#modal_flag">
<i class="icon icon-flag icon-size-16"></i>
</button>
</div>
</div>
</div>
</div>
<div class="col-auto">
<button class="btn btn-like border-0" onclick="if (!window.__cfRLUnblockHandlers) return false; return jah('/?op=vote&file_code=xhcmgcc2txnv&v=up')" title="Like" data-cf-modified-45a2a97ee4145248610fba09-="">
<i class="icon icon-like icon-size-16 me-2"></i>
<span id="likes_num">0</span>
</button>
</div>
<div class="col-auto">
<button class="btn btn-dislike border-0" onclick="if (!window.__cfRLUnblockHandlers) return false; return jah('/?op=vote&file_code=xhcmgcc2txnv&v=down')" title="Don&#39;t Like" data-cf-modified-45a2a97ee4145248610fba09-="">
<i class="icon icon-dislike icon-size-16 me-2"></i>
<span id="dislikes_num">0</span>
</button>
</div>
</div>
</div>
<div class="mb-5">
<div class="row justify-content-center justify-content-lg-between">
<div class="col-auto order-lg-last mb-3">
<div class="dropdown">
<a class="btn btn-gradient videoplayer-download" data-bs-toggle="dropdown">
Download<i class="icon icon-download icon-size-20 ms-2"></i>
</a>
<div class="dropdown-menu w-100 py-0 shadow">
<a href="https://dropload.io/d/xhcmgcc2txnv_h" class="dropdown-item d-flex align-items-center">
<span class="flex-grow-1 pe-3 text-white">
<b>HD quality</b> <br> <span class="xsmall text-light">1280x720, <span class="download-size">317.6 MB</span></span>
</span>
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="18"><defs><linearGradient id="a" x1="0%" x2="100%" y1="0%" y2="0%"><stop offset="0%" stop-color="#3DB6D4"/><stop offset="100%" stop-color="#6BCFA4"/></linearGradient></defs><path fill-rule="evenodd" fill="#3DB6D4" d="M13 6V0H7v6H2l8 8 8-8h-5ZM0 16h20v2H0v-2Z"/><path fill="url(#a)" d="M13 6V0H7v6H2l8 8 8-8h-5ZM0 16h20v2H0v-2Z"/></svg>
</a>
</div>
</div>
</div>
<script type="45a2a97ee4145248610fba09-text/javascript">
$(function(){
var a = $('.dropdown-menu a:first-child .download-size');
$('#size').append(a);
})
</script>
<div class="col-12 col-lg-7 mb-3">
<div class="copybox">
<textarea class="form-control copy-source" rows="6"><IFRAME SRC="https://dropload.io/e/xhcmgcc2txnv" FRAMEBORDER=0 MARGINWIDTH=0 MARGINHEIGHT=0 SCROLLING=NO WIDTH=640 HEIGHT=360 allowfullscreen></IFRAME></textarea>
<button class="btn btn-primary" onclick="if (!window.__cfRLUnblockHandlers) return false; copy(this);" data-cf-modified-45a2a97ee4145248610fba09-="">Copy</button>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<div class="modal fade" id="modal_flag" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">Flag</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body pt-0">
<form method="POST" action="/" onsubmit="if (!window.__cfRLUnblockHandlers) return false; $.post('/',$(this).serialize(),function(code){ eval(code); } );return false;" data-cf-modified-45a2a97ee4145248610fba09-="">
<input type="hidden" name="op" value="report_file">
<input type="hidden" name="file_code" value="xhcmgcc2txnv">
<div class="mb-3">
<label class="form-label">Reason:</label>
<select class="form-select" name="report_type">
<option>Broken video</option>
<option>Wrong title/description</option>
<option>Copyright restriction</option>
<option>Other</option>
</select>
</div>
<div class="mb-3">
<textarea name="report_info" class="form-control" rows="2" placeholder="Details"></textarea>
</div>
<div class="text-center">
<input type="submit" name="add" value="Send Report" class="btn btn-gradient submit-btn">
</div>
</form>
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_addplaylist" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">Add to</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body pt-0">
</div>
</div>
</div>
</div>
<div class="modal fade" id="modal_share" tabindex="-1">
<div class="modal-dialog modal-dialog-centered">
<div class="modal-content">
<div class="modal-header">
<h1 class="modal-title fs-5">Share</h1>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body pt-0">
Share code
</div>
</div>
</div>
</div>
<script type="45a2a97ee4145248610fba09-text/javascript">eval(function(p,a,c,k,e,d){while(c--)if(k[c])p=p.replace(new RegExp('\\b'+c.toString(a)+'\\b','g'),k[c]);return p}('1t("7t").7s({7r:{3g:"/7q/3k/3j-y.3k?v=3",11:"3j-y"},7p:[{3i:"1c://7o.y.1b/7n/2q/7m/7l/7k.7j?t=7i&s=32&e=7h&f=34&i=0.0&7g=0&7f=33.61.7e.7d"}],7c:"1x%",7b:"1x%",7a:"79",78:"3h.43",77:\'76\',75:"15",b:[{3i:"/36?35=74&p=3h&3g=1c://3f.y.1b/73.3e",72:"71"}],28:{70:1,3d:\'#6z\',6y:\'#6x\',6w:"6v",6u:30,6t:\'1x\',},\'6s\':{"6r":"6q"},6p:"6o",6n:"1c://y.1b/",6m:{},6l:15,27:[1,1.25,1.5,2],6k:\'1c://3f.y.1b/6j.3e\'}).j(\'1s\',6(){h w=g.6i("1a");w.6h="w";w.3c(\'6g\',\'4-1w 4-1w-6f 4-3b-3d 4-6e 4-1w-6d\');w.3c(\'6c\',\'8.1p(8.6b()+10)\');g.6a(\'.4-3b-69\').68(w)});h 1u,1v;h 67=0,66=0;h 8=1t();h 3a=0,65=0,64=0,n=0;$.63({62:{\'5z-5y\':\'5x-5w\'}});8.j(\'u\',6(x){9(5>0&&x.z>=5&&1v!=1){1v=1;$(\'1a.5v\').5u(\'5t\')}9(x.z>=n+5||x.z<n){n=x.z;17.2b(\'16\',1q.5s(n),{5r:60*60*24*7})}});8.j(\'1p\',6(x){3a=x.z});8.j(\'2d\',6(x){39(x)});8.j(\'5q\',6(){$(\'1a.38\').5p();17.5o(\'16\')});8.j(\'5n\',6(x){});6 39(x){$(\'1a.38\').37();$(\'#5m\').37();9(1u)1e;1u=1;19=0;9(2w.5l===5k){19=1}$.2t(\'/36?35=5j&5i=2v&5h=34-33-61-32-5g&5f=&19=\'+19,6(31){$(\'#5e\').5d(31)})}6 5c(){h b=8.1f(2z);2y.2x(b);9(b.p>1){20(i=0;i<b.p;i++){9(b[i].11==2z){2y.2x(\'!!=\'+i);8.1y(i)}}}}8.j(\'1s\',6(){});1t().2a("/29/5b.5a","59 j 58",6(){h 2u=2w.1l(\'/v/2v\',\'57\');2u.56()},"55");h n=17.2t(\'16\');8.j(\'1s\',6(){9(n>0){2i(n)}});6 2g(u){1r 2r=2s.54||2s.53;9(2r.52(\'51\')){g.k("l-2p").o=\'50 4z 4y?\';g.k("l-2o").o=\'4x! 4w 4v a 0:2q. 4u 4t 4s 4r 4q 4p?\';g.k("l-18").o=\'4o, 4n\';g.k("2k-18").o=\'2j, 4m\'}23{g.k("l-2p").o=\'4l 4k?\';g.k("l-2o").o=\'4j 4i! 4h 2m 2l 4g \'+u+\'. 4f 2n 4e 4d l 4c 4b 2n 2m 2l?\';g.k("l-18").o=\'4a, 49\';g.k("2k-18").o=\'2j, 48\'}}6 2i(u){1r 2f=1q.2h(u/60);1r 2e=1q.2h(u%60).47().46(2,\'0\');2g(2f+\':\'+2e);g.k("l-1o").1n.1m=\'45\'}6 44(){8.1p(n);8.2d();g.k("l-1o").1n.1m=\'2c\'}6 42(){g.k("l-1o").1n.1m=\'2c\';17.2b(\'16\',\'\')}8.j("m",6(12){h b=8.1f();9(b.p<2)1e;$(\'.4-d-41-40\').3z(6(){$(\'#4-d-c-m\').1i(\'4-d-c-13\');$(\'.4-c-m\').r(\'q-1j\',\'14\')});8.2a("/29/3y.3x","3w 3v",6(){$(\'.4-26\').3u(\'4-d-1l\');$(\'.4-d-28, .4-d-27\').r(\'q-1k\',\'14\');9($(\'.4-26\').3t(\'4-d-1l\')){$(\'.4-c-m\').r(\'q-1k\',\'15\');$(\'.4-c-m\').r(\'q-1j\',\'15\');$(\'.4-d-c-3s\').1i(\'4-d-c-13\');$(\'.4-d-c-m\').3r(\'4-d-c-13\')}23{$(\'.4-c-m\').r(\'q-1k\',\'14\');$(\'.4-c-m\').r(\'q-1j\',\'14\');$(\'.4-d-c-m\').1i(\'4-d-c-13\')}},"3q");8.j("3p",6(12){1h.3o(\'1g\',12.b[12.3n].11)});9(1h.22(\'1g\')){3m("21(1h.22(\'1g\'));",3l)}});h 1d;6 21(1z){h b=8.1f();9(b.p>1){20(i=0;i<b.p;i++){9(b[i].11==1z){9(i==1d){1e}1d=i;8.1y(i)}}}}',36,282,'||||jw||function||player|if||tracks|submenu|settings|||document|var||on|getElementById|resume|audioTracks|lastt|innerHTML|length|aria|attr|||time||newButton||dropload|position||name|event|active|false|true|ttxhcmgcc2txnv|ls|btn|adb|div|io|https|current_audio|return|getAudioTracks|default_audio|localStorage|removeClass|expanded|checked|open|display|style|modal|seek|Math|const|ready|jwplayer|vvplay|vvad|icon|100|setCurrentAudioTrack|audio_name|for|audio_set|getItem|else|||controls|playbackRates|captions|images|addButton|set|none|play|seconds|minutes|translateModal|floor|showResumeModal|No|cancel|off|left|you|text|title|01|userLang|navigator|get|win|xhcmgcc2txnv|window|log|console|track_name||data|1752613129|130|1526758|op|dl|hide|video_ad|doPlay|prevt|button|setAttribute|color|jpg|img|url|3433|file|jw8|css|300|setTimeout|currentTrack|setItem|audioTrackChanged|dualSound|addClass|quality|hasClass|toggleClass|Track|Audio|svg|dualy|mousedown|buttons|topbar|cancelResume||resumeVideo|flex|padStart|toString|thanks|please|Yes|where|watching|to|like|Would|at|You|back|Welcome|playing|Resume|grazie|certo|Si|lasciato|avevi|dove|da|riprendere|Vuoi|interrotto|Hai|Bentornato|visione|la|Riprendi|it|startsWith|userLanguage|language|download11|focus|_blank|site|Watch|png|download2|set_audio_track|html|fviews|embed|436087fe7fbec4909d57378fd1de7255|hash|file_code|view|undefined|cRAds|over_player_msg|pause|remove|show|complete|ttl|round|slow|fadeIn|video_ad_fadein|cache|no|Cache|Content|||headers|ajaxSetup|v2done|tott|vastdone2|vastdone1|appendChild|container|querySelector|getPosition|onclick|forward|reset|inline|class|id|createElement|xhcmgcc2txnv_xt|image|playbackRateControls|cast|aboutlink|Dropload|abouttext|HD|768|qualityLabels|fontOpacity|backgroundOpacity|Tahoma|fontFamily|303030|backgroundColor|FFFFFF|userFontScale|thumbnails|kind|xhcmgcc2txnv0000|get_slides|androidhls|metadata|preload|duration|uniform|stretching|height|width|204|236|ii|sp|14400|MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U|m3u8|master|xhcmgcc2txnv_h|00305|hls2|srv29|sources|assets2|skin|setup|vplayer'.split('|')))
</script>
<style media="screen">
.lightdown {
position: absolute;
top: 20px;
right: 20px;
width: 40px;
height: 40px;
border: 0;
padding: 0;
background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cpath fill-rule='evenodd' fill='%23FFF' d='M10 20c-1.654 0-3-1.346-3-3v-.531c0-.625-.254-1.237-.695-1.679l-.548-.548A5.96 5.96 0 0 1 4 10c0-1.603.624-3.109 1.757-4.243A5.961 5.961 0 0 1 10 4a5.96 5.96 0 0 1 4.242 1.757A5.96 5.96 0 0 1 16 10a5.957 5.957 0 0 1-1.758 4.242l-.546.547a2.396 2.396 0 0 0-.696 1.68V17c0 1.654-1.346 3-3 3Zm-1.025-4c.017.154.025.311.025.469V17a1.001 1.001 0 0 0 2 0v-.531c0-.158.008-.315.024-.469H8.975Zm-.737-2h3.524c.152-.222.325-.431.519-.624l.546-.547A3.974 3.974 0 0 0 14 10a3.975 3.975 0 0 0-1.172-2.829c-1.512-1.51-4.146-1.51-5.657 0A3.978 3.978 0 0 0 6 10c0 1.068.416 2.072 1.171 2.828h.001l.547.548c.194.194.367.402.519.624ZM19 11h-1a1 1 0 1 1 0-2h1a1 1 0 1 1 0 2ZM2 11H1a1 1 0 1 1 0-2h1a1 1 0 0 1 0 2Zm13.657-5.657a.999.999 0 0 1-.707-1.707l.707-.707a1 1 0 0 1 1.414 1.414l-.707.707a.993.993 0 0 1-.707.293Zm-11.314 0a.993.993 0 0 1-.707-.293l-.707-.707a.999.999 0 1 1 1.414-1.414l.707.707a.999.999 0 0 1-.707 1.707ZM10 3a1 1 0 0 1-1-1V1a1 1 0 0 1 2 0v1a1 1 0 0 1-1 1Z'/%3E%3C/svg%3E") no-repeat center;
background-color: rgba(28,37,52,.75);
transition: .25s;
opacity: 0;
}
.videoplayer-embed:hover .lightdown {
opacity: 1;
}
.body-lightdown .lightdown {
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20'%3E%3Cpath fill-rule='evenodd' fill='%233DB6D4' d='M10 20c-1.654 0-3-1.346-3-3v-.531c0-.625-.254-1.237-.695-1.679l-.548-.548A5.96 5.96 0 0 1 4 10c0-1.603.624-3.109 1.757-4.243A5.961 5.961 0 0 1 10 4a5.96 5.96 0 0 1 4.242 1.757A5.96 5.96 0 0 1 16 10a5.957 5.957 0 0 1-1.758 4.242l-.546.547a2.396 2.396 0 0 0-.696 1.68V17c0 1.654-1.346 3-3 3Zm-1.025-4c.017.154.025.311.025.469V17a1.001 1.001 0 0 0 2 0v-.531c0-.158.008-.315.024-.469H8.975Zm-.737-2h3.524c.152-.222.325-.431.519-.624l.546-.547A3.974 3.974 0 0 0 14 10a3.975 3.975 0 0 0-1.172-2.829c-1.512-1.51-4.146-1.51-5.657 0A3.978 3.978 0 0 0 6 10c0 1.068.416 2.072 1.171 2.828h.001l.547.548c.194.194.367.402.519.624ZM19 11h-1a1 1 0 1 1 0-2h1a1 1 0 1 1 0 2ZM2 11H1a1 1 0 1 1 0-2h1a1 1 0 0 1 0 2Zm13.657-5.657a.999.999 0 0 1-.707-1.707l.707-.707a1 1 0 0 1 1.414 1.414l-.707.707a.993.993 0 0 1-.707.293Zm-11.314 0a.993.993 0 0 1-.707-.293l-.707-.707a.999.999 0 1 1 1.414-1.414l.707.707a.999.999 0 0 1-.707 1.707ZM10 3a1 1 0 0 1-1-1V1a1 1 0 0 1 2 0v1a1 1 0 0 1-1 1Z'/%3E%3C/svg%3E");
}
.lightdown-backdrop {
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,.9);
display: none;
z-index: 1999;
}
.body-lightdown .lightdown-backdrop {
display: block;
}
.body-lightdown .videoplayer-embed {
z-index: 2000;
}
</style>
<script type="45a2a97ee4145248610fba09-text/javascript">
$('.lightdown').on('click', function(){
$('body').toggleClass('body-lightdown');
})
</script>
<Script type="45a2a97ee4145248610fba09-text/javascript">
$("#embed_div textarea").focus(function (){ $(this).select(); })
var tab_cookie='tab_down';
$('ul.tabs').on('click', 'li:not(.current)', function() {
$(this).addClass('current').siblings().removeClass('current')
.parents('div.section').find('div.box').eq($(this).index()).fadeIn(150).siblings('div.box').hide();
});
$("#iew,#ieh").change(function (){
var ww = $("#iew").val();
var hh = $("#ieh").val();
ww = ww.replace(/\D/g,'');
hh = hh.replace(/\D/g,'');
if(!ww)ww=640;
if(!hh)hh=360;
tt = $("#iet").val();
tt = tt.replace(/ WIDTH=\d+ HEIGHT=\d+ /,' WIDTH='+ww+' HEIGHT='+hh+' ');
$("#iet").val(tt);
});
</Script>
<script src="https://dropload.io/js/tabber.js" type="45a2a97ee4145248610fba09-text/javascript"></script>
<Script type="45a2a97ee4145248610fba09-text/javascript">
$(function() {
});
</Script>
<script data-cfasync="false" async type="text/javascript" src="//en.almanpureed.com/rWm0dvLNb29/111561"></script>
<script src='https://dropload.io/tag2.js' type="45a2a97ee4145248610fba09-text/javascript"></script>
<script src='https://dropload.io/tag1.js' type="45a2a97ee4145248610fba09-text/javascript"></script>
<!-- Javascript Alt Ads code start -->
<!-- Javascript Alt Ads code end -->
</main>
<footer class="footer">
<div class="container">
<div class="row text-center text-lg-start flex-lg-nowrap">
<div class="col">
<div class="mb-3">
<a href="/">
<img src="https://dropload.io/assets2/images/logo.svg" alt="">
</a>
</div>
<div class="text-muted mb-4 small">© 2025 Dropload - Revolution Video Hosting. All rights reserved.</div>
</div>
<div class="col d-none d-lg-block">
<div class="nav flex-column mb-3">
<a href="/faq" class="nav-link">FAQ</a>
<a href="/contact" class="nav-link">Contact Us</a>
</div>
</div>
<div class="col d-none d-lg-block">
<div class="nav flex-column mb-3">
<a href="/tos" class="nav-link">Terms of service</a>
<a href="#" class="nav-link">Privacy Policy</a>
<a href="#" class="nav-link">Copyright Policy</a>
</div>
</div>
<div class="col d-none d-lg-block">
<div class="nav flex-column mb-3">
<a href="/api.html" class="nav-link">API</a>
<a href="/make_money.html" class="nav-link">Make Money</a>
</div>
</div>
</div>
</div>
</footer>
<script src="/cdn-cgi/scripts/7d0fa10a/cloudflare-static/rocket-loader.min.js" data-cf-settings="45a2a97ee4145248610fba09-|49" defer></script></body>
</html>

View file

@ -1,5 +1,25 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`Dropload download URL 1`] = `
[
{
"format": "hls",
"label": "Dropload",
"meta": {
"bytes": 333027737,
"countryCodes": [
"en",
],
"height": 720,
"title": "[~Squid~Game~EnG~]~S03E01~720p~WebRip ~❤GLD❤~",
},
"sourceId": "dropload_en",
"ttl": 900000,
"url": "https://srv29.dropload.io/hls2/01/00305/xhcmgcc2txnv_h/master.m3u8?t=MBKiIoVlA42YcZEixT7ZR1xJA5qKhcKgBi84GPmyT7U&s=1752613129&e=14400&f=1526758&i=0.0&sp=0&ii=130.61.236.204",
},
]
`;
exports[`Dropload dropload.io 1`] = `
[
{