Todos los amantes de la música en Rusia han estado esperando el lanzamiento de Spotify en nuestro mercado. Cuando esto finalmente sucedió, los usuarios se enfrentaron al problema de transferir música desde otros servicios. Personalmente, a lo largo de los años, he acumulado una gran colección de música en diferentes plataformas: Yandex.Music, VKontakte, una colección personal en un disco duro y una nube en Yandex.Disk.
Al principio pensé en utilizar servicios como Soundiiz y TuneMyMusic. Pero inspirado por un artículo sobre el uso de Python para el mismo propósito , me interesé en resolver este problema usando Javascript. A continuación, describiré una serie de pasos sencillos con el código fuente para ayudarlo a transferir su música desde diferentes fuentes a Spotify.
Entonces, para comenzar, necesitamos tres cosas: Node.js, el navegador Google Chrome y fuentes de script .
E instalar dependencias, por supuesto.
Ve a la raíz del proyecto y ejecuta el comando:
npm i
¿Está hecho?
Ok, sigamos adelante.
En primer lugar, necesitamos obtener una lista de pistas.
, , .
, .
.
En contacto con
A lo largo de los años de uso de esta red social, la lista de pistas se ha ido reponiendo constantemente. Creo que muchos tienen la misma situación.
DOM-, . , , .
, . (F12) , src/grabTracksVk.js. Enter.
.
.
, , . , , .. .
API. DOM- .
: https://yandex.ru/dev/disk/poligon
" OAuth ".
src/grabTracksYandexDisk.js.
const token = ''
.
:
const token = 'AgAAAAACbokuAADL45FDSww2d3SDSffddwAAAAA';
, , , , , . onlyArtist, true.
:
node ./src/grabTracksYandexDisk.js
collection-yandex-disk.txt.
. API ( ):
https://cloud-api.yandex.net/v1/disk/resources/files
media type, .
. , . , , , Spotify ( ) .
– , , .
, src/grabTracksFileSystem.js.
const rootPath = ''
, .
:
const rootPath = 'D:/Music/Metal';
.
mask . .
:
const mask = ['.mp3', '.flac'];
onlyArtist , . , , true.
:
node ./src/grabTracksFileSystem.js
collection-fs.txt.
.
. . API, , , DOM-. , DOM- 150 , . , .
( ):
, , DOM- . , .
, send XMLHttpRequest.
. — . — !
, :
., " " → , " " → (, ). .
, src/grabTracksYandexMusic Enter.
.
.
P.S.: .
, .
Apple Music
, , . DOM, . , . , ..
, , . , src/grabTracksAppleMusic.js.
.
Spotify
, , Spotify.
Spotify API . . .
: https://developer.spotify.com/dashboard
"Create an app", . . Client ID Client Secret.
src/getSpotifyToken.js client_id client_secret. .
redirect_uri.
"Edit settings". "Redirect URIs", http://localhost:8888/callback
. "Save" .
!
tracks.txt, , . .
:
Slaughter To Prevail - Misery Sermon
Grim Christmas - Jingle Bells
Novembers Doom - Rain
: ./src/getSpotifyToken.js. Spotify .
:
node ./src/getSpotifyToken.js
Spotify. .
: access token: < > refresh token: < >.
. , .
src/addTracksToSpotify.js.
const accessToken = ''
. :
node ./src/addTracksToSpotify.js
.
( : - , , ).
spotify-tracks-no-found.txt, Spotify .
, , ( ).
artists.txt, .
.
:
Bob Dylan
Slaughter To Prevail
Novembers Doom
, , src/addArtistsToSpotify.js.
, :
node ./src/addTracksToSpotify.js
. - , spotify-artists-no-found.txt.
!
P.S.: , .
, Ctrl + A (Cmd + A). . .
! )