Скрипт, позволяющий импортировать плейлисты из Spotify, а также обычные треклисты в VK музыку.

Overview

vk-music-import

Программа для переноса плейлистов из Spotify и текстовых треклистов в VK Музыку.

Untitled Diagram drawio-3

Преимущества:

  • Позволяет быстро импортировать плейлисты из Spotify в VK Музыку
  • Импортирует даже неточные по названию треки
  • Имеет доступ только к аудиозаписям, данные никуда не "утекают"
  • Поддерживает большие плейлисты (более 1000 треков)
  • Позволяет импортировать также обычные текстовые списки треков в VK Музыку
  • Умеет обходить капчу

Как запустить? (для обычных пользователей)

Инструкция по использованию на Windows:

  • Скачайте и распакуйте архив (vk-music-import_win32.zip) в любую папку
  • Запустите исполняемый файл и следуйте инструкциям:

2022-04-08_12h22_59

Более подробная инструкция на DTF: Переносим плейлисты из Spotify в VK Музыку (подробное руководство).

Как запустить? (для продвинутых пользователей)

  1. Убедитесь, что у вас установлен Python 3.8 (или 3.9).
  2. Установите зависимости:
    pip install -r requirements.txt
    
  3. Запустите скрипт и следуйте инструкциям:
    python vk-music-import.py
    
  4. После переноса треков, скрипт сгенерирует отчет и выведет ссылку на плейлисты с импортированными треками.

Настройки

Режим импорта

По-умолчанию включен импорт треков из плейлиста Spotify, чтобы перейти в режим импорта из треклиста, в .env отключите режим Spotify: SPOTIFY_MODE="0". Теперь скрипт будет искать треки из файла tracklist.txt (его нужно создать самостоятельно в папке со скриптом), который должен содержать список треков, разделенных переносом, например:

Khalid - Better
Billie Eilish - i love you

Возможные проблемы и их решения

Обход капчи не работает на macOS на M1

Это происходит из-за проблем с установкой onnx-runtime.

  • Решение 1: запустите скрипт через Python x64 с помощью Rosetta.
  • Решение 2: отключить распознавание капчи и вводить ответы вручную. Для этого закомментируйте строчку импорта import onnxruntime as rt в vk-music-import.py и выключите распознавание капчи в файле .env: BYPASS_CAPTCHA="0".

Компиляция программы

Вы можете скомпилировать данную утилиту самостоятельно, в том числе для своей операционной системы (в инструкции пример для Windows).

  • Создайте виртуальное окружение и установите зависимости и Pyinstaller:
    python -m virtualenv venv
    venv\Scripts\activate
    pip install -r requirements.txt
    pip install pyinstaller
    
  • Запустите компиляцию:
    pyinstaller --onefile --icon=app.ico --add-binary="venv\Lib\site-packages\onnxruntime\capi\onnxruntime_providers_shared.dll;.\onnxruntime\capi" .\vk-music-import.py
    
  • Скопируйте в папку dist файл с моделями капчи (models).

Полезный материал

  • Айти заметки Сергея Струкова - телеграм-канал автора сервиса.
  • Spotya - сервис для переноса музыки из Spotify в Яндекс Музыку, некоторые метаданные о плейлистах я собираю с его API.
  • vkCaptchaBreaker - модель для решения капчи ВК взята из данного репозитория

Условия пользования

Автор не несет ответственности за любые действия, которые предпринимаете с данным ПО, вы делаете всё на свой страх и риск. Учитывайте, что данный метод импортирования музыки не является официальным, но банов за его использования пока не было.

