Skip to content

Commit 12a318a

Browse files
Andrey YantsenHellowlol
authored andcommitted
Add a method to request a claim token (#287)
* add MyPlexAccount.claimToken() * improve docstring for MyPlexAccount.claimToken()
1 parent 93ec86d commit 12a318a

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

plexapi/myplex.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -478,6 +478,19 @@ def sync(self, sync_item, client=None, clientId=None):
478478

479479
return SyncItem(self, data, None, clientIdentifier=client.clientIdentifier)
480480

481+
def claimToken(self):
482+
""" Returns a str, a new "claim-token", which you can use to register your new Plex Server instance to your
483+
account.
484+
See: https://hub.docker.com/r/plexinc/pms-docker/, https://www.plex.tv/claim/
485+
"""
486+
response = self._session.get('https://plex.tv/api/claim/token.json', headers=self._headers(), timeout=TIMEOUT)
487+
if response.status_code not in (200, 201, 204): # pragma: no cover
488+
codename = codes.get(response.status_code)[0]
489+
errtext = response.text.replace('\n', ' ')
490+
log.warning('BadRequest (%s) %s %s; %s' % (response.status_code, codename, response.url, errtext))
491+
raise BadRequest('(%s) %s %s; %s' % (response.status_code, codename, response.url, errtext))
492+
return response.json()['token']
493+
481494

482495
class MyPlexUser(PlexObject):
483496
""" This object represents non-signed in users such as friends and linked

tests/test_myplex.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,7 @@ def test_myplex_plexpass_attributes(account_plexpass):
165165
assert 'premium_music_metadata' in account_plexpass.subscriptionFeatures
166166
assert 'plexpass' in account_plexpass.roles
167167
assert set(account_plexpass.entitlements) == utils.ENTITLEMENTS
168+
169+
170+
def test_myplex_claimToken(account):
171+
assert account.claimToken().startswith('claim-')

0 commit comments

Comments
 (0)