Update StreamWish.ts

This commit is contained in:
GSTAR 2025-12-01 00:36:23 +01:00 committed by GitHub
parent 4040fe935d
commit 341bd639b9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -9,110 +9,36 @@ export class StreamWish extends Extractor {
public override viaMediaFlowProxy = true;
private readonly domains = [
'streamwish.com',
'streamwish.to',
'ajmidyad.sbs',
'khadhnayad.sbs',
'yadmalik.sbs',
'hayaatieadhab.sbs',
'kharabnahs.sbs',
'atabkhha.sbs',
'atabknha.sbs',
'atabknhk.sbs',
'atabknhs.sbs',
'abkrzkr.sbs',
'abkrzkz.sbs',
'wishembed.pro',
'mwish.pro',
'strmwis.xyz',
'awish.pro',
'dwish.pro',
'vidmoviesb.xyz',
'embedwish.com',
'cilootv.store',
'uqloads.xyz',
'tuktukcinema.store',
'doodporn.xyz',
'ankrzkz.sbs',
'volvovideo.top',
'streamwish.site',
'wishfast.top',
'ankrznm.sbs',
'sfastwish.com',
'eghjrutf.sbs',
'eghzrutw.sbs',
'guxhag.com',
'playembed.online',
'egsyxurh.sbs',
'egtpgrvh.sbs',
'flaswish.com',
'obeywish.com',
'cdnwish.com',
'javsw.me',
'cinemathek.online',
'trgsfjll.sbs',
'fsdcmo.sbs',
'hailindihg.com',
'anime4low.sbs',
'mohahhda.site',
'ma2d.store',
'dancima.shop',
'swhoi.com',
'aiavh.com',
'gsfqzmqu.sbs',
'jodwish.com',
'swdyu.com',
'strwish.com',
'asnwish.com',
'kravaxxa.com',
'wishonly.site',
'playerwish.com',
'katomen.store',
'hlswish.com',
'streamwish.fun',
'swishsrv.com',
'iplayerhls.com',
'hlsflast.com',
'4yftwvrdz7.sbs',
'ghbrisk.com',
'hgbazooka.com',
'eb8gfmjn71.sbs',
'cybervynx.com',
'edbrdl7pab.sbs',
'stbhg.click',
'dhcplay.com',
'strwish.xyz',
'gradehgplus.com',
'tryzendm.com',
'hglink.to',
'dumbalag.com',
'haxloppd.com',
'davioad.com',
'uasopt.com',
'streamwish.com', 'streamwish.to', 'ajmidyad.sbs', 'khadhnayad.sbs', 'yadmalik.sbs',
'hayaatieadhab.sbs', 'kharabnahs.sbs', 'atabkhha.sbs', 'atabknha.sbs', 'atabknhk.sbs',
'atabknhs.sbs', 'abkrzkr.sbs', 'abkrzkz.sbs', 'wishembed.pro', 'mwish.pro', 'strmwis.xyz',
'awish.pro', 'dwish.pro', 'vidmoviesb.xyz', 'embedwish.com', 'cilootv.store', 'uqloads.xyz',
'tuktukcinema.store', 'doodporn.xyz', 'ankrzkz.sbs', 'volvovideo.top', 'streamwish.site',
'wishfast.top', 'ankrznm.sbs', 'sfastwish.com', 'eghjrutf.sbs', 'eghzrutw.sbs', 'guxhag.com',
'playembed.online', 'egsyxurh.sbs', 'egtpgrvh.sbs', 'flaswish.com', 'obeywish.com',
'cdnwish.com', 'javsw.me', 'cinemathek.online', 'trgsfjll.sbs', 'fsdcmo.sbs', 'hailindihg.com',
'anime4low.sbs', 'mohahhda.site', 'ma2d.store', 'dancima.shop', 'swhoi.com', 'aiavh.com',
'gsfqzmqu.sbs', 'jodwish.com', 'swdyu.com', 'strwish.com', 'asnwish.com', 'kravaxxa.com',
'wishonly.site', 'playerwish.com', 'katomen.store', 'hlswish.com', 'streamwish.fun',
'swishsrv.com', 'iplayerhls.com', 'hlsflast.com', '4yftwvrdz7.sbs', 'ghbrisk.com',
'hgbazooka.com', 'eb8gfmjn71.sbs', 'cybervynx.com', 'edbrdl7pab.sbs', 'stbhg.click',
'dhcplay.com', 'strwish.xyz', 'gradehgplus.com', 'tryzendm.com', 'hglink.to', 'dumbalag.com',
'haxloppd.com', 'davioad.com', 'uasopt.com'
];
private readonly dmcaHosts = [
'hgplaycdn.com',
'habetar.com',
'yuguaab.com',
'guxhag.com',
'auvexiug.com',
'xenolyzb.com',
'hgplaycdn.com', 'habetar.com', 'yuguaab.com',
'guxhag.com', 'auvexiug.com', 'xenolyzb.com'
];
private readonly ruleHosts = [
'dhcplay.com',
'hglink.to',
'test.hglink.to',
'wish-redirect.aiavh.com',
'dhcplay.com', 'hglink.to', 'test.hglink.to',
'wish-redirect.aiavh.com'
];
private readonly mainHosts = [
'kravaxxa.com',
'davioad.com',
'haxloppd.com',
'tryzendm.com',
'dumbalag.com',
'kravaxxa.com', 'davioad.com', 'haxloppd.com',
'tryzendm.com', 'dumbalag.com'
];
public supports(_ctx: Context, url: URL): boolean {
@ -120,16 +46,22 @@ export class StreamWish extends Extractor {
}
public override normalize(url: URL): URL {
return new URL(
url.href
.replace('/f/', '/e/')
.replace('/d/', '/e/'),
);
return new URL(url.href.replace('/f/', '/e/').replace('/d/', '/e/'));
}
private rand<T>(arr: T[]): T {
if (arr.length === 0) {
throw new Error('rand(): empty array');
}
const index = Math.floor(Math.random() * arr.length);
return arr[index];
const value = arr[index];
if (value === undefined) {
throw new Error('rand(): unexpected undefined');
}
return value;
}
private getMediaId(path: string): string {
@ -146,10 +78,9 @@ export class StreamWish extends Extractor {
private rewrite(url: URL): URL {
const mediaId = this.getMediaId(url.pathname);
const finalHost
= this.ruleHosts.includes(url.host)
? this.rand(this.mainHosts)
: this.rand(this.dmcaHosts);
const finalHost = this.ruleHosts.includes(url.host)
? this.rand(this.mainHosts)
: this.rand(this.dmcaHosts);
return new URL(`https://${finalHost}/e/${mediaId}`);
}
@ -158,13 +89,13 @@ export class StreamWish extends Extractor {
ctx: Context,
url: URL,
meta: Meta,
originalUrl?: URL,
originalUrl?: URL
): Promise<UrlResult[]> {
const normalized = this.normalize(url);
const rewritten = this.rewrite(normalized);
const headers = {
Referer: meta.referer ?? originalUrl?.href ?? rewritten.href,
Referer: meta.referer ?? originalUrl?.href ?? rewritten.href
};
const proxyUrl = await buildMediaFlowProxyExtractorStreamUrl(
@ -172,7 +103,7 @@ export class StreamWish extends Extractor {
this.fetcher,
this.id,
rewritten,
headers,
headers
);
return [
@ -183,8 +114,8 @@ export class StreamWish extends Extractor {
sourceId: this.id,
ttl: this.ttl,
requestHeaders: headers,
meta,
},
meta
}
];
}
}