feat(extractor): add back VidSrc

This reverts commit f5f47403cc.
This commit is contained in:
WebStreamr 2026-01-14 13:12:25 +00:00
parent 381fb89cfb
commit 9ee91dff31
No known key found for this signature in database
12 changed files with 2792 additions and 0 deletions

View file

@ -0,0 +1,20 @@
import winston from 'winston';
import { createTestContext } from '../test';
import { FetcherMock } from '../utils';
import { ExtractorRegistry } from './ExtractorRegistry';
import { VidSrc } from './VidSrc';
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
const extractorRegistry = new ExtractorRegistry(logger, [new VidSrc(new FetcherMock(`${__dirname}/__fixtures__/VidSrc`), ['vidsrc-embed.ru'])]);
const ctx = createTestContext();
describe('VidSrc', () => {
test('Full Metal Jacket', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/movie/tt0093058'))).toMatchSnapshot();
});
test('Black Mirror', async () => {
expect(await extractorRegistry.handle(ctx, new URL('https://vidsrc-embed.ru/embed/tv/tt2085059/4-2'))).toMatchSnapshot();
});
});

87
src/extractor/VidSrc.ts Normal file
View file

@ -0,0 +1,87 @@
import * as cheerio from 'cheerio';
import { BlockedError, TooManyRequestsError } from '../error';
import { Context, Format, Meta, NonEmptyArray, UrlResult } from '../types';
import { Fetcher, guessHeightFromPlaylist } from '../utils';
import { Extractor } from './Extractor';
export class VidSrc extends Extractor {
public readonly id = 'vidsrc';
public readonly label = 'VidSrc';
public override readonly ttl: number = 10800000; // 3h
private readonly domains: NonEmptyArray<string>;
public constructor(fetcher: Fetcher, domains: NonEmptyArray<string>) {
super(fetcher);
this.domains = domains;
}
public supports(_ctx: Context, url: URL): boolean {
return null !== url.host.match(/vidsrc|vsrc/);
}
protected async extractInternal(ctx: Context, url: URL, meta: Meta): Promise<UrlResult[]> {
// While this is a crappy thing to do, they seem to be blocking overly strict IMO
const randomIp = `${Math.floor(Math.random() * 223) + 1}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}.${Math.floor(Math.random() * 256)}`;
const newCtx = { ...ctx, ip: randomIp };
return this.extractUsingRandomDomain(newCtx, url, meta, [...this.domains]);
};
private async extractUsingRandomDomain(ctx: Context, url: URL, meta: Meta, domains: string[]): Promise<UrlResult[]> {
const domainIndex = Math.floor(Math.random() * domains.length);
const [domain] = domains.splice(domainIndex, 1) as [string];
const newUrl = new URL(url);
newUrl.hostname = domain;
let html: string;
try {
html = await this.fetcher.text(ctx, newUrl, { queueLimit: 1 });
} catch (error) {
/* istanbul ignore next */
if (domains.length && (error instanceof TooManyRequestsError || error instanceof BlockedError)) {
return this.extractUsingRandomDomain(ctx, url, meta, domains);
}
/* istanbul ignore next */
throw error;
}
const $ = cheerio.load(html.replace('<!--', '').replace('-->', '')); // server HTML is commented-out
const iframeUrl = new URL(($('#player_iframe').attr('src') as string).replace(/^\/\//, 'https://'));
const title = $('title').text().trim();
return Promise.all(
$('.server')
.map((_i, el) => ({ serverName: $(el).text(), dataHash: $(el).data('hash') }))
.toArray()
.filter(({ serverName }) => serverName === 'CloudStream Pro')
.map(async ({ serverName, dataHash }) => {
const rcpUrl = new URL(`/rcp/${dataHash}`, iframeUrl.origin);
const iframeHtml = await this.fetcher.text(ctx, rcpUrl, { headers: { Referer: newUrl.origin } });
const srcMatch = iframeHtml.match(`src:\\s?'(.*)'`) as string[];
const playerHtml = await this.fetcher.text(ctx, new URL(srcMatch[1] as string, iframeUrl.origin), { headers: { Referer: rcpUrl.href } });
const fileMatch = playerHtml.match(`(https:\\/\\/.*?{v\\d}.*?) or`) as string[];
const m3u8Url = new URL((fileMatch[1] as string).replace(/{v\d}/, iframeUrl.host));
return {
url: m3u8Url,
format: Format.hls,
label: serverName,
ttl: this.ttl,
meta: {
...meta,
height: await guessHeightFromPlaylist(ctx, this.fetcher, m3u8Url, { headers: { Referer: iframeUrl.href } }),
title,
},
};
}),
);
}
}

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="93058" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/yYderAvjtKnYLBxKujVpmKTVlOM.jpg');">
<div id="iframe_title">
Full Metal Jacket (1987) </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YTBhMDVhYTBlMGU4ZTI5M2Y4OTU1MGFmODk1NjYxZWQ6VUdJMkwyZHJkbVpHV1M5Nk1rZDBPV05RTW1KVlUweHlSMEpGTkRJd1N6TktUM1ZsZGxCRlptSnZWbTVVYmxwaWIyeE1aakJCTWxsa01YY3JWVE01TTJZMVZUWlVMMjR2UkU1bWFEQnliM0J3UmxGSFZYTnFWREl3U1c5cU0zcFhVMVpPTnpselpuQnZXVlZITldGMlJrUm5NbWRKUkM5eWJsRXZNRWQ0WlN0b1p6Rk5SM2hzTlc5SlUyZDZURE0zTVRGcVdWRlpOVVJTYzJKNWNXdG5kRVo1YkUxeWJrTkVRa2RyTVVkUlVGb3JabXRXVEM5WVYxRkhNVFZKT0dWNVMzQjBWV1JDVjFneE4wcENWV3B5WkhwNUwwZE5aek4zVDA0cmNFSnZXVlpwVlVobk1IRjNkR3BPVVVoc2FXTnFhSEZUYm01bmVFOU9PSEFyTDBSUFVEQm1SbXB6V21Gbk4yWm9UMFpxVjB0a1RHbEdVR2hyZWs1cGRXeFFRMmx3VjFoaVZGSlNPVmhoTkVObWMxYzNSWEpoYjFwWlpHc3ZNSGsxWmpoTGVWSldSRzF3VFZWcVUzWTVjbE42Ukc1M01uazFkV1Y1Y2todk1UaFBTMGh4V0VnemVIRlZZVGczYTFkdVJ6RTBRbE41VUdoVmVYb3daR0ZtUzNveWRFUkxRbHBDTDBwVGRWUjZNbGxHTmxWeVVtdFZZbTlxUzFoWVJtVlhWREppTjJONVJDdDVNekpXVUVsNmEwbHRXU3RzUW5aR1pWRjFXWFZNYjBSak1UZHFZME5MYjBORVpFaGtNV2hEWm04MGJrRmhSSEJ4YUV0b1NraG5jQ3R6ZEhka1NISjZiR001WmpaUlkzazRWV3RSZWtaTFMybFViRlEzT1RselJrcERTRVprUkRoSVpsSXdhR2xoYVhVMk5uZDRVa0p4VkRWbFUyMW5VMkV6U2xoMWMwVlBkVVpEWm1GVVQzWmxkek5OZFVWRGNGTkdNbGRuZURCVmRETkxjM2hLTDNsR2EwcDBXQzlZVVU4M2RXTlhjR3AzUTJaSk9HbHlhWEJKY1hKVlkwdEdlRzFUWjNRck5WZE1jMHRtTmtSak4yZHBWM3B1UldacVJIZHRSa05OVEVoc1FsZ3pkWFlyWkhwNU4xcG9ZemhzVWpSMlVTdElTM2htYTJORVZGZEJZMEU0TmpSeWFUQndkbHAyZW10SWQxY3ZjVGhRWTNGWGREVkJabmsxUVRkblVVdDZNR280TUc5RlIwNVhaVVp3ZWtkME1VZFRTRkZ4TTFkdGFWaGtaRmxHYkRSeVVuQXhhM1pEWVV0UlVWb3pkV3g1WlVjelNqWnJNR3BTYWtSdGNHeEpVa3BqZDBWR1FrSnhjSGh4UVhKM1JGQXZRV0pHY0VKQlIyMVFOV3hrY25ndk1XSTFSREk1YWxoVlQxQkpWa2xsTkd4RVVFUlNORk5GVkRGb1dsaElOMDF1TW05UFp6aFFkMjVFWW1neWJVWnpjbUpyUTBzeWJESlFUVmxHWlRCaldGaFBUMjVTZUhONWEwdElXRWxoTkRZdk1sWldhbXgzVGpoa1RVNXhkbkJZVm1GcWREZ3ZVR2RaVEVwd09UUTJjMmRuTUV0QkszcHNialpQT0RWWmFuZFZlRUl4UmpOMGRVVmFRMlpIWlhKU2RGRkpkV2hIWkUwMFVVSXlNbEZhY3psT1VtRTRWbEF6V2xwc2R6YzJTbVJGWlhSUVMwNDVhbU5WUWtFeldISXdlbVpVY25CdlUwMVJNa1JJZEZac2NYTXJZazFCY2tNMFZXZzRibE5rUjNaSlNsaDBaRzh2Y25kRE0xVlZVbGxIV0c1NlRXZHRRa0pvUm5sdlJ6bFdRMFZZV0VaRk5rOTJNRGx0TkVJM2FqVm1RMU5MZEVKR1NGbFhSREpXZDJORWNERjZRMlZaYWpsVmRVSjFkMWhHVm1NM00waExSSFJKYjFwUVpGaDJOR05vVWtsVE1VZHJaMWRzVTNrNE1HSkZia01yVlVkalRtSmlSMUZUUkhoaEwxUXJaVU54WTBkR2VuVldZakpqWkdSaGFXOU5OVVpHVkZONVUzbFFZVkpWUlRCQ1QwVm1ZejA9',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

View file

@ -0,0 +1,145 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style_rcp-e600e6.css?t=1744906951"/>
<style>
body {
font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
}
.hidden {
display:none;
}
#asdf {
width: 0px;
height: 0px;
}
#iframe_title {
position: absolute;
top: calc(50% + 45px);
font-size: 1.1em;
text-shadow: -1px -1px 0 #000, 1px -1px 0 #000, -1px 1px 0 #000, 1px 1px 0 #000;
width: calc(100% - 30px);
text-align: center;
padding: 0px 15px;
}
</style>
</head>
<body data-i="2085059_4x2" >
<!--<div id="pop_asdf" style="position:absolute; width:100%; height:100%; z-index:2147483650; pointer-events: none;"></div>-->
<!--<div id="loading_overlay"></div>-->
<div id="the_frame" style="background-image: none;">
<div id="pl_but_background" style="background-image: url('//image.tmdb.org/t/p/w780/dg3OindVAGZBjlT3xYKqIAdukPL.jpg');">
<div id="iframe_title">
Black Mirror (2011) S04E02 </div>
<i id="pl_but" class="fas fa-play"></i>
</div>
</div>
<div id="hidden" style="display:hidden;"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha256-1A78rJEdiWTzco6qdn3igTBv9VupN3Q1ozZNTR4WE/Y=" crossorigin="anonymous"></script>
<script src="/base64.js?t="></script>
<script src="/sbx.js?t=1751380596"></script>
<script>
/*
$(document).ready(function(){
if($.cookie('pop_asdf')){
$("#pop_asdf").addClass("hidden");
}
$("#pop_asdf").click(function(){
if(!$.cookie('pop_asdf')){
if($.cookie('pop_asdf_tmp') >= 3){
var date = new Date();
date.setTime(date.getTime() + (10800 * 1000));
$.cookie('pop_asdf', 1, { expires: date });
$("#pop_asdf").addClass("hidden");
}else{
var cookie_value = 1;
if($.cookie('pop_asdf_tmp'))
cookie_value = $.cookie('pop_asdf_tmp');
cookie_value++;
$.cookie('pop_asdf_tmp', cookie_value);
$(this).addClass("hidden");
setTimeout(function(){
$("#pop_asdf").removeClass("hidden");
}, 59000);
}
}
});
});
*/
$("#pl_but_background , #pl_but").click(function(){
loadIframe();
});
function loadIframe(data = 1){
if(data == 1){
$("#the_frame").removeAttr("style");
$("#the_frame").html("");
$('<iframe>', {
id: 'player_iframe',
src: '/prorcp/YjA1NWVjMTUxNjM1ODVmMjg4NDE5YmJjMzc5N2IwYjk6YkZGMlRVdFhNWEZ4YXpSaVFUUnZOMDE2YzI1emFYaHRTVGhXVjJoVFNTOVhWSGw1WmpoNmJURnpNREpoZEZaM2JXOWlSWEJEWWxCNWVYcHJaaTlSUTNCWVREWjVOVk41UzNWM1dGaFpaMU0zZERCWE9VZHNhR2xIYmtFelJqZ3ZjbXQ2Y1U1NVFWQmpWSGxqTm1sWVFXOUlNRW93VjBKNFltZEZValZWTm5OT1pIWktTV2RpZDFFemIydzRibUl5UzBGR1JGSmxhbWxqUmpsamNIZERLM1JMTVhwSVpVVnpUVzVrUW5ZM2FHMTRWVk0wZUVOb01HbG5iRzkzV2pGTkwxQXhMMU5vWm13MVMyMVJZV2xEWVZwNmNGaFJNakJhVWpjM1pVbGFXVkU0UzBZMVpVMXFibXBDWjIxVFJWWm1kemROZVZCdGNWTkxlRnB0U1c0eloySTJRV056VVVzd2JFNXdVa00xTW5sS1ozWjRPVE5SWmt3NGVrcDFhbTlNV0c0MmNGcHlUMWR0UkVwV1ZqSmtaVUpDZFhCVVkwOTJjVTVXY3pJMGJUQTBaa1JOZFdaTE0zSmxlVnBsZERkUGQxWnVUeTh6Vm5KWGJtOXNUVWhHVTJ0UmR6VXdPWEZoTm01dmNIQmFUR3hHU1hKVVVHZG1lbXRPWWtKbVpGbDRRMnhXT1hSWFJHeFZjekV4Y3pKaE9YTkhiVzlRYUZCSldIRlhhRGhhYWxoTU1Vb3ZTWGRTVW5wNGNVWlRkSGRYZEhCek5ta3ZPR2hCTVVWQmVVdFlWR2hKVmpZdk4weHRWeXR5U1dWSVdtTkJkMVl6VlZsV2FIQnBRak5tVkZnelRUWXhNREZrVEZRcmNVMWFORVpRVjFaTU5qZFpZbVpHV2xWSE5XTlVjakZTVEZaWlUwNHpXbkJsWnpoMVFYQlNZM0ZGUVVVNGEyNUZOREpzTVRRdk9HZHdjeXN2Ym05VVprZGhjR2hDWVhaNmR6aERjVFZKV2taQ1dqUmlWR3BMUkhaMmRUWmhSblpJVW5ad2JIQndVVGt2UWtoSGFrZHlUQzkyTmxsVlJHdHpZVXMyZGtGaFNVTlhWRmRuTVVacVVXaFlVVmhTVXlzMVpFRkhNRGRPZVVkdmNXZHpSRzVPYlZCMlRWQXJSbFpXVEhCV1UwazBOMU5CU3l0SmVYaERVV05SVTJwYWRVc3dhelpWUWpRMllXNUtWVFZMY1hobFFWRnphRk5aUTA1clIyRTFaSGt6YlVKeldsQjRTamxKZWxkekwwdzFTMDh2V2xGS0wxRkhZVXBuUkVRcmMxRXlUalJKY0RkNlFtVTNWSE4zV1dSTkwyZDFaVEJzVmpkalMwcEZORVZoYzJSWWVrNVdSVXRDTXpZM00wWXJiVnBVZEVWWk1rdEJjM1pvTmpGbGFuRjRhaTlKV21zckx6VktVbVl2T1dac1MzcFhjbGQxVFM5Q1NGcFROSFp5ZVZadVltUnRablZrUjFGamNERTJjamhOYjNVMldEa3JaRzQxVFZndmRuY3dMeXRqYkhscVFVNUVjMUEyT0RCR1ZWSm5kbXhXY0ZvM01tOW5hamt4TldzeFRtaGpWMmhHVFVkd1ltOXhXWEF3Y0U5blpITndaV2xVVDNZelJXRXhaMWxGUVdsMmVsTjRiRXhuZGtOR2FVTk1SbVF3VDFVMFZrMDJkVmwyUzJGdVJtaDBiV0pwU1ZaNmJYY3ZORFJQZVVvM2JscFhlalF3TUhnM2FFaENkRVZqVWtSRGEySXdaMVZKVUdkQ1pWZ3pOeTh3T1ZoSVFqTjFSVUUyTDFFcldqbEZSRlF5UkVOQlVUSlpabEZxUzNkME5XdG5NVTEyYzBsVFNrMTRaMFp5VkVJelJXWkNhR1ZtYTAweVZtMXJZVGRpVnpsME9ETjVjMlJGUVZGNWN5dENObEpXU0RGVlNtTlBVazl1YTBsRFptWk1ORGRVTTNwaWQxbzRlbTFOTlhCMWJrdzRWMFpJUVZOQmFXNURjMmxETkZNeWF6UkxVME4xZFhGUGRubzNORTVYUW1sU1IxVnNRMjFrTUdOdFExcE1jWEZ6Umk5blIwNDFkMVZITldSQk5HdG1SV3RWWlU0MGVFSlVSa056VDBWcmQwdHNaelpUVkE9PQ--',
frameborder: 0,
scrolling: 'no',
allowfullscreen: 'yes',
allow: "autoplay",
style: 'height: 100%; width: 100%;'
}).appendTo('#the_frame');
$("#player_iframe").on("load", function () {
$("#the_frame").attr("style","background-image: none;");
});
}
}
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
var the_iframe = document.getElementById('player_iframe');
if(message.source == window.parent){
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,8 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=884887,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x346,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/e2f2579229bebcfbb0eafde12cbc1bf9/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2911865,CODECS="mp4a.40.2,avc1.42c01f",RESOLUTION=1280x694,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/0e258eeccefba231686dc455bae2c1be/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=5301648,CODECS="mp4a.40.2,avc1.42c028",RESOLUTION=1920x1040,FRAME-RATE=25,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/f4afc016a800ba375016f4bc9771890f/index.m3u8

View file

@ -0,0 +1,6 @@
#EXTM3U
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=833322,CODECS="mp4a.40.2,avc1.42c01e",RESOLUTION=640x358,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/f2a0a2e3ac935bed168e40c6c28105d7/index.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=2728709,CODECS="mp4a.40.2,avc1.64001f",RESOLUTION=1280x714,FRAME-RATE=24,VIDEO-RANGE=SDR,CLOSED-CAPTIONS=NONE
/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/ea18a1816b821e1ba4ee5d4a76b0b7cf/index.m3u8

View file

@ -0,0 +1,274 @@
<!DOCTYPE html>
<html>
<head>
<title>Full Metal Jacket (1987)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style.css?t=1710289820"/>
<style>
.mctitle a {
font-size:1em !important;
}
#AdWidgetContainer {
position: fixed !important;
transition: transform 1s linear 0s !important;
opacity: 1 !important;
transform: translate(0px, 0px) !important;
}
#ad720 {
width: 100%;
position: absolute;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
#ad720 .ad_container {
max-width: 720px;
position: relative;
}
#ad720 .ad_container img {
width: 100%;
height: auto;
}
#ad720 .ad_container #close {
position: absolute;
top: 3px;
right: 3px;
color: white;
opacity: 0.7;
}
#ad720 .ad_container #close:hover {
opacity: 1;
cursor: pointer;
}
#onexbet {
position: absolute;
top: calc(50% - 25px);
left: -30px;
transform: rotate(-90deg);
}
#onexbet img {
width: 100px;
height: 36.5px;
}
</style>
</head>
<body data-i="93058" >
<div id="loading_overlay"></div>
<div id="the_frame">
<iframe id="player_iframe" src="//cloudnestra.com/rcp/ZDM3NDM0YzEyMjAzYTUyMGVmZjNkMzVlNTcxODcwOTE6VlZoNlEyTlJkRkZuTm5wdFFqTldkWGhJTjB0WllraG1PV3BKTjI5VFVDOWtLM28xUkRWeFExVlpiako0ZDNCS1NXbE5ZVlJ2V1VoMmQyTnNlRVF4V0dodlVEaDNUVGxwY1dWQ1prRnRlVGx3WjJGUGFVeHZla1kyWlZkbVpteENWRTB2UW5sVlowUmxMemRMT0hKemVIbEZRbTlpVW05VmJURjZhVE5MVDBjdlJWbHBZWFJFVVdaeVpYQkZORkpSZUZVeFlVeHRTbEIzYUVsWlJFWXlUVVZYVlc1VVpUSkZaMnBSWmxGWFNYbEthbkpaUVZVMk5XdDVUV056TkRKWk1UbE1ZVGx5WlZsdFFXMVVSVzVPYnpReFoyUTRha2d3WXpGV1VYaFZiRVZSUWpOSk5tcE1WMnR6VEhBNU1uRlJaR1ZFTlhOR09FaFNSM0VyYnpRelNtdERReThyUTJkMk5WZ3ljM2R2TmpkaU9FdE1UbTlUZFRocmFHdzFaeTkzYUVWTGNWZEdNRmt2VmpCc09XeDFNWEpqVWxabFNUVkVUVlpRVHpCeU9HOHljMk5pU0VsalNrOUtiak56VjFSNk4waFdOVk5TUlVodGNEaFJlRWhyWTJ0MFJqRXpWR0Z3UjJOYVJFUnlPR3QwWTFSVlowdEZWVU4yUTJKS05rZEpOM2w2ZDIxemJEQjVSMnRETkhOVlNXaDRkamhSUjNKeVZta3pjRkpWTlhFelMzbDJVVFl2Y0ZkNVp6Qm9NMVpsTUcxaGRua3Jha2RSTlZCSGRXWlFkMnBVZEZCVFNXOXBkVlJhYUhwalJESkpORXMyWlRWV1QzQXlTMWhvVjJRelIwbzFNVXhNYmpsVFpHVlJSVUZDZUhSc1VHOWhibk4yWjJkb2FGcHZZMVJQYmtOaVFrdEViVXMzVDJGTlQwNXRUVlZEV21wRGJFbGtVMEl2V0VOMmFtSkdRVUpPYjFOWlRFRXlWSFF2YkZGS2FUZFlUblZ1ZGtveVduTnhTVGw2VGtwTFVIWjRRVVJZTXpCelRpOW1Va0ZzVm1sUk55OW9NVGx3WWxaSFRGRkJhbXRLVWtkT2NWZG9SMU51VVZwWU1qRkZZVU5hUkc0NFNGVnBkVm8xZGpOcmJXOTRabU5qZGt4QmRUTnVkeTgwUTJWTk9IWnNOWE4yU2xCcVRYaDRSVkZxYm1WaU1tbHBjM1psVmpOUFZXNVFUMEZUU0hVelZVZEZlV2syWmtGUFYwWjRVR0pwT0hVelZuVnlla1J4YUhkVmF6Y3pjMGhUY0dKbFoycDBNR05sZVZGeGVqRlJSMWxRY0RWaVpUTnVhblJvUTJaNk5YUlVNbEp3U1RReE0ycHRUMjVwY1ZwdEswSTNjV1ZRYzA1b2RVNDNXbTlrUzNsRU5GWmFZMFo1ZWtrMkswZENiUzkwVlhOWFdrRlJkSGhJVGs1eVRERllWa0pYUmpZd1dGZFVNblJNUTJNNVVFOWFkMU14TlZjeVRVZHNSa2hJY3l0V01qaHROa2R4ZG5SclMzQlBaVk51VVZrd1FrWnFZV2xJYVRoeGFXVTVXRWxzUjFNNWNXZG1ibXN4YUhaTVMzVTNkV2RpWkVacWNVcG9TME50TVhGYVdYaE1iM0JSTVM4ellXeENVMngxVlhSM1ZXTjFURU5aZFRobGQxWk9MekJSZWxoVFlVczBhMGxUYUZKQ2JtVk1XV1pPTDJOU1dIVTBkRTFFVGl0MFRWVk9TR1JNV0RoMVNHdHdSMlJWYW1kbVdqZDZObFJKWTA5clpEUnZSWEY2VFhVeU1VRjZXbFF4S3pnMVZXMVljamxGTlRocldraG1Ra05MZFU5NVdXaHVWemRNV0VKQ00wSkdZVWxJUzIxbE1XODNaMUZ4ZGpCclEwVnJOVkZZZG5oUk4xVlFWek0wU0d0TGR6Sk5UMmRWUmpjMU5FbHVlWE40VDBOYVZESlFTbGsyZGs0eVNFRkhlRGQwVnl0dk0xUkNlWGQzTWpWb2VsUTVZbUU0VG5CUVMyZGxhMkl6Y1VvMWVtMUljMHh3V2tGbVFVOXBhSGQ0U0Rad1dGVXdXalJVTWk5ell5dEpiU3RXWm5ORVJuTmlkejA9" frameborder="0" scrolling="no" allowfullscreen="yes" style="height: 100%; width: 100%;"></iframe>
</div>
<!--
<div class="servers" style="display: none; " >
<i class="serversToggle fas fa-cloud"></i>
<div class="serversList">
<div class="server" data-hash="ZDM3NDM0YzEyMjAzYTUyMGVmZjNkMzVlNTcxODcwOTE6VlZoNlEyTlJkRkZuTm5wdFFqTldkWGhJTjB0WllraG1PV3BKTjI5VFVDOWtLM28xUkRWeFExVlpiako0ZDNCS1NXbE5ZVlJ2V1VoMmQyTnNlRVF4V0dodlVEaDNUVGxwY1dWQ1prRnRlVGx3WjJGUGFVeHZla1kyWlZkbVpteENWRTB2UW5sVlowUmxMemRMT0hKemVIbEZRbTlpVW05VmJURjZhVE5MVDBjdlJWbHBZWFJFVVdaeVpYQkZORkpSZUZVeFlVeHRTbEIzYUVsWlJFWXlUVVZYVlc1VVpUSkZaMnBSWmxGWFNYbEthbkpaUVZVMk5XdDVUV056TkRKWk1UbE1ZVGx5WlZsdFFXMVVSVzVPYnpReFoyUTRha2d3WXpGV1VYaFZiRVZSUWpOSk5tcE1WMnR6VEhBNU1uRlJaR1ZFTlhOR09FaFNSM0VyYnpRelNtdERReThyUTJkMk5WZ3ljM2R2TmpkaU9FdE1UbTlUZFRocmFHdzFaeTkzYUVWTGNWZEdNRmt2VmpCc09XeDFNWEpqVWxabFNUVkVUVlpRVHpCeU9HOHljMk5pU0VsalNrOUtiak56VjFSNk4waFdOVk5TUlVodGNEaFJlRWhyWTJ0MFJqRXpWR0Z3UjJOYVJFUnlPR3QwWTFSVlowdEZWVU4yUTJKS05rZEpOM2w2ZDIxemJEQjVSMnRETkhOVlNXaDRkamhSUjNKeVZta3pjRkpWTlhFelMzbDJVVFl2Y0ZkNVp6Qm9NMVpsTUcxaGRua3Jha2RSTlZCSGRXWlFkMnBVZEZCVFNXOXBkVlJhYUhwalJESkpORXMyWlRWV1QzQXlTMWhvVjJRelIwbzFNVXhNYmpsVFpHVlJSVUZDZUhSc1VHOWhibk4yWjJkb2FGcHZZMVJQYmtOaVFrdEViVXMzVDJGTlQwNXRUVlZEV21wRGJFbGtVMEl2V0VOMmFtSkdRVUpPYjFOWlRFRXlWSFF2YkZGS2FUZFlUblZ1ZGtveVduTnhTVGw2VGtwTFVIWjRRVVJZTXpCelRpOW1Va0ZzVm1sUk55OW9NVGx3WWxaSFRGRkJhbXRLVWtkT2NWZG9SMU51VVZwWU1qRkZZVU5hUkc0NFNGVnBkVm8xZGpOcmJXOTRabU5qZGt4QmRUTnVkeTgwUTJWTk9IWnNOWE4yU2xCcVRYaDRSVkZxYm1WaU1tbHBjM1psVmpOUFZXNVFUMEZUU0hVelZVZEZlV2syWmtGUFYwWjRVR0pwT0hVelZuVnlla1J4YUhkVmF6Y3pjMGhUY0dKbFoycDBNR05sZVZGeGVqRlJSMWxRY0RWaVpUTnVhblJvUTJaNk5YUlVNbEp3U1RReE0ycHRUMjVwY1ZwdEswSTNjV1ZRYzA1b2RVNDNXbTlrUzNsRU5GWmFZMFo1ZWtrMkswZENiUzkwVlhOWFdrRlJkSGhJVGs1eVRERllWa0pYUmpZd1dGZFVNblJNUTJNNVVFOWFkMU14TlZjeVRVZHNSa2hJY3l0V01qaHROa2R4ZG5SclMzQlBaVk51VVZrd1FrWnFZV2xJYVRoeGFXVTVXRWxzUjFNNWNXZG1ibXN4YUhaTVMzVTNkV2RpWkVacWNVcG9TME50TVhGYVdYaE1iM0JSTVM4ellXeENVMngxVlhSM1ZXTjFURU5aZFRobGQxWk9MekJSZWxoVFlVczBhMGxUYUZKQ2JtVk1XV1pPTDJOU1dIVTBkRTFFVGl0MFRWVk9TR1JNV0RoMVNHdHdSMlJWYW1kbVdqZDZObFJKWTA5clpEUnZSWEY2VFhVeU1VRjZXbFF4S3pnMVZXMVljamxGTlRocldraG1Ra05MZFU5NVdXaHVWemRNV0VKQ00wSkdZVWxJUzIxbE1XODNaMUZ4ZGpCclEwVnJOVkZZZG5oUk4xVlFWek0wU0d0TGR6Sk5UMmRWUmpjMU5FbHVlWE40VDBOYVZESlFTbGsyZGs0eVNFRkhlRGQwVnl0dk0xUkNlWGQzTWpWb2VsUTVZbUU0VG5CUVMyZGxhMkl6Y1VvMWVtMUljMHh3V2tGbVFVOXBhSGQ0U0Rad1dGVXdXalJVTWk5ell5dEpiU3RXWm5ORVJuTmlkejA9">CloudStream Pro</div>
<div class="server" data-hash="ZDJiY2QxNzViOGFjNmRmYjBlMjQ2ZmRkYmU1YjBmZmY6Um1RMFEwcGFLMk5sU0VkblZIaDBjMjlaYm01SWJVWkZNR0ZrUTJGQ1NHNDNNVTlRWm1sRlVXNHpRbXhFVG5kR2FqUjZValZ2YVdSQlNuTkNVMUIzWkZwdllrTjNhMWxvTlhCb2IwbEhRbFpCYzFFdmFVMXFTelZHUlZBcmRXSlVkbWN4VlRGRGRuWndkM0pXTVRFNE5sUkRZbFpNVTAxaU5tMU1jbmxxVUZCMFltNUtTVlpIUm1KV09HbzVXVFoySzNCdVpHRkhOVFJaV2xGNGJVOHliVVZGWjBseVVqaERiazlITW5ZM2NsZEhVbVZzZFhkdGFGaG1LMVV3YjJVMQ--">2Embed</div>
<div class="server" data-hash="NDNmZWFlNzVmZDQ0MWZhODczN2QwNTE2Yzk2YzljNjk6Y25ZdlZYRkRiUzkyUm5BcmFFVkZTSE5xV2pRcmJHZEZUR2MyY2tGdE9WZHdOSFJNVld4bFdYZzBOSEUzUnpkNlNtbHRORVJyV1UxSlozVk9WelJrVjJ4Q1pYa3dLMGt5TW1oMGRFUm5VRlpHUkZWVU5tYzlQUT09">Superembed</div>
</div>
</div>
-->
<script>
var sb_test = true;
</script>
<!--<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
<script src="/jquery-3.7.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.16.0/js/md5.min.js" integrity="" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="/base64.js?t=1688387834"></script>
<script src="/sources.js?t=1745104089"></script>
<script src="/reporting.js?t=1688387834"></script>
<script src="//cloudnestra.com/asdf.js"></script>
<script src="/sbx.js?t=1754734900"></script>
<script>
var lc_on = IsLcOn();
var the_iframe = document.getElementById('player_iframe');
current_sub_name = "sub_"+$("body").data("i");
if ($("body").data("s") && $("body").data("e")){
current_sub_name += "_"+$("body").data("s")+"x"+$("body").data("e");
}
var lc_pro_cc = true;
var current_sub_data = 0;
if(lc_on){
var current_sub_data_tmp = JSON.parse(localStorage.getItem(current_sub_name));
}
var sub_hash = '0c7e9a7d03c674706dd16dcf5debaf29';
/*
if(current_sub_data_tmp != null){
if (typeof current_sub_data_tmp === 'object'){
//console.log(current_sub_data_tmp);
if(current_sub_data_tmp.sub_hash == sub_hash)
current_sub_data = current_sub_data_tmp;
}
}
*/
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
if(message.data.type == "PLAYER_EVENT"){
//console.log(message.data);
}
if(message.data == "reload_page"){
window.location.reload();
}
if(message.data == "tvfull"){
$(".servers")[0].css('left', '100px');
}
if(message.source == window.parent){
var the_iframe = document.getElementById('player_iframe');
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
function IsLcOn(){
var is_on = false;
try {
localStorage.setItem('test_lc' , "1");
if(localStorage.getItem('test_lc') == "1"){
is_on = true
}
}
catch(err) {
return false;
}
return is_on;
}
$("#iFrameId").on("load", function () {
});
$("#ad720 #close").click(function(){
$(this).parent().parent().hide();
$.cookie("ad720", "1" ,
{
expires : 0.001,
path: "/;SameSite=None",
secure: true
}
);
});
$(document).ready(function(){
$(".servers").show();
if(window.frameElement === null){
$("#top_buttons_parent").show();
}else{
var ref = window.frameElement.getAttribute('data-ref');
if(ref != null){
$(".servers").css("left","100px")
if(ref.length > 3){
$.get("/is_vip_str.php?ref="+encodeURIComponent(ref), function(data, status){
if(data == "1"){
$("#top_buttons_parent").hide();
}else{
$("#top_buttons_parent").show();
}
});
}else{
$("#top_buttons_parent").show();
}
}else{
$("#top_buttons_parent").show();
}
}
});
</script>
<!-- Histats.com (div with counter) --><div id="histats_counter"></div>
<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,4873540,4,511,95,18,00000000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
_Hasync.push(['Histats.framed_page', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('//s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="/" target="_blank"><img src="//sstatic1.histats.com/0.gif?4873540&101" alt="free counter with statistics" border="0"></a></noscript>
<!-- Histats.com END -->
<script src='https://unpkg.com/disable-devtool@0.3.9/disable-devtool.min.js#/misdir.js'></script>
<script>
DisableDevtool({
clearLog: true ,// Whether to clear the log every time
disableSelect: true , // Whether to disable selection text Default is false
disableCopy: true , // Whether to disable copying, default is false
disableCut: true , // Whether to disable cutting, default is false
disablePaste: true ,
disableIframeParents: false // Whether all parent windows are disabled in the iframe
})
</script>
<script data-ssr="1" data-cfasync="false" async type="text/javascript" src="//pb.rootcapruntime.cyou/r6967971082834/131608"></script>
</body>
</html>

View file

@ -0,0 +1,274 @@
<!DOCTYPE html>
<html>
<head>
<title>Black Mirror (2011) S04E02</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="Access-Control-Allow-Origin" content="*" />
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/5.12.0-2/css/all.min.css" integrity="" crossorigin="anonymous"/>
<link rel="stylesheet" href="/style.css?t=1710289820"/>
<style>
.mctitle a {
font-size:1em !important;
}
#AdWidgetContainer {
position: fixed !important;
transition: transform 1s linear 0s !important;
opacity: 1 !important;
transform: translate(0px, 0px) !important;
}
#ad720 {
width: 100%;
position: absolute;
bottom: 0;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
#ad720 .ad_container {
max-width: 720px;
position: relative;
}
#ad720 .ad_container img {
width: 100%;
height: auto;
}
#ad720 .ad_container #close {
position: absolute;
top: 3px;
right: 3px;
color: white;
opacity: 0.7;
}
#ad720 .ad_container #close:hover {
opacity: 1;
cursor: pointer;
}
#onexbet {
position: absolute;
top: calc(50% - 25px);
left: -30px;
transform: rotate(-90deg);
}
#onexbet img {
width: 100px;
height: 36.5px;
}
</style>
</head>
<body data-i="2085059" data-s="4" data-e="2" >
<div id="loading_overlay"></div>
<div id="the_frame">
<iframe id="player_iframe" src="//cloudnestra.com/rcp/MTQ1ZTU4OGFjMGFlYTcwMzJkNzRhYzBkMDE0M2YxMjU6ZVhoQlRYRm1SemRyU0hOVGEzRkNVWEJsTUdOMGFsbzFSa3hqYzNkbFYzUmtObHBzTHpoNU9EaEJUSFoyYW1Wa2VtTklOVEpQU25Kb1MyRm1MMVJGY1hkbU1UWk9ObkkwTVdKMlVXcDVZM3B6Unl0T1pXOTZVbk5sUmt4bllXdEdNVGRCT0M4NGRYSnZSeTgxVUV0NlMwSTNTMWRUVmxWQ2JsRkRhWG94V0hoVVpYZzJUbG92UVZack9Vc3ZOMUYzTUM5WEwydEJiMlZUTXpVNWJVbzROMHhUTVZseWRGSlZTV2xGUmxSTmJ5OVRLMVkxVkRkbVJGSmhjVXMxUlVOUFUyUklTR2h1TVZodGJVNXBTa1ZLUjNaWU5uTkxibkZrWTB4elkwZEpNVll5Vkc1M2NGUjVaMjlwU1RsdFZVWlJibXBHWTA5NlpscHBhUzlaU1RKVVVFdHFhMGM0V2twMVowMDRXR1E1VERGUmNqaDFkRVJhYWtKVVZWWnlWME40VVZOYVVURnNlbGQwYjIxM05XaGhWVmhtV0hwM05VWldkMWxvWjJFNWFscFFSRkZMT1hSamVIQlBWMjUxVG1Ga1lrZHlVRTVTT0dOcFVFSldOVXgwVERKVVRGRjVOWFZsVUZWYVNVNXJTVzVaZVhOa1RWSlZTMmhVTjBwaWJpdFRUbWxPY1hNNVF6TnVRME54UjFWcFdra3lWbUoyYmk5c2MzbEhZMnhGU1ZJeVJrNTJPRzl2TXl0cVdXUTFRakJ4ZERKWE5EWnRSMEZ2YlZaMUt6STNVV3hVVG5wRU0wRTVhVEVyUTJwNVkwTm1VV1p1WVRaUVIyTXJRV1kwT0c4MmQxaERaMVZTUkVaeU1YbDJhMFJGYldkbmJUZDJlRTF6V25Cb1VHUkxXbTFzYWxCMGNrdERlazVCWkRGeFV6SlhURzVpWVZKRVVVcEZTV1psZFdFeFNVRmFlblpqYTJadk4zSndVRnBOTVU5M1QxbE1NMHhZUm5wR1ZXOXpUSFp4WXpWdVZFSXhlSFZtYWxsb09TOUpVMFZzZGtwc1JqRnFVMlJYVkRGblFreElNbTgwYTFJeVJWbEpRM0ZMSzFNMlozVkhRMVJRWnk5cksycEtZV3REUjBoNlMycG5WM2N3YmtkWVkxbFJMMHRxZWpsS2VHd3JZV3h0V2trMVZuTm5Sa1V6Y25WSU5sTlRkbk12YUVkYVlqa3haSFU0YzBSd1kwdGpSVFpJZWpsTlRHZG5OalpKWTFnd09GWmFTRGRMVnk5V01rb3pXbGQxYjB4aU9UUldWbloxUnpGWkt6Tm5Vbkl4UzIxNGF5OXdkSFJoYlc5bmJrZExVblExVkZOWWFFZHZNMWRXYkZGNVIwcDNjbVpyTmxaSk1FczFVVmhFV1dscGFqaG9hVVJsYTNWTFJXZDBMM1IzSzIxWlUxWjViRkZQYVVwdWRFOUpiVTFVYmsxRlJsbzRXRWxyUm5Nd1dsVlJTbXQzVVZRM0x6ZG9keTlCT0VSRFZtYzFZa1pvVVRKWlp6TTFRMmxJSzFOcFZUWXhSMEYxYlRWaGNqTnVXVWgyTjI5WmQyNVRka2N4WlRaaVEyWkdUMDE1YUhCaWJ6bHhMMGRyUjJORFRVVnBNRzgyZG5aNGFsWnpkVUkwVVc1VVNtWTFiVGN4Y2tOMlIyUlVjRlZ3U2xveE5rVXZTbTg0VEVwa09WWmlPRmR0U1Zrd05sUXlaQ3RSV2pGVFkyWlliMjVYVERGdGIxUk1aMk41Wlc1SVpUVlNVVFJ5VjB0Q1FXTm1PREp4U21OSkswYzFSVTlGTVZsMmMydHVSRGxuYmtKU09GaE9PRzluU0RoRFozbE1jVTlST0RKM1FYQlBRMWR3TURWelNXUnhlWGRpU2xSWVExaFhLMHBKUTBSNGMxZHhXQ3RKVUdVM1RuWktaa0Y2UVZONk1TdDZhVmhyUTI1S1R5OWhSbEo1WjJWeE4xaHBha3BQVERkTlUzZHplRUVyTURsRFFpdFlRMmRxVkhKNFJHTk5SRVZWUkVOQmMyWkVRak0xU2poVFkzaHRlREozTXpsWmJTOXVSMFo0UlZjNE1FaE5jMEYwUkVaNU1tdEJjMEl5Y3poM1N6UTRVVzg0Tm5KTlp6Wm1jbXRXY1E9PQ--" frameborder="0" scrolling="no" allowfullscreen="yes" style="height: 100%; width: 100%;"></iframe>
</div>
<!--
<div class="servers" style="display: none; " >
<i class="serversToggle fas fa-cloud"></i>
<div class="serversList">
<div class="server" data-hash="MTQ1ZTU4OGFjMGFlYTcwMzJkNzRhYzBkMDE0M2YxMjU6ZVhoQlRYRm1SemRyU0hOVGEzRkNVWEJsTUdOMGFsbzFSa3hqYzNkbFYzUmtObHBzTHpoNU9EaEJUSFoyYW1Wa2VtTklOVEpQU25Kb1MyRm1MMVJGY1hkbU1UWk9ObkkwTVdKMlVXcDVZM3B6Unl0T1pXOTZVbk5sUmt4bllXdEdNVGRCT0M4NGRYSnZSeTgxVUV0NlMwSTNTMWRUVmxWQ2JsRkRhWG94V0hoVVpYZzJUbG92UVZack9Vc3ZOMUYzTUM5WEwydEJiMlZUTXpVNWJVbzROMHhUTVZseWRGSlZTV2xGUmxSTmJ5OVRLMVkxVkRkbVJGSmhjVXMxUlVOUFUyUklTR2h1TVZodGJVNXBTa1ZLUjNaWU5uTkxibkZrWTB4elkwZEpNVll5Vkc1M2NGUjVaMjlwU1RsdFZVWlJibXBHWTA5NlpscHBhUzlaU1RKVVVFdHFhMGM0V2twMVowMDRXR1E1VERGUmNqaDFkRVJhYWtKVVZWWnlWME40VVZOYVVURnNlbGQwYjIxM05XaGhWVmhtV0hwM05VWldkMWxvWjJFNWFscFFSRkZMT1hSamVIQlBWMjUxVG1Ga1lrZHlVRTVTT0dOcFVFSldOVXgwVERKVVRGRjVOWFZsVUZWYVNVNXJTVzVaZVhOa1RWSlZTMmhVTjBwaWJpdFRUbWxPY1hNNVF6TnVRME54UjFWcFdra3lWbUoyYmk5c2MzbEhZMnhGU1ZJeVJrNTJPRzl2TXl0cVdXUTFRakJ4ZERKWE5EWnRSMEZ2YlZaMUt6STNVV3hVVG5wRU0wRTVhVEVyUTJwNVkwTm1VV1p1WVRaUVIyTXJRV1kwT0c4MmQxaERaMVZTUkVaeU1YbDJhMFJGYldkbmJUZDJlRTF6V25Cb1VHUkxXbTFzYWxCMGNrdERlazVCWkRGeFV6SlhURzVpWVZKRVVVcEZTV1psZFdFeFNVRmFlblpqYTJadk4zSndVRnBOTVU5M1QxbE1NMHhZUm5wR1ZXOXpUSFp4WXpWdVZFSXhlSFZtYWxsb09TOUpVMFZzZGtwc1JqRnFVMlJYVkRGblFreElNbTgwYTFJeVJWbEpRM0ZMSzFNMlozVkhRMVJRWnk5cksycEtZV3REUjBoNlMycG5WM2N3YmtkWVkxbFJMMHRxZWpsS2VHd3JZV3h0V2trMVZuTm5Sa1V6Y25WSU5sTlRkbk12YUVkYVlqa3haSFU0YzBSd1kwdGpSVFpJZWpsTlRHZG5OalpKWTFnd09GWmFTRGRMVnk5V01rb3pXbGQxYjB4aU9UUldWbloxUnpGWkt6Tm5Vbkl4UzIxNGF5OXdkSFJoYlc5bmJrZExVblExVkZOWWFFZHZNMWRXYkZGNVIwcDNjbVpyTmxaSk1FczFVVmhFV1dscGFqaG9hVVJsYTNWTFJXZDBMM1IzSzIxWlUxWjViRkZQYVVwdWRFOUpiVTFVYmsxRlJsbzRXRWxyUm5Nd1dsVlJTbXQzVVZRM0x6ZG9keTlCT0VSRFZtYzFZa1pvVVRKWlp6TTFRMmxJSzFOcFZUWXhSMEYxYlRWaGNqTnVXVWgyTjI5WmQyNVRka2N4WlRaaVEyWkdUMDE1YUhCaWJ6bHhMMGRyUjJORFRVVnBNRzgyZG5aNGFsWnpkVUkwVVc1VVNtWTFiVGN4Y2tOMlIyUlVjRlZ3U2xveE5rVXZTbTg0VEVwa09WWmlPRmR0U1Zrd05sUXlaQ3RSV2pGVFkyWlliMjVYVERGdGIxUk1aMk41Wlc1SVpUVlNVVFJ5VjB0Q1FXTm1PREp4U21OSkswYzFSVTlGTVZsMmMydHVSRGxuYmtKU09GaE9PRzluU0RoRFozbE1jVTlST0RKM1FYQlBRMWR3TURWelNXUnhlWGRpU2xSWVExaFhLMHBKUTBSNGMxZHhXQ3RKVUdVM1RuWktaa0Y2UVZONk1TdDZhVmhyUTI1S1R5OWhSbEo1WjJWeE4xaHBha3BQVERkTlUzZHplRUVyTURsRFFpdFlRMmRxVkhKNFJHTk5SRVZWUkVOQmMyWkVRak0xU2poVFkzaHRlREozTXpsWmJTOXVSMFo0UlZjNE1FaE5jMEYwUkVaNU1tdEJjMEl5Y3poM1N6UTRVVzg0Tm5KTlp6Wm1jbXRXY1E9PQ--">CloudStream Pro</div>
<div class="server" data-hash="OGQyZDY4MTBjY2I2ZjBkOTg0YzMyODZkZTVhNGJlODM6YjBjeU0zcFhWM0pKT0ZGSmFXcFFia1kxVG1kNVpHVmpkVE5ZZUVkMFdHUklXRTh5UjAxWGVrTmhTR042TVhGaFRGcEtSUzlSV0V0Q1duSkJUWFpIV0RCWlpHRktZalJ0Tld0QmNYTTBTelpPYkhWVmIwaDJVbkpIZVZjMGMwOUllbEJhVjNKNk56SkRjamR1VEdwTU4wVXpMM1JFV2pkSGEyWnRLME5VVDFWWVZ6RTRWREY0YzJsRmFtTldUbWhvT0RCeFN6bEljVTF1U1ZSRFUzVmxTVlIxVGtzMGRtVjVRbmhoWnpkMVdtNVRlRTAzYW04NVNITkxXbms0V25wcA--">2Embed</div>
<div class="server" data-hash="NWQ2MjU3YTg3MmViYzMzZThhMjk0NDdkODAwNDI4ZDk6ZDNReU9ISndXbTg0U0RSd09YWmlaQ3N5U20xVU1EazBZVVl4TVZkaVltTXZZME13WW1oSGJHbG9WemxVWm1GcVZWRm9UVk5KY1VOTGRFd3haalp2V1M5dWRrYzJabE0xV0ZOSFIzZ3lWbmRHVmpRMFkwRTlQUT09">Superembed</div>
</div>
</div>
-->
<script>
var sb_test = true;
</script>
<!--<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>-->
<script src="/jquery-3.7.1.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/blueimp-md5/2.16.0/js/md5.min.js" integrity="" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/js-cookie/3.0.5/js.cookie.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js" integrity="sha512-3j3VU6WC5rPQB4Ld1jnLV7Kd5xr+cq9avvhwqzbH/taCRNURoeEpoPBK9pDyeukwSxwRPJ8fDgvYXd6SkaZ2TA==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
<script src="/base64.js?t=1688387834"></script>
<script src="/sources.js?t=1745104089"></script>
<script src="/reporting.js?t=1688387834"></script>
<script src="//cloudnestra.com/asdf.js"></script>
<script src="/sbx.js?t=1754734900"></script>
<script>
var lc_on = IsLcOn();
var the_iframe = document.getElementById('player_iframe');
current_sub_name = "sub_"+$("body").data("i");
if ($("body").data("s") && $("body").data("e")){
current_sub_name += "_"+$("body").data("s")+"x"+$("body").data("e");
}
var lc_pro_cc = true;
var current_sub_data = 0;
if(lc_on){
var current_sub_data_tmp = JSON.parse(localStorage.getItem(current_sub_name));
}
var sub_hash = 'd95b3482760d7e331a0e4505fe338f2d';
/*
if(current_sub_data_tmp != null){
if (typeof current_sub_data_tmp === 'object'){
//console.log(current_sub_data_tmp);
if(current_sub_data_tmp.sub_hash == sub_hash)
current_sub_data = current_sub_data_tmp;
}
}
*/
// pm redirector
window.addEventListener('message', message => {
if (message.source == window) {
return; // Skip message in this event listener
}
if(message.data.type == "PLAYER_EVENT"){
//console.log(message.data);
}
if(message.data == "reload_page"){
window.location.reload();
}
if(message.data == "tvfull"){
$(".servers")[0].css('left', '100px');
}
if(message.source == window.parent){
var the_iframe = document.getElementById('player_iframe');
the_iframe.contentWindow.postMessage(message.data,'*');
}else{
window.parent.postMessage(message.data , '*');
}
});
function IsLcOn(){
var is_on = false;
try {
localStorage.setItem('test_lc' , "1");
if(localStorage.getItem('test_lc') == "1"){
is_on = true
}
}
catch(err) {
return false;
}
return is_on;
}
$("#iFrameId").on("load", function () {
});
$("#ad720 #close").click(function(){
$(this).parent().parent().hide();
$.cookie("ad720", "1" ,
{
expires : 0.001,
path: "/;SameSite=None",
secure: true
}
);
});
$(document).ready(function(){
$(".servers").show();
if(window.frameElement === null){
$("#top_buttons_parent").show();
}else{
var ref = window.frameElement.getAttribute('data-ref');
if(ref != null){
$(".servers").css("left","100px")
if(ref.length > 3){
$.get("/is_vip_str.php?ref="+encodeURIComponent(ref), function(data, status){
if(data == "1"){
$("#top_buttons_parent").hide();
}else{
$("#top_buttons_parent").show();
}
});
}else{
$("#top_buttons_parent").show();
}
}else{
$("#top_buttons_parent").show();
}
}
});
</script>
<!-- Histats.com (div with counter) --><div id="histats_counter"></div>
<!-- Histats.com START (aync)-->
<script type="text/javascript">var _Hasync= _Hasync|| [];
_Hasync.push(['Histats.start', '1,4873540,4,511,95,18,00000000']);
_Hasync.push(['Histats.fasi', '1']);
_Hasync.push(['Histats.track_hits', '']);
_Hasync.push(['Histats.framed_page', '']);
(function() {
var hs = document.createElement('script'); hs.type = 'text/javascript'; hs.async = true;
hs.src = ('//s10.histats.com/js15_as.js');
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(hs);
})();</script>
<noscript><a href="/" target="_blank"><img src="//sstatic1.histats.com/0.gif?4873540&101" alt="free counter with statistics" border="0"></a></noscript>
<!-- Histats.com END -->
<script src='https://unpkg.com/disable-devtool@0.3.9/disable-devtool.min.js#/misdir.js'></script>
<script>
DisableDevtool({
clearLog: true ,// Whether to clear the log every time
disableSelect: true , // Whether to disable selection text Default is false
disableCopy: true , // Whether to disable copying, default is false
disableCut: true , // Whether to disable cutting, default is false
disablePaste: true ,
disableIframeParents: false // Whether all parent windows are disabled in the iframe
})
</script>
<script data-ssr="1" data-cfasync="false" async type="text/javascript" src="//pb.rootcapruntime.cyou/r696797109dc94/131608"></script>
</body>
</html>

