From bc9d4cd095f417a2c6d570f93328370ac2c7411b Mon Sep 17 00:00:00 2001 From: vaaski Date: Fri, 15 Mar 2024 14:27:47 +0100 Subject: [PATCH] download through yt-dlp --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- src/index.ts | 8 +++++--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 641c7f0..e1d5b43 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ }, "dependencies": { "@grammyjs/parse-mode": "^1.9.0", - "@resync-tv/yt-dlp": "^0.2.1", + "@resync-tv/yt-dlp": "0.3.1", "express": "^4.18.3", "grammy": "^1.21.1" } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index de089cb..3ede389 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: ^1.9.0 version: 1.9.0(grammy@1.21.1) '@resync-tv/yt-dlp': - specifier: ^0.2.1 - version: 0.2.1(typescript@5.4.2) + specifier: 0.3.1 + version: 0.3.1(typescript@5.4.2) express: specifier: ^4.18.3 version: 4.18.3 @@ -377,8 +377,8 @@ packages: fastq: 1.17.1 dev: true - /@resync-tv/yt-dlp@0.2.1(typescript@5.4.2): - resolution: {integrity: sha512-799Mjh/PSEX4ZxRzMYgidd1nmtFqd93mDXFUI6hFgkHrfDd1z2D6UXWoct/eQco2bl0oszhdflsKVqslqhHzEQ==} + /@resync-tv/yt-dlp@0.3.1(typescript@5.4.2): + resolution: {integrity: sha512-xGEaYAiiYaScqb958p+eQEYBs4N4HVawjxxWfIj2rN0qyfwCuscJf2xWwAWM0zZyhvTPQsD9RuyLXQlO/i1IAw==} peerDependencies: typescript: ^5.0.0 dependencies: diff --git a/src/index.ts b/src/index.ts index 06501ad..fa938de 100644 --- a/src/index.ts +++ b/src/index.ts @@ -5,7 +5,7 @@ import { ADMIN_ID, WHITELISTED_IDS } from "./environment" import { Queue } from "./queue" import { bot } from "./setup" import { removeHashtagsMentions } from "./textutil" -import { getInfo } from "@resync-tv/yt-dlp" +import { getInfo, streamFromInfo } from "@resync-tv/yt-dlp" const queue = new Queue() @@ -52,8 +52,10 @@ bot.on("message:text").on("::url", async (ctx, next) => { const [download] = info.requested_downloads ?? [] if (!download || !download.url) throw new Error("No download available") - if (download.vcodec) { - await ctx.replyWithVideo(new InputFile({ url: download.url }), { + if (download.vcodec || download.ext === "mp4") { + const stream = streamFromInfo(info) + + await ctx.replyWithVideo(new InputFile(stream.stdout), { caption: removeHashtagsMentions(info.title), supports_streaming: true, reply_parameters: {