Comments
  • [Проблема]

    [Проблема]

    Добрый день. Программа и правда переносит треки, однако почему то по два сразу. То есть каждый трек дублируется.

    Windows 11 Любой плейлист Готовый релиз V 0.3

    Технические данные (пожалуйста, заполните следующую информацию):

    • ОС [например, Windows 11]
    • Содержимое файла настроек (.env)
    • Ссылка на плейлист
    • Ссылка на профиль ВКонтакте
    • Запускали ли вы готовый релиз (или использовали Python)?
    • Версия программы [например, 0.1]

    Дополнительная информация Добавьте сюда дополнительные данные, касающийся проблемы.

    bug 
    opened by zargpg74 2
  • [Проблема] Добавляется по 2 трека в плейлист

    [Проблема] Добавляется по 2 трека в плейлист

    при добавление треков в плейлист треки добавляются 2 раза. В плейлисте спотифи 1300 в приложении показывается что треков 2600. Так же почему-то когда много треков в плейлисте создаётся ещё 1 плейлист после того как в первый добавляется ~900 треков

    Все эти баги в новой версии 0.3, в 0.2 всё нормально

    bug 
    opened by xtenshhi 2
  • [Проблема] Не возвращается список треков (Bad Request)

    [Проблема] Не возвращается список треков (Bad Request)

    Опишите проблему Ошибка 504 Gateway Time Out

    Скриншоты image Технические данные (пожалуйста, заполните следующую информацию):

    • Win 10

    • Содержимое файла настроек (.env) Поумолчанию

    • Запускал готовый релиз

    • Версия программы 0ю.2

    bug 
    opened by LevganSaxen 2
  • в виде кода не может войти по токену

    в виде кода не может войти по токену

    Опишите проблему код не может получить доступ к странице, падает из-за несовпадения ip, не совсем понятно как это возможно, учитывая, что получение токена и запуск проекта происходят на одной машине

    Как воспроизвести ошибку запуск через cmd, следую инструкциям

    • Windows 11
    • VK_TOKEN="токен" BYPASS_CAPTCHA="1" SPOTIFY_MODE="0" REVERSE="0" STRICT_SEARCH="1" ADD_TO_LIBRARY="1"
    • добавление из треклиста
    • vk.com/firs_iln
    • python
    • 3.0

    Дополнительная информация ERROR:root:[5] User authorization failed: access_token was given to another ip address. Traceback (most recent call last): File "D:\Загрузки\vk-music-import-0.3\vk-music-import-0.3\vk-music-import.py", line 140, in main user_info = vk.users.get()[0] File "C:\Users\firs_\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 737, in call return self._vk.method(self.method, kwargs) File "C:\Users\firs\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 697, in method raise error vk_api.exceptions.ApiError: [5] User authorization failed: access_token was given to another ip address.

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "D:\Загрузки\vk-music-import-0.3\vk-music-import-0.3\vk-music-import.py", line 364, in main() File "D:\Загрузки\vk-music-import-0.3\vk-music-import-0.3\vk-music-import.py", line 145, in main user_info = vk.users.get()[0] File "C:\Users\firs_\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 737, in call return self._vk.method(self.method, kwargs) File "C:\Users\firs\AppData\Local\Programs\Python\Python38-32\lib\site-packages\vk_api\vk_api.py", line 697, in method raise error vk_api.exceptions.ApiError: [5] User authorization failed: access_token was given to another ip address. Нажмите Enter, чтобы завершить работу программы...

    bug 
    opened by firs-iln 1
  • [v0.4] Добавить инструкции по переносу с других сервисов

    [v0.4] Добавить инструкции по переносу с других сервисов

    Добавить сервисы или описания:

    • [x] Яндекс Музыка (расширение, треклист)
    • [x] YouTube Музыка (https://yt.spotya.ru/)
    • [x] СберЗвук (?)
    • [x] Apple Music (https://www.idownloadblog.com/2020/10/30/import-export-playlist-apple-music-mac/ ?)
    • [x] Deezer, Amazon и прочие (TuneMyMusic, Soundiiz)
    • [x] Файлы (m3u, m3u8)
    enhancement 
    opened by mewforest 1
  • [Новая фича] Прогресс-бар

    [Новая фича] Прогресс-бар

    Когда треки переносятся из файла, приложуха пишет в stdout:

    INFO:root:Успешно добавил в мои аудиозаписи: "H.A.W.K, Anka Man, 50/50 Twin - U Otta Know"
    

    Было бы неплохо запилить прогресс-бар, или хотя бы, банально, текстовый счетчик, например:

    INFO:root:Успешно добавил в мои аудиозаписи: "H.A.W.K, Anka Man, 50/50 Twin - U Otta Know" (Прогресс: 212/1245)

    enhancement 
    opened by underwear 1
  • Возможность импортировать список в обратной последовательности

    Возможность импортировать список в обратной последовательности

    В спотифай лайкнутые треки появляются сверху и при переносе их ВК старые треки находятся вверху, а новые соответственно внизу.

    Предлагаю сделать в .env переменную которая настраивает в каком порядке импортировать.

    enhancement 
    opened by Vaskass 1
  • [Проблема] Не работает импорт треков из треклиста

    [Проблема] Не работает импорт треков из треклиста

    Опишите проблему

    Здравствуйте! Пытался сделать перенос из txt, в env поставил 0, но скрипт все равно просит ссылку на спотифай.

    Файл настроек

    VK_TOKEN="<...>"
    BYPASS_CAPTCHA="1"
    SPOTIFY_MODE="0"
    

    Дополнительная информация Ссылка на обращение

    bug 
    opened by mewforest 0
  • [v0.4] Отключить создание плейлиста при ADD_TO_LIBRARY=

    [v0.4] Отключить создание плейлиста при ADD_TO_LIBRARY="1" по умолчанию

    При env ADD_TO_LIBRARY="1", пишет и в плейлист, и в мои аудиозаписи

    INFO:root:Нашел похожий трек: "Everyday - Logic, Marshmello" → "Logic, Marshmello - Everyday"
    INFO:root:Добавляю "Logic, Marshmello - Everyday" (id: 456559211) в плейлист...
    INFO:root:Добавляю "Logic, Marshmello - Everyday" (id: 456559211) в мои аудиозаписи...
    INFO:root:Успешно добавил в мои аудиозаписи: "Logic, Marshmello - Everyday"
    INFO:root:Успешно добавил в плейлист: "Logic, Marshmello - Everyday"
    
    enhancement 
    opened by underwear 1
Releases(0.3)
  • 0.3(Jun 10, 2022)

    Инструкция по использованию на Windows:

    • Скачайте и распакуйте архив (vk-music-import-v0.3_win32.zip) в любую папку
    • Запустите исполняемый файл и следуйте инструкциям: 2022-05-08_00h27_25

    Что нового?

    • Поддержка треклистов из Яндекс Музыки, экспортированных через расширение (если строчка в треклисте без дефиса, скрипт проставляет его автоматически)
    • Данная версия включает исправление бага, обнаруженного в текущей версии (hotfix1)
    Source code(tar.gz)
    Source code(zip)
    vk-music-import-v0.3.hotfix1._win32.zip(28.37 MB)
  • 0.2(May 7, 2022)

    ⚠️ Данная версия программы устарела, используйте актуальную версию.


    Что нового?

    • Добавлен режим, который позволяет добавлять треки в мои аудиозаписи
    • Добавлен режим строгого поиска треков: больше никаких "левых" ремиксов после импорта 😎 (включается в настройках)
    • Теперь все плейлисты импортируются в обратном порядке, т.е. от новых треков к старым (это также можно изменить в настройках)
    • Исправлен баг с импортом музыки из треклиста
    • Настройки теперь находятся в файле config.env вместо .env (сделано для удобства пользователей macOS и Windows 11)
    • Также обновлены ссылки в подвале отчета
    Source code(tar.gz)
    Source code(zip)
    vk-music-import-v0.2_win32.zip(27.41 MB)
  • 0.1(Apr 8, 2022)

Owner
Mew Forest
Mew Forest
An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

An interactive App to play with Spotify data, both from the Spotify Web API and from CSV datasets.

Caio Lang 3 Jan 24, 2022
Spotify Top Lists - get the current top lists of a user from the Spotify API and display them in a Flask app

Spotify Top Lists This is a simple script that will get the current top lists of a user from the Spotify API and display them in a Flask app. Requirem

Yasin 0 Oct 16, 2022
A Python script to create customised Spotify playlists using the JSON, Spotipy Library and Spotify Web API, based on seed tracks in your history.

A Python script to create customised Spotify playlists using the JSON, Spotipy Library and Spotify Web API, based on seed tracks in your history.

Youngseo Park 1 Feb 1, 2022
A light weight Python library for the Spotify Web API

Spotipy A light weight Python library for the Spotify Web API Documentation Spotipy's full documentation is online at Spotipy Documentation. Installat

Paul Lamere 4.2k Jan 6, 2023
JAKYM, Just Another Konsole YouTube-Music. A command line based Youtube music player written in Python with spotify and youtube playlist support

Just Another Konsole YouTube-Music Overview I wanted to create this application so that I could use the command line to play music easily. I often pla

Mayank Jha 73 Jan 1, 2023
Script for polybar to display and control media(not only Spotify) using DBus.

polybar-now-playing Script for polybar to display and control media(not only Spotify) using DBus Python script to display and control current playing

Dope Wizard 48 Dec 31, 2022
ETL python utilizando API do Spotify

Processo de ETL com Python e Airflow usando API do Spotify Sobre Projeto de ETL(Extract, Transform e Load) utilizando Python com API do Spotify e Airf

Leonardo 10 Mar 16, 2022
A Python script to update Spotify Playlist data every 5 minutes.

Spotify Playlist Updater A Python script to update Spotify Playlist data every 5 minutes. Description An automatic playlist updater using Spotify API

null 6 Nov 24, 2022
Module to use some statistics from Spotify API

statify Module to use some statistics from Spotify API To use it you have to import the functions into your own project. You have also to authenticate

Miguel Cózar 2 Jun 2, 2022
RevSpotify is a fast, useful telegram bot to have Spotify music on Telegram.

RevSpotify A Telegram Bot that can download music from Spotify RevSpotify is a fast, useful telegram bot to have Spotify music on Telegram. ✨ Features

Alireza Shabani 12 Sep 12, 2022
Web app for spotify playlist management with last.fm integration

Music Tools Set of utility tools for Spotify and Last.fm. Built on my other libraries for Spotify (spotframework), Last.fm (fmframework) and interfaci

andy 3 Dec 14, 2022
Converts between Spotify's new lyrics (and their proprietary format) to an LRC file for local playback.

spotify-lyrics-to-lrc Converts between Spotify's new lyrics (and their proprietary format) to an LRC file for local playback. How to use: Open Spotify

~noah~ 6 Nov 19, 2022
Converts a text file of songs to a playlist on your Spotify account.

Playlist Converter Convert a text file of songs to a playlist on your Spotify account. Create your playlists faster instead of manually searching for

Priya Aggarwal 18 Dec 21, 2022
A simple program to display current playing from Spotify app on your desktop

WallSpot A simple program to display current playing from Spotify app on your desktop How to Use: Linux: Currently Supports GNOME and KDE. If you want

Nannan 4 Feb 19, 2022
Creates Spotify playlists from Spinitron playlists.

spin2spot Creates Spotify playlists from Spinitron playlists. Quick Start You can use spin2spot as a command-line tool: erik@ubuntu:~$ python -m spin2

Erik Didriksen 1 Aug 28, 2021
Dynamic Twitter banner, to show off your spotify status. Banner updated every 5 minutes.

Spotify Twitter Banner Dynamic Twitter banner, to show off your spotify status. Banner updated every 5 minutes. Installation and Usage Install the dep

Sunrit Jana 23 Jan 5, 2023
Spotify Web API client for Python 3

Welcome to the GitHub repository of Tekore! We provide a client for the Spotify Web API for Python, complete with all available endpoints and authenti

Felix Hildén 186 Dec 22, 2022
A script that takes what you're listening too on Spotify and sets it as your Nertivia custom status.

nertivia-spotify-listening-status A script that takes what you're listening too on Spotify and sets it as your Nertivia custom status. setup Install r

Ben Tettmar 2 Feb 3, 2022
I was sick of having to hand my friends my phone, so I gave my Spotify some SMS features!

SMSpotifY Just a little tool so that my friends can text a phone number and add to my spotify queue for parties and such:) Features Roles / Access Con

Sara 2 Jan 17, 2022