Giter Club home page Giter Club logo

gpm-to-spotify's Introduction

Google Play Music to Spotify Playlist Transfer Tool Ultimate 3000 Edition

2021 Update: SongShift is now available and mostly free and very good so I recommend using that instead. This repo is no longer maintained.

This Python script will transfer your GPM playlists to Spotify. I wrote this for three main reasons:

  1. I was moving to Spotify and there was no way I would transfer 4000 songs by hand
  2. Couldn't find anything open source that actually did this
  3. Anything that claimed to do this cost money and was not trustworthy

This runs locally and absolutely zero information is sent to me or anyone else. Hopefully this saves someone time and money.

Requirements

  • Python 3.7
  • Pipenv
  • A GPM and Spotify account

Setup

  1. Go to the developer page, make an app/client_id. Add your redirect URL as http://localhost/
  2. mv .env.example .env
  3. Populate .env with client_id, secret, redirect url, and username (found when you login online)

Usage

pipenv install
pipenv run python3 main.py

You may want to redirect output to a file. This spits out a ton of logs to stdout. Up to you.

pipenv run python3 main.py >main.log

Transferring thumbs up to library

GPM and Spotify have a similar way of storing "liked" music but it requires a different way to process it.

Heres a quick way to transfer it:

  1. Play your thumbs up playlist
  2. Open the queue, save queue to a playlist
  3. Note the name you gave it, enter it below
pipenv run python3 thumbs_up.py [name of thumbs up playlist]

Albums

pipenv run python3 albums.py

Todo

When I have time I will make this a single executable and rewrite things with reusable classes, also will get rid of pipenv because the devs cannot improve its slow speed.

Known Issues

Spotify doesn't care about unique playlist names. You can have duplicates so be aware if you run this multiple times.

This will not transfer songs that were uploaded. Spotify does not offer cloud storage. Uploaded songs will be a line item in errored-tracks.log as the playlist name (since there is no song name to get)

If songs are missing, it's likely they don't exist on Spotify. Its also possible it was not found by search because it relies on the songs having the same name structure. Check errored-tracks.log and search them manually.

Spotify seems to give random 500s, can't do much about it. Seems to be rare. The script will write the failed tracks to errored-tracks.log

You might hit a rate limit. I tried on a premium account with thousands of songs and was okay.

There might be issues with GPM and playlists with over 1k songs. This has not been tested

Feel free to fork and/or open a GH issue

Thanks

gmusicapi

spotipy

python-dotenv

gpm-to-spotify's People

Contributors

dependabot[bot] avatar effleurager avatar iloveicedgreentea avatar nicou avatar rajiteh avatar srbrills avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

gpm-to-spotify's Issues

Functionality Question

Great idea for this project. Thanks for doing it for the open-source community.

I have a few questions about what's transferred from GMP to Spotify.

Does this transfer:

  1. Playlist
  2. Artists
  3. Albums

GPM has a 'Songs' section in the library, Spotify does not. Does this get transferred somehow or left out?

It appears that some services only transfer playlists but I'm looking for all 3 items above. Please let me know, I am eager to make the switch to Spotify.

Again, thanks for all your hard work. I appreciate it!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.