Skip to main content

An unofficial api for Google Play Music.

Project description

gmusicapi allows control of Google Music with Python.

from gmusicapi import Webclient

api = Webclient()
api.login('user@gmail.com', 'my-password')
# => True

library = api.get_all_songs()
sweet_tracks = [track for track in library if track['artist'] == 'The Cat Empire']

playlist_id = api.create_playlist('Rad muzak')
api.change_playlist(playlist_id, sweet_tracks)

gmusicapi is not supported nor endorsed by Google.

That said, it’s actively maintained, and used in a bunch of cool projects:

Getting started

Everything you need is at http://unofficial-google-music-api.readthedocs.org.

If the documentation doesn’t answer your questions, or you just want to get in touch, either drop by #gmusicapi on Freenode or shoot me an email.

Status and updates

https://travis-ci.org/simon-weber/Unofficial-Google-Music-API.png?branch=develop

Version 1.0.0 splits the previous Api interface into Webclient and Musicmanager. See https://unofficial-google-music-api.readthedocs.org/en/latest/usage.html#quickstart for help with the new interfaces.

For updates, follow me on Twitter: @simonmweber.


Copyright 2013 Simon Weber. Licensed under the 3-clause BSD. See LICENSE.

https://cruel-carlota.pagodabox.com/68a92ecf6b6590372f435fb2674d072e

History

As of 1.0.0, semantic versioning is used.

1.0.0

  • breaking: Api has been split into Webclient and Musicmanager

  • breaking: semantic versioning (previously versions removed from PyPi)

  • Music Manager OAuth support

  • faster uploading when matching is disabled

  • faster login

2013.03.04

  • add artistMatchedId to metadata

  • tests are no longer a mess

2013.02.27

  • add support for uploading album art (docs)

  • add support for .m4b files

  • add CancelUploadJobs call (not exposed in api yet)

  • Python 2.6 compatibility

  • reduced peak memory usage when uploading

  • logging improvements

  • improved error messages when uploading

2013.02.15

  • user now controls logging (docs)

  • documentation overhaul

2013.02.14

  • fix international logins

2013.02.12

  • fix packaging issues

2013.02.11

  • improve handling of strange metadata when uploading

  • add a dependency on dateutil

2013.02.09

  • breaking: upload returns a 3-tuple (docs)

  • breaking: get_all_playlist_ids always returns lists of ids; remove always_id_lists option (docs)

  • breaking: remove suppress_failure option in Api.__init__

  • breaking: copy_playlist orig_id argument renamed to playlist_id (docs)

  • new: report_incorrect_match (only useful for Music Manager uploads) (docs)

  • uploading fixed

  • avconv replaces ffmpeg

  • scan and match is supported

  • huge code improvements

2013.01.05

  • compatibility update for playlist mutation

  • various metadata compatibility updates

2012.11.09

  • bugfix: support for uploading uppercase filenames (Tom Graham)

  • bugfix: fix typo in multidownload validation, and add test

2012.08.31

  • metadata compatibility updates (storeId, lastPlayed)

  • fix uploading of unicode filenames without tags

2012.05.04

  • update allowed rating values to 1-5 (David Dooling)

  • update metajamId to matchedId (David Dooling)

  • fix broken expectation about disc/track numbering metadata

2012.04.03

  • change to the 3-clause BSD license

  • add Kevin Kwok to AUTHORS

2012.04.01

  • improve code in example.py

  • support uploading of all Google-supported formats: m4a, ogg, flac, wma, mp3. Non-mp3 are transcoded to 320kbs abr mp3 using ffmpeg

  • introduce dependency on ffmpeg. for non-mp3 uploading, it needs to be in path and have the needed transcoders available

  • get_playlists is now get_all_playlist_ids, and is faster

  • add an exception CallFailure. Api functions raise it if the server says their request failed

  • add suppress_failure (default False) option to Api.__init__()

  • change_playlist now returns the changed playlistId (pid)

  • change_song_metadata now returns a list of changed songIds (sids)

  • create_playlist now returns the new pid

  • delete_playlist now returns the deleted pid

  • delete_songs now returns a list of deleted sids

  • change_playlist now returns the pid of the playlist - which may differ from the one passed in

  • add_songs_to_playlist now returns a list of (sid, new playlistEntryId aka eid) tuples of added songs

  • remove_songs_from_playlist now returns a list of removed (sid, eid) pairs

  • search dictionary is now flattened, without the “results” key. see documentation for example

2012.03.27

  • package for pip/pypi

  • add AUTHORS file

  • remove session.py; the sessions are now just api.PlaySession (Darryl Pogue)

  • protocol.Metadata_Expectations.get_expectation will return UnknownExpectation when queried for unknown keys; this should prevent future problems

  • add immutable ‘subjectToCuration’ and ‘metajamId’ fields - use unknown

2012.03.16

  • add change_playlist for playlist modifications

  • get_playlists supports multiple playlists of the same name by returning lists of playlist ids. By default, it will return a single string (the id) for unique playlist names; see the always_id_lists parameter.

  • api.login now attempts to bump Music Manager authentication first, bypassing browser emulation. This allows for much faster authentication.

  • urls updated for the change to Google Play Music

  • remove_songs_from_playlist now takes (playlist_id, song_ids), for consistency with other playlist mutations

2012.03.04

  • change name to gmusicapi to avoid ambiguity

  • change delete_song and remove_song_from_playlist to delete_songs and remove_songs_from_playlist, for consistency with other functions

  • add verification of WC json responses

  • setup a sane branch model. see http://nvie.com/posts/a-successful-git-branching-model/

  • improve logging

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gmusicapi-1.0.0.tar.gz (311.6 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page