diff --git a/src/modules/pageRender/page.js b/src/modules/pageRender/page.js index 19e08b50..2c166177 100644 --- a/src/modules/pageRender/page.js +++ b/src/modules/pageRender/page.js @@ -594,7 +594,7 @@ export default function(obj) {
- +
diff --git a/src/modules/processing/services/youtube.js b/src/modules/processing/services/youtube.js index fae4e04d..f350612a 100644 --- a/src/modules/processing/services/youtube.js +++ b/src/modules/processing/services/youtube.js @@ -61,7 +61,7 @@ export default async function(o) { } try { - info = await yt.getBasicInfo(o.id, 'WEB'); + info = await yt.getBasicInfo(o.id, 'IOS'); } catch(e) { if (e?.message === 'This video is unavailable') { return { error: 'ErrorCouldntFetch' }; diff --git a/src/modules/processing/servicesConfig.json b/src/modules/processing/servicesConfig.json index ae4cd9f0..a725473e 100644 --- a/src/modules/processing/servicesConfig.json +++ b/src/modules/processing/servicesConfig.json @@ -15,7 +15,7 @@ "alias": "reddit videos & gifs", "patterns": ["r/:sub/comments/:id/:title", "user/:user/comments/:id/:title"], "subdomains": "*", - "enabled": true + "enabled": false }, "twitter": { "alias": "twitter videos & voice", diff --git a/src/modules/stream/internal.js b/src/modules/stream/internal.js index 2670a0fb..535bba2d 100644 --- a/src/modules/stream/internal.js +++ b/src/modules/stream/internal.js @@ -1,7 +1,7 @@ import { request } from 'undici'; import { Readable } from 'node:stream'; import { assert } from 'console'; -import { getHeaders } from './shared.js'; +import { getHeaders, pipe } from './shared.js'; import { handleHlsPlaylist, isHlsRequest } from './internal-hls.js'; const CHUNK_SIZE = BigInt(8e6); // 8 MB @@ -67,8 +67,7 @@ async function handleYoutubeStream(streamInfo, res) { if (headerValue) res.setHeader(headerName, headerValue); } - stream.pipe(res); - stream.on('error', () => res.end()); + pipe(stream, res, () => res.end()); } catch { res.end(); } @@ -101,8 +100,7 @@ export async function internalStream(streamInfo, res) { if (isHlsRequest(req)) { await handleHlsPlaylist(streamInfo, req, res); } else { - req.body.pipe(res); - req.body.on('error', () => res.end()); + pipe(req.body, res, () => res.end()); } } catch { streamInfo.controller.abort(); diff --git a/src/modules/stream/shared.js b/src/modules/stream/shared.js index 4dbd59d3..1e2f2e25 100644 --- a/src/modules/stream/shared.js +++ b/src/modules/stream/shared.js @@ -28,4 +28,14 @@ export function getHeaders(service) { // Converting all header values to strings return Object.entries({ ...defaultHeaders, ...serviceHeaders[service] }) .reduce((p, [key, val]) => ({ ...p, [key]: String(val) }), {}) +} + +export function pipe(from, to, done) { + from.on('error', done) + .on('close', done); + + to.on('error', done) + .on('close', done); + + from.pipe(to); } \ No newline at end of file diff --git a/src/modules/stream/types.js b/src/modules/stream/types.js index 2036b360..2372d6c1 100644 --- a/src/modules/stream/types.js +++ b/src/modules/stream/types.js @@ -6,7 +6,7 @@ import { create as contentDisposition } from "content-disposition-header"; import { metadataManager } from "../sub/utils.js"; import { destroyInternalStream } from "./manage.js"; import { env, ffmpegArgs, hlsExceptions } from "../config.js"; -import { getHeaders, closeResponse } from "./shared.js"; +import { getHeaders, closeResponse, pipe } from "./shared.js"; function toRawHeaders(headers) { return Object.entries(headers) @@ -28,16 +28,6 @@ function killProcess(p) { }, 5000); } -function pipe(from, to, done) { - from.on('error', done) - .on('close', done); - - to.on('error', done) - .on('close', done); - - from.pipe(to); -} - function getCommand(args) { if (!isNaN(env.processingPriority)) { return ['nice', ['-n', env.processingPriority.toString(), ffmpeg, ...args]]