chore(source): add 4KHDHub test for stranger things s05e08

This commit is contained in:
WebStreamr 2026-01-02 08:58:11 +00:00
parent 1f4d7c752d
commit 93a098e438
No known key found for this signature in database
11 changed files with 12025 additions and 0 deletions

View file

@ -55,4 +55,9 @@ describe('FourKHDHub', () => {
const streams = await source.handle(ctx, 'series', new TmdbId(230923, 1, 1));
expect(streams).toMatchSnapshot();
});
test('handle stranger things s05e08', async () => {
const streams = await source.handle(ctx, 'series', new TmdbId(66732, 5, 8));
expect(streams).toMatchSnapshot();
});
});

View file

@ -0,0 +1,400 @@
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>4KHDHub - High Quality Movies and TV Shows</title>
<script>
!function(){try{"light"===localStorage.getItem("theme")?(document.documentElement.classList.remove("dark"),document.documentElement.classList.add("light")):(document.documentElement.classList.add("dark"),document.documentElement.classList.remove("light"))}catch(e){console.error("Theme initialization failed:",e)}}();
</script>
<meta name="description" content="Download high quality movies and TV shows in UHD, 4K HDR, 1080p and more formats">
<!-- Font -->
<link rel="dns-prefetch" href="https://fonts.gstatic.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
<!-- Preload the logo -->
<link rel="preload" href="/images/4KHDHUB-Dark-Logo.png" as="image" type="image/png" />
<link rel="preload" href="/images/4KHDHUB-Bright-Logo.png" as="image" type="image/png" />
<!-- Theme script to prevent flash -->
<script data-cfasync="false" src="//dl4d3y1ajyv3q.cloudfront.net/?aydld=1221937"></script>
<!-- Link to Google Fonts Stylesheets -->
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<link href="https://fonts.cdnfonts.com/css/trebuchet-ms-2" rel="stylesheet">
<link rel="stylesheet" href="/css/styles.css?v=0.14.69c19">
<link rel="icon" type="image/png" href="/favicon-96x96.png" sizes="96x96" />
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
<link rel="shortcut icon" href="/favicon.ico" />
<link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png" />
<meta name="apple-mobile-web-app-title" content="4K-HDHub" />
<link rel="manifest" href="/site.webmanifest" />
<!-- JavaScript to apply font-display: swap -->
<script type="text/javascript">
!function(e,n,t){"use strict";var o="https://fonts.googleapis.com/css?family=Open+Sans",r="__3perf_googleFonts_5fd56";function c(e){(n.head||n.body).appendChild(e)}function a(){var e=n.createElement("link");e.href=o,e.rel="stylesheet",c(e)}function f(e){if(!n.getElementById(r)){var t=n.createElement("style");t.id=r,c(t)}n.getElementById(r).innerHTML=e}e.FontFace&&e.FontFace.prototype.hasOwnProperty("display")?(t[r]&&f(t[r]),fetch(o).then(function(e){return e.text()}).then(function(e){return e.replace(/@font-face {/g,"@font-face{font-display:swap;")}).then(function(e){return t[r]=e}).then(f).catch(a)):a()}(window,document,localStorage);
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-LL0RL7VX47"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-LL0RL7VX47');
</script>
</head>
<body>
<div class="flex min-h-screen flex-col">
<!-- Header -->
<!-- Header with truly unified navigation -->
<header class="sticky top-0 z-50 w-full">
<div class="header">
<div class="container flex h-14 items-center justify-between">
<!-- Logo and mobile menu toggle -->
<div class="flex items-center">
<button id="menu-toggle" class="menu-toggle md:hidden">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5">
<line x1="3" y1="12" x2="21" y2="12"></line>
<line x1="3" y1="6" x2="21" y2="6"></line>
<line x1="3" y1="18" x2="21" y2="18"></line>
</svg>
<span class="sr-only">Toggle menu</span>
</button>
<a href="/" class="navbar-brand">
<img id="logo" class="h-8 w-auto" src="/images/4KHDHUB-Bright-Logo.png" alt="4KHDHub logo">
</a>
</div>
<!-- SINGLE Navigation - Visible on desktop, hidden on mobile -->
<nav id="main-nav" class="main-nav">
<ul class="nav-list">
<li class="nav-item"><a href="/" class="nav-link">Home</a></li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle">
Movies
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="dropdown-indicator h-4 w-4">
<polyline points="6 9 12 15 18 9"></polyline>
</svg>
</a>
<ul class="dropdown-menu">
<li><a href="/category/movies/" class="dropdown-item">Latest Movies</a></li>
<li><a href="/category/hindi-movies/" class="dropdown-item">Hindi Movies</a></li>
<li><a href="/category/english-movies/" class="dropdown-item">English Movies</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle">
Web Series
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="dropdown-indicator h-4 w-4">
<polyline points="6 9 12 15 18 9"></polyline>
</svg>
</a>
<ul class="dropdown-menu">
<li><a href="/category/series/" class="dropdown-item">Latest Episodes</a></li>
<li><a href="/category/korean-series/" class="dropdown-item">Korean</a></li>
<li><a href="/category/drama-series/" class="dropdown-item">Drama</a></li>
<li><a href="/category/hindi-series/" class="dropdown-item">Hindi Series</a></li>
<li><a href="/category/english-series/" class="dropdown-item">English Series</a></li>
</ul>
</li>
<li class="nav-item dropdown">
<a href="#" class="nav-link dropdown-toggle">
OTT
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="dropdown-indicator h-4 w-4">
<polyline points="6 9 12 15 18 9"></polyline>
</svg>
</a>
<ul class="dropdown-menu">
<li><a href="/category/netflix/" class="dropdown-item">Netflix</a></li>
<li><a href="/category/amazon_prime_video/" class="dropdown-item">Amazon Prime Video</a></li>
<li><a href="/category/jiohotstar/" class="dropdown-item">JioHotstar</a></li>
<li><a href="/category/disney/" class="dropdown-item">Disney+</a></li>
<li><a href="/category/Apple_TV/" class="dropdown-item">Apple TV+</a></li>
</ul>
</li>
<li class="nav-item"><a href="/category/anime/" class="nav-link">Anime</a></li>
<li class="nav-item"><a href="/category/2160p-HDR/" class="nav-link">4K HDR</a></li>
<li class="nav-item"><a href="/category/imdb/" class="nav-link">Top IMdb</a></li>
</ul>
</nav>
<!-- Search and Theme Toggle -->
<div class="flex items-center">
<button id="search-toggle" class="search-toggle">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
<span class="sr-only">Search</span>
</button>
<div class="search-container hidden md:flex">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="search-icon h-4 w-4">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
for
<input type="search" id="search" placeholder="Search movies & series" class="search-input">
</div>
<button id="theme-toggle" class="theme-toggle">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="theme-icon h-5 w-5">
<circle cx="12" cy="12" r="5"></circle>
<line x1="12" y1="1" x2="12" y2="3"></line>
<line x1="12" y1="21" x2="12" y2="23"></line>
<line x1="4.22" y1="4.22" x2="5.64" y2="5.64"></line>
<line x1="18.36" y1="18.36" x2="19.78" y2="19.78"></line>
<line x1="1" y1="12" x2="3" y2="12"></line>
<line x1="21" y1="12" x2="23" y2="12"></line>
<line x1="4.22" y1="19.78" x2="5.64" y2="18.36"></line>
<line x1="18.36" y1="5.64" x2="19.78" y2="4.22"></line>
</svg>
<span class="sr-only">Toggle theme</span>
</button>
</div>
</div>
</div>
<!-- Mobile Menu Backdrop (only shown when menu is open) -->
<div id="mobile-menu-backdrop" class="fixed inset-0 bg-black/70 hidden"></div>
<!-- Close button for mobile menu (only shown when menu is open) -->
<button id="close-mobile-menu" class="fixed top-4 right-4 p-2 rounded-full z-[60] hidden">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
</button>
<!-- Search Overlay -->
<div id="search-overlay" class="fixed inset-0 z-50 hidden">
<div class="fixed" id="search-backdrop"></div>
<button id="close-search" class="absolute right-4 top-4 p-2 rounded-full">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="h-5 w-5">
<line x1="18" y1="6" x2="6" y2="18"></line>
<line x1="6" y1="6" x2="18" y2="18"></line>
</svg>
<span class="sr-only">Close</span>
</button>
<form action="/" method="get" class="search-form">
<div class="search-input-container">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="search-icon-overlay">
<circle cx="11" cy="11" r="8"></circle>
<line x1="21" y1="21" x2="16.65" y2="16.65"></line>
</svg>
<input type="search" name="s" placeholder="Search Movies & TV-Shows" class="search-input-overlay" autofocus autocomplete="off">
</div>
<button type="submit" class="search-submit">
Search
</button>
</form>
</div>
</header>
<!-- Main Content -->
<main class="flex-1">
<div class="container">
<section class="latest-releases">
<div class="latest-releases-header">
<h2 class="latest-releases-title">
<span><svg style="vertical-align: bottom;" xmlns="http://www.w3.org/2000/svg" height="32px" viewBox="0 -960 960 960" width="32px" fill="#e3e3e3"><path d="M240-400q0 52 21 98.5t60 81.5q-1-5-1-9v-9q0-32 12-60t35-51l113-111 113 111q23 23 35 51t12 60v9q0 4-1 9 39-35 60-81.5t21-98.5q0-50-18.5-94.5T648-574q-20 13-42 19.5t-45 6.5q-62 0-107.5-41T401-690q-39 33-69 68.5t-50.5 72Q261-513 250.5-475T240-400Zm240 52-57 56q-11 11-17 25t-6 29q0 32 23.5 55t56.5 23q33 0 56.5-23t23.5-55q0-16-6-29.5T537-292l-57-56Zm0-492v132q0 34 23.5 57t57.5 23q18 0 33.5-7.5T622-658l18-22q74 42 117 117t43 163q0 134-93 227T480-80q-134 0-227-93t-93-227q0-129 86.5-245T480-840Z"/></svg></span> Latest Releases </h2>
</div>
<div class="card-grid">
<!-- Movie Cards -->
<a href="/stranger-things-series-414/" class="movie-card">
<div class="movie-card-image">
<img src="https://image.tmdb.org/t/p/w500/uOOtwVbSr4QDjAGIifLDwpb2Pdl.jpg" alt="Stranger Things" class="w-full h-full object-cover">
<div class="movie-card-overlay">
<div class="movie-card-formats">
<span class="movie-card-format">Drama</span>
<span class="movie-card-format">Horror</span>
<span class="movie-card-format">Mystery</span>
<span class="movie-card-format">Sci-Fi & Fantasy</span>
<span class="movie-card-format">Hindi</span>
<span class="movie-card-format">English</span>
<span class="movie-card-format">2160p</span>
<span class="movie-card-format">1080p</span>
<span class="movie-card-format">Netflix</span>
<span class="movie-card-format">Tamil</span>
<span class="movie-card-format">Series</span>
<span class="movie-card-format">Telugu</span>
<!--<span class="movie-card-format">HEVC</span>-->
</div>
</div>
</div>
<div class="movie-card-content">
<h3 class="movie-card-title">Stranger Things</h3>
<p class="movie-card-meta">2016 • S01-S5.3 </p>
</div>
</a>
<a href="/behind-the-curtain-stranger-things-the-first-shadow-movie-141/" class="movie-card">
<div class="movie-card-image">
<img src="https://image.tmdb.org/t/p/w500/7jQIbTMx2BlZrYGyOS94YUNcGjV.jpg" alt="Behind the Curtain: Stranger Things: The First Shadow" class="w-full h-full object-cover">
<div class="movie-card-overlay">
<div class="movie-card-formats">
<span class="movie-card-format">Documentary</span>
<span class="movie-card-format">Movies</span>
<!--<span class="movie-card-format">HEVC</span>-->
</div>
</div>
</div>
<div class="movie-card-content">
<h3 class="movie-card-title">Behind the Curtain: Stranger Things: The First Shadow</h3>
<p class="movie-card-meta">2025 </p>
</div>
</a>
<!--<a href="movie-static-movie.html" class="movie-card">-->
<!-- <div class="movie-card-image">-->
<!-- <img src="images/placeholder.svg" alt="Dune: Part Two" class="w-full h-full object-cover">-->
<!-- <div class="movie-card-overlay">-->
<!-- <div class="movie-card-formats">-->
<!-- <span class="movie-card-format">2160p</span>-->
<!-- <span class="movie-card-format">4K HDR</span>-->
<!-- <span class="movie-card-format">HEVC</span>-->
<!-- </div>-->
<!-- </div>-->
<!-- </div>-->
<!-- <div class="movie-card-content">-->
<!-- <h3 class="movie-card-title">Dune: Part Two</h3>-->
<!-- <p class="movie-card-meta">2024</p>-->
<!-- </div>-->
<!--</a>-->
</div>
</section>
<!-- Pagination -->
<div class="pagination-container">
<div class="pagination-container">
<div class="pagination">
<!-- Previous Page Link -->
<a class='pagination-item active'>1</a>
<!-- Next Page Link -->
</div>
</div>
</div>
</div>
</main>
<!-- Footer -->
<footer class="border-t bg-background">
<div class="container py-8 md:py-12">
<div class="grid grid-cols-1 gap-8 md:grid-cols-4 justify-center text-center md:text-left">
<div class="space-y-4">
<h3 class="text-lg font-semibold">4KHDHub</h3>
<p class="text-sm text-muted-foreground">
Your one-stop destination for high-quality movies and TV shows in various formats.
</p>
</div>
<!-- Quick Links Section -->
<div class="space-y-4">
<h3 class="text-lg font-semibold">Quick Links</h3>
<ul class="flex flex-wrap justify-center gap-4 text-sm">
<li>
<a href="/about" class="text-muted-foreground hover:text-primary">
About Us
</a>
</li>
<li>
<a href="/contact" class="text-muted-foreground hover:text-primary">
Contact Us
</a>
</li>
<li>
<a href="/dmca" class="text-muted-foreground hover:text-primary">
DMCA
</a>
</li>
<li>
<a href="/privacy-policy" class="text-muted-foreground hover:text-primary">
Privacy Policy
</a>
</li>
</ul>
</div>
<div class="space-y-4">
<h3 class="text-lg font-semibold">Connect</h3>
<p class="text-sm text-muted-foreground">Stay updated with the latest releases and news.</p>
</div>
</div>
<!-- Footer Bottom -->
<div class="mt-8 border-t pt-8 text-center">
<p class="text-xs text-muted-foreground">© <span id="current-year">2025</span> 4KHDHub - All rights reserved.</p>
</div>
</div>
</footer>
<!-- Back to top button -->
<button id="back-to-top" class="fixed bottom-6 right-6 z-50 rounded-full shadow-md transition-opacity duration-300 opacity-0 pointer-events-none bg-primary text-primary-foreground p-2" aria-label="Back to top">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="m18 15-6-6-6 6" />
</svg>
</button>
</div>
<script src="/js/main.js?v=0.14.69c19"></script>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
{"adult":false,"backdrop_path":"/8zbAoryWbtH0DKdev8abFAjdufy.jpg","created_by":[{"id":1179422,"credit_id":"57599b039251410a99001cce","name":"Ross Duffer","original_name":"Ross Duffer","gender":2,"profile_path":"/kN1HdFViQkcJOQlNcvvFJIx9Uju.jpg"},{"id":1179419,"credit_id":"57599b0e925141378a002c87","name":"Matt Duffer","original_name":"Matt Duffer","gender":2,"profile_path":"/kXO5CnSxC0znMAICGxnPeuGP73U.jpg"}],"episode_run_time":[],"first_air_date":"2016-07-15","genres":[{"id":10765,"name":"Sci-Fi & Fantasy"},{"id":9648,"name":"Mystery"},{"id":10759,"name":"Action & Adventure"}],"homepage":"https://www.netflix.com/title/80057281","id":66732,"in_production":false,"languages":["en"],"last_air_date":"2025-12-31","last_episode_to_air":{"id":5607051,"name":"Chapter Eight: The Rightside Up","overview":"As Vecna prepares to destroy the world as we know it, the party must put everything on the line to defeat him once and for all.","vote_average":7.184,"vote_count":76,"air_date":"2025-12-31","episode_number":8,"episode_type":"finale","production_code":"","runtime":129,"season_number":5,"show_id":66732,"still_path":"/kP23RWbUWM6vGhT9PxFyP5VT3y4.jpg"},"name":"Stranger Things","next_episode_to_air":null,"networks":[{"id":213,"logo_path":"/wwemzKWzjKYJFfCeiB57q3r4Bcm.png","name":"Netflix","origin_country":""}],"number_of_episodes":42,"number_of_seasons":5,"origin_country":["US"],"original_language":"en","original_name":"Stranger Things","overview":"When a young boy vanishes, a small town uncovers a mystery involving secret experiments, terrifying supernatural forces, and one strange little girl.","popularity":1622.2589,"poster_path":"/uOOtwVbSr4QDjAGIifLDwpb2Pdl.jpg","production_companies":[{"id":2575,"logo_path":"/9YJrHYlcfHtwtulkFMAies3aFEl.png","name":"21 Laps Entertainment","origin_country":"US"},{"id":170090,"logo_path":null,"name":"Monkey Massacre Productions","origin_country":"US"},{"id":184664,"logo_path":"/4qv40ryAKUzvwptbv13eXUAl1Wm.png","name":"Upside Down Pictures","origin_country":"US"}],"production_countries":[{"iso_3166_1":"US","name":"United States of America"}],"seasons":[{"air_date":"2016-07-15","episode_count":8,"id":77680,"name":"Season 1","overview":"Strange things are afoot in Hawkins, Indiana, where a young boy's sudden disappearance unearths a young girl with otherworldly powers.","poster_path":"/hb4KmdA4F1XMnf0vVjevPKKBEjV.jpg","season_number":1,"vote_average":8.4},{"air_date":"2017-10-27","episode_count":9,"id":83248,"name":"Stranger Things 2","overview":"It's been nearly a year since Will's strange disappearance. But life's hardly back to normal in Hawkins. Not even close.","poster_path":"/74nFJmiapxKuUBXRbSu6VqGGcuo.jpg","season_number":2,"vote_average":8.2},{"air_date":"2019-07-04","episode_count":8,"id":115216,"name":"Stranger Things 3","overview":"Budding romance. A brand-new mall. And rabid rats running toward danger. It's the summer of 1985 in Hawkins ... and one summer can change everything.","poster_path":"/sDms9g40ZBhjMIfX9YqqaqId8sK.jpg","season_number":3,"vote_average":8.1},{"air_date":"2022-05-27","episode_count":9,"id":163313,"name":"Stranger Things 4","overview":"Darkness returns to Hawkins just in time for spring break, igniting fresh terror, disturbing memories — and an ominous new threat.","poster_path":"/zvGTZYDCoMSMIBkXExxRxLYimqN.jpg","season_number":4,"vote_average":8.5},{"air_date":"2025-11-26","episode_count":8,"id":402292,"name":"Stranger Things 5","overview":"The fall of 1987. Hawkins is scarred by rifts. Vecna has vanished and the government has placed the town under military quarantine, forcing Eleven back into hiding. To end this nightmare, they'll need everyone together, one last time.","poster_path":"/AaLrOh33YLkK1WLEB8Uml7FL8fm.jpg","season_number":5,"vote_average":7.4}],"spoken_languages":[{"english_name":"English","iso_639_1":"en","name":"English"}],"status":"Ended","tagline":"One last adventure.","type":"Scripted","vote_average":8.592,"vote_count":19933}

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

@ -231,6 +231,89 @@ exports[`FourKHDHub handle lovely runner 2024 s01e01 1`] = `
exports[`FourKHDHub handle non-existent devil's bath 2024 gracefully 1`] = `[]`;
exports[`FourKHDHub handle stranger things s05e08 1`] = `
[
{
"meta": {
"bytes": 7215545057,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 1080,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.1080p.NF.WEB-DL.Multi.DDP5.1.H.264-4kHdHub.Com.mkv",
},
"url": "https://hubcloud.foo/drive/vxjyjvsqva1tfxs",
},
{
"meta": {
"bytes": 5508295557,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 1080,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.1080p.NF.WEB-DL.Multi.DDP5.1.H.265-4kHdHub.Com.mkv",
},
"url": "https://hubcloud.foo/drive/pcn0vz4wm1pzvrk",
},
{
"meta": {
"bytes": 6002216796,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 1080,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.1080p.NF.WEB-DL.Multi.DDP5.1.HDR-DV.H.265-4kHdHub.Com.mkv",
},
"url": "https://hubcloud.foo/drive/x1wwc1www1grtmg",
},
{
"meta": {
"bytes": 1513975971,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 1080,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.1080p.NF.WEB-DL.Multi.AAC5.1.AV1-4kHdHub.Com.mkv",
},
"url": "https://hubcloud.foo/drive/efsgttxesa22ale",
},
{
"meta": {
"bytes": 17544941404,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 2160,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.2160p.REPACK.NF.SDR.WEB-DL.Multi.DDP5.1.Atmos.H.265-4kHDHub.com.mkv",
},
"url": "https://hubcloud.foo/drive/vjt411st2kqtcpo",
},
{
"meta": {
"bytes": 20884278476,
"countryCodes": [
"multi",
"en",
"hi",
],
"height": 2160,
"title": "Stranger.Things.S05E08.Chapter.Eight.The.Rightside.Up.2160p.REPACK.NF.WEB-DL.Multi.DDP5.1.Atmos.DV.HDR.H.265-4kHDHub.com.mkv",
},
"url": "https://hubcloud.foo/drive/kmu15o2v21pkk6c",
},
]
`;
exports[`FourKHDHub handle superman 2025 1`] = `
[
{