Skip to content
This repository has been archived by the owner on Jan 22, 2022. It is now read-only.

gmusicapi.exceptions.CallFailure: GetStreamUrl: 403 Client Error: Forbidden for url: https://mclients.googleapis.com/music/mplay ... #664

Closed
d3v-null opened this issue Apr 13, 2020 · 4 comments

Comments

@d3v-null
Copy link

d3v-null commented Apr 13, 2020

Hey there!

I've been using the MobileClient.get_stream_url functionality of your awesome api in my little song caching script. It was working fantastically until some time in the last month, and I suspect it's a change on Google's side. I wanted to see if anyone else was having any issues, and see if it's worth putting on my reverse engineering hat to try and figure it out. Otherwise, If someone's already working on it, please let me know if there's any way I can be of assistance.

Here's the traceback:

04-13 10:28 root         INFO     caching song: id Tllmyxxg5hv4wrxe7nd6i6hobvq; artist Odd Mob; album Is It A Banger? [2015]; title 01:01 - Is It A Banger?; path /Users/derwent/Music/iTunes/iTunes Media/Automatically Add to iTunes/0101  Is It A Banger.mp3
04-13 10:28 gmusicapi.Mobileclient1 DEBUG    GetStreamUrl(args=['Tllmyxxg5hv4wrxe7nd6i6hobvq', '<omitted 64 char device id>', 'hi'], kwargs={'required_auth': [False, False, True, False]})
04-13 10:28 urllib3.connectionpool DEBUG    https://mclients.googleapis.com:443 "GET /music/mplay?opt=hi&net=mob&pt=e&slt=1586737728993&sig=o3TLADoGRR3aNuyZsIv1KIoIISY&mjck=Tllmyxxg5hv4wrxe7nd6i6hobvq&hl=en_US&dv=0&tier=aa HTTP/1.1" 403 None
04-13 10:28 root         WARNING  failed to get streaming url, try updating your device id: https://github.com/simon-weber/gmusicapi/issues/590
Traceback (most recent call last):
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/protocol/shared.py", line 216, in perform
    response.raise_for_status()
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
    raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 403 Client Error: Forbidden for url: https://mclients.googleapis.com/music/mplay?opt=hi&net=mob&pt=e&slt=1586737728993&sig=o3TLADoGRR3aNuyZsIv1KIoIISY&mjck=Tllmyxxg5hv4wrxe7nd6i6hobvq&hl=en_US&dv=0&tier=aa

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/Users/derwent/Documents/GitHub/gpm-cache/gpm_cache/core.py", line 248, in cache_playlist
    filename = cache_track(api, parser_args, track_info, cached_playlist)
  File "/Users/derwent/Documents/GitHub/gpm-cache/gpm_cache/core.py", line 203, in cache_track
    cache_url = api.get_stream_url(track_info.track_id)
  File "</Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/decorator.py:decorator-gen-104>", line 2, in get_stream_url
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/utils/utils.py", line 288, in wrapper
    return function(*args, **kw)
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/clients/mobileclient.py", line 457, in get_stream_url
    return self._make_call(mobileclient.GetStreamUrl, song_id, device_id, quality)
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/clients/mobileclient.py", line 43, in _make_call
    return super()._make_call(protocol, *args, **kwargs)
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/clients/shared.py", line 83, in _make_call
    return protocol.perform(self.session, self.validate, *args, **kwargs)
  File "/Users/derwent/.pyenv/versions/3.7.2/lib/python3.7/site-packages/gmusicapi/protocol/shared.py", line 224, in perform
    raise CallFailure(err_msg, call_name)
