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]]