Парсинг списка музыки в ВК
Знакомый попросил список его музыки с ВК аккаунта, к которому он потерял доступ. Гугл дал ссылочку на гитхаб, но там скрипт только для своего аккаунта работает.
С помощью ИИ доработал скрипт для сбора плейлиста в текстовый файл
(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.

