Metadata-Version: 1.1
Name: gmusicapi
Version: 3.0.0
Summary: An unofficial api for Google Play Music.
Home-page: http://pypi.python.org/pypi/gmusicapi/
Author: Simon Weber
Author-email: simon@simonmweber.com
License: Copyright (c) 2013, Simon Weber
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the copyright holder nor the
      names of the contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Description: gmusicapi: an unofficial API for Google Play Music
        ==================================================
        
        gmusicapi allows control of
        `Google Music <http://music.google.com>`__ with Python.
        
        .. code-block:: python
        
            from gmusicapi import Mobileclient
            
            api = Mobileclient()
            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.add_songs_to_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, like:
        
        -  Malcolm Still's `command line Google Music client <https://github.com/mstill/thunner>`__
           (`screenshot <http://i.imgur.com/Mwl0k.png>`__)
        -  Ryan McGuire's `GMusicFS <https://github.com/EnigmaCurry/GMusicFS>`__ - a FUSE
           filesystem linked to your music
        -  Kilian Lackhove's `Google Music support <https://github.com/crabmanX/google-music-resolver>`__
           for http://www.tomahawk-player.org
        -  `Mario Di Raimondo <https://github.com/diraimondo>`__'s `Google Music http proxy for mediaplayers <http://gmusicproxy.net>`__
        -  `@thebigmunch <https://github.com/thebigmunch>`__'s `syncing scripts <https://github.com/thebigmunch/gmusicapi-scripts>`__
        -  Tom Graham's `playlist syncing tool <https://github.com/Tyris/m3uGoogleMusicSync>`__
        
        
        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
        <http://webchat.freenode.net/?channels=gmusicapi>`__ or shoot me an email.
        
        Status and updates
        ------------------
        
        .. image:: https://travis-ci.org/simon-weber/Unofficial-Google-Music-API.png?branch=develop
                :target: https://travis-ci.org/simon-weber/Unofficial-Google-Music-API
        
        Over the summer, gmusicapi began a major shift away from the Webclient interface.
        That's finished now, so prefer the new Mobileclient interface whenever possible.
        Non-deprecated parts of the Webclient are listed at
        `the Webclient documentation page
        <http://unofficial-google-music-api.readthedocs.org/en/latest/reference/webclient.html>`__.
        
        I've started fulltime work at Venmo as of November, meaning this project is back to
        night and weekend development.
        
        For fine-grained development updates, follow me on Twitter:
        `@simonmweber <https://twitter.com/simonmweber>`__.
        
        ------------
        
        Copyright 2013 `Simon Weber <http://www.simonmweber.com>`__.
        Licensed under the 3-clause BSD. See LICENSE.
        
        .. image:: https://cruel-carlota.pagodabox.com/68a92ecf6b6590372f435fb2674d072e
        
        
        .. :changelog:
        
        History
        -------
        
        As of 1.0.0, `semantic versioning <http://semver.org/>`__ is used.
        
        3.0.0
        +++++
        released 2013-11-03
        
        - Musicmanager.get_all_songs is now Musicmanager.get_uploaded_songs
        - Mobileclient.get_all_playlist_contents is now Mobileclient.get_all_user_playlist_contents, and will no longer return results for subscribed playlists
        - add Mobileclient.get_shared_playlist_contents
        - add Mobileclient.reorder_playlist_entry
        - add Mobileclient.change_song_metadata
        - add Mobileclient.get_album_info
        - add Mobileclient.get_track_info
        - add Mobileclient.get_genres
        - compatibility fixes
        
        
        2.0.0
        +++++
        released 2013-08-01
        
        - remove broken Webclient.{create_playlist, change_playlist, copy_playlist, search, change_playlist_name}
        - add Mobileclient; this will slowly replace most of the Webclient, so prefer it when possible
        - add support for streaming All Access songs
        - add Webclient.get_registered_devices
        - add a toggle to turn off validation per client
        - raise an exception when a song dictionary is passed instead of an id
        
        1.2.0
        +++++
        released 2013-05-16
        
        - add support for listing/downloading songs with the Musicmanager.
          When possible, this should be preferred to the Webclient's method, since
          it does not have a download quota.
        - fix a bug where the string representing a machine's mac 
          was not properly formed for use as an uploader_id.
          This will cause another machine to be registered for some users;
          the old device can be identified from its lack of a version number.
        - verify user-provided uploader_ids
        
        1.1.0
        +++++
        released 2013-04-19
        
        - get_all_songs can optionally return a generator
        - compatibility updates for AddPlaylist call
        - log to appdirs.user_log_dir by default
        - add open_browser param to perform_oauth
        
        1.0.0
        +++++
        released 2013-04-02
        
        - breaking: Api has been split into Webclient and Musicmanager
        - breaking: semantic versioning (previous 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
          <https://unofficial-google-music-api.readthedocs.org/en/
          latest/reference/api.html#gmusicapi.api.Api.upload_album_art>`__)
        
        - 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
          <https://unofficial-google-music-api.readthedocs.org/en/
          latest/reference/api.html#gmusicapi.api.Api.__init__>`__)
        
        - 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 <http://labix.org/python-dateutil>`__
        
        2013.02.09
        ++++++++++
        
        - breaking: upload returns a 3-tuple (`docs
          <https://unofficial-google-music-api.readthedocs.org/en
          /latest/#gmusicapi.api.Api.upload>`__)
        
        - breaking: get_all_playlist_ids always returns lists of ids; remove always_id_lists option
          (`docs <https://unofficial-google-music-api.readthedocs.org/en
          /latest/#gmusicapi.api.Api.get_all_playlist_ids>`__)
        
        - breaking: remove suppress_failure option in Api.__init__
        - breaking: copy_playlist ``orig_id`` argument renamed to ``playlist_id`` (`docs
          <https://unofficial-google-music-api.readthedocs.org/en
          /latest/#gmusicapi.api.Api.copy_playlist>`__)
        
        - new: report_incorrect_match (only useful for Music Manager uploads) (`docs
          <https://unofficial-google-music-api.readthedocs.org/en
          /latest/#gmusicapi.api.Api.report_incorrect_match>`__)
        
        - 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
        
Platform: UNKNOWN
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 2.7
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: BSD License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Multimedia :: Sound/Audio
Classifier: Topic :: Software Development :: Libraries :: Python Modules
