Загрузка обложек треков из постов сообществ ВКонтакте и встраивание их в теги локальных аудиофайлов.
Мэшап-паблики публикуют посты вида «аудио + фото», где фотография и есть обложка трека. Этот инструмент собирает такие пары (артист, название, обложка) со стены группы через VK API, а затем сопоставляет их с вашей локальной музыкальной библиотекой и вшивает обложки в теги — MP3, FLAC, M4A и OGG.
Работает на ПК (Windows/Linux/macOS) и на Android через Termux.
- Парсинг всей стены сообщества (
wall.get), включая неструктурированные посты — fallback-парсинг текста по шаблонуАртист - Название - Поддержка нескольких сообществ — каждый запуск создаёт отдельный JSON-файл, ничего не перезаписывая
- Сопоставление файлов с обложками: точное совпадение по
artist + title, поtitle, затем fuzzy-matching через rapidfuzz
- Пропуск файлов с уже встроенной обложкой (или принудительная замена)
- Локальный кэш скачанных обложек — повторные запуски не зависят от сети
- CSV-лог по каждому файлу: статус, способ совпадения, источник обложки
- Python 3.8+
- [Только для шага 1] Токен VK API с правом доступа к
wall(пользовательский или групповой)
pip install -r requirements.txtNote
В репозитории уже присутствуют пропарсенные основные группы от 29 июля 2026 года.
Скопируйте .env.example в .env и заполните:
VK_TOKEN=ваш_токен
GROUP_DOMAIN=mashup.hkКак получить токен: создайте Standalone-приложение на
vk.com/apps?act=manageи откройте в браузере ссылку авторизации со скоупомwall,offline, либо простым способом тут через авторизацию через существующее приложение. После входа токен появится в адресной строке — скопируйте его в.env.
python vk_parsing.pyСкрипт обойдёт всю стену указанной группы и сохранит пары «трек → обложка» в output/vk_covers_<group>.json. Каждый следующий запуск создаёт новый файл с номером (vk_covers_<group>_2.json, _3.json и т.д.).
Чтобы добавить ещё одно сообщество, поменяйте GROUP_DOMAIN в .env и запустите снова — например, поочерёдно mashup.hk, alt_shitpost, chilish. Все файлы автоматически подхватятся на следующем шаге.
python apply_covers.py /path/to/musicСкрипт объединяет все найденные vk_covers*.json, обходит указанную папку (рекурсивно) и вшивает обложки в теги файлов.
# Строже подбор совпадений (порог fuzzy-соответствия 0-100, по умолчанию 85)
python apply_covers.py /path/to/music --min-score 90
# Заменить обложки, которые уже вшиты
python apply_covers.py /path/to/music --replace-existingПро порог совпадения:
80-85— обычный режим,90+— почти только точные совпадения. Если по логу видно, что валидные треки уходят вno_match— снижайте, если вшивается чужая обложка — повышайте.
После запуска в output/cover_apply_log.csv появится лог со статусами:
| Статус | Значение |
|---|---|
applied |
Обложка встроена |
skipped_existing |
Обложка уже была (пропущено) |
no_match |
Не найдено совпадение в JSON |
download_or_embed_error |
Ошибка скачивания или записи |
Скачанные обложки кэшируются в output/cover_cache/ — при повторном запуске скрипт не будет обращаться к сети за уже скачанными картинками.
pkg update -y && pkg install python -y
pip install -r requirements.txt
termux-setup-storage
exit # перезапустить Termux для доступа к хранилищуЗатем скопируйте проект в /storage/emulated/0/Music/vkpars/, заполните .env и запускайте скрипты как обычно:
python vk_parsing.py
python apply_covers.py /storage/emulated/0/Music