View file

@ -0,0 +1,33 @@
// Jest Snapshot v1, https://jestjs.io/docs/snapshot-testing
exports[`VidSrc Black Mirror 1`] = `
[
{
"format": "hls",
"label": "CloudStream Pro",
"meta": {
"extractorId": "vidsrc",
"height": 1040,
"title": "Black Mirror (2011) S04E02",
},
"ttl": 10800000,
"url": "https://tmstr1.cloudnestra.com/pl/H4sIAAAAAAAAAwXB3ZKCIBgA0FcC0X72bmuU1pRW4EPlDsHGkBxr2nXz6fcct.lwl_Sx6XC0M1tntrYnZtejTXzF6Hr9UMjGdb3PWTTcWIqLc8Rb8C0qqf6WkmEZhkI0LVG1OnCKcOlZYikfOc6K1g.RTUdUZrMA0D_KcykgqyT9m.wUDoYOF1vnSquQKOKai9SNgUDNCs8z_nqatfyVaf4QgXGlZtD3MFji0h7CiaFEAsXHi3htoPmMxO3l69TJCu3f_PhigLNayXJhqz4WpH1XUx4LPL_PSC8ahkexukrfs4cjagNeEwGIOO.ybsomATm1mJ3MFGY18gpwWARhQa7D2HmNS1C1HvUCEu3_ASDZlyFBAQAA/master.m3u8",
},
]
`;
exports[`VidSrc Full Metal Jacket 1`] = `
[
{
"format": "hls",
"label": "CloudStream Pro",
"meta": {
"extractorId": "vidsrc",
"height": 714,
"title": "Full Metal Jacket (1987)",
},
"ttl": 10800000,
"url": "https://tmstr5.cloudnestra.com/pl/H4sIAAAAAAAAAw3O3W6CMBgA0FdqQRR2p2IlXQqjtF9_7qCQYEHGwATH02_nCc7JtTFKgqZBxy4OExyfGhc3iYtdjZyL2g85kA0y.BHX.CAUCaUABBOpK88zINaX4.XLYgtMu6jc26PF53eREt0ALfg0PxRhiwioqqYWq9vwZprhHOWKpVS43S1C92vnqTXBWJVAkPC94Zpt.ZMbuM9G3NfABvOxmXj2ifClS8._.TBeYcA39jyEbZizSlyIkPxmCRFmpKyWUVENs5apWQD3r0JFYTPM4___1flclwqHrZe7nIBytC3u8SIcw1YJ.nCea6f4LghDRuJV.iFw2djXKc1yTCVgWHl6DgHsdylQ8gd2WpeiQQEAAA--/master.m3u8",
},
]
`;

View file

@ -19,6 +19,7 @@ import { StreamUp } from './StreamUp';
import { SuperVideo } from './SuperVideo';
import { Uqload } from './Uqload';
import { Vidora } from './Vidora';
import { VidSrc } from './VidSrc';
import { VixSrc } from './VixSrc';
import { Voe } from './Voe';
import { YouTube } from './YouTube';
@ -48,6 +49,15 @@ export const createExtractors = (fetcher: Fetcher): Extractor[] => {
new SuperVideo(fetcher),
new Uqload(fetcher),
new Vidora(fetcher),
new VidSrc(fetcher, [ // https://vidsrc.domains/
'vidsrcme.ru',
'vidsrcme.su',
'vidsrc-me.ru',
'vidsrc-me.su',
'vidsrc-embed.ru',
'vidsrc-embed.su',
'vsrc.su',
]),
new VixSrc(fetcher),
new Voe(fetcher),
new YouTube(fetcher),