gmusicapi.exceptions.CallFailure: GetStreamUrl: 403 Client Error: Forbidden for url: https://mclients.googleapis.com/music/mplay?opt=hi&net=mob&pt=e&slt=1586737728993&sig=o3TLADoGRR3aNuyZsIv1KIoIISY&mjck=Tllmyxxg5hv4wrxe7nd6i6hobvq&hl=en_US&dv=0&tier=aa
(requests kwargs: {'method': 'GET', 'url': 'https://mclients.googleapis.com/music/mplay', 'allow_redirects': False, 'headers': {'X-Device-ID': '<omitted 64 char device id>', 'Authorization': '<omitted>'}, 'params': {'opt': 'hi', 'net': 'mob', 'pt': 'e', 'slt': '1586737728993', 'sig': b'o3TLADoGRR3aNuyZsIv1KIoIISY', 'mjck': 'Tllmyxxg5hv4wrxe7nd6i6hobvq', 'hl': 'en_US', 'dv': 0, 'tier': 'aa'}})
(response was: '<HTML>\n<HEAD>\n<TITLE>Forbidden</TITLE>\n</HEAD>\n<BODY BGCOLOR="#FFFFFF" TEXT="#000000">\n<H1>Forbidden</H1>\n<H2>Error 403</H2>\n</BODY>\n</HTML>\n')

If I let it continue, it does this for every song in the playlist.

if it helps, here is the track info for the track.

{
             'absolutePosition': '01159547490265507015',
             'clientId': 'a6461b9c-ac9d-4956-b05a-b316eb7c0fdc',
             'creationTimestamp': '1580465509554346',
             'deleted': False,
             'id': '8f51b507-08be-37a0-927e-298a42016ec7',
             'kind': 'sj#playlistEntry',
             'lastModifiedTimestamp': '1586224110398485',
             'playlistId': '6be97b76-998f-4f5e-b602-c109fce8fa0d',
             'source': '2',
             'track': {'album': 'Is It A Banger?',
                       'albumArtRef': [{'aspectRatio': '1',
                                        'autogen': False,
                                        'kind': 'sj#imageRef',
                                        'url': 'http://lh3.googleusercontent.com/sxJQQ5Vwbss4h2E8HSnann5Y4aqN-xqzdgmn8a9sICIWxOfrJX1IObSpH3_Ye-23kDbKCcy7ze0'}],
                       'albumArtist': 'Odd Mob',
                       'albumAvailableForPurchase': False,
                       'albumId': 'Bivn2zc6zzulgdisa5yy622nykq',
                       'artist': 'Odd Mob',
                       'artistArtRef': [{'aspectRatio': '2',
                                         'autogen': True,
                                         'kind': 'sj#imageRef',
                                         'url': 'http://lh3.googleusercontent.com/aDG3uGrKiyVAd-dkMkTJBN6zWYtw6O4zfUL6DMOZ35qO5ZJ_rPaQozksuP6aQpDqbSX2r5HfTA'},
                                        {'aspectRatio': '1',
                                         'autogen': True,
                                         'kind': 'sj#imageRef',
                                         'url': 'http://lh3.googleusercontent.com/sxJQQ5Vwbss4h2E8HSnann5Y4aqN-xqzdgmn8a9sICIWxOfrJX1IObSpH3_Ye-23kDbKCcy7ze0'}],
                       'artistId': ['Aodpk4xesffd6ndqs7tgng24vfu'],
                       'composer': '',
                       'discNumber': 1,
                       'durationMillis': '223000',
                       'estimatedSize': '8947498',
                       'explicitType': '2',
                       'genre': 'Dance/Electronic',
                       'kind': 'sj#track',
                       'lastRatingChangeTimestamp': '1580465498046000',
                       'nid': 'llmyxxg5hv4wrxe7nd6i6hobvq',
                       'rating': '5',
                       'storeId': 'Tllmyxxg5hv4wrxe7nd6i6hobvq',
                       'title': 'Is It A Banger?',
                       'trackAvailableForPurchase': True,
                       'trackAvailableForSubscription': True,
                       'trackNumber': 1,
                       'trackType': '7',
                       'year': 2015},
             'trackId': 'Tllmyxxg5hv4wrxe7nd6i6hobvq'}

The API works fine for listing playlist entries and everything else.

I don't think this is a duplicate of #590 since I'm using oauth login, and I've tried each of the possible device IDs listed in api.get_registered_devices .

I also tried deleting my oauth credentials and logging in again from scratch.

I was on gmusicapi v12.0.0, but the issue persisted when I upgraded to v13.0.0

tail /Users/derwent/Library/Logs/gmusicapi/gmusicapi.log

