plex-api-client 0.1.1__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plex-api-client-0.1.1/src/plex_api_client.egg-info → plex-api-client-0.2.1}/PKG-INFO +18 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/README.md +17 -15
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/setup.py +1 -1
- plex-api-client-0.1.1/src/plex_api/security.py → plex-api-client-0.2.1/src/plex_api/authentication.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/__init__.py +2 -1
- plex-api-client-0.2.1/src/plex_api/models/errors/getstatistics.py +32 -0
- plex-api-client-0.2.1/src/plex_api/models/operations/__init__.py +64 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserverpreferences.py +9 -25
- plex-api-client-0.2.1/src/plex_api/models/operations/getstatistics.py +93 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/plex.py +2 -8
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sdk.py +14 -10
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sdkconfiguration.py +9 -8
- plex-api-client-0.2.1/src/plex_api/statistics.py +61 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/video.py +14 -14
- {plex-api-client-0.1.1 → plex-api-client-0.2.1/src/plex_api_client.egg-info}/PKG-INFO +18 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/SOURCES.txt +4 -1
- plex-api-client-0.1.1/src/plex_api/models/operations/__init__.py +0 -63
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/LICENSE.md +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/setup.cfg +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/__init__.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/activities.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/butler.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/hubs.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/library.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/log.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/media.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/__init__.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/components/__init__.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/components/security.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/addplaylistcontents.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/applyupdates.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/cancelserveractivities.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/checkforupdates.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/clearplaylistcontents.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/createplaylist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/deletelibrary.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/deleteplaylist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/enablepapertrail.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getavailableclients.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getbutlertasks.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getdevices.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getfilehash.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getglobalhubs.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibraries.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibrary.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibraryhubs.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmetadata.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmetadatachildren.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmyplexaccount.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getondeck.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getpin.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylistcontents.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylists.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getrecentlyadded.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getresizedphoto.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsearchresults.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserveractivities.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getservercapabilities.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserveridentity.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserverlist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserverpreferences.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsessionhistory.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsessions.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsourceconnectioninformation.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettimeline.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettoken.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettranscodesessions.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettransienttoken.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getupdatestatus.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/logline.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/logmultiline.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/markplayed.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/markunplayed.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/performsearch.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/performvoicesearch.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/refreshlibrary.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/sdkerror.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/startalltasks.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/starttask.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/startuniversaltranscode.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stopalltasks.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stoptask.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stoptranscodesession.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/updateplaylist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/updateplayprogress.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/uploadplaylist.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/addplaylistcontents.py +12 -12
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/applyupdates.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/cancelserveractivities.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/checkforupdates.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/clearplaylistcontents.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/createplaylist.py +16 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/deletelibrary.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/deleteplaylist.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/enablepapertrail.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getavailableclients.py +10 -10
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getbutlertasks.py +5 -5
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getdevices.py +6 -6
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getfilehash.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getglobalhubs.py +23 -23
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraries.py +17 -17
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibrary.py +14 -14
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraryhubs.py +53 -53
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraryitems.py +61 -61
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmetadata.py +67 -67
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmetadatachildren.py +26 -26
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmyplexaccount.py +8 -8
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getondeck.py +55 -55
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getpin.py +16 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylist.py +13 -13
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylistcontents.py +44 -44
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylists.py +14 -14
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getrecentlyadded.py +39 -39
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getresizedphoto.py +7 -7
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsearchresults.py +38 -38
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserveractivities.py +9 -9
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getservercapabilities.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserveridentity.py +3 -3
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserverlist.py +6 -6
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsessionhistory.py +15 -15
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsessions.py +16 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsourceconnectioninformation.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettimeline.py +16 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettoken.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettranscodesessions.py +20 -20
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettransienttoken.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getupdatestatus.py +7 -7
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/logline.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/logmultiline.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/markplayed.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/markunplayed.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/performsearch.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/performvoicesearch.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/refreshlibrary.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/searchlibrary.py +17 -17
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/startalltasks.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/starttask.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/startuniversaltranscode.py +16 -16
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stopalltasks.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stoptask.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stoptranscodesession.py +2 -2
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/updateplaylist.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/updateplayprogress.py +4 -4
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/uploadplaylist.py +8 -8
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/playlists.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/search.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/server.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sessions.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/updater.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/__init__.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/retries.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/utils.py +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/dependency_links.txt +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/requires.txt +0 -0
- {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: plex-api-client
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: Python Client SDK Generated by Speakeasy
|
|
5
5
|
Home-page: UNKNOWN
|
|
6
6
|
Author: LukeHagar
|
|
@@ -63,6 +63,11 @@ Description: # plexpy
|
|
|
63
63
|
* [mark_unplayed](docs/sdks/media/README.md#mark_unplayed) - Mark Media Unplayed
|
|
64
64
|
* [update_play_progress](docs/sdks/media/README.md#update_play_progress) - Update Media Play Progress
|
|
65
65
|
|
|
66
|
+
### [video](docs/sdks/video/README.md)
|
|
67
|
+
|
|
68
|
+
* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
|
|
69
|
+
* [start_universal_transcode](docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode
|
|
70
|
+
|
|
66
71
|
### [activities](docs/sdks/activities/README.md)
|
|
67
72
|
|
|
68
73
|
* [get_server_activities](docs/sdks/activities/README.md#get_server_activities) - Get Server Activities
|
|
@@ -124,10 +129,14 @@ Description: # plexpy
|
|
|
124
129
|
* [add_playlist_contents](docs/sdks/playlists/README.md#add_playlist_contents) - Adding to a Playlist
|
|
125
130
|
* [upload_playlist](docs/sdks/playlists/README.md#upload_playlist) - Upload Playlist
|
|
126
131
|
|
|
127
|
-
### [
|
|
132
|
+
### [authentication](docs/sdks/authentication/README.md)
|
|
133
|
+
|
|
134
|
+
* [get_transient_token](docs/sdks/authentication/README.md#get_transient_token) - Get a Transient Token.
|
|
135
|
+
* [get_source_connection_information](docs/sdks/authentication/README.md#get_source_connection_information) - Get Source Connection Information
|
|
128
136
|
|
|
129
|
-
|
|
130
|
-
|
|
137
|
+
### [statistics](docs/sdks/statistics/README.md)
|
|
138
|
+
|
|
139
|
+
* [get_statistics](docs/sdks/statistics/README.md#get_statistics) - Get Media Statistics
|
|
131
140
|
|
|
132
141
|
### [sessions](docs/sdks/sessions/README.md)
|
|
133
142
|
|
|
@@ -141,11 +150,6 @@ Description: # plexpy
|
|
|
141
150
|
* [get_update_status](docs/sdks/updater/README.md#get_update_status) - Querying status of updates
|
|
142
151
|
* [check_for_updates](docs/sdks/updater/README.md#check_for_updates) - Checking for updates
|
|
143
152
|
* [apply_updates](docs/sdks/updater/README.md#apply_updates) - Apply Updates
|
|
144
|
-
|
|
145
|
-
### [video](docs/sdks/video/README.md)
|
|
146
|
-
|
|
147
|
-
* [start_universal_transcode](docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode
|
|
148
|
-
* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
|
|
149
153
|
<!-- End Available Resources and Operations [operations] -->
|
|
150
154
|
|
|
151
155
|
<!-- Start Error Handling [errors] -->
|
|
@@ -162,6 +166,7 @@ Description: # plexpy
|
|
|
162
166
|
|
|
163
167
|
```python
|
|
164
168
|
import plex_api
|
|
169
|
+
from plex_api.models import errors
|
|
165
170
|
|
|
166
171
|
s = plex_api.PlexAPI(
|
|
167
172
|
access_token="<YOUR_API_KEY_HERE>",
|
|
@@ -172,10 +177,10 @@ Description: # plexpy
|
|
|
172
177
|
try:
|
|
173
178
|
res = s.server.get_server_capabilities()
|
|
174
179
|
except errors.GetServerCapabilitiesResponseBody as e:
|
|
175
|
-
|
|
180
|
+
# handle exception
|
|
176
181
|
raise(e)
|
|
177
182
|
except errors.SDKError as e:
|
|
178
|
-
|
|
183
|
+
# handle exception
|
|
179
184
|
raise(e)
|
|
180
185
|
|
|
181
186
|
if res.object is not None:
|
|
@@ -244,14 +249,11 @@ Description: # plexpy
|
|
|
244
249
|
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
|
|
245
250
|
```python
|
|
246
251
|
import plex_api
|
|
247
|
-
from plex_api.models import operations
|
|
248
252
|
|
|
249
|
-
s = plex_api.PlexAPI(
|
|
250
|
-
access_token="<YOUR_API_KEY_HERE>",
|
|
251
|
-
)
|
|
253
|
+
s = plex_api.PlexAPI()
|
|
252
254
|
|
|
253
255
|
|
|
254
|
-
res = s.plex.get_pin(server_url="https://plex.tv/api/v2", x_plex_client_identifier='
|
|
256
|
+
res = s.plex.get_pin(server_url="https://plex.tv/api/v2", x_plex_client_identifier='<value>', strong=False)
|
|
255
257
|
|
|
256
258
|
if res.object is not None:
|
|
257
259
|
# handle response
|
|
@@ -56,6 +56,11 @@ if res.object is not None:
|
|
|
56
56
|
* [mark_unplayed](docs/sdks/media/README.md#mark_unplayed) - Mark Media Unplayed
|
|
57
57
|
* [update_play_progress](docs/sdks/media/README.md#update_play_progress) - Update Media Play Progress
|
|
58
58
|
|
|
59
|
+
### [video](docs/sdks/video/README.md)
|
|
60
|
+
|
|
61
|
+
* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
|
|
62
|
+
* [start_universal_transcode](docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode
|
|
63
|
+
|
|
59
64
|
### [activities](docs/sdks/activities/README.md)
|
|
60
65
|
|
|
61
66
|
* [get_server_activities](docs/sdks/activities/README.md#get_server_activities) - Get Server Activities
|
|
@@ -117,10 +122,14 @@ if res.object is not None:
|
|
|
117
122
|
* [add_playlist_contents](docs/sdks/playlists/README.md#add_playlist_contents) - Adding to a Playlist
|
|
118
123
|
* [upload_playlist](docs/sdks/playlists/README.md#upload_playlist) - Upload Playlist
|
|
119
124
|
|
|
120
|
-
### [
|
|
125
|
+
### [authentication](docs/sdks/authentication/README.md)
|
|
126
|
+
|
|
127
|
+
* [get_transient_token](docs/sdks/authentication/README.md#get_transient_token) - Get a Transient Token.
|
|
128
|
+
* [get_source_connection_information](docs/sdks/authentication/README.md#get_source_connection_information) - Get Source Connection Information
|
|
121
129
|
|
|
122
|
-
|
|
123
|
-
|
|
130
|
+
### [statistics](docs/sdks/statistics/README.md)
|
|
131
|
+
|
|
132
|
+
* [get_statistics](docs/sdks/statistics/README.md#get_statistics) - Get Media Statistics
|
|
124
133
|
|
|
125
134
|
### [sessions](docs/sdks/sessions/README.md)
|
|
126
135
|
|
|
@@ -134,11 +143,6 @@ if res.object is not None:
|
|
|
134
143
|
* [get_update_status](docs/sdks/updater/README.md#get_update_status) - Querying status of updates
|
|
135
144
|
* [check_for_updates](docs/sdks/updater/README.md#check_for_updates) - Checking for updates
|
|
136
145
|
* [apply_updates](docs/sdks/updater/README.md#apply_updates) - Apply Updates
|
|
137
|
-
|
|
138
|
-
### [video](docs/sdks/video/README.md)
|
|
139
|
-
|
|
140
|
-
* [start_universal_transcode](docs/sdks/video/README.md#start_universal_transcode) - Start Universal Transcode
|
|
141
|
-
* [get_timeline](docs/sdks/video/README.md#get_timeline) - Get the timeline for a media item
|
|
142
146
|
<!-- End Available Resources and Operations [operations] -->
|
|
143
147
|
|
|
144
148
|
<!-- Start Error Handling [errors] -->
|
|
@@ -155,6 +159,7 @@ Handling errors in this SDK should largely match your expectations. All operati
|
|
|
155
159
|
|
|
156
160
|
```python
|
|
157
161
|
import plex_api
|
|
162
|
+
from plex_api.models import errors
|
|
158
163
|
|
|
159
164
|
s = plex_api.PlexAPI(
|
|
160
165
|
access_token="<YOUR_API_KEY_HERE>",
|
|
@@ -165,10 +170,10 @@ res = None
|
|
|
165
170
|
try:
|
|
166
171
|
res = s.server.get_server_capabilities()
|
|
167
172
|
except errors.GetServerCapabilitiesResponseBody as e:
|
|
168
|
-
|
|
173
|
+
# handle exception
|
|
169
174
|
raise(e)
|
|
170
175
|
except errors.SDKError as e:
|
|
171
|
-
|
|
176
|
+
# handle exception
|
|
172
177
|
raise(e)
|
|
173
178
|
|
|
174
179
|
if res.object is not None:
|
|
@@ -237,14 +242,11 @@ if res.object is not None:
|
|
|
237
242
|
The server URL can also be overridden on a per-operation basis, provided a server list was specified for the operation. For example:
|
|
238
243
|
```python
|
|
239
244
|
import plex_api
|
|
240
|
-
from plex_api.models import operations
|
|
241
245
|
|
|
242
|
-
s = plex_api.PlexAPI(
|
|
243
|
-
access_token="<YOUR_API_KEY_HERE>",
|
|
244
|
-
)
|
|
246
|
+
s = plex_api.PlexAPI()
|
|
245
247
|
|
|
246
248
|
|
|
247
|
-
res = s.plex.get_pin(server_url="https://plex.tv/api/v2", x_plex_client_identifier='
|
|
249
|
+
res = s.plex.get_pin(server_url="https://plex.tv/api/v2", x_plex_client_identifier='<value>', strong=False)
|
|
248
250
|
|
|
249
251
|
if res.object is not None:
|
|
250
252
|
# handle response
|
|
@@ -4,8 +4,8 @@ from .sdkconfiguration import SDKConfiguration
|
|
|
4
4
|
from plex_api import utils
|
|
5
5
|
from plex_api.models import errors, operations
|
|
6
6
|
|
|
7
|
-
class
|
|
8
|
-
r"""API Calls
|
|
7
|
+
class Authentication:
|
|
8
|
+
r"""API Calls regarding authentication for Plex Media Server"""
|
|
9
9
|
sdk_configuration: SDKConfiguration
|
|
10
10
|
|
|
11
11
|
def __init__(self, sdk_config: SDKConfiguration) -> None:
|
|
@@ -36,6 +36,7 @@ from .getserverpreferences import *
|
|
|
36
36
|
from .getsessionhistory import *
|
|
37
37
|
from .getsessions import *
|
|
38
38
|
from .getsourceconnectioninformation import *
|
|
39
|
+
from .getstatistics import *
|
|
39
40
|
from .gettimeline import *
|
|
40
41
|
from .gettoken import *
|
|
41
42
|
from .gettranscodesessions import *
|
|
@@ -59,4 +60,4 @@ from .updateplaylist import *
|
|
|
59
60
|
from .updateplayprogress import *
|
|
60
61
|
from .uploadplaylist import *
|
|
61
62
|
|
|
62
|
-
__all__ = ["AddPlaylistContentsErrors","AddPlaylistContentsResponseBody","ApplyUpdatesErrors","ApplyUpdatesResponseBody","CancelServerActivitiesErrors","CancelServerActivitiesResponseBody","CheckForUpdatesErrors","CheckForUpdatesResponseBody","ClearPlaylistContentsErrors","ClearPlaylistContentsResponseBody","CreatePlaylistErrors","CreatePlaylistResponseBody","DeleteLibraryErrors","DeleteLibraryResponseBody","DeletePlaylistErrors","DeletePlaylistResponseBody","EnablePaperTrailErrors","EnablePaperTrailResponseBody","Errors","GetAvailableClientsErrors","GetAvailableClientsResponseBody","GetButlerTasksErrors","GetButlerTasksResponseBody","GetDevicesErrors","GetDevicesResponseBody","GetFileHashErrors","GetFileHashResponseBody","GetGlobalHubsErrors","GetGlobalHubsResponseBody","GetLibrariesErrors","GetLibrariesResponseBody","GetLibraryErrors","GetLibraryHubsErrors","GetLibraryHubsResponseBody","GetLibraryResponseBody","GetMetadataChildrenErrors","GetMetadataChildrenResponseBody","GetMetadataErrors","GetMetadataResponseBody","GetMyPlexAccountErrors","GetMyPlexAccountResponseBody","GetOnDeckErrors","GetOnDeckResponseBody","GetPinErrors","GetPinResponseBody","GetPlaylistContentsErrors","GetPlaylistContentsResponseBody","GetPlaylistErrors","GetPlaylistResponseBody","GetPlaylistsErrors","GetPlaylistsResponseBody","GetRecentlyAddedErrors","GetRecentlyAddedResponseBody","GetResizedPhotoErrors","GetResizedPhotoResponseBody","GetSearchResultsErrors","GetSearchResultsResponseBody","GetServerActivitiesErrors","GetServerActivitiesResponseBody","GetServerCapabilitiesResponseBody","GetServerIdentityErrors","GetServerIdentityResponseBody","GetServerListErrors","GetServerListResponseBody","GetServerPreferencesErrors","GetServerPreferencesResponseBody","GetSessionHistoryErrors","GetSessionHistoryResponseBody","GetSessionsErrors","GetSessionsResponseBody","GetSourceConnectionInformationErrors","GetSourceConnectionInformationResponseBody","GetTimelineErrors","GetTimelineResponseBody","GetTokenErrors","GetTokenResponseBody","GetTranscodeSessionsErrors","GetTranscodeSessionsResponseBody","GetTransientTokenErrors","GetTransientTokenResponseBody","GetUpdateStatusErrors","GetUpdateStatusResponseBody","LogLineErrors","LogLineResponseBody","LogMultiLineErrors","LogMultiLineResponseBody","MarkPlayedErrors","MarkPlayedResponseBody","MarkUnplayedErrors","MarkUnplayedResponseBody","PerformSearchErrors","PerformSearchResponseBody","PerformVoiceSearchErrors","PerformVoiceSearchResponseBody","RefreshLibraryErrors","RefreshLibraryResponseBody","SDKError","StartAllTasksErrors","StartAllTasksResponseBody","StartTaskErrors","StartTaskResponseBody","StartUniversalTranscodeErrors","StartUniversalTranscodeResponseBody","StopAllTasksErrors","StopAllTasksResponseBody","StopTaskErrors","StopTaskResponseBody","StopTranscodeSessionErrors","StopTranscodeSessionResponseBody","UpdatePlayProgressErrors","UpdatePlayProgressResponseBody","UpdatePlaylistErrors","UpdatePlaylistResponseBody","UploadPlaylistErrors","UploadPlaylistResponseBody"]
|
|
63
|
+
__all__ = ["AddPlaylistContentsErrors","AddPlaylistContentsResponseBody","ApplyUpdatesErrors","ApplyUpdatesResponseBody","CancelServerActivitiesErrors","CancelServerActivitiesResponseBody","CheckForUpdatesErrors","CheckForUpdatesResponseBody","ClearPlaylistContentsErrors","ClearPlaylistContentsResponseBody","CreatePlaylistErrors","CreatePlaylistResponseBody","DeleteLibraryErrors","DeleteLibraryResponseBody","DeletePlaylistErrors","DeletePlaylistResponseBody","EnablePaperTrailErrors","EnablePaperTrailResponseBody","Errors","GetAvailableClientsErrors","GetAvailableClientsResponseBody","GetButlerTasksErrors","GetButlerTasksResponseBody","GetDevicesErrors","GetDevicesResponseBody","GetFileHashErrors","GetFileHashResponseBody","GetGlobalHubsErrors","GetGlobalHubsResponseBody","GetLibrariesErrors","GetLibrariesResponseBody","GetLibraryErrors","GetLibraryHubsErrors","GetLibraryHubsResponseBody","GetLibraryResponseBody","GetMetadataChildrenErrors","GetMetadataChildrenResponseBody","GetMetadataErrors","GetMetadataResponseBody","GetMyPlexAccountErrors","GetMyPlexAccountResponseBody","GetOnDeckErrors","GetOnDeckResponseBody","GetPinErrors","GetPinResponseBody","GetPlaylistContentsErrors","GetPlaylistContentsResponseBody","GetPlaylistErrors","GetPlaylistResponseBody","GetPlaylistsErrors","GetPlaylistsResponseBody","GetRecentlyAddedErrors","GetRecentlyAddedResponseBody","GetResizedPhotoErrors","GetResizedPhotoResponseBody","GetSearchResultsErrors","GetSearchResultsResponseBody","GetServerActivitiesErrors","GetServerActivitiesResponseBody","GetServerCapabilitiesResponseBody","GetServerIdentityErrors","GetServerIdentityResponseBody","GetServerListErrors","GetServerListResponseBody","GetServerPreferencesErrors","GetServerPreferencesResponseBody","GetSessionHistoryErrors","GetSessionHistoryResponseBody","GetSessionsErrors","GetSessionsResponseBody","GetSourceConnectionInformationErrors","GetSourceConnectionInformationResponseBody","GetStatisticsErrors","GetStatisticsResponseBody","GetTimelineErrors","GetTimelineResponseBody","GetTokenErrors","GetTokenResponseBody","GetTranscodeSessionsErrors","GetTranscodeSessionsResponseBody","GetTransientTokenErrors","GetTransientTokenResponseBody","GetUpdateStatusErrors","GetUpdateStatusResponseBody","LogLineErrors","LogLineResponseBody","LogMultiLineErrors","LogMultiLineResponseBody","MarkPlayedErrors","MarkPlayedResponseBody","MarkUnplayedErrors","MarkUnplayedResponseBody","PerformSearchErrors","PerformSearchResponseBody","PerformVoiceSearchErrors","PerformVoiceSearchResponseBody","RefreshLibraryErrors","RefreshLibraryResponseBody","SDKError","StartAllTasksErrors","StartAllTasksResponseBody","StartTaskErrors","StartTaskResponseBody","StartUniversalTranscodeErrors","StartUniversalTranscodeResponseBody","StopAllTasksErrors","StopAllTasksResponseBody","StopTaskErrors","StopTaskResponseBody","StopTranscodeSessionErrors","StopTranscodeSessionResponseBody","UpdatePlayProgressErrors","UpdatePlayProgressResponseBody","UpdatePlaylistErrors","UpdatePlaylistResponseBody","UploadPlaylistErrors","UploadPlaylistResponseBody"]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
12
|
+
@dataclasses.dataclass
|
|
13
|
+
class GetStatisticsErrors:
|
|
14
|
+
code: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('code'), 'exclude': lambda f: f is None }})
|
|
15
|
+
message: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('message'), 'exclude': lambda f: f is None }})
|
|
16
|
+
status: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status'), 'exclude': lambda f: f is None }})
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
22
|
+
|
|
23
|
+
@dataclasses.dataclass
|
|
24
|
+
class GetStatisticsResponseBody(Exception):
|
|
25
|
+
r"""Unauthorized - Returned if the X-Plex-Token is missing from the header or query."""
|
|
26
|
+
errors: Optional[List[GetStatisticsErrors]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('errors'), 'exclude': lambda f: f is None }})
|
|
27
|
+
raw_response: Optional[requests_http.Response] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'exclude': lambda f: True }})
|
|
28
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def __str__(self) -> str:
|
|
32
|
+
return utils.marshal_json(self, type(self))
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from .addplaylistcontents import *
|
|
4
|
+
from .applyupdates import *
|
|
5
|
+
from .cancelserveractivities import *
|
|
6
|
+
from .checkforupdates import *
|
|
7
|
+
from .clearplaylistcontents import *
|
|
8
|
+
from .createplaylist import *
|
|
9
|
+
from .deletelibrary import *
|
|
10
|
+
from .deleteplaylist import *
|
|
11
|
+
from .enablepapertrail import *
|
|
12
|
+
from .getavailableclients import *
|
|
13
|
+
from .getbutlertasks import *
|
|
14
|
+
from .getdevices import *
|
|
15
|
+
from .getfilehash import *
|
|
16
|
+
from .getglobalhubs import *
|
|
17
|
+
from .getlibraries import *
|
|
18
|
+
from .getlibrary import *
|
|
19
|
+
from .getlibraryhubs import *
|
|
20
|
+
from .getlibraryitems import *
|
|
21
|
+
from .getmetadata import *
|
|
22
|
+
from .getmetadatachildren import *
|
|
23
|
+
from .getmyplexaccount import *
|
|
24
|
+
from .getondeck import *
|
|
25
|
+
from .getpin import *
|
|
26
|
+
from .getplaylist import *
|
|
27
|
+
from .getplaylistcontents import *
|
|
28
|
+
from .getplaylists import *
|
|
29
|
+
from .getrecentlyadded import *
|
|
30
|
+
from .getresizedphoto import *
|
|
31
|
+
from .getsearchresults import *
|
|
32
|
+
from .getserveractivities import *
|
|
33
|
+
from .getservercapabilities import *
|
|
34
|
+
from .getserveridentity import *
|
|
35
|
+
from .getserverlist import *
|
|
36
|
+
from .getserverpreferences import *
|
|
37
|
+
from .getsessionhistory import *
|
|
38
|
+
from .getsessions import *
|
|
39
|
+
from .getsourceconnectioninformation import *
|
|
40
|
+
from .getstatistics import *
|
|
41
|
+
from .gettimeline import *
|
|
42
|
+
from .gettoken import *
|
|
43
|
+
from .gettranscodesessions import *
|
|
44
|
+
from .gettransienttoken import *
|
|
45
|
+
from .getupdatestatus import *
|
|
46
|
+
from .logline import *
|
|
47
|
+
from .logmultiline import *
|
|
48
|
+
from .markplayed import *
|
|
49
|
+
from .markunplayed import *
|
|
50
|
+
from .performsearch import *
|
|
51
|
+
from .performvoicesearch import *
|
|
52
|
+
from .refreshlibrary import *
|
|
53
|
+
from .searchlibrary import *
|
|
54
|
+
from .startalltasks import *
|
|
55
|
+
from .starttask import *
|
|
56
|
+
from .startuniversaltranscode import *
|
|
57
|
+
from .stopalltasks import *
|
|
58
|
+
from .stoptask import *
|
|
59
|
+
from .stoptranscodesession import *
|
|
60
|
+
from .updateplaylist import *
|
|
61
|
+
from .updateplayprogress import *
|
|
62
|
+
from .uploadplaylist import *
|
|
63
|
+
|
|
64
|
+
__all__ = ["Account","Activity","AddPlaylistContentsMediaContainer","AddPlaylistContentsMetadata","AddPlaylistContentsRequest","AddPlaylistContentsResponse","AddPlaylistContentsResponseBody","ApplyUpdatesRequest","ApplyUpdatesResponse","ButlerTask","ButlerTasks","CancelServerActivitiesRequest","CancelServerActivitiesResponse","CheckForUpdatesRequest","CheckForUpdatesResponse","ClearPlaylistContentsRequest","ClearPlaylistContentsResponse","Context","Country","CreatePlaylistMediaContainer","CreatePlaylistMetadata","CreatePlaylistRequest","CreatePlaylistResponse","CreatePlaylistResponseBody","DeleteLibraryRequest","DeleteLibraryResponse","DeletePlaylistRequest","DeletePlaylistResponse","Device","Director","Directory","Download","EnablePaperTrailResponse","Field","FieldType","Filter","Force","GET_PIN_SERVERS","GET_TOKEN_SERVERS","Genre","GetAvailableClientsMediaContainer","GetAvailableClientsResponse","GetAvailableClientsResponseBody","GetButlerTasksResponse","GetButlerTasksResponseBody","GetDevicesMediaContainer","GetDevicesResponse","GetDevicesResponseBody","GetFileHashRequest","GetFileHashResponse","GetGlobalHubsMediaContainer","GetGlobalHubsMetadata","GetGlobalHubsRequest","GetGlobalHubsResponse","GetGlobalHubsResponseBody","GetLibrariesDirectory","GetLibrariesLocation","GetLibrariesMediaContainer","GetLibrariesResponse","GetLibrariesResponseBody","GetLibraryDirectory","GetLibraryHubsCountry","GetLibraryHubsDirector","GetLibraryHubsGenre","GetLibraryHubsHub","GetLibraryHubsMedia","GetLibraryHubsMediaContainer","GetLibraryHubsMetadata","GetLibraryHubsPart","GetLibraryHubsRequest","GetLibraryHubsResponse","GetLibraryHubsResponseBody","GetLibraryHubsRole","GetLibraryHubsWriter","GetLibraryItemsCountry","GetLibraryItemsDirector","GetLibraryItemsGenre","GetLibraryItemsMedia","GetLibraryItemsMediaContainer","GetLibraryItemsMetadata","GetLibraryItemsPart","GetLibraryItemsRequest","GetLibraryItemsResponse","GetLibraryItemsResponseBody","GetLibraryItemsRole","GetLibraryItemsWriter","GetLibraryMediaContainer","GetLibraryRequest","GetLibraryResponse","GetLibraryResponseBody","GetLibraryType","GetMetadataChildrenDirectory","GetMetadataChildrenMediaContainer","GetMetadataChildrenMetadata","GetMetadataChildrenRequest","GetMetadataChildrenResponse","GetMetadataChildrenResponseBody","GetMetadataCountry","GetMetadataDirector","GetMetadataGenre","GetMetadataMedia","GetMetadataMediaContainer","GetMetadataMetadata","GetMetadataPart","GetMetadataRequest","GetMetadataResponse","GetMetadataResponseBody","GetMetadataRole","GetMetadataWriter","GetMyPlexAccountResponse","GetMyPlexAccountResponseBody","GetOnDeckGuids","GetOnDeckMedia","GetOnDeckMediaContainer","GetOnDeckMetadata","GetOnDeckPart","GetOnDeckResponse","GetOnDeckResponseBody","GetOnDeckStream","GetPinRequest","GetPinResponse","GetPinResponseBody","GetPlaylistContentsCountry","GetPlaylistContentsDirector","GetPlaylistContentsGenre","GetPlaylistContentsMedia","GetPlaylistContentsMediaContainer","GetPlaylistContentsMetadata","GetPlaylistContentsPart","GetPlaylistContentsRequest","GetPlaylistContentsResponse","GetPlaylistContentsResponseBody","GetPlaylistContentsRole","GetPlaylistContentsWriter","GetPlaylistMediaContainer","GetPlaylistMetadata","GetPlaylistRequest","GetPlaylistResponse","GetPlaylistResponseBody","GetPlaylistsMediaContainer","GetPlaylistsMetadata","GetPlaylistsRequest","GetPlaylistsResponse","GetPlaylistsResponseBody","GetRecentlyAddedMediaContainer","GetRecentlyAddedResponse","GetRecentlyAddedResponseBody","GetResizedPhotoRequest","GetResizedPhotoResponse","GetSearchResultsCountry","GetSearchResultsDirector","GetSearchResultsGenre","GetSearchResultsMedia","GetSearchResultsMediaContainer","GetSearchResultsMetadata","GetSearchResultsPart","GetSearchResultsRequest","GetSearchResultsResponse","GetSearchResultsResponseBody","GetSearchResultsRole","GetSearchResultsWriter","GetServerActivitiesMediaContainer","GetServerActivitiesResponse","GetServerActivitiesResponseBody","GetServerCapabilitiesResponse","GetServerCapabilitiesResponseBody","GetServerIdentityMediaContainer","GetServerIdentityResponse","GetServerIdentityResponseBody","GetServerListMediaContainer","GetServerListResponse","GetServerListResponseBody","GetServerListServer","GetServerPreferencesMediaContainer","GetServerPreferencesResponse","GetServerPreferencesResponseBody","GetSessionHistoryMediaContainer","GetSessionHistoryMetadata","GetSessionHistoryResponse","GetSessionHistoryResponseBody","GetSessionsMedia","GetSessionsMediaContainer","GetSessionsMetadata","GetSessionsPart","GetSessionsResponse","GetSessionsResponseBody","GetSessionsStream","GetSourceConnectionInformationRequest","GetSourceConnectionInformationResponse","GetStatisticsDevice","GetStatisticsMediaContainer","GetStatisticsRequest","GetStatisticsResponse","GetStatisticsResponseBody","GetTimelineRequest","GetTimelineResponse","GetTokenRequest","GetTokenResponse","GetTranscodeSessionsMediaContainer","GetTranscodeSessionsResponse","GetTranscodeSessionsResponseBody","GetTransientTokenQueryParamType","GetTransientTokenRequest","GetTransientTokenResponse","GetUpdateStatusMediaContainer","GetUpdateStatusResponse","GetUpdateStatusResponseBody","Guids","Hub","IncludeDetails","Level","Location","LogLineRequest","LogLineResponse","LogMultiLineResponse","MarkPlayedRequest","MarkPlayedResponse","MarkUnplayedRequest","MarkUnplayedResponse","Media","MediaContainer","Metadata","MinSize","MyPlex","OnlyTransient","Operator","Part","PathParamTaskName","PerformSearchRequest","PerformSearchResponse","PerformVoiceSearchRequest","PerformVoiceSearchResponse","Player","PlaylistType","Producer","Provider","QueryParamOnlyTransient","QueryParamSmart","QueryParamType","Ratings","RefreshLibraryRequest","RefreshLibraryResponse","Release","Role","Scope","SearchLibraryMediaContainer","SearchLibraryMetadata","SearchLibraryRequest","SearchLibraryResponse","SearchLibraryResponseBody","Server","Session","Setting","Skip","Smart","Sort","StartAllTasksResponse","StartTaskRequest","StartTaskResponse","StartUniversalTranscodeRequest","StartUniversalTranscodeResponse","State","StatisticsMedia","StopAllTasksResponse","StopTaskRequest","StopTaskResponse","StopTranscodeSessionRequest","StopTranscodeSessionResponse","Stream","Tag","TaskName","Tonight","TranscodeSession","Type","UpdatePlayProgressRequest","UpdatePlayProgressResponse","UpdatePlaylistRequest","UpdatePlaylistResponse","UploadPlaylistRequest","UploadPlaylistResponse","Upscale","User","Writer"]
|
|
@@ -5,38 +5,22 @@ import dataclasses
|
|
|
5
5
|
import requests as requests_http
|
|
6
6
|
from dataclasses_json import Undefined, dataclass_json
|
|
7
7
|
from plex_api import utils
|
|
8
|
-
from typing import List, Optional
|
|
8
|
+
from typing import List, Optional
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
12
12
|
@dataclasses.dataclass
|
|
13
|
-
class
|
|
14
|
-
advanced: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('advanced'), 'exclude': lambda f: f is None }})
|
|
15
|
-
default: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('default'), 'exclude': lambda f: f is None }})
|
|
16
|
-
enum_values: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enumValues'), 'exclude': lambda f: f is None }})
|
|
17
|
-
group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('group'), 'exclude': lambda f: f is None }})
|
|
18
|
-
hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hidden'), 'exclude': lambda f: f is None }})
|
|
13
|
+
class Setting:
|
|
19
14
|
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
20
15
|
label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('label'), 'exclude': lambda f: f is None }})
|
|
21
16
|
summary: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('summary'), 'exclude': lambda f: f is None }})
|
|
22
17
|
type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type'), 'exclude': lambda f: f is None }})
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
29
|
-
@dataclasses.dataclass
|
|
30
|
-
class One:
|
|
18
|
+
default: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('default'), 'exclude': lambda f: f is None }})
|
|
19
|
+
value: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('value'), 'exclude': lambda f: f is None }})
|
|
20
|
+
hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hidden'), 'exclude': lambda f: f is None }})
|
|
31
21
|
advanced: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('advanced'), 'exclude': lambda f: f is None }})
|
|
32
|
-
default: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('default'), 'exclude': lambda f: f is None }})
|
|
33
22
|
group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('group'), 'exclude': lambda f: f is None }})
|
|
34
|
-
|
|
35
|
-
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
36
|
-
label: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('label'), 'exclude': lambda f: f is None }})
|
|
37
|
-
summary: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('summary'), 'exclude': lambda f: f is None }})
|
|
38
|
-
type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type'), 'exclude': lambda f: f is None }})
|
|
39
|
-
value: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('value'), 'exclude': lambda f: f is None }})
|
|
23
|
+
enum_values: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('enumValues'), 'exclude': lambda f: f is None }})
|
|
40
24
|
|
|
41
25
|
|
|
42
26
|
|
|
@@ -44,8 +28,8 @@ class One:
|
|
|
44
28
|
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
45
29
|
@dataclasses.dataclass
|
|
46
30
|
class GetServerPreferencesMediaContainer:
|
|
47
|
-
setting: Optional[List[Union[One, Two]]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Setting'), 'exclude': lambda f: f is None }})
|
|
48
31
|
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
32
|
+
setting: Optional[List[Setting]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Setting'), 'exclude': lambda f: f is None }})
|
|
49
33
|
|
|
50
34
|
|
|
51
35
|
|
|
@@ -63,10 +47,10 @@ class GetServerPreferencesResponseBody:
|
|
|
63
47
|
class GetServerPreferencesResponse:
|
|
64
48
|
content_type: str = dataclasses.field()
|
|
65
49
|
r"""HTTP response content type for this operation"""
|
|
66
|
-
raw_response: requests_http.Response = dataclasses.field()
|
|
67
|
-
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
68
50
|
status_code: int = dataclasses.field()
|
|
69
51
|
r"""HTTP response status code for this operation"""
|
|
52
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
53
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
70
54
|
object: Optional[GetServerPreferencesResponseBody] = dataclasses.field(default=None)
|
|
71
55
|
r"""Server Preferences"""
|
|
72
56
|
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclasses.dataclass
|
|
12
|
+
class GetStatisticsRequest:
|
|
13
|
+
timespan: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'Timespan', 'style': 'form', 'explode': True }})
|
|
14
|
+
r"""The timespan to retrieve statistics for
|
|
15
|
+
the exact meaning of this parameter is not known
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
22
|
+
@dataclasses.dataclass
|
|
23
|
+
class GetStatisticsDevice:
|
|
24
|
+
id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
25
|
+
name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }})
|
|
26
|
+
platform: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('platform'), 'exclude': lambda f: f is None }})
|
|
27
|
+
client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('clientIdentifier'), 'exclude': lambda f: f is None }})
|
|
28
|
+
created_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'exclude': lambda f: f is None }})
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
34
|
+
@dataclasses.dataclass
|
|
35
|
+
class Account:
|
|
36
|
+
id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
37
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
38
|
+
name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }})
|
|
39
|
+
default_audio_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultAudioLanguage'), 'exclude': lambda f: f is None }})
|
|
40
|
+
auto_select_audio: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('autoSelectAudio'), 'exclude': lambda f: f is None }})
|
|
41
|
+
default_subtitle_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultSubtitleLanguage'), 'exclude': lambda f: f is None }})
|
|
42
|
+
subtitle_mode: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('subtitleMode'), 'exclude': lambda f: f is None }})
|
|
43
|
+
thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
49
|
+
@dataclasses.dataclass
|
|
50
|
+
class StatisticsMedia:
|
|
51
|
+
account_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountID'), 'exclude': lambda f: f is None }})
|
|
52
|
+
device_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('deviceID'), 'exclude': lambda f: f is None }})
|
|
53
|
+
timespan: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timespan'), 'exclude': lambda f: f is None }})
|
|
54
|
+
at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('at'), 'exclude': lambda f: f is None }})
|
|
55
|
+
metadata_type: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('metadataType'), 'exclude': lambda f: f is None }})
|
|
56
|
+
count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('count'), 'exclude': lambda f: f is None }})
|
|
57
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
63
|
+
@dataclasses.dataclass
|
|
64
|
+
class GetStatisticsMediaContainer:
|
|
65
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
66
|
+
device: Optional[List[GetStatisticsDevice]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Device'), 'exclude': lambda f: f is None }})
|
|
67
|
+
account: Optional[List[Account]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Account'), 'exclude': lambda f: f is None }})
|
|
68
|
+
statistics_media: Optional[List[StatisticsMedia]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('StatisticsMedia'), 'exclude': lambda f: f is None }})
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
74
|
+
@dataclasses.dataclass
|
|
75
|
+
class GetStatisticsResponseBody:
|
|
76
|
+
r"""Media Statistics"""
|
|
77
|
+
media_container: Optional[GetStatisticsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@dataclasses.dataclass
|
|
83
|
+
class GetStatisticsResponse:
|
|
84
|
+
content_type: str = dataclasses.field()
|
|
85
|
+
r"""HTTP response content type for this operation"""
|
|
86
|
+
status_code: int = dataclasses.field()
|
|
87
|
+
r"""HTTP response status code for this operation"""
|
|
88
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
89
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
90
|
+
object: Optional[GetStatisticsResponseBody] = dataclasses.field(default=None)
|
|
91
|
+
r"""Media Statistics"""
|
|
92
|
+
|
|
93
|
+
|
|
@@ -34,10 +34,7 @@ class Plex:
|
|
|
34
34
|
headers['Accept'] = 'application/json'
|
|
35
35
|
headers['user-agent'] = self.sdk_configuration.user_agent
|
|
36
36
|
|
|
37
|
-
|
|
38
|
-
client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security())
|
|
39
|
-
else:
|
|
40
|
-
client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security)
|
|
37
|
+
client = self.sdk_configuration.client
|
|
41
38
|
|
|
42
39
|
http_res = client.request('POST', url, params=query_params, headers=headers)
|
|
43
40
|
content_type = http_res.headers.get('Content-Type')
|
|
@@ -83,10 +80,7 @@ class Plex:
|
|
|
83
80
|
headers['Accept'] = 'application/json'
|
|
84
81
|
headers['user-agent'] = self.sdk_configuration.user_agent
|
|
85
82
|
|
|
86
|
-
|
|
87
|
-
client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security())
|
|
88
|
-
else:
|
|
89
|
-
client = utils.configure_security_client(self.sdk_configuration.client, self.sdk_configuration.security)
|
|
83
|
+
client = self.sdk_configuration.client
|
|
90
84
|
|
|
91
85
|
http_res = client.request('GET', url, headers=headers)
|
|
92
86
|
content_type = http_res.headers.get('Content-Type')
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import requests as requests_http
|
|
4
4
|
from .activities import Activities
|
|
5
|
+
from .authentication import Authentication
|
|
5
6
|
from .butler import Butler
|
|
6
7
|
from .hubs import Hubs
|
|
7
8
|
from .library import Library
|
|
@@ -11,9 +12,9 @@ from .playlists import Playlists
|
|
|
11
12
|
from .plex import Plex
|
|
12
13
|
from .sdkconfiguration import SDKConfiguration, ServerProtocol
|
|
13
14
|
from .search import Search
|
|
14
|
-
from .security import Security
|
|
15
15
|
from .server import Server
|
|
16
16
|
from .sessions import Sessions
|
|
17
|
+
from .statistics import Statistics
|
|
17
18
|
from .updater import Updater
|
|
18
19
|
from .video import Video
|
|
19
20
|
from plex_api import utils
|
|
@@ -28,6 +29,8 @@ class PlexAPI:
|
|
|
28
29
|
r"""Operations against the Plex Media Server System."""
|
|
29
30
|
media: Media
|
|
30
31
|
r"""API Calls interacting with Plex Media Server Media"""
|
|
32
|
+
video: Video
|
|
33
|
+
r"""API Calls that perform operations with Plex Media Server Videos"""
|
|
31
34
|
activities: Activities
|
|
32
35
|
r"""Activities are awesome. They provide a way to monitor and control asynchronous operations on the server. In order to receive real-time updates for activities, a client would normally subscribe via either EventSource or Websocket endpoints.
|
|
33
36
|
Activities are associated with HTTP replies via a special `X-Plex-Activity` header which contains the UUID of the activity.
|
|
@@ -55,16 +58,16 @@ class PlexAPI:
|
|
|
55
58
|
Retrieving a playlist, or its items, will trigger a refresh of its metadata.
|
|
56
59
|
This may cause the duration and number of items to change.
|
|
57
60
|
"""
|
|
58
|
-
|
|
59
|
-
r"""API Calls
|
|
61
|
+
authentication: Authentication
|
|
62
|
+
r"""API Calls regarding authentication for Plex Media Server"""
|
|
63
|
+
statistics: Statistics
|
|
64
|
+
r"""API Calls that perform operations with Plex Media Server Statistics"""
|
|
60
65
|
sessions: Sessions
|
|
61
66
|
r"""API Calls that perform search operations with Plex Media Server Sessions"""
|
|
62
67
|
updater: Updater
|
|
63
68
|
r"""This describes the API for searching and applying updates to the Plex Media Server.
|
|
64
69
|
Updates to the status can be observed via the Event API.
|
|
65
70
|
"""
|
|
66
|
-
video: Video
|
|
67
|
-
r"""API Calls that perform operations with Plex Media Server Videos"""
|
|
68
71
|
|
|
69
72
|
sdk_configuration: SDKConfiguration
|
|
70
73
|
|
|
@@ -84,11 +87,11 @@ class PlexAPI:
|
|
|
84
87
|
:param access_token: The access_token required for authentication
|
|
85
88
|
:type access_token: Union[str, Callable[[], str]]
|
|
86
89
|
:param protocol: Allows setting the protocol variable for url substitution
|
|
87
|
-
:type protocol:
|
|
90
|
+
:type protocol: ServerProtocol
|
|
88
91
|
:param ip: Allows setting the ip variable for url substitution
|
|
89
|
-
:type ip:
|
|
92
|
+
:type ip: str
|
|
90
93
|
:param port: Allows setting the port variable for url substitution
|
|
91
|
-
:type port:
|
|
94
|
+
:type port: str
|
|
92
95
|
:param server_idx: The index of the server to use for all operations
|
|
93
96
|
:type server_idx: int
|
|
94
97
|
:param server_url: The server URL to use for all operations
|
|
@@ -127,6 +130,7 @@ class PlexAPI:
|
|
|
127
130
|
def _init_sdks(self):
|
|
128
131
|
self.server = Server(self.sdk_configuration)
|
|
129
132
|
self.media = Media(self.sdk_configuration)
|
|
133
|
+
self.video = Video(self.sdk_configuration)
|
|
130
134
|
self.activities = Activities(self.sdk_configuration)
|
|
131
135
|
self.butler = Butler(self.sdk_configuration)
|
|
132
136
|
self.hubs = Hubs(self.sdk_configuration)
|
|
@@ -135,8 +139,8 @@ class PlexAPI:
|
|
|
135
139
|
self.log = Log(self.sdk_configuration)
|
|
136
140
|
self.plex = Plex(self.sdk_configuration)
|
|
137
141
|
self.playlists = Playlists(self.sdk_configuration)
|
|
138
|
-
self.
|
|
142
|
+
self.authentication = Authentication(self.sdk_configuration)
|
|
143
|
+
self.statistics = Statistics(self.sdk_configuration)
|
|
139
144
|
self.sessions = Sessions(self.sdk_configuration)
|
|
140
145
|
self.updater = Updater(self.sdk_configuration)
|
|
141
|
-
self.video = Video(self.sdk_configuration)
|
|
142
146
|
|