add thumb for all videos #11
No reviewers
Labels
No labels
bug
documentation
duplicate
enhancement
good first issue
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Borodutch/VideoDownloadBot!11
Loading…
Reference in a new issue
No description provided.
Delete branch "main"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Добавил создание и обработку превьюх для видосов, проверил на 15 видосах все ок работает
@ -1,16 +1,73 @@import * as sharp from 'sharp'Наверное, нужно сделать
awaitуsharp? Не мешай async/await и then/catchЧто, если картинка длинная или высокая? Все равно ресайзнится до 320х320 квадрата?
Не сокращай названия переменных
Что, если тут
thumbUrlвсе еще''?Сделай путь через
uuid, не занимайся хаками с urlЛибо async/await, либо then/catch, не мешай их
@ -1,16 +1,73 @@import * as sharp from 'sharp'Да, он автоматом обрезает если что. Почти все превьхи идут альбомной ориентации.
@ -1,16 +1,73 @@import * as sharp from 'sharp'превьюхи не будет наверное, либо отлетит ошибка
Просто то что я проверял, везде находил хоть какую то превьюху
Что тут следует сделать?
@ -1,16 +1,73 @@import * as sharp from 'sharp'сделал
@ -1,16 +1,73 @@import * as sharp from 'sharp'поправил
@ -1,16 +1,73 @@import * as sharp from 'sharp'сделал
@ -1,16 +1,73 @@import * as sharp from 'sharp'Сделал везде через uuid в thumbnail
@ -1,16 +1,73 @@import * as sharp from 'sharp'думаешь добавить обработку какую то? Или просто без превьюхи отправлять?
@ -1,16 +1,73 @@import * as sharp from 'sharp'Может сделать заглушку, типо если превьюха не загрузилась - сделать дефолтную картиночку?
@ -1,16 +1,73 @@import * as sharp from 'sharp'Сделать проверку на
''@ -1,16 +1,73 @@import * as sharp from 'sharp'В JS почти никогда не нужно использовать
==. Используй===Здесь можно упростить до
if (!thumbnailUrl)Это всегда будет
jpeg?Почему 4 минуты? Что, если видео короче 4 минут?
Этому файлу тоже нужно сделать
unlink. Не оставляй лишние файлы в системе.Почему
idопционален?Если id пустой, то тут получится
some/path/undefinedОбрезает или делает fit в 320х320? Если моя картинка 640x320, то какого размера получится после конверсии thumbnail?
@ -1,16 +1,73 @@import * as sharp from 'sharp'Он делает на выходе изображение 320-320. То есть он и обрезает и масштабирует по необходимости
@ -1,16 +1,73 @@import * as sharp from 'sharp'да, потому что это вывод у либы такой будет. Она будет выводить в нужном для нас формате
@ -1,16 +1,73 @@import * as sharp from 'sharp'если видео короче 4 минут обычно превьюха не ставится, а начинается автовоспроизведение
@ -1,16 +1,73 @@import * as sharp from 'sharp'просто когда у меня без времени стояло - то порой в превью попадал черный экран
@ -1,16 +1,73 @@import * as sharp from 'sharp'могу поставить 2 минуты
Я не знаю какое в среднем время качают через бота
@ -1,16 +1,73 @@import * as sharp from 'sharp'Любой из них удаляется через unlink в downloadUrl
@ -1,16 +1,73 @@import * as sharp from 'sharp'return что в случае своей превьюхи что в случае скачки в основном файле виден как thumb, по итогу в анлинке он и будет удален
@ -1,16 +1,73 @@import * as sharp from 'sharp'@ -1,16 +1,73 @@import * as sharp from 'sharp'вот, удаляется thumb. По сути нам не важно из какого ретерн приходит сюда путь
@ -1,16 +1,73 @@import * as sharp from 'sharp'Приянл
@ -1,16 +1,73 @@import * as sharp from 'sharp'Принял, будет обязателен
@ -1,16 +1,73 @@import * as sharp from 'sharp'принял
@ -1,16 +1,73 @@import * as sharp from 'sharp'принял, постараюсь не забыть
@ -1,16 +1,73 @@import * as sharp from 'sharp'Это удаляется файл по путю с
L38. Файл, который качается тут наL36имеет другой путь — и он остаетсяНужно сделать contain, а не cover
У меня везде автовоспроизведение выключено. Что буду видеть я на видосах короче 4 минут? Проверь.
@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3","@typegoose/typegoose": "^9.3.1","envalid": "^7.2.2","fluent-ffmpeg": "^2.1.2",Нужны и
ffmpeg-static, иfluent-ffmpeg? Или только один?@ -1,16 +1,73 @@import * as sharp from 'sharp'У нас, вроде как, есть функция-обертка для
unlinkSync, которая делаетtry/catch, используй ееЗдесь надо делать
resolve, как и в других местах сtempDirТебе не нужно делать
return awaitА что, если нет
data.format.duration? Кинь ошибкуТебе не нужно тут указывать возвращаемый тип, тебе нужно на
L62сделатьPromise<string>Это дикие хаки. Найди способ использовать библиотеку, которая форматирует количество секунд в строку часов, минут и секунд
@ -1,16 +1,73 @@import * as sharp from 'sharp'зато считает точно XD, есть библиотека для этого как раз momentjs. Тогда ее попробую
@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3","@typegoose/typegoose": "^9.3.1","envalid": "^7.2.2","fluent-ffmpeg": "^2.1.2",они используются в разных библиотеках. fluent - показывает длительность видео, static - выдает путь до папки с ffmpeg для либы которая создает превьюхи
@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3","@typegoose/typegoose": "^9.3.1","envalid": "^7.2.2","fluent-ffmpeg": "^2.1.2",Лучше оставить оба?
@ -1,16 +1,73 @@import * as sharp from 'sharp'Эта обертка находится в доке downloadUrl, мне сделать чтобы главная функция возвращала помимо пути к превью еще и путь к файлу на удалению? Или может проще сделать в этом файле try/catch?
@ -1,16 +1,73 @@import * as sharp from 'sharp'понял кажется, сделаю
@ -1,16 +1,73 @@import * as sharp from 'sharp'понял
@ -1,16 +1,73 @@import * as sharp from 'sharp'окей
@ -1,16 +1,73 @@import * as sharp from 'sharp'понял
@ -1,16 +1,73 @@import * as sharp from 'sharp'вместо
momentjsиспользуйdayjs@ -1,16 +1,73 @@import * as sharp from 'sharp'вероятность, что считает точно, ниже, чем если использовать готовое и оттестированное в продакшене решение
@ -1,16 +1,73 @@import * as sharp from 'sharp'Что такое "док"? Файл?
@ -1,16 +1,73 @@import * as sharp from 'sharp'У тебя
unlinkSyncможет кинуть exception, еслиthumbnailPathпо какой-то причине не существует. ПоэтомуunilnkSyncнужно обернуть вtry/catch. Для этого можно вынести в отдельный файл функцию:@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3","@typegoose/typegoose": "^9.3.1","envalid": "^7.2.2","fluent-ffmpeg": "^2.1.2",Лучше использовать один, если возможно
@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3",Не забывай типы убирать
@ -66,7 +65,7 @@ export default async function downloadUrl(const { doc: originalChat } = await findOrCreateChat(downloadJob.originalChatIdНе пушь лишние
console.logв PR@ -77,3 +76,3 @@thumb ? new InputFile({ url: thumb }) : undefinedthumb ? new InputFile(thumb) : undefined)// CleanupТут не нужен
try/catch, если уже используем небросающий эксепшеныunlinkSyncSafe@ -1,16 +1,73 @@import * as sharp from 'sharp'Это точно всегда будет
jpeg? Точно не другой формат?Это сделает
contain?Лучше передавать сюда
filename, а неuuidЗдесь нужно использовать
resolveА еще это будет тот же путь и файл, что на
L33(если ты там тоже укажешь расширение), что приведет к проблемам послеL40@ -0,0 +1,10 @@import { unlinkSync } from 'fs'Тут лучше
reportиспользоватьЭто все еще используется?
@ -66,7 +65,7 @@ export default async function downloadUrl(const { doc: originalChat } = await findOrCreateChat(downloadJob.originalChatIdЗабыл удалить, прошу прощения
@ -77,3 +76,3 @@thumb ? new InputFile({ url: thumb }) : undefinedthumb ? new InputFile(thumb) : undefined)// Cleanupсделал
@ -0,0 +1,10 @@import { unlinkSync } from 'fs'сделал
да в общем то не используется в коде удалю
@ -20,6 +20,7 @@"@grammyjs/runner": "^1.0.3",убрал
@ -1,16 +1,73 @@import * as sharp from 'sharp'тут написанно ввести паттерн, то есть как я понял - это я выбираю формат на выходе
@ -1,16 +1,73 @@import * as sharp from 'sharp'нет, я могу тут делать превью без размера и пропустить его через шарп, чтобы сделать contain
@ -1,16 +1,73 @@import * as sharp from 'sharp'не очень понял, что тут сделать. Я просто создал сверху переменную filname :)
@ -1,16 +1,73 @@import * as sharp from 'sharp'Не кидай строку в
resolve, которую не будешь использовать. Просто вызовиresolve. Может, нужно будет наL55указать тип возврата промиса типаreturn new Promise<void>(...Либо сокращай оба слова (
res, rej), либо ни то, ни то (resolve, reject)Что за хаки с магическими строками? Почему
downloadUrl? Избавься от этого.Если переменную назовешь
destFileсразу, то сможешь тут сделатьdestFile,Что за хаки с магической строкой
-done?Этот файл удаляется после?
Этот файл удаляется после?
@ -16,0 +43,4 @@const destFile = resolve(tempDir, `${id}`)const downloader = new TurboDownloader({url,destFile,Выглядит повтором
L34@ -1,16 +1,73 @@import * as sharp from 'sharp'не обязательно передавать стрелочную функцию в колбек, можешь сделать
.on('end', resolve)@ -1,16 +1,73 @@import * as sharp from 'sharp'Понял, сделал
@ -1,16 +1,73 @@import * as sharp from 'sharp'Оба сократил, так выглядит аккуратнее
@ -1,16 +1,73 @@import * as sharp from 'sharp'Это я с делал, чтобы отличать какие файлы из какой ветки. Сейчас в этом нет смысла, удалил. Файл удаляется, строка L40
@ -1,16 +1,73 @@import * as sharp from 'sharp'Сделал
@ -16,0 +43,4 @@const destFile = resolve(tempDir, `${id}`)const downloader = new TurboDownloader({url,destFile,Это и есть повтор по сути, тут есть 2 ветки: превью из yt-dlp и собственное превью с помощью ffmpeg. Каждая из них обрабатывается в отдельности, поэтому функцию ресайза я вынес отдельно, чтобы использовать в двух местах.
Я могу поменять названия переменных, могу попробовать сделать чтобы ресайз делался в одном месте. типо сначала проходит ветвение, а потом функция сливается обратно в один поток где происходит ресайз и возврат
@ -1,16 +1,73 @@import * as sharp from 'sharp'Сделал
@ -16,0 +43,4 @@const destFile = resolve(tempDir, `${id}`)const downloader = new TurboDownloader({url,destFile,Поменяй последовательность таким образом, чтобы
resizeThumbвызывался один раз@ -16,0 +43,4 @@const destFile = resolve(tempDir, `${id}`)const downloader = new TurboDownloader({url,destFile,сделал