!-- begin debug log --!
version: 13.0.0
logging to: /Users/derwent/Library/Logs/gmusicapi/gmusicapi.log
2020-04-13 10:27:31,953 - gmusicapi.Mobileclient1 (shared:73) [INFO]: initialized
2020-04-13 10:27:31,953 - gmusicapi.Mobileclient1 (shared:97) [INFO]: logged out
2020-04-13 10:27:32,241 - gmusicapi.Mobileclient1 (shared:183) [INFO]: oauth successful
2020-04-13 10:27:32,327 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: GetDeviceManagementInfo(args=[], kwargs={'required_auth': [False, False, True, False]})
2020-04-13 10:27:32,878 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#userClientIdList', 'data': {'items': [{'kind': 'sj#devicemanagementinfo', 'id': '0x3722f1e349867c4b', 'friendlyName': 'Telstra Pixel 2 XL', 'type': 'ANDROID', 'lastAccessedTimeMs': '1586736457755'}, {'kind': 'sj#devicemanagementinfo', 'id': '<omitted 64 char device id>', 'type': 'DESKTOP_APP', 'lastAccessedTimeMs': '1586734233880'}, {'kind': 'sj#devicemanagementinfo', 'id': '<ommitted, a different 64 char device id>', 'type': 'DESKTOP_APP', 'lastAccessedTimeMs': '1586687231130'}, {'kind': 'sj#devicemanagementinfo', 'id': '<ommitted, a different 16 char device id>', 'friendlyName': 'No carrier Nexus 7', 'type': 'ANDROID', 'lastAccessedTimeMs': '1578032365230'}, {'kind': 'sj#devicemanagementinfo', 'id': '<omitted, a different 64 char device id>', 'type': 'DESKTOP_APP', 'lastAccessedTimeMs': '1570032083226'}, {'kind': 'sj#devicemanagementinfo', 'id': '<omitted, a different 64 char device id>', 'type': 'DESKTOP_APP', 'lastAccessedTimeMs': '1558540813774'}]}}
2020-04-13 10:27:32,878 - gmusicapi.Mobileclient1 (mobileclient:139) [INFO]: authenticated
2020-04-13 10:27:32,879 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: Config(args=[], kwargs={'required_auth': [False, False, True, False]})
2020-04-13 10:27:33,032 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#configList', 'data': {'entries': [{'kind': 'sj#configEntry', 'key': 'canManageFP', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'shouldShowLocalSuggestions', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'purchaseAccess', 'value': '3'}, {'kind': 'sj#configEntry', 'key': 'sideloadedPlaybackLogging', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isWarmWelcomeDisabledForWoodstock', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'forceSignupFlow', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isNautilusUser', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isLNEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'canCancelSubscription', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'ytContent', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'nashvillebg', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'partridgeAccess', 'value': '2'}, {'kind': 'sj#configEntry', 'key': 'isVsAvailable', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'canBrowseSt', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'warmWelcomeButtonText', 'value': 'LISTEN_NOW'}, {'kind': 'sj#configEntry', 'key': 'appstoreRatingPrompt', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'nautilusExpirationTimeMs', 'value': '1587824926064'}, {'kind': 'sj#configEntry', 'key': 'isTrAvailable', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isInAppMessageEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'disableInfoCardsOnDayOne', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'partridgeUpsellTitle', 'value': 'Unlimited music for you and your family'}, {'kind': 'sj#configEntry', 'key': 'canRC', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'nuqRequiredForWsSignup', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'searchClusterResponseEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableWsExtras', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'accountType', 'value': 'Unlimited, Individual'}, {'kind': 'sj#configEntry', 'key': 'topListMaxSize', 'value': '500'}, {'kind': 'sj#configEntry', 'key': 'manageFPBackendId', 'value': '2'}, {'kind': 'sj#configEntry', 'key': 'partridgeUpsellBody', 'value': 'Subscribe to Google Play Music family plan to give up to 6 people access to millions of songs, ad-free, for just A$17.99/month.'}, {'kind': 'sj#configEntry', 'key': 'isSuggestRequestEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'showLMark', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'conciergeListenNow', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'minimumAppStartCountForFreeUpsell', 'value': '6'}, {'kind': 'sj#configEntry', 'key': 'experimentIdsToLog', 'value': '12600326,12600335,12600357,12600390,12600394,12600397,12600426,12600428,12600430,12600445,12600465,12600466,12600467,12600506,12600526,12600530,12600533,12600536,12602068,12604244,12604245,12604246,12611729,12612188,12612209,12612247,12616614,12616615,12617467,12619023,12619033,12619127,12620830,12625361,12625500,12625941,12626008,12626945,12627951,12628654,12629142,12629667,12630065,12630209,12631091,12632064,12632720,12633320,12634000,12635213,12636020,12641836,12641837,12642011,12642809,12643537,12648818,12649047,12650284,12650285,12652170,12653224,12653393,12653567,12655808,12656567,12657925,12658555,12658847,12660587,12664007,12664178,12664317,12664580,12667660,12669086,12669482,12671098,12671859,12673278,20350006'}, {'kind': 'sj#configEntry', 'key': 'isExplicitRestrictedByPControl', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isAnyServiceAvailable', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'pieDayOneCard', 'value': 'NO_EXPERIMENT'}, {'kind': 'sj#configEntry', 'key': 'showYoutubeRedInfoCard', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isAcceptedUser', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'appStartCountForFreeUpsell', 'value': '250'}, {'kind': 'sj#configEntry', 'key': 'concListenNow', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'wsAccess', 'value': '1'}, {'kind': 'sj#configEntry', 'key': 'instantSearchDelay', 'value': '300'}, {'kind': 'sj#configEntry', 'key': 'isPodcastSyncEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'topListUpdatePeriodSeconds', 'value': '604800'}, {'kind': 'sj#configEntry', 'key': 'isSuggestDeletionEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'androidTvEntityPageSize', 'value': '10'}, {'kind': 'sj#configEntry', 'key': 'shouldShowServerSuggestions', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'situationsResponseTTLMinutes', 'value': '30'}, {'kind': 'sj#configEntry', 'key': 'isPlSharingEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isFoplessNautilusUser', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'showLNInSettings', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'appStartCountForFreeUpsellRevisionNumber', 'value': '1459804296734'}, {'kind': 'sj#configEntry', 'key': 'mgRPB', 'value': 'Improve your recommendations'}, {'kind': 'sj#configEntry', 'key': 'mgRPBDesc', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'ytSubscriptionAccess', 'value': '3'}, {'kind': 'sj#configEntry', 'key': 'partridgeUpsellCallToAction', 'value': 'LEARN MORE'}, {'kind': 'sj#configEntry', 'key': 'partridgeManagement', 'value': '2'}, {'kind': 'sj#configEntry', 'key': 'manageFPBackendDocId', 'value': 'Scyaaaaaa'}, {'kind': 'sj#configEntry', 'key': 'isDeviceVersionBlacklisted', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'shouldEnableThriller', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'minimumGsaVersionRequiredForSoundSearch', 'value': '300407000'}, {'kind': 'sj#configEntry', 'key': 'topListPageSize', 'value': '100'}, {'kind': 'sj#configEntry', 'key': 'isHallmarkEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isSoundSearchEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'uploadAccess', 'value': '3'}, {'kind': 'sj#configEntry', 'key': 'suggestRequestDelayMillis', 'value': '150'}, {'kind': 'sj#configEntry', 'key': 'isNautilusAvailable', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'nautilusAccess', 'value': '3'}, {'kind': 'sj#configEntry', 'key': 'manageFPDocType', 'value': '15'}, {'kind': 'sj#configEntry', 'key': 'isQuizEnabledForWoodstockOnSignup', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'searchClientMaxResults', 'value': '100'}, {'kind': 'sj#configEntry', 'key': 'partridgeUpsellDismissal', 'value': 'NO THANKS'}, {'kind': 'sj#configEntry', 'key': 'hasPControlSettings', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isInstantSearchEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'hasNewUserQuizPermission', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'persistentSubscriptionTrackUserLimit', 'value': '100001'}, {'kind': 'sj#configEntry', 'key': 'shouldValidateMediaRoutes', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'mediaRoutePackageSignatures', 'value': '[{"packages": ["com.google.android.music", "com.google.android.setupwarlock", "com.google.android.gms"], "sha1s": ["38918A453D07199354F8B19AF05EC6562CED5788", "58E1C4133F7441EC3D2C270270A14802DA47BA0E"]}, {"packages": ["com.sonos.acr"], "sha1s": ["7387C9EB17CC5972F2B2FDF3E192884A78F24E7E", "62E2D848EF6FD0F8978F650D5DF9605786E26673", "9407A78494B106461537E1FC4E5D877E5ABCC7B3", "B6EA208733731F0CA8A123155830457C876130C4", "B703697E509B186616D83E978064A7A4F8D18775"]}]'}, {'kind': 'sj#configEntry', 'key': 'enableFallbackForShortUrls', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableStreamInterception', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableStructuredLogging', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableHttpsAlbumArt', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isUpgradeTempCacheForKeeponEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableCQ', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'castReceiverAppId', 'value': '2872939A'}, {'kind': 'sj#configEntry', 'key': 'iosHashCastAppContext', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableWoodstockCloudQueue', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableBackgroundDownloading', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableRadioDownloads', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosRadioDownloadsAlwaysUseDownloadedSongs', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosRadioDownloadsEagerRefill', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosRadioDownloadsBatchSize', 'value': '25'}, {'kind': 'sj#configEntry', 'key': 'iosRadioDownloadsReadyPercent', 'value': '80'}, {'kind': 'sj#configEntry', 'key': 'iosEnableGPMAudioPlayer', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosEnableGPMAudioPlayerFMP4', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableAndroidChromecastCloudQueue', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableAndroidChromecastCloudQueueWoodstock', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableAndroidDialCloudQueue', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableSonos', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableMpsOverride', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableReportAllPlayEventsInRealtime', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'askForNautilusCancellationReason', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'autoDogfoodStackCandidate', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableDGEvaluation', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableAdaptiveHome', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosEnableAdaptiveHome', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableOkHttp', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isSyncLoggingEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableOnePushSync', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableOnepushNew', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableGcmRegistrationNew', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'androidEnableEntitySuggest', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosEnableEntitySuggest', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'musicFeedbackLogs', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isPrimesOdysseyEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isPrimesClearcutEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isPrimesMemoryEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isPrimesLatencyLoggingEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosEnableStickyNav', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'androidEnableStickyNav', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'androidEnableAdaptiveHomeForMediaBrowser', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableFastFirstTrack2', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableDownloadLatencyLogging', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enablePlayQualityIcon', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableFmp4AacOnPlaybackV1', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableFmp4AacOnPlaybackV2', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'iosMinimumBackgroundFetchIntervalSeconds', 'value': '0'}, {'kind': 'sj#configEntry', 'key': 'syncExperimentsToLogViaSyncService', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableSilentFeedback', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'headphoneRecommendationNotification', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidEnableEntityBrowserForMediaBrowser', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'enableDynamicOffers', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'enableDynamicOffersWithCoupons', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'disableULRReportingiOS', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'iosForegroundLocationFetchTimeoutMs', 'value': '0'}, {'kind': 'sj#configEntry', 'key': 'isBtAutoplaySettingEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isWaitForSyncAfterSignupEnabled', 'value': 'true'}, {'kind': 'sj#configEntry', 'key': 'isPrimesCrashEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isPrimesPackageEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'androidMediaStoreMismatchRecovery', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'show_fake_fsi', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_title', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_body', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_background_url', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_logo_url', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_positive_action_text', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_positive_action_url', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'fake_fsi_dismissal_action_text', 'value': ''}, {'kind': 'sj#configEntry', 'key': 'redirect_get_nautilus_enabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isDownloadedOnlyModeToggleChangePingEnabled', 'value': 'false'}, {'kind': 'sj#configEntry', 'key': 'isDownloadedOnlyModeSessionStartPingEnabled', 'value': 'false'}]}}
2020-04-13 10:27:33,033 - gmusicapi.Mobileclient1 (mobileclient:144) [INFO]: subscribed
2020-04-13 10:27:33,035 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylists(args=[], kwargs={'start_token': None, 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:33,600 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistList', 'data': {'items': ['<225 playlists>']}}
2020-04-13 10:27:33,601 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': None, 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:35,883 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJ3y5szjt90CEOjY5szjt90C', 'data': {'items': ['<907 plentries>']}}
2020-04-13 10:27:35,884 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJ3y5szjt90CEOjY5szjt90C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:37,613 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKOqXwoLkt90CELea04Lkt90C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:37,615 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKOqXwoLkt90CELea04Lkt90C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:39,357 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJixxdLkt90CELePwNLkt90C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:39,359 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJixxdLkt90CELePwNLkt90C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:41,186 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKKu/6YTlt90CENPTy4Tlt90C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:41,188 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKKu/6YTlt90CENPTy4Tlt90C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:42,989 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKOvfr8jlt90CEM2jtcjlt90C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:42,990 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKOvfr8jlt90CEM2jtcjlt90C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:44,773 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKN3O2+PNud0CEN+myOPNud0C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:44,774 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKN3O2+PNud0CEN+myOPNud0C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:46,554 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKMGxso2xwt8CELerr42xwt8C', 'data': {'items': ['<985 plentries>']}}
2020-04-13 10:27:46,556 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKMGxso2xwt8CELerr42xwt8C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:48,411 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKMHwxbaFxd8CEIn95LaFxd8C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:48,412 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKMHwxbaFxd8CEIn95LaFxd8C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:50,150 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKO/rzoeuxd8CEOC/y4euxd8C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:50,151 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKO/rzoeuxd8CEOC/y4euxd8C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:51,940 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKPa30om3xd8CEIKayYm3xd8C', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:51,941 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKPa30om3xd8CEIKayYm3xd8C', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:53,741 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKP7n5u3jv+ACEJXl1u3jv+AC', 'data': {'items': ['<999 plentries>']}}
2020-04-13 10:27:53,742 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKP7n5u3jv+ACEJXl1u3jv+AC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:55,717 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKMiBxs7kv+ACELrexc7kv+AC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:55,718 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKMiBxs7kv+ACELrexc7kv+AC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:57,599 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKPbas5flv+ACEJf8mZflv+AC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:27:57,600 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKPbas5flv+ACEJf8mZflv+AC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:27:59,269 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKKDi6avH9+MCEK3m4KvH9+MC', 'data': {'items': ['<998 plentries>']}}
2020-04-13 10:27:59,270 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKKDi6avH9+MCEK3m4KvH9+MC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:01,167 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJu8g9LMwOQCEI2zstLMwOQC', 'data': {'items': ['<983 plentries>']}}
2020-04-13 10:28:01,168 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJu8g9LMwOQCEI2zstLMwOQC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:02,992 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKNifo5HiwuQCELPRlpHiwuQC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:02,993 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKNifo5HiwuQCELPRlpHiwuQC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:04,778 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKMja7bW/huUCEOmPwLW/huUC', 'data': {'items': ['<999 plentries>']}}
2020-04-13 10:28:04,779 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKMja7bW/huUCEOmPwLW/huUC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:06,640 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKKrDlNuNzeUCEL7ti9uNzeUC', 'data': {'items': ['<994 plentries>']}}
2020-04-13 10:28:06,641 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKKrDlNuNzeUCEL7ti9uNzeUC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:08,409 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKP3J+Ynyg+YCEICL04nyg+YC', 'data': {'items': ['<998 plentries>']}}
2020-04-13 10:28:08,410 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKP3J+Ynyg+YCEICL04nyg+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:10,189 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKPKkr6Xo2eYCELn1lKXo2eYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:10,191 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKPKkr6Xo2eYCELn1lKXo2eYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:11,960 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKI/79sC62uYCEP+34cC62uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:11,961 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKI/79sC62uYCEP+34cC62uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:13,866 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKLDXs6K92uYCEKyLlaK92uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:13,868 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKLDXs6K92uYCEKyLlaK92uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:15,765 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKOS6+ILE2uYCEJX38oLE2uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:15,766 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKOS6+ILE2uYCEJX38oLE2uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:17,509 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKMa3w+HJ2uYCEKPQ++HJ2uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:17,511 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKMa3w+HJ2uYCEKPQ++HJ2uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:19,338 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJL69OTK2uYCEIKd+OTK2uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:19,340 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJL69OTK2uYCEIKd+OTK2uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:21,359 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKKiqosLL2uYCELGTvMLL2uYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:21,360 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKKiqosLL2uYCELGTvMLL2uYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:23,405 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKNHjmsPt4+YCEKWHnsPt4+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:23,406 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKNHjmsPt4+YCEKWHnsPt4+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:25,212 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJqBiqju4+YCELXqvKju4+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:25,213 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJqBiqju4+YCELXqvKju4+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:27,080 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJGExoHv4+YCENPKzIHv4+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:27,081 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJGExoHv4+YCENPKzIHv4+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:28,893 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKKCK9Ir14+YCEP/j0Ir14+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:28,894 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKKCK9Ir14+YCEP/j0Ir14+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:30,767 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKK+L9MD14+YCEIyS/8D14+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:30,768 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKK+L9MD14+YCEIyS/8D14+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:32,703 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJn88/X14+YCEIvb/PX14+YC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:32,704 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJn88/X14+YCEIvb/PX14+YC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:34,842 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKM6A/aOP5OYCEN3+4qOP5OYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:34,843 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKM6A/aOP5OYCEN3+4qOP5OYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:36,636 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKIfV3vGP5OYCEMLP7vGP5OYC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:36,637 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKIfV3vGP5OYCEMLP7vGP5OYC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:38,434 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKOCCm83un+cCENODg83un+cC', 'data': {'items': ['<965 plentries>']}}
2020-04-13 10:28:38,436 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKOCCm83un+cCENODg83un+cC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:40,756 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKJ7js/+BoOcCEPWtg/+BoOcC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:40,757 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKJ7js/+BoOcCEPWtg/+BoOcC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:42,639 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKNnks6mqw+cCEIm0i6mqw+cC', 'data': {'items': ['<1000 plentries>']}}
2020-04-13 10:28:42,640 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKNnks6mqw+cCEIm0i6mqw+cC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:44,727 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'nextPageToken': 'MhYKCwoAKOuP2oyN4OgCEN/U/IyN4OgC', 'data': {'items': ['<968 plentries>']}}
2020-04-13 10:28:44,729 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: ListPlaylistEntries(args=[], kwargs={'start_token': 'MhYKCwoAKOuP2oyN4OgCEN/U/IyN4OgC', 'updated_after': None, 'max_results': 20000, 'required_auth': [False, False, True, False]})
2020-04-13 10:28:46,409 - gmusicapi.Mobileclient1 (shared:241) [DEBUG]: {'kind': 'sj#playlistEntryList', 'data': {'items': ['<157 plentries>']}}
2020-04-13 10:28:48,993 - gmusicapi.Mobileclient1 (shared:198) [DEBUG]: GetStreamUrl(args=['Tllmyxxg5hv4wrxe7nd6i6hobvq', '<omitted 64 char device id>', 'hi'], kwargs={'required_auth': [False, False, True, False]})

Thanks

@simon-weber
Copy link
Owner

Hm, I haven't heard of any new issues. What kind of device id are you using? CI is using an ios one (originally belonging to a real device) and still seems to be working so maybe that's worth a shot.

@simon-weber
Copy link
Owner

I also became aware of Google silently cancelling some subscriptions today, which could be relevant.

@d3v-null
Copy link
Author

Thanks for the reply @simon-weber , unfortunately I don't have an iOS device :( The device ID I'm using is an android one, it's a 64 char long hex string ( 1c65...bd3c ).

Guess I'll try my luck at using the webclient API.

And that's absolutely shocking how Google is carrying on. Have you used YouTube music? I haven't personally but I'm really not looking forward to being force onto the platform. The files have a lower bitrate (256kb instead of 320kb), and there isn't an obvious way to put my own tracks and playlists on there yet. It's just infuriating that they announced they were going to switch off GPM several years ago, but still haven't finished YouTube Music, so their solution is to just let GPM rot.

@d3v-null
Copy link
Author

OK, it seems to working again! I just went into my GPM app on my Android, looked at the name of the device that said "This Device", then looked up that name in the output of get_registered_devices. I'm pretty sure this is exactly what I was using before, but i'm just glad it's working again for now, and I don't need to boot up Android Studio to mitm the connection.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants