Не срабатывает try catch в Node.js c использованием библиотеки ytdl-core

Суть проблемы такая: Я пытаюсь скачивать отдельно аудио и видео дорожки на Ютуб при помощи вилки ytdl-core. Все знаем что Ютуб не работает в России, на своём компьютере я использую goodbye-DPI для обхода, но из-за этого ytdl-core не сразу понимает, что такое видео и аудио вообще есть. На выходе получается, что одна и та же программа одно и тоже видео скачивает с 3-5ой попытки. Я пытаюсь использовать конструкцию while try catch чтоб перезапускать попытку скачивания каждый раз при ошибке, но при этом try catch как будто не работает и программу всё также вручную приходиться заново запускать, пока не получится. Вот так выглядит мой код:


    import fs from 'fs';
    import { YtdlCore, toPipeableStream } from '@ybd-project/ytdl-core';
    
    
    const ytdl = new YtdlCore({  
    });
    
    // Айди видео с ютуб(После знака =)
    let vidId = "";
    
    //Функция попыток скачивания до победной
    async function retry (maxAtt = 10) {    //Перемення макс. попыток
        let att = 0;    //Переменная попыток
        let scc = false;    //Если получилось true
        while(maxAtt > att && !scc) {   //Цикл до удачной попытки
            try {
                console.log(`Попытка ${att}. . .`);
                //Сами команды, которые должны скачивать видео и аудио, но делают это с 3-5ой попытки
                await ytdl.download(`https://www.youtube.com/watch?v=${vidId}`,  {quality: "highestaudio",}).then((stream) => toPipeableStream(stream).pipe(fs.createWriteStream(`${vidId}Audio.mp4a`)));
                await ytdl.download(`https://www.youtube.com/watch?v=${vidId}`,  {quality: "highest",}).then((stream) => toPipeableStream(stream).pipe(fs.createWriteStream(`${vidId}Video.mp4`)));
                console.log("Успешно!");
                scc = true;
            } catch (error) {
                att++;
                console.error(`Попытка ${att} не удалась! ! !`);
                if (att >= maxAtt) {
                    console.error(`Достигнуто максимальное кол-во попыток! ! !`);
                    throw error;
                }
            }
            
        }
    }
    
    
    retry()

Ошибка: throw new Error(No such format found: ${QUALITY}); ^

Error: No such format found: highest at FormatUtils.chooseFormat (C:\Users\Gleb\Desktop\ворк1.0.2\node_modules@ybd-project\ytdl-core\package\utils\Format.js:180:19) at C:\Users\Gleb\Desktop\ворк1.0.2\node_modules@ybd-project\ytdl-core\package\core\Download\Download.js:92:51 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) UPD: Смог уменьшить кол-во ошибок изменив способ выбора аудио и видео, НО ОШИБКА ВСЁ ЕЩЁ ИНОГДА ВЫСКАКИВАЕТ.


Ответы (1 шт):

Автор решения: Te4ers

Не используйте пакет ybd-project/ytdl-core, используйте distube/ytdl-core.

→ Ссылка