diff --git a/src/providers/embeds/dood.ts b/src/providers/embeds/dood.ts index 5dd8def..453588b 100644 --- a/src/providers/embeds/dood.ts +++ b/src/providers/embeds/dood.ts @@ -25,6 +25,7 @@ export const doodScraper = makeEmbed({ const dataForLater = doodData.match(/\?token=([^&]+)&expiry=/)?.[1]; const path = doodData.match(/\$\.get\('\/pass_md5([^']+)/)?.[1]; + const thumbnailTrack = doodData.match(/thumbnails:\s\{\s*vtt:\s'([^']*)'/); const doodPage = await ctx.proxiedFetcher(`/pass_md5${path}`, { headers: { @@ -53,6 +54,14 @@ export const doodScraper = makeEmbed({ headers: { Referer: baseUrl, }, + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: `https:${thumbnailTrack[1]}`, + }, + } + : {}), }, ], }; diff --git a/src/providers/embeds/mixdrop.ts b/src/providers/embeds/mixdrop.ts index 9a9ee60..ba9ebd0 100644 --- a/src/providers/embeds/mixdrop.ts +++ b/src/providers/embeds/mixdrop.ts @@ -1,5 +1,6 @@ import * as unpacker from 'unpacker'; +import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; const mixdropBase = 'https://mixdrop.ag'; @@ -47,7 +48,7 @@ export const mixdropScraper = makeEmbed({ { id: 'primary', type: 'file', - flags: [], + flags: [flags.IP_LOCKED], captions: [], qualities: { unknown: { diff --git a/src/providers/embeds/voe.ts b/src/providers/embeds/voe.ts index 7d92a3a..759d8f7 100644 --- a/src/providers/embeds/voe.ts +++ b/src/providers/embeds/voe.ts @@ -2,15 +2,18 @@ import { flags } from '@/entrypoint/utils/targets'; import { makeEmbed } from '@/providers/base'; const linkRegex = /'hls': ?'(http.*?)',/; +const tracksRegex = /previewThumbnails:\s{.*src:\["([^"]+)"]/; export const voeScraper = makeEmbed({ id: 'voe', name: 'voe.sx', rank: 180, async scrape(ctx) { - const embed = await ctx.proxiedFetcher(ctx.url); + const embedRes = await ctx.proxiedFetcher.full(ctx.url); + const embed = embedRes.body; const playerSrc = embed.match(linkRegex) ?? []; + const thumbnailTrack = embed.match(tracksRegex); const streamUrl = playerSrc[1]; if (!streamUrl) throw new Error('Stream url not found in embed code'); @@ -21,11 +24,19 @@ export const voeScraper = makeEmbed({ type: 'hls', id: 'primary', playlist: streamUrl, - flags: [flags.CORS_ALLOWED], + flags: [flags.CORS_ALLOWED, flags.IP_LOCKED], captions: [], headers: { Referer: 'https://voe.sx', }, + ...(thumbnailTrack + ? { + thumbnailTrack: { + type: 'vtt', + url: new URL(embedRes.finalUrl).origin + thumbnailTrack[1], + }, + } + : {}), }, ], };