fix(source): exclude ad videos in HDHub4u

This commit is contained in:
WebStreamr 2026-03-27 22:03:14 +00:00
parent bd2dec0392
commit 65191cfc8d
No known key found for this signature in database
14 changed files with 7903 additions and 1 deletions

View file

@ -16,6 +16,11 @@ describe('HDHub4u', () => {
expect(streams).toMatchSnapshot();
});
test('handle the bone temple 2026', async () => {
const streams = await source.handle(ctx, 'movie', new ImdbId('tt32141377', undefined, undefined));
expect(streams).toMatchSnapshot();
});
test('handle stranger things s05e01', async () => {
const streams = await source.handle(ctx, 'series', new ImdbId('tt4574334', 5, 1));
expect(streams).toMatchSnapshot();

View file

@ -95,7 +95,7 @@ export class HDHub4u extends Source {
private readonly extractHubDriveUrlResults = (html: string, meta: Meta): SourceResult[] => {
const $ = cheerio.load(html);
return $('a[href*="hubdrive"]')
return $('a[href*="hubdrive"]:not(:contains("⚡"))')
.map((_i, el) => ({ url: new URL($(el).attr('href') as string), meta }))
.toArray();
};

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','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oSU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/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','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSklSMU5DY25oU09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/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','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSbU9WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/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','Y214WE0xWjNZbXRhVUdwMmIxQldObFo2ZFRCeFZVOXRRbmxxYVV0UU9YZHdZWGxxY1ZRNVkyOWhRV05OTW5Vd2NHdzFiVzVMUlhsTFVEbGliekl4ZVc5VVUyaE5WRWxzUzFBNGRsbFFWMmxXZDJKMlRFaDFSbHBVUVZaSFIwMWFja2Q1YVVwS01UUndWRmRuY1ZWaldtOUpWMkpLZUZvMWJsUkJaMGQ2T1hWS1UyTm1URE40TkhKU01WSkhTM1ZCU1ZSd09WWmhNRDA9',180*1000);setTimeout(()=>window.location.href='https://cryptoinsights.site/homelander/', 2000);
</script>
</body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
{"facet_counts":[],"found":2,"hits":[{"document":{"category":["300MB Movies","Dual Audio","HD Movies","Hindi Dubbed","HollyWood","Horror","Sci-Fi","Thriller"],"director":["Nia DaCosta"],"id":"183681","imdb_id":"tt32141377","permalink":"/28-years-later-the-bone-temple-2026-hindi-webrip-full-movie/","post_date":"February 17, 2026","post_thumbnail":"https://image.tmdb.org/t/p/w500/fVlbHQvKgZHF1uEIYePZqpfDqaJ.jpg","post_title":"28 Years Later: The Bone Temple (2026) WEB-DL [Hindi (DD5.1) & English] 4K 1080p 720p & 480p Dual Audio [x264/10Bit-HEVC] | Full Movie","post_type":"post","sort_by_date":1771333131,"stars":["Ralph Fiennes","Jack O'Connell","Alfie Williams"]},"highlight":{"imdb_id":{"matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}},"highlights":[{"field":"imdb_id","matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}],"text_match":578730123365711993,"text_match_info":{"best_field_score":"1108091339008","best_field_weight":15,"fields_matched":1,"num_tokens_dropped":0,"score":"578730123365711993","tokens_matched":1,"typo_prefix_score":0}},{"document":{"category":["HollyWood","Horror","Sci-Fi","Thriller"],"director":["Nia DaCosta"],"id":"182051","imdb_id":"tt32141377","permalink":"/28-years-later-the-bone-temple-2026-hdtc-hindi-full-movie/","post_date":"January 19, 2026","post_thumbnail":"https://image.tmdb.org/t/p/w400/kK1BGkG3KAvWB0WMV1DfOx9yTMZ.jpg","post_title":"28 Years Later: The Bone Temple (2026) HDTC [Hindi (Clean)] 1080p 720p & 480p [x264] | Full Movie","post_type":"post","sort_by_date":1768822585,"stars":["Ralph Fiennes","Jack O'Connell","Alfie Williams"]},"highlight":{"imdb_id":{"matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}},"highlights":[{"field":"imdb_id","matched_tokens":["tt32141377"],"snippet":"<mark>tt32141377</mark>"}],"text_match":578730123365711993,"text_match_info":{"best_field_score":"1108091339008","best_field_weight":15,"fields_matched":1,"num_tokens_dropped":0,"score":"578730123365711993","tokens_matched":1,"typo_prefix_score":0}}],"out_of":13464,"page":1,"request_params":{"collection_name":"post","first_q":"tt32141377","per_page":10,"q":"tt32141377"},"search_cutoff":false,"search_time_ms":0}

View file

@ -206,3 +206,99 @@ exports[`HDHub4u handle superman 2025 1`] = `
},
]
`;
exports[`HDHub4u handle the bone temple 2026 1`] = `
[
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
},
"url": "https://hubdrive.space/file/2165806385",
},
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
},
"url": "https://hubdrive.space/file/2777734670",
},
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
},
"url": "https://hubdrive.space/file/6051118182",
},
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
},
"url": "https://hubdrive.space/file/13783802255",
},
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
"referer": "https://hblinks.dad/archives/104571",
},
"url": "https://hubdrive.space/file/2026023433",
},
{
"meta": {
"countryCodes": [
"multi",
"en",
"hi",
],
"referer": "https://hblinks.dad/archives/104570",
},
"url": "https://hubdrive.space/file/4232622187",
},
{
"meta": {
"countryCodes": [
"multi",
"hi",
],
},
"url": "https://hubdrive.space/file/2298599706",
},
{
"meta": {
"countryCodes": [
"multi",
"hi",
],
"referer": "https://hblinks.dad/archives/103118",
},
"url": "https://hubdrive.space/file/2291074311",
},
{
"meta": {
"countryCodes": [
"multi",
"hi",
],
"referer": "https://hblinks.dad/archives/103119",
},
"url": "https://hubdrive.space/file/2244066767",
},
]
`;