chore: bring back mediaflow proxy redirect url generation
reverts parts of 25b326ee48
This commit is contained in:
parent
60530343b4
commit
d8a4375783
13 changed files with 20 additions and 15 deletions
|
|
@ -7,7 +7,7 @@ import { Mixdrop } from './Mixdrop';
|
|||
const logger = winston.createLogger({ transports: [new winston.transports.Console({ level: 'nope' })] });
|
||||
const extractorRegistry = new ExtractorRegistry(logger, [new Mixdrop(new FetcherMock(`${__dirname}/__fixtures__/Mixdrop`))]);
|
||||
|
||||
const ctx = createTestContext({ mediaFlowProxyUrl: 'https://mediaflow.test.org', mediaFlowProxyPassword: 'test' });
|
||||
const ctx = createTestContext({ mediaFlowProxyUrl: 'https://mediaflow-proxy.test', mediaFlowProxyPassword: 'asdfg' });
|
||||
|
||||
describe('Mixdrop', () => {
|
||||
test('mixdrop.my /e/', async () => {
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import bytes from 'bytes';
|
|||
import * as cheerio from 'cheerio';
|
||||
import { NotFoundError } from '../error';
|
||||
import { Context, Format, Meta, UrlResult } from '../types';
|
||||
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils';
|
||||
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
|
||||
import { Extractor } from './Extractor';
|
||||
|
||||
export class Mixdrop extends Extractor {
|
||||
|
|
@ -35,7 +35,7 @@ export class Mixdrop extends Extractor {
|
|||
|
||||
return [
|
||||
{
|
||||
url: await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'Mixdrop', url, headers),
|
||||
url: buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Mixdrop', url, headers),
|
||||
format: Format.mp4,
|
||||
label: this.label,
|
||||
sourceId: `${this.id}_${meta.countryCodes?.join('_')}`,
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import * as cheerio from 'cheerio';
|
||||
import { Context, Format, Meta, UrlResult } from '../types';
|
||||
import {
|
||||
buildMediaFlowProxyExtractorStreamUrl,
|
||||
buildMediaFlowProxyExtractorRedirectUrl,
|
||||
supportsMediaFlowProxy,
|
||||
} from '../utils';
|
||||
import { guessSizeFromMp4 } from '../utils/size';
|
||||
|
|
@ -28,7 +28,7 @@ export class Streamtape extends Extractor {
|
|||
const $ = cheerio.load(html);
|
||||
const title = $('meta[name="og:title"]').attr('content') as string;
|
||||
|
||||
const mp4Url = await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'Streamtape', url, headers);
|
||||
const mp4Url = buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Streamtape', url, headers);
|
||||
|
||||
return [
|
||||
{
|
||||
|
|
@ -40,7 +40,7 @@ export class Streamtape extends Extractor {
|
|||
meta: {
|
||||
...meta,
|
||||
title,
|
||||
bytes: await guessSizeFromMp4(ctx, this.fetcher, mp4Url, { headers: { Referer: url.href } }),
|
||||
bytes: await guessSizeFromMp4(ctx, this.fetcher, mp4Url),
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import * as cheerio from 'cheerio';
|
||||
import { Context, Format, Meta, UrlResult } from '../types';
|
||||
import { buildMediaFlowProxyExtractorStreamUrl, supportsMediaFlowProxy } from '../utils';
|
||||
import { buildMediaFlowProxyExtractorRedirectUrl, supportsMediaFlowProxy } from '../utils';
|
||||
import { guessSizeFromMp4 } from '../utils/size';
|
||||
import { Extractor } from './Extractor';
|
||||
|
||||
|
|
@ -29,7 +29,7 @@ export class Uqload extends Extractor {
|
|||
const $ = cheerio.load(html);
|
||||
const title = $('h1').text().trim();
|
||||
|
||||
const mp4Url = await buildMediaFlowProxyExtractorStreamUrl(ctx, this.fetcher, 'Uqload', url, headers);
|
||||
const mp4Url = buildMediaFlowProxyExtractorRedirectUrl(ctx, 'Uqload', url, headers);
|
||||
|
||||
return [
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1 +0,0 @@
|
|||
{"destination_url":"https://s-delivery29.mxcontent.net/v2/knq0kj8waq44l8.mp4?s=85VD8DA80IfkbMa3zZR3XA&e=1758851244&_t=1758837735","request_headers":{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","referer":"https://mixdrop.my/e/knq0kj8waq44l8"},"mediaflow_proxy_url":"https://mediaflow.test.org/proxy/stream","query_params":{"api_password":"test"}}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"destination_url":"https://streamtape.com/get_video?id=DjmZBG0K9gHkJ7z&expires=1758899945&ip=F0AOKRISKxSHDN&token=uQu83SOzkLwi","request_headers":{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","referer":"https://streamtape.com/e/DjmZBG0K9gHkJ7z/WALL-E.2008.1080p.BrRip.x264.YIFY.mp4"},"mediaflow_proxy_url":"https://mediaflow.test.org/proxy/stream","query_params":{"api_password":"test"}}
|
||||
|
|
@ -1 +1 @@
|
|||
{"connection":"close","content-length":"431690639","content-range":"bytes 0-431690638/431690639","content-type":"video/mp4","date":"Thu, 25 Sep 2025 19:55:43 GMT","etag":"\"680029e2-19bb138f\"","last-modified":"Wed, 16 Apr 2025 22:06:26 GMT","server":"nginx/1.24.0 (Ubuntu)"}
|
||||
{"connection":"close","content-length":"431690639","content-range":"bytes 0-431690638/431690639","content-type":"video/mp4","date":"Thu, 28 Aug 2025 19:12:32 GMT","etag":"\"680029e2-19bb138f\"","last-modified":"Wed, 16 Apr 2025 22:06:26 GMT","server":"nginx/1.24.0 (Ubuntu)"}
|
||||
|
|
@ -1 +0,0 @@
|
|||
{"destination_url":"https://m60.uqload.cx/3rfkr3ep2fw2q4drdinp7ppqco2xtt5ele76uwwvy24rwjscvdv3lq62jd3a/v.mp4","request_headers":{"user-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36","referer":"https://uqload.net/"},"mediaflow_proxy_url":"https://mediaflow.test.org/proxy/stream","query_params":{"api_password":"test"}}
|
||||
|
|
@ -14,7 +14,7 @@ exports[`Mixdrop mixdrop.my /e/ 1`] = `
|
|||
},
|
||||
"sourceId": "mixdrop_",
|
||||
"ttl": 900000,
|
||||
"url": "https://mediaflow.test.org/proxy/stream?api_password=test&h_user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F136.0.0.0+Safari%2F537.36&h_referer=https%3A%2F%2Fmixdrop.my%2Fe%2Fknq0kj8waq44l8&d=https%3A%2F%2Fs-delivery29.mxcontent.net%2Fv2%2Fknq0kj8waq44l8.mp4%3Fs%3D85VD8DA80IfkbMa3zZR3XA%26e%3D1758851244%26_t%3D1758837735",
|
||||
"url": "https://mediaflow-proxy.test/extractor/video?host=Mixdrop&api_password=asdfg&d=https%3A%2F%2Fmixdrop.my%2Fe%2Fknq0kj8waq44l8&h_referer=https%3A%2F%2Fmixdrop.my%2Fe%2Fknq0kj8waq44l8&redirect_stream=true",
|
||||
},
|
||||
]
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -12,7 +12,7 @@ exports[`Streamtape streamtape.com /e 1`] = `
|
|||
},
|
||||
"sourceId": "streamtape_",
|
||||
"ttl": 900000,
|
||||
"url": "https://mediaflow.test.org/proxy/stream?api_password=test&h_user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F136.0.0.0+Safari%2F537.36&h_referer=https%3A%2F%2Fstreamtape.com%2Fe%2FDjmZBG0K9gHkJ7z%2FWALL-E.2008.1080p.BrRip.x264.YIFY.mp4&d=https%3A%2F%2Fstreamtape.com%2Fget_video%3Fid%3DDjmZBG0K9gHkJ7z%26expires%3D1758899945%26ip%3DF0AOKRISKxSHDN%26token%3DuQu83SOzkLwi",
|
||||
"url": "https://mediaflow.test.org/extractor/video?host=Streamtape&api_password=test&d=https%3A%2F%2Fstreamtape.com%2Fe%2FDjmZBG0K9gHkJ7z%2FWALL-E.2008.1080p.BrRip.x264.YIFY.mp4&h_referer=https%3A%2F%2Fstreamtape.com%2Fe%2FDjmZBG0K9gHkJ7z%2FWALL-E.2008.1080p.BrRip.x264.YIFY.mp4&redirect_stream=true",
|
||||
},
|
||||
]
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ exports[`Uqload uqload.net /embed- 1`] = `
|
|||
},
|
||||
"sourceId": "uqload_",
|
||||
"ttl": 900000,
|
||||
"url": "https://mediaflow.test.org/proxy/stream?api_password=test&h_user-agent=Mozilla%2F5.0+%28Windows+NT+10.0%3B+Win64%3B+x64%29+AppleWebKit%2F537.36+%28KHTML%2C+like+Gecko%29+Chrome%2F136.0.0.0+Safari%2F537.36&h_referer=https%3A%2F%2Fuqload.net%2F&d=https%3A%2F%2Fm60.uqload.cx%2F3rfkr3ep2fw2q4drdinp7ppqco2xtt5ele76uwwvy24rwjscvdv3lq62jd3a%2Fv.mp4",
|
||||
"url": "https://mediaflow.test.org/extractor/video?host=Uqload&api_password=test&d=https%3A%2F%2Fuqload.net%2Fz0xbr87oz637.html&h_referer=https%3A%2F%2Fuqload.net%2Fz0xbr87oz637.html&redirect_stream=true",
|
||||
},
|
||||
]
|
||||
`;
|
||||
|
|
|
|||
|
|
@ -24,6 +24,14 @@ const buildMediaFlowProxyExtractorUrl = (ctx: Context, host: string, url: URL, h
|
|||
return mediaFlowProxyUrl;
|
||||
};
|
||||
|
||||
export const buildMediaFlowProxyExtractorRedirectUrl = (ctx: Context, host: string, url: URL, headers: Record<string, string>): URL => {
|
||||
const mediaFlowProxyUrl = buildMediaFlowProxyExtractorUrl(ctx, host, url, headers);
|
||||
|
||||
mediaFlowProxyUrl.searchParams.append('redirect_stream', 'true');
|
||||
|
||||
return mediaFlowProxyUrl;
|
||||
};
|
||||
|
||||
export const buildMediaFlowProxyExtractorStreamUrl = async (ctx: Context, fetcher: Fetcher, host: string, url: URL, headers: Record<string, string> = {}): Promise<URL> => {
|
||||
const mediaFlowProxyUrl = buildMediaFlowProxyExtractorUrl(ctx, host, url, headers);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue