4

Парсинг списка музыки в ВК

Знакомый попросил список его музыки с ВК аккаунта, к которому он потерял доступ. Гугл дал ссылочку на гитхаб, но там скрипт только для своего аккаунта работает.
С помощью ИИ доработал скрипт для сбора плейлиста в текстовый файл

(async () => {

const scroll = (top) => window.scrollTo({ top });

const delay = (ms) => new Promise((r) => setTimeout(r, ms));

async function scrollPlaylist() {

console.log("Прокручиваем музыку VK...");

let pageHeight = 0;

let sameHeightCount = 0;

while (sameHeightCount < 6) {

pageHeight = document.body.clientHeight;

scroll(pageHeight);

await delay(600);

if (document.body.clientHeight === pageHeight) {

sameHeightCount++;

} else {

sameHeightCount = 0;

}

}

}

function parsePlaylist() {

const rows = document.querySelectorAll('[data-testid="MusicTrackRow"]');

console.log(`Найдено треков: ${rows.length}`);

return [...rows].map((row) => {

const textContainer = row.querySelector('[class*="AudioRow__content"], [class*="vkitAudioRow_cell"] a, div');

if (!textContainer) return null;

const spans = Array.from(row.querySelectorAll('span, a'))

.map(el => el.textContent.trim())

.filter(text => text.length > 0 && !text.includes(':') && !/^\d+$/.test(text));

const junkWords = ["открыть", "сниппет", "не нравится", "показать", "похожие", "добавить", "в мою музыку", "меню"];

const cleanTexts = spans.filter(text => !junkWords.some(junk => text.toLowerCase().includes(junk)));

if (cleanTexts.length < 2) return null;

const title = cleanTexts[0].replace(/[\s\n ]+/g, " ").trim();

const artist = cleanTexts[1].replace(/[\s\n ]+/g, " ").trim();

return `${artist} - ${title}`;

}).filter(Boolean);

}

function saveToFile(filename, content) {

const data = content.replace(/\n/g, "\r\n");

const blob = new Blob([data], { type: "text/plain;charset=utf-8" });

const link = document.createElement("a");

link.download = filename;

link.href = URL.createObjectURL(blob);

link.target = "_blank";

link.style.display = "none";

document.body.appendChild(link);

link.click();

document.body.removeChild(link);

}

// Запуск

await scrollPlaylist();

console.log("Очистка и сбор треков...");

const list = parsePlaylist();

if (list.length === 0) {

alert("Не удалось очистить список. Попробуйте еще раз.");

} else {

const uniqueList = [...new Set(list)];

saveToFile("vk-playlist-clean.txt", uniqueList.join("\n"));

console.log(`Успешно сохранено чистых треков: ${uniqueList.length}`);

}

})();

Исходник в контакте

Исходник в контакте

Выгрузка скрипта

Выгрузка скрипта

Открыть в ВК страницу с музыкой, нажать F12.

Скопировать скрипт со страницы, вставить его в консоль и нажать Enter.

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества