GithubHelp home page GithubHelp logo

poanchen / google-play-music-playlist-exporter Goto Github PK

View Code? Open in Web Editor NEW
7.0 3.0 1.0 2.66 MB

A Google Chrome Extension that will help user to export their playlist and allowing potential import into other music service (such as Spotify) with a click of a button.

License: MIT License

JavaScript 91.24% CSS 0.21% HTML 3.39% Shell 5.16%

google-play-music-playlist-exporter's Introduction

google-play-music-playlist-exporter v0.0.1

A Google Chrome Extension that will help user to export their playlist and allowing potential import into other music service (such as Spotify) with a click of a button.

Demo

Loading the first image

Why is this useful?

It can be tough/uneasy to manually move all your favorite music in your playlist from one service to another one. To make user's life a lot easier. This Google Chrome Extension will help user to export their music playlist with a click of a button.

Getting Started

Installation

git clone https://github.com/poanchen/google-play-music-playlist-exporter.git
cd google-play-music-playlist-exporter

Next, if you are on Mac OSX or Linux. Run the downloadImmutableJS bash script, (to download the ImmutableJS script)

./downloadImmutableJS.sh

Otherwise, you must download the immutableJS library from https://cdnjs.cloudflare.com/ajax/libs/immutable/3.8.1/immutable.min.js and save it into the directory.

Then, you must manually add the Chrome Extension in your Chrome.

Disclaimer

Some of the code was derived and inspired from export_google_music.js by jmiserez.

google-play-music-playlist-exporter's People

Contributors

dfrencham avatar poanchen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

dfrencham

google-play-music-playlist-exporter's Issues

Spotify normally put feat artist name as part of the artist

For example song Latch by Disclosure feat by Sam Smith with album go by Settle has difference format in Google Play Music and Spotify.

In Google Play Music, it goes by this
Title: Latch (feat. Sam Smith)
Artist: Disclosure
Album: Settle

In Spotify, it goes by this
Title: Latch
Artist: Disclosure, Sam Smith
Album: Settle

Playlist in Spotify Empty

Firstly, great idea!

I tried to use it and the extension detects the songs and creates a playlist in sportify with a correct name, but sadly, it is empty.
Any ideas if I'm doing anything wrong?

[WARNING] TypeError: Cannot read property 'uri' of undefined

(copied directly from #1)

I found that [WARNING] TypeError: Cannot read property 'uri' of undefined is happening because of the upper problem.
It seems like there is an issue with reading the large number of songs (like your case), and the song's title is wrong which lead to the search failure. If the search fails, the array that contains the information of the songs will not have the field which leads to undefined of the uri field. (it would have been fine if the search was okay). I am still looking into it to fix it.

Index for title, artist, album should be determined before assigning

(copied directly from #1)

A bit more investigation on this, wrong reading of songs where it thought the song duration is the title of the song could be caused by the code in content.js.
songs = songs.set(id, Immutable.Map({ title: songsFromPlaylistInHtml[i].childNodes[1].textContent.trim(), artist: songsFromPlaylistInHtml[i].childNodes[3].textContent.trim(), album: songsFromPlaylistInHtml[i].childNodes[4].textContent.trim() }));
In the code, we simply assume that index 1 is the title, index 3 is the artist, and index 4 is the album. However, what we should really do here is to determine the order first and then use it. (so that the index of the attribute will be dynamic instead of hard-coded which will probably solve your problem.

song format with multiple (feat) artist

song does not work well when
ArtistA & ArtistB where should be ArtistA, ArtistB
ArtistA feat. ArtistB where should be ArtistA, ArtistB
ArtistA, ArtistA, ArtistB, ArtistC, ArtistB where duplicates should omitted.

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.