Можно ли запустить синхронно ytdl getInfo ()? - PullRequest
0 голосов
/ 26 сентября 2019

Я делаю загрузчик плейлистов YouTube, используя ytdl-core и youtube-playlist.Я хотел перечислить все названия из плейлиста.Вот мой код:

ytlist(playlist_url, 'url').then(res => {

    var video_url = res.data.playlist;
    var total_files = video_url.length;

    video_url.forEach(function(url, index) {
        ytdl.getInfo(url, (err, info) => {
            console.log(index + " : " + info.title);
        });
    });
});

И когда я запускаю этот код с ссылкой на плейлист, это происходит:

7 : C418 - Minecraft - Minecraft Volume Alpha
3 : C418 - Death - Minecraft Volume Alpha
4 : C418 - Living Mice - Minecraft Volume Alpha
19 : C418  - Dog - Minecraft Volume Alpha
14 : C418 - Chris - Minecraft Volume Alpha
17 : C418  - Sweden - Minecraft Volume Alpha
16 : C418 - Excuse - Minecraft Volume Alpha
15 : C418 -  Thirteen - Minecraft Volume Alpha
22 : C418 - Droopy likes Ricochet - Minecraft Volume Alpha
20 : C418 - Danny - Minecraft Volume Alpha
0 : C418 - Key - Minecraft Volume Alpha
21 : C418 - Beginning - Minecraft Volume Alpha
8 : C418 - Oxygène - Minecraft Volume Alpha
9 : C418 - Équinoxe - Minecraft Volume Alpha
2 : C418 - Subwoofer Lullaby - Minecraft Volume Alpha
12 : C418 - Wet Hands - Minecraft Volume Alpha
18 : C418 - Cat - Minecraft Volume Alpha
10 : C418 - Mice on Venus - Minecraft Volume Alpha
..... and so on

Элементы из плейлиста должны быть от 0, но это не так.Я понял, что библиотека ytdl-core является асинхронной, но я не знаю, как сделать ее синхронной.Можешь мне помочь?Извините за плохой формат.Это мой первый вопрос.

1 Ответ

0 голосов
/ 27 сентября 2019
const ytdl = require('ytdl-core');

const video_url = [
    'hxOI7wahw7w', // [MV] HONG JIN YOUNG(홍진영) _ Boogie Man(부기맨)
    'iOxzG3jjFkY', // Willy William - Ego (Clip Officiel)
    'WGclLoxZz18', // GZUZ - Drück Drück (feat. LX)
    '5WujFgnZAko'  // Lozano - Kako tebe nema druga (2015)
];

let task = [];

video_url.forEach(url => task.push(ytdl.getInfo(url)));

Promise.all(task).then(res => {
    for (let r in res) {
        console.log(`${r} : ${res[r].title}`);
    }
});

Сообщение обновлено

...