Обработка плейлиста с youtube-ошибка sr

#node.js #youtube #discord.js

#node.js #YouTube #discord.js

Вопрос:

Хорошо, итак, мне нужно обработать ссылку на плейлист YouTube, потому что мне нужен идентификатор видео для каждого из видео. Но, как всегда, что-то идет не так, встроенная функция getPlaylist пытается преобразовать детали плейлиста в JSON, но ее код фильтрации не таков, и он пытается проанализировать это введите описание изображения здесь

Мне нужен только объект JSON, окрашенный в синий цвет, а не тарабарщина в красный. Как я могу это сделать?

  static getPlaylist(html, limit = 100) {
        if (!limit || typeof limit !== "number") limit = 100;
        if (limit <= 0) limit = 100;
        const videos = [];
        let parsed;
        let playlistDetails;
        try {
            const rawJSON = `${html.split("{"playlistVideoListRenderer":{"contents":")[1].split("}],"playlistId"")[0]}}]`;
            parsed = JSON.parse(rawJSON);
            let log = html.split("{"playlistSidebarRenderer":")[1].split("n")[0].slice(0, -3)
            console.log(log);
            // This is the part where it crashes because it tries to convert the JSON and the gibberish 
            playlistDetails = JSON.parse(html.split("{"playlistSidebarRenderer":")[1].split("n")[0].slice(0, -3)).items;
        } catch (e) {
            return null;
        }
 

Это несколько строк кода, которые мне нужны для работы, как я могу отфильтровать тарабарщину?

Комментарии:

1. Просто выделите первые несколько символов тарабарщины красным цветом и поместите эти символы в a split() . Поскольку вам нужен контент, который предшествует тарабарщине, вы бы сделали split("first several chars of gibberish here")[0] . Итак, что-то вроде: html.split("{"playlistSidebarRenderer":")[1].split("n")[0].slice(0, -3).split("}};</script><link rel")[0] . Конечно, для этого вам нужно будет разветвить youtube-sr и отредактировать этот код, и символы, которые я выбрал в этом примере, могут работать неправильно, поэтому вам нужно выбрать то, что подходит именно вам.

Ответ №1:

У меня получилось благодаря @Cannicide. введите описание изображения здесь

Я только что добавил разделение с начальными данными тарабарщины

 playlistDetails = JSON.parse(html.split("{"playlistSidebarRenderer":")[1].split("n")[0].slice(0, -3).split("}};</script><link rel="alternate" media="handheld" href="https://m.youtube.com/playlist?list=")[0]).items;