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.
Files changed (156) hide show
  1. {plex-api-client-0.1.1/src/plex_api_client.egg-info → plex-api-client-0.2.1}/PKG-INFO +18 -16
  2. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/README.md +17 -15
  3. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/setup.py +1 -1
  4. plex-api-client-0.1.1/src/plex_api/security.py → plex-api-client-0.2.1/src/plex_api/authentication.py +2 -2
  5. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/__init__.py +2 -1
  6. plex-api-client-0.2.1/src/plex_api/models/errors/getstatistics.py +32 -0
  7. plex-api-client-0.2.1/src/plex_api/models/operations/__init__.py +64 -0
  8. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserverpreferences.py +9 -25
  9. plex-api-client-0.2.1/src/plex_api/models/operations/getstatistics.py +93 -0
  10. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/plex.py +2 -8
  11. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sdk.py +14 -10
  12. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sdkconfiguration.py +9 -8
  13. plex-api-client-0.2.1/src/plex_api/statistics.py +61 -0
  14. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/video.py +14 -14
  15. {plex-api-client-0.1.1 → plex-api-client-0.2.1/src/plex_api_client.egg-info}/PKG-INFO +18 -16
  16. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/SOURCES.txt +4 -1
  17. plex-api-client-0.1.1/src/plex_api/models/operations/__init__.py +0 -63
  18. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/LICENSE.md +0 -0
  19. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/setup.cfg +0 -0
  20. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/__init__.py +0 -0
  21. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/activities.py +0 -0
  22. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/butler.py +0 -0
  23. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/hubs.py +0 -0
  24. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/library.py +0 -0
  25. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/log.py +0 -0
  26. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/media.py +0 -0
  27. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/__init__.py +0 -0
  28. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/components/__init__.py +0 -0
  29. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/components/security.py +0 -0
  30. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/addplaylistcontents.py +0 -0
  31. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/applyupdates.py +0 -0
  32. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/cancelserveractivities.py +0 -0
  33. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/checkforupdates.py +0 -0
  34. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/clearplaylistcontents.py +0 -0
  35. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/createplaylist.py +0 -0
  36. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/deletelibrary.py +0 -0
  37. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/deleteplaylist.py +0 -0
  38. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/enablepapertrail.py +0 -0
  39. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getavailableclients.py +0 -0
  40. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getbutlertasks.py +0 -0
  41. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getdevices.py +0 -0
  42. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getfilehash.py +0 -0
  43. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getglobalhubs.py +0 -0
  44. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibraries.py +0 -0
  45. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibrary.py +0 -0
  46. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getlibraryhubs.py +0 -0
  47. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmetadata.py +0 -0
  48. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmetadatachildren.py +0 -0
  49. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getmyplexaccount.py +0 -0
  50. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getondeck.py +0 -0
  51. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getpin.py +0 -0
  52. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylist.py +0 -0
  53. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylistcontents.py +0 -0
  54. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getplaylists.py +0 -0
  55. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getrecentlyadded.py +0 -0
  56. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getresizedphoto.py +0 -0
  57. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsearchresults.py +0 -0
  58. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserveractivities.py +0 -0
  59. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getservercapabilities.py +0 -0
  60. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserveridentity.py +0 -0
  61. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserverlist.py +0 -0
  62. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getserverpreferences.py +0 -0
  63. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsessionhistory.py +0 -0
  64. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsessions.py +0 -0
  65. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getsourceconnectioninformation.py +0 -0
  66. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettimeline.py +0 -0
  67. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettoken.py +0 -0
  68. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettranscodesessions.py +0 -0
  69. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/gettransienttoken.py +0 -0
  70. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/getupdatestatus.py +0 -0
  71. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/logline.py +0 -0
  72. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/logmultiline.py +0 -0
  73. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/markplayed.py +0 -0
  74. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/markunplayed.py +0 -0
  75. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/performsearch.py +0 -0
  76. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/performvoicesearch.py +0 -0
  77. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/refreshlibrary.py +0 -0
  78. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/sdkerror.py +0 -0
  79. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/startalltasks.py +0 -0
  80. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/starttask.py +0 -0
  81. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/startuniversaltranscode.py +0 -0
  82. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stopalltasks.py +0 -0
  83. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stoptask.py +0 -0
  84. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/stoptranscodesession.py +0 -0
  85. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/updateplaylist.py +0 -0
  86. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/updateplayprogress.py +0 -0
  87. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/errors/uploadplaylist.py +0 -0
  88. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/addplaylistcontents.py +12 -12
  89. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/applyupdates.py +4 -4
  90. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/cancelserveractivities.py +2 -2
  91. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/checkforupdates.py +2 -2
  92. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/clearplaylistcontents.py +2 -2
  93. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/createplaylist.py +16 -16
  94. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/deletelibrary.py +2 -2
  95. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/deleteplaylist.py +2 -2
  96. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/enablepapertrail.py +2 -2
  97. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getavailableclients.py +10 -10
  98. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getbutlertasks.py +5 -5
  99. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getdevices.py +6 -6
  100. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getfilehash.py +2 -2
  101. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getglobalhubs.py +23 -23
  102. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraries.py +17 -17
  103. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibrary.py +14 -14
  104. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraryhubs.py +53 -53
  105. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getlibraryitems.py +61 -61
  106. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmetadata.py +67 -67
  107. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmetadatachildren.py +26 -26
  108. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getmyplexaccount.py +8 -8
  109. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getondeck.py +55 -55
  110. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getpin.py +16 -16
  111. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylist.py +13 -13
  112. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylistcontents.py +44 -44
  113. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getplaylists.py +14 -14
  114. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getrecentlyadded.py +39 -39
  115. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getresizedphoto.py +7 -7
  116. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsearchresults.py +38 -38
  117. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserveractivities.py +9 -9
  118. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getservercapabilities.py +4 -4
  119. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserveridentity.py +3 -3
  120. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getserverlist.py +6 -6
  121. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsessionhistory.py +15 -15
  122. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsessions.py +16 -16
  123. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getsourceconnectioninformation.py +2 -2
  124. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettimeline.py +16 -16
  125. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettoken.py +2 -2
  126. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettranscodesessions.py +20 -20
  127. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/gettransienttoken.py +4 -4
  128. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/getupdatestatus.py +7 -7
  129. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/logline.py +2 -2
  130. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/logmultiline.py +2 -2
  131. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/markplayed.py +2 -2
  132. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/markunplayed.py +2 -2
  133. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/performsearch.py +4 -4
  134. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/performvoicesearch.py +4 -4
  135. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/refreshlibrary.py +2 -2
  136. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/searchlibrary.py +17 -17
  137. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/startalltasks.py +2 -2
  138. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/starttask.py +2 -2
  139. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/startuniversaltranscode.py +16 -16
  140. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stopalltasks.py +2 -2
  141. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stoptask.py +2 -2
  142. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/stoptranscodesession.py +2 -2
  143. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/updateplaylist.py +4 -4
  144. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/updateplayprogress.py +4 -4
  145. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/models/operations/uploadplaylist.py +8 -8
  146. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/playlists.py +0 -0
  147. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/search.py +0 -0
  148. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/server.py +0 -0
  149. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/sessions.py +0 -0
  150. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/updater.py +0 -0
  151. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/__init__.py +0 -0
  152. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/retries.py +0 -0
  153. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api/utils/utils.py +0 -0
  154. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/dependency_links.txt +0 -0
  155. {plex-api-client-0.1.1 → plex-api-client-0.2.1}/src/plex_api_client.egg-info/requires.txt +0 -0
  156. {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.1.1
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
- ### [security](docs/sdks/security/README.md)
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
- * [get_transient_token](docs/sdks/security/README.md#get_transient_token) - Get a Transient Token.
130
- * [get_source_connection_information](docs/sdks/security/README.md#get_source_connection_information) - Get Source Connection Information
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
- print(e) # handle exception
180
+ # handle exception
176
181
  raise(e)
177
182
  except errors.SDKError as e:
178
- print(e) # handle exception
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='string', strong=False)
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
- ### [security](docs/sdks/security/README.md)
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
- * [get_transient_token](docs/sdks/security/README.md#get_transient_token) - Get a Transient Token.
123
- * [get_source_connection_information](docs/sdks/security/README.md#get_source_connection_information) - Get Source Connection Information
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
- print(e) # handle exception
173
+ # handle exception
169
174
  raise(e)
170
175
  except errors.SDKError as e:
171
- print(e) # handle exception
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='string', strong=False)
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
@@ -10,7 +10,7 @@ except FileNotFoundError:
10
10
 
11
11
  setuptools.setup(
12
12
  name="plex-api-client",
13
- version="0.1.1",
13
+ version="0.2.1",
14
14
  author="LukeHagar",
15
15
  description="Python Client SDK Generated by Speakeasy",
16
16
  long_description=long_description,
@@ -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 Security:
8
- r"""API Calls against Security for Plex Media Server"""
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, Union
8
+ from typing import List, Optional
9
9
 
10
10
 
11
11
  @dataclass_json(undefined=Undefined.EXCLUDE)
12
12
  @dataclasses.dataclass
13
- class Two:
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
- value: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('value'), 'exclude': lambda f: f is None }})
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
- hidden: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hidden'), 'exclude': lambda f: f is None }})
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
- if callable(self.sdk_configuration.security):
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
- if callable(self.sdk_configuration.security):
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
- security: Security
59
- r"""API Calls against Security for Plex Media Server"""
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: ServerProtocolmodels.ServerProtocol
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.security = Security(self.sdk_configuration)
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