plex-api-client 0.30.0__tar.gz → 0.31.0__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 (518) hide show
  1. plex_api_client-0.31.0/PKG-INFO +1064 -0
  2. plex_api_client-0.31.0/README-PYPI.md +1044 -0
  3. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/pyproject.toml +1 -2
  4. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/_version.py +4 -4
  5. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/activities.py +86 -110
  6. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/butler.py +207 -287
  7. plex_api_client-0.30.0/src/plex_api_client/watchlist.py → plex_api_client-0.31.0/src/plex_api_client/collections.py +68 -66
  8. plex_api_client-0.31.0/src/plex_api_client/content.py +2699 -0
  9. plex_api_client-0.31.0/src/plex_api_client/devices.py +2646 -0
  10. plex_api_client-0.30.0/src/plex_api_client/playlists.py → plex_api_client-0.31.0/src/plex_api_client/download_queue.py +600 -609
  11. plex_api_client-0.31.0/src/plex_api_client/dvrs.py +2443 -0
  12. plex_api_client-0.30.0/src/plex_api_client/server.py → plex_api_client-0.31.0/src/plex_api_client/epg.py +548 -474
  13. plex_api_client-0.31.0/src/plex_api_client/events.py +432 -0
  14. plex_api_client-0.30.0/src/plex_api_client/authentication.py → plex_api_client-0.31.0/src/plex_api_client/general.py +250 -280
  15. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/httpclient.py +0 -1
  16. plex_api_client-0.31.0/src/plex_api_client/hubs.py +2901 -0
  17. plex_api_client-0.31.0/src/plex_api_client/library.py +16108 -0
  18. plex_api_client-0.31.0/src/plex_api_client/library_collections.py +637 -0
  19. plex_api_client-0.31.0/src/plex_api_client/library_playlists.py +2693 -0
  20. plex_api_client-0.30.0/src/plex_api_client/sessions.py → plex_api_client-0.31.0/src/plex_api_client/live_tv.py +235 -253
  21. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/log.py +172 -218
  22. plex_api_client-0.31.0/src/plex_api_client/models/components/__init__.py +622 -0
  23. plex_api_client-0.31.0/src/plex_api_client/models/components/accepts.py +9 -0
  24. plex_api_client-0.31.0/src/plex_api_client/models/components/advancedsubtitles.py +10 -0
  25. plex_api_client-0.31.0/src/plex_api_client/models/components/boolint.py +9 -0
  26. plex_api_client-0.31.0/src/plex_api_client/models/components/channel.py +36 -0
  27. plex_api_client-0.31.0/src/plex_api_client/models/components/channelmapping.py +28 -0
  28. plex_api_client-0.31.0/src/plex_api_client/models/components/composite.py +97 -0
  29. plex_api_client-0.31.0/src/plex_api_client/models/components/device.py +54 -0
  30. plex_api_client-0.31.0/src/plex_api_client/models/components/directory.py +98 -0
  31. plex_api_client-0.31.0/src/plex_api_client/models/components/dvrrequesthandler_slash_get_responses_200.py +109 -0
  32. plex_api_client-0.31.0/src/plex_api_client/models/components/filter_.py +113 -0
  33. plex_api_client-0.31.0/src/plex_api_client/models/components/get_responses_200.py +173 -0
  34. plex_api_client-0.31.0/src/plex_api_client/models/components/historyall_get_responses_200.py +133 -0
  35. plex_api_client-0.31.0/src/plex_api_client/models/components/hub.py +101 -0
  36. plex_api_client-0.31.0/src/plex_api_client/models/components/image.py +41 -0
  37. plex_api_client-0.31.0/src/plex_api_client/models/components/items.py +405 -0
  38. plex_api_client-0.31.0/src/plex_api_client/models/components/librarysection.py +97 -0
  39. plex_api_client-0.31.0/src/plex_api_client/models/components/lineup.py +68 -0
  40. plex_api_client-0.31.0/src/plex_api_client/models/components/location.py +10 -0
  41. plex_api_client-0.31.0/src/plex_api_client/models/components/media.py +97 -0
  42. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainer.py +48 -0
  43. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithartwork.py +102 -0
  44. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithdecision.py +870 -0
  45. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithdevice.py +111 -0
  46. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithdirectory.py +65 -0
  47. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithhubs.py +67 -0
  48. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithlineup.py +68 -0
  49. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithmetadata.py +65 -0
  50. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithnestedmetadata.py +465 -0
  51. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithplaylistmetadata.py +493 -0
  52. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithsettings.py +63 -0
  53. plex_api_client-0.31.0/src/plex_api_client/models/components/mediacontainerwithsubscription.py +65 -0
  54. plex_api_client-0.31.0/src/plex_api_client/models/components/mediagraboperation.py +82 -0
  55. plex_api_client-0.31.0/src/plex_api_client/models/components/mediaquery.py +13 -0
  56. plex_api_client-0.31.0/src/plex_api_client/models/components/mediasubscription.py +104 -0
  57. plex_api_client-0.31.0/src/plex_api_client/models/components/metadata.py +400 -0
  58. plex_api_client-0.31.0/src/plex_api_client/models/components/part.py +78 -0
  59. plex_api_client-0.31.0/src/plex_api_client/models/components/player.py +97 -0
  60. plex_api_client-0.31.0/src/plex_api_client/models/components/post_responses_200.py +107 -0
  61. plex_api_client-0.31.0/src/plex_api_client/models/components/protocol.py +10 -0
  62. plex_api_client-0.30.0/src/plex_api_client/models/operations/getservercapabilities.py → plex_api_client-0.31.0/src/plex_api_client/models/components/requesthandler_slash_get_responses_200.py +88 -74
  63. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/components/security.py +2 -2
  64. plex_api_client-0.31.0/src/plex_api_client/models/components/session.py +38 -0
  65. plex_api_client-0.31.0/src/plex_api_client/models/components/setting.py +92 -0
  66. plex_api_client-0.31.0/src/plex_api_client/models/components/slash_get_responses_200.py +88 -0
  67. plex_api_client-0.31.0/src/plex_api_client/models/components/sort.py +145 -0
  68. plex_api_client-0.31.0/src/plex_api_client/models/components/stream.py +143 -0
  69. plex_api_client-0.31.0/src/plex_api_client/models/components/subtitles.py +14 -0
  70. plex_api_client-0.31.0/src/plex_api_client/models/components/tag.py +56 -0
  71. plex_api_client-0.31.0/src/plex_api_client/models/components/transcodesession.py +66 -0
  72. plex_api_client-0.31.0/src/plex_api_client/models/components/transcodetype.py +11 -0
  73. plex_api_client-0.31.0/src/plex_api_client/models/components/user.py +30 -0
  74. plex_api_client-0.31.0/src/plex_api_client/models/errors/__init__.py +58 -0
  75. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/errors/no_response_error.py +1 -1
  76. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/errors/plexapierror.py +1 -1
  77. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/errors/responsevalidationerror.py +1 -1
  78. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/errors/sdkerror.py +1 -1
  79. {plex_api_client-0.30.0/src/plex_api_client/models/components → plex_api_client-0.31.0/src/plex_api_client/models/internal}/__init__.py +4 -4
  80. plex_api_client-0.31.0/src/plex_api_client/models/internal/globals.py +112 -0
  81. plex_api_client-0.31.0/src/plex_api_client/models/operations/__init__.py +5785 -0
  82. plex_api_client-0.31.0/src/plex_api_client/models/operations/addcollectionitems.py +269 -0
  83. plex_api_client-0.31.0/src/plex_api_client/models/operations/adddevice.py +256 -0
  84. plex_api_client-0.31.0/src/plex_api_client/models/operations/adddevicetodvr.py +363 -0
  85. plex_api_client-0.31.0/src/plex_api_client/models/operations/adddownloadqueueitems.py +586 -0
  86. plex_api_client-0.31.0/src/plex_api_client/models/operations/addextras.py +270 -0
  87. plex_api_client-0.31.0/src/plex_api_client/models/operations/addlineup.py +363 -0
  88. plex_api_client-0.31.0/src/plex_api_client/models/operations/addplaylistitems.py +279 -0
  89. plex_api_client-0.31.0/src/plex_api_client/models/operations/addprovider.py +243 -0
  90. plex_api_client-0.31.0/src/plex_api_client/models/operations/addsection.py +335 -0
  91. plex_api_client-0.31.0/src/plex_api_client/models/operations/addsubtitles.py +296 -0
  92. plex_api_client-0.31.0/src/plex_api_client/models/operations/addtoplayqueue.py +288 -0
  93. plex_api_client-0.31.0/src/plex_api_client/models/operations/analyzemetadata.py +264 -0
  94. plex_api_client-0.31.0/src/plex_api_client/models/operations/applyupdates.py +255 -0
  95. plex_api_client-0.31.0/src/plex_api_client/models/operations/autocomplete.py +292 -0
  96. plex_api_client-0.31.0/src/plex_api_client/models/operations/cancelactivity.py +245 -0
  97. plex_api_client-0.31.0/src/plex_api_client/models/operations/cancelgrab.py +245 -0
  98. plex_api_client-0.31.0/src/plex_api_client/models/operations/cancelrefresh.py +245 -0
  99. plex_api_client-0.31.0/src/plex_api_client/models/operations/checkupdates.py +247 -0
  100. plex_api_client-0.30.0/src/plex_api_client/models/operations/stopalltasks.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/cleanbundles.py +2 -2
  101. plex_api_client-0.31.0/src/plex_api_client/models/operations/clearplaylistitems.py +257 -0
  102. plex_api_client-0.31.0/src/plex_api_client/models/operations/clearplayqueue.py +257 -0
  103. plex_api_client-0.31.0/src/plex_api_client/models/operations/computechannelmap.py +347 -0
  104. plex_api_client-0.31.0/src/plex_api_client/models/operations/connectwebsocket.py +264 -0
  105. plex_api_client-0.31.0/src/plex_api_client/models/operations/createcollection.py +289 -0
  106. plex_api_client-0.31.0/src/plex_api_client/models/operations/createcustomhub.py +289 -0
  107. plex_api_client-0.31.0/src/plex_api_client/models/operations/createdownloadqueue.py +142 -0
  108. plex_api_client-0.31.0/src/plex_api_client/models/operations/createdvr.py +276 -0
  109. plex_api_client-0.31.0/src/plex_api_client/models/operations/createmarker.py +392 -0
  110. plex_api_client-0.31.0/src/plex_api_client/models/operations/createplaylist.py +265 -0
  111. plex_api_client-0.31.0/src/plex_api_client/models/operations/createplayqueue.py +454 -0
  112. plex_api_client-0.31.0/src/plex_api_client/models/operations/createsubscription.py +401 -0
  113. plex_api_client-0.30.0/src/plex_api_client/models/operations/logmultiline.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/deletecaches.py +2 -2
  114. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletecollection.py +254 -0
  115. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletecollectionitem.py +266 -0
  116. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletecustomhub.py +252 -0
  117. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletedvr.py +245 -0
  118. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletehistory.py +256 -0
  119. plex_api_client-0.31.0/src/plex_api_client/models/operations/deleteindexes.py +245 -0
  120. plex_api_client-0.31.0/src/plex_api_client/models/operations/deleteintros.py +245 -0
  121. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletelibrarysection.py +262 -0
  122. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletelineup.py +363 -0
  123. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletemarker.py +246 -0
  124. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletemediaitem.py +264 -0
  125. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletemediaprovider.py +243 -0
  126. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletemetadataitem.py +257 -0
  127. plex_api_client-0.31.0/src/plex_api_client/models/operations/deleteplaylist.py +245 -0
  128. plex_api_client-0.31.0/src/plex_api_client/models/operations/deleteplaylistitem.py +266 -0
  129. plex_api_client-0.31.0/src/plex_api_client/models/operations/deleteplayqueueitem.py +266 -0
  130. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletestream.py +252 -0
  131. plex_api_client-0.31.0/src/plex_api_client/models/operations/deletesubscription.py +243 -0
  132. plex_api_client-0.31.0/src/plex_api_client/models/operations/detectads.py +241 -0
  133. plex_api_client-0.31.0/src/plex_api_client/models/operations/detectcredits.py +261 -0
  134. plex_api_client-0.31.0/src/plex_api_client/models/operations/detectintros.py +265 -0
  135. plex_api_client-0.31.0/src/plex_api_client/models/operations/detectvoiceactivity.py +265 -0
  136. plex_api_client-0.30.0/src/plex_api_client/models/operations/markplayed.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/discoverdevices.py +16 -16
  137. plex_api_client-0.31.0/src/plex_api_client/models/operations/editmarker.py +304 -0
  138. plex_api_client-0.31.0/src/plex_api_client/models/operations/editmetadataitem.py +262 -0
  139. plex_api_client-0.31.0/src/plex_api_client/models/operations/editsection.py +314 -0
  140. plex_api_client-0.31.0/src/plex_api_client/models/operations/editsubscriptionpreferences.py +274 -0
  141. plex_api_client-0.31.0/src/plex_api_client/models/operations/emptytrash.py +245 -0
  142. plex_api_client-0.31.0/src/plex_api_client/models/operations/enablepapertrail.py +244 -0
  143. plex_api_client-0.31.0/src/plex_api_client/models/operations/generatethumbs.py +255 -0
  144. plex_api_client-0.31.0/src/plex_api_client/models/operations/getalbums.py +257 -0
  145. plex_api_client-0.31.0/src/plex_api_client/models/operations/getallhubs.py +333 -0
  146. plex_api_client-0.31.0/src/plex_api_client/models/operations/getallitemleaves.py +256 -0
  147. plex_api_client-0.31.0/src/plex_api_client/models/operations/getalllanguages.py +109 -0
  148. plex_api_client-0.31.0/src/plex_api_client/models/operations/getallleaves.py +257 -0
  149. plex_api_client-0.30.0/src/plex_api_client/models/operations/deleteplaylist.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/getallpreferences.py +16 -19
  150. plex_api_client-0.31.0/src/plex_api_client/models/operations/getallsubscriptions.py +270 -0
  151. plex_api_client-0.31.0/src/plex_api_client/models/operations/getarts.py +257 -0
  152. plex_api_client-0.31.0/src/plex_api_client/models/operations/getaugmentationstatus.py +261 -0
  153. plex_api_client-0.31.0/src/plex_api_client/models/operations/getavailablegrabbers.py +327 -0
  154. plex_api_client-0.31.0/src/plex_api_client/models/operations/getavailablesorts.py +314 -0
  155. plex_api_client-0.31.0/src/plex_api_client/models/operations/getbackgroundtasks.py +145 -0
  156. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcategories.py +257 -0
  157. plex_api_client-0.31.0/src/plex_api_client/models/operations/getchannels.py +314 -0
  158. plex_api_client-0.31.0/src/plex_api_client/models/operations/getchapterimage.py +257 -0
  159. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcluster.py +257 -0
  160. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcollectionimage.py +273 -0
  161. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcollectionitems.py +257 -0
  162. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcollections.py +275 -0
  163. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcolors.py +334 -0
  164. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcommon.py +283 -0
  165. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcontinuewatching.py +316 -0
  166. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcountries.py +154 -0
  167. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcountrieslineups.py +278 -0
  168. plex_api_client-0.31.0/src/plex_api_client/models/operations/getcountryregions.py +338 -0
  169. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdevicedetails.py +257 -0
  170. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdeviceschannels.py +349 -0
  171. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdownloadqueue.py +359 -0
  172. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdownloadqueueitems.py +471 -0
  173. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdownloadqueuemedia.py +257 -0
  174. plex_api_client-0.31.0/src/plex_api_client/models/operations/getdvr.py +351 -0
  175. plex_api_client-0.31.0/src/plex_api_client/models/operations/getextras.py +256 -0
  176. plex_api_client-0.31.0/src/plex_api_client/models/operations/getfile.py +264 -0
  177. plex_api_client-0.31.0/src/plex_api_client/models/operations/getfirstcharacters.py +360 -0
  178. plex_api_client-0.31.0/src/plex_api_client/models/operations/getfolders.py +324 -0
  179. plex_api_client-0.31.0/src/plex_api_client/models/operations/gethistoryitem.py +260 -0
  180. plex_api_client-0.31.0/src/plex_api_client/models/operations/gethubitems.py +287 -0
  181. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_server_identity.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/getidentity.py +23 -18
  182. plex_api_client-0.31.0/src/plex_api_client/models/operations/getimage.py +304 -0
  183. plex_api_client-0.31.0/src/plex_api_client/models/operations/getimagefrombif.py +272 -0
  184. plex_api_client-0.31.0/src/plex_api_client/models/operations/getitemartwork.py +274 -0
  185. plex_api_client-0.31.0/src/plex_api_client/models/operations/getitemdecision.py +266 -0
  186. plex_api_client-0.31.0/src/plex_api_client/models/operations/getitemtree.py +253 -0
  187. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlibrarydetails.py +348 -0
  188. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlibraryitems.py +261 -0
  189. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlibrarymatches.py +366 -0
  190. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlineup.py +257 -0
  191. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlineupchannels.py +376 -0
  192. plex_api_client-0.31.0/src/plex_api_client/models/operations/getlivetvsession.py +260 -0
  193. plex_api_client-0.31.0/src/plex_api_client/models/operations/getmediapart.py +278 -0
  194. plex_api_client-0.31.0/src/plex_api_client/models/operations/getmetadatahubs.py +283 -0
  195. plex_api_client-0.31.0/src/plex_api_client/models/operations/getmetadataitem.py +334 -0
  196. plex_api_client-0.31.0/src/plex_api_client/models/operations/getnotifications.py +264 -0
  197. plex_api_client-0.31.0/src/plex_api_client/models/operations/getpartindex.py +277 -0
  198. plex_api_client-0.31.0/src/plex_api_client/models/operations/getperson.py +313 -0
  199. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplaylist.py +257 -0
  200. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplaylistgenerator.py +561 -0
  201. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplaylistgeneratoritems.py +782 -0
  202. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplaylistgenerators.py +364 -0
  203. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplaylistitems.py +273 -0
  204. plex_api_client-0.31.0/src/plex_api_client/models/operations/getplayqueue.py +305 -0
  205. plex_api_client-0.31.0/src/plex_api_client/models/operations/getpostplayhubs.py +283 -0
  206. plex_api_client-0.31.0/src/plex_api_client/models/operations/getpreference.py +256 -0
  207. plex_api_client-0.31.0/src/plex_api_client/models/operations/getpromotedhubs.py +315 -0
  208. plex_api_client-0.31.0/src/plex_api_client/models/operations/getrandomartwork.py +256 -0
  209. plex_api_client-0.31.0/src/plex_api_client/models/operations/getrelatedhubs.py +283 -0
  210. plex_api_client-0.31.0/src/plex_api_client/models/operations/getrelateditems.py +309 -0
  211. plex_api_client-0.31.0/src/plex_api_client/models/operations/getscheduledrecordings.py +103 -0
  212. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsectionfilters.py +315 -0
  213. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsectionhubs.py +339 -0
  214. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsectionimage.py +278 -0
  215. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsectionpreferences.py +268 -0
  216. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsections.py +108 -0
  217. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsectionsprefs.py +263 -0
  218. plex_api_client-0.31.0/src/plex_api_client/models/operations/getserverinfo.py +248 -0
  219. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsessionplaylistindex.py +254 -0
  220. plex_api_client-0.30.0/src/plex_api_client/models/operations/getsourceconnectioninformation.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/getsessions.py +19 -16
  221. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsessionsegment.py +263 -0
  222. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsonicallysimilar.py +294 -0
  223. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsonicpath.py +297 -0
  224. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsourceconnectioninformation.py +366 -0
  225. plex_api_client-0.31.0/src/plex_api_client/models/operations/getstream.py +286 -0
  226. plex_api_client-0.31.0/src/plex_api_client/models/operations/getstreamlevels.py +338 -0
  227. plex_api_client-0.31.0/src/plex_api_client/models/operations/getstreamloudness.py +263 -0
  228. plex_api_client-0.31.0/src/plex_api_client/models/operations/getsubscription.py +279 -0
  229. plex_api_client-0.31.0/src/plex_api_client/models/operations/gettags.py +342 -0
  230. plex_api_client-0.30.0/src/plex_api_client/models/operations/getbutlertasks.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/gettasks.py +31 -19
  231. plex_api_client-0.31.0/src/plex_api_client/models/operations/gettemplate.py +429 -0
  232. plex_api_client-0.31.0/src/plex_api_client/models/operations/getthumb.py +254 -0
  233. plex_api_client-0.31.0/src/plex_api_client/models/operations/gettransienttoken.py +330 -0
  234. plex_api_client-0.31.0/src/plex_api_client/models/operations/getupdatesstatus.py +168 -0
  235. plex_api_client-0.31.0/src/plex_api_client/models/operations/ingesttransientitem.py +287 -0
  236. plex_api_client-0.31.0/src/plex_api_client/models/operations/listactivities.py +109 -0
  237. plex_api_client-0.31.0/src/plex_api_client/models/operations/listcontent.py +275 -0
  238. plex_api_client-0.30.0/src/plex_api_client/models/operations/cancelserveractivities.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/listdevices.py +19 -19
  239. plex_api_client-0.31.0/src/plex_api_client/models/operations/listdownloadqueueitems.py +458 -0
  240. plex_api_client-0.31.0/src/plex_api_client/models/operations/listdvrs.py +132 -0
  241. plex_api_client-0.31.0/src/plex_api_client/models/operations/listhubs.py +431 -0
  242. plex_api_client-0.31.0/src/plex_api_client/models/operations/listlineups.py +274 -0
  243. plex_api_client-0.31.0/src/plex_api_client/models/operations/listmatches.py +296 -0
  244. plex_api_client-0.31.0/src/plex_api_client/models/operations/listmoments.py +257 -0
  245. plex_api_client-0.31.0/src/plex_api_client/models/operations/listpersonmedia.py +257 -0
  246. plex_api_client-0.31.0/src/plex_api_client/models/operations/listplaybackhistory.py +413 -0
  247. plex_api_client-0.31.0/src/plex_api_client/models/operations/listplaylists.py +277 -0
  248. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_media_providers.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/listproviders.py +119 -164
  249. plex_api_client-0.31.0/src/plex_api_client/models/operations/listsessions.py +537 -0
  250. plex_api_client-0.31.0/src/plex_api_client/models/operations/listsimilar.py +266 -0
  251. plex_api_client-0.31.0/src/plex_api_client/models/operations/listsonicallysimilar.py +285 -0
  252. plex_api_client-0.31.0/src/plex_api_client/models/operations/listtopusers.py +317 -0
  253. plex_api_client-0.31.0/src/plex_api_client/models/operations/makedecision.py +571 -0
  254. plex_api_client-0.31.0/src/plex_api_client/models/operations/markplayed.py +259 -0
  255. plex_api_client-0.31.0/src/plex_api_client/models/operations/matchitem.py +264 -0
  256. plex_api_client-0.31.0/src/plex_api_client/models/operations/mergeitems.py +255 -0
  257. plex_api_client-0.31.0/src/plex_api_client/models/operations/modifydevice.py +330 -0
  258. plex_api_client-0.31.0/src/plex_api_client/models/operations/modifyplaylistgenerator.py +367 -0
  259. plex_api_client-0.31.0/src/plex_api_client/models/operations/movecollectionitem.py +279 -0
  260. plex_api_client-0.31.0/src/plex_api_client/models/operations/movehub.py +278 -0
  261. plex_api_client-0.31.0/src/plex_api_client/models/operations/moveplaylistitem.py +279 -0
  262. plex_api_client-0.31.0/src/plex_api_client/models/operations/moveplayqueueitem.py +279 -0
  263. plex_api_client-0.31.0/src/plex_api_client/models/operations/optimizedatabase.py +248 -0
  264. plex_api_client-0.31.0/src/plex_api_client/models/operations/processsubscriptions.py +30 -0
  265. plex_api_client-0.31.0/src/plex_api_client/models/operations/refreshitemsmetadata.py +262 -0
  266. plex_api_client-0.31.0/src/plex_api_client/models/operations/refreshplaylist.py +279 -0
  267. plex_api_client-0.30.0/src/plex_api_client/models/operations/enablepapertrail.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/refreshproviders.py +2 -2
  268. plex_api_client-0.31.0/src/plex_api_client/models/operations/refreshsection.py +269 -0
  269. plex_api_client-0.31.0/src/plex_api_client/models/operations/refreshsectionsmetadata.py +244 -0
  270. plex_api_client-0.31.0/src/plex_api_client/models/operations/reloadguide.py +248 -0
  271. plex_api_client-0.31.0/src/plex_api_client/models/operations/removedevice.py +314 -0
  272. plex_api_client-0.31.0/src/plex_api_client/models/operations/removedevicefromdvr.py +364 -0
  273. plex_api_client-0.31.0/src/plex_api_client/models/operations/removedownloadqueueitems.py +254 -0
  274. plex_api_client-0.31.0/src/plex_api_client/models/operations/reordersubscription.py +268 -0
  275. plex_api_client-0.31.0/src/plex_api_client/models/operations/report.py +701 -0
  276. plex_api_client-0.31.0/src/plex_api_client/models/operations/resetplayqueue.py +257 -0
  277. plex_api_client-0.31.0/src/plex_api_client/models/operations/resetsectiondefaults.py +245 -0
  278. plex_api_client-0.31.0/src/plex_api_client/models/operations/restartprocessingdownloadqueueitems.py +254 -0
  279. plex_api_client-0.31.0/src/plex_api_client/models/operations/scan.py +273 -0
  280. plex_api_client-0.31.0/src/plex_api_client/models/operations/searchhubs.py +331 -0
  281. plex_api_client-0.31.0/src/plex_api_client/models/operations/setchannelmap.py +305 -0
  282. plex_api_client-0.31.0/src/plex_api_client/models/operations/setdevicepreferences.py +258 -0
  283. plex_api_client-0.31.0/src/plex_api_client/models/operations/setdvrpreferences.py +368 -0
  284. plex_api_client-0.31.0/src/plex_api_client/models/operations/setitemartwork.py +269 -0
  285. plex_api_client-0.31.0/src/plex_api_client/models/operations/setitempreferences.py +260 -0
  286. plex_api_client-0.31.0/src/plex_api_client/models/operations/setpreferences.py +249 -0
  287. plex_api_client-0.31.0/src/plex_api_client/models/operations/setrating.py +266 -0
  288. plex_api_client-0.31.0/src/plex_api_client/models/operations/setsectionpreferences.py +264 -0
  289. plex_api_client-0.31.0/src/plex_api_client/models/operations/setstreamoffset.py +265 -0
  290. plex_api_client-0.31.0/src/plex_api_client/models/operations/setstreamselection.py +280 -0
  291. plex_api_client-0.31.0/src/plex_api_client/models/operations/shuffle.py +257 -0
  292. plex_api_client-0.31.0/src/plex_api_client/models/operations/splititem.py +241 -0
  293. plex_api_client-0.31.0/src/plex_api_client/models/operations/startanalysis.py +245 -0
  294. plex_api_client-0.31.0/src/plex_api_client/models/operations/startbifgeneration.py +255 -0
  295. plex_api_client-0.31.0/src/plex_api_client/models/operations/starttask.py +272 -0
  296. plex_api_client-0.30.0/src/plex_api_client/models/operations/startalltasks.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/starttasks.py +2 -2
  297. plex_api_client-0.31.0/src/plex_api_client/models/operations/starttranscodesession.py +584 -0
  298. plex_api_client-0.30.0/src/plex_api_client/models/operations/clearplaylistcontents.py → plex_api_client-0.31.0/src/plex_api_client/models/operations/stopallrefreshes.py +16 -19
  299. plex_api_client-0.31.0/src/plex_api_client/models/operations/stopdvrreload.py +245 -0
  300. plex_api_client-0.31.0/src/plex_api_client/models/operations/stopscan.py +257 -0
  301. plex_api_client-0.31.0/src/plex_api_client/models/operations/stoptask.py +271 -0
  302. plex_api_client-0.31.0/src/plex_api_client/models/operations/stoptasks.py +26 -0
  303. plex_api_client-0.31.0/src/plex_api_client/models/operations/terminatesession.py +253 -0
  304. plex_api_client-0.31.0/src/plex_api_client/models/operations/transcodeimage.py +407 -0
  305. plex_api_client-0.31.0/src/plex_api_client/models/operations/transcodesubtitles.py +561 -0
  306. plex_api_client-0.31.0/src/plex_api_client/models/operations/triggerfallback.py +262 -0
  307. plex_api_client-0.31.0/src/plex_api_client/models/operations/tunechannel.py +267 -0
  308. plex_api_client-0.31.0/src/plex_api_client/models/operations/unmatch.py +241 -0
  309. plex_api_client-0.31.0/src/plex_api_client/models/operations/unscrobble.py +259 -0
  310. plex_api_client-0.31.0/src/plex_api_client/models/operations/unshuffle.py +257 -0
  311. plex_api_client-0.31.0/src/plex_api_client/models/operations/updatehubvisibility.py +287 -0
  312. plex_api_client-0.31.0/src/plex_api_client/models/operations/updateitemartwork.py +270 -0
  313. plex_api_client-0.31.0/src/plex_api_client/models/operations/updateitems.py +366 -0
  314. plex_api_client-0.31.0/src/plex_api_client/models/operations/updateplaylist.py +245 -0
  315. plex_api_client-0.31.0/src/plex_api_client/models/operations/uploadplaylist.py +255 -0
  316. plex_api_client-0.31.0/src/plex_api_client/models/operations/voicesearchhubs.py +330 -0
  317. plex_api_client-0.31.0/src/plex_api_client/models/operations/writelog.py +26 -0
  318. plex_api_client-0.31.0/src/plex_api_client/models/operations/writemessage.py +292 -0
  319. plex_api_client-0.31.0/src/plex_api_client/play_queue.py +1879 -0
  320. plex_api_client-0.31.0/src/plex_api_client/playlist.py +639 -0
  321. plex_api_client-0.30.0/src/plex_api_client/hubs.py → plex_api_client-0.31.0/src/plex_api_client/preferences.py +152 -192
  322. plex_api_client-0.30.0/src/plex_api_client/search.py → plex_api_client-0.31.0/src/plex_api_client/provider.py +319 -249
  323. plex_api_client-0.30.0/src/plex_api_client/users.py → plex_api_client-0.31.0/src/plex_api_client/rate.py +76 -71
  324. plex_api_client-0.31.0/src/plex_api_client/sdk.py +427 -0
  325. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/sdkconfiguration.py +5 -11
  326. plex_api_client-0.31.0/src/plex_api_client/search.py +469 -0
  327. plex_api_client-0.30.0/src/plex_api_client/plex.py → plex_api_client-0.31.0/src/plex_api_client/status.py +335 -555
  328. plex_api_client-0.31.0/src/plex_api_client/subscriptions.py +1995 -0
  329. plex_api_client-0.30.0/src/plex_api_client/statistics.py → plex_api_client-0.31.0/src/plex_api_client/timeline.py +202 -200
  330. plex_api_client-0.30.0/src/plex_api_client/media.py → plex_api_client-0.31.0/src/plex_api_client/transcoder.py +369 -340
  331. plex_api_client-0.30.0/src/plex_api_client/video.py → plex_api_client-0.31.0/src/plex_api_client/ultrablur.py +129 -127
  332. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/updater.py +164 -190
  333. plex_api_client-0.31.0/src/plex_api_client/utils/annotations.py +79 -0
  334. plex_api_client-0.30.0/PKG-INFO +0 -899
  335. plex_api_client-0.30.0/README-PYPI.md +0 -879
  336. plex_api_client-0.30.0/src/plex_api_client/library.py +0 -4244
  337. plex_api_client-0.30.0/src/plex_api_client/models/errors/__init__.py +0 -2087
  338. plex_api_client-0.30.0/src/plex_api_client/models/errors/addplaylistcontents.py +0 -90
  339. plex_api_client-0.30.0/src/plex_api_client/models/errors/applyupdates.py +0 -90
  340. plex_api_client-0.30.0/src/plex_api_client/models/errors/cancelserveractivities.py +0 -90
  341. plex_api_client-0.30.0/src/plex_api_client/models/errors/checkforupdates.py +0 -90
  342. plex_api_client-0.30.0/src/plex_api_client/models/errors/clearplaylistcontents.py +0 -90
  343. plex_api_client-0.30.0/src/plex_api_client/models/errors/createplaylist.py +0 -90
  344. plex_api_client-0.30.0/src/plex_api_client/models/errors/deletelibrary.py +0 -90
  345. plex_api_client-0.30.0/src/plex_api_client/models/errors/deleteplaylist.py +0 -90
  346. plex_api_client-0.30.0/src/plex_api_client/models/errors/enablepapertrail.py +0 -90
  347. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_actors_library.py +0 -90
  348. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_all_libraries.py +0 -90
  349. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_banner_image.py +0 -90
  350. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_countries_library.py +0 -90
  351. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_genres_library.py +0 -90
  352. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_library_details.py +0 -90
  353. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_library_items.py +0 -90
  354. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_library_sections_all.py +0 -90
  355. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_media_meta_data.py +0 -90
  356. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_media_providers.py +0 -90
  357. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_recently_added_library.py +0 -90
  358. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_refresh_library_metadata.py +0 -90
  359. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_search_all_libraries.py +0 -90
  360. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_search_library.py +0 -90
  361. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_server_identity.py +0 -39
  362. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_server_resources.py +0 -90
  363. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_thumb_image.py +0 -90
  364. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_users.py +0 -90
  365. plex_api_client-0.30.0/src/plex_api_client/models/errors/get_watch_list.py +0 -90
  366. plex_api_client-0.30.0/src/plex_api_client/models/errors/getavailableclients.py +0 -90
  367. plex_api_client-0.30.0/src/plex_api_client/models/errors/getbandwidthstatistics.py +0 -90
  368. plex_api_client-0.30.0/src/plex_api_client/models/errors/getbutlertasks.py +0 -90
  369. plex_api_client-0.30.0/src/plex_api_client/models/errors/getcompanionsdata.py +0 -90
  370. plex_api_client-0.30.0/src/plex_api_client/models/errors/getdevices.py +0 -90
  371. plex_api_client-0.30.0/src/plex_api_client/models/errors/getfilehash.py +0 -90
  372. plex_api_client-0.30.0/src/plex_api_client/models/errors/getgeodata.py +0 -90
  373. plex_api_client-0.30.0/src/plex_api_client/models/errors/getglobalhubs.py +0 -90
  374. plex_api_client-0.30.0/src/plex_api_client/models/errors/gethomedata.py +0 -90
  375. plex_api_client-0.30.0/src/plex_api_client/models/errors/getlibraryhubs.py +0 -90
  376. plex_api_client-0.30.0/src/plex_api_client/models/errors/getmetadatachildren.py +0 -90
  377. plex_api_client-0.30.0/src/plex_api_client/models/errors/getmyplexaccount.py +0 -90
  378. plex_api_client-0.30.0/src/plex_api_client/models/errors/getpin.py +0 -50
  379. plex_api_client-0.30.0/src/plex_api_client/models/errors/getplaylist.py +0 -90
  380. plex_api_client-0.30.0/src/plex_api_client/models/errors/getplaylistcontents.py +0 -90
  381. plex_api_client-0.30.0/src/plex_api_client/models/errors/getplaylists.py +0 -90
  382. plex_api_client-0.30.0/src/plex_api_client/models/errors/getresizedphoto.py +0 -90
  383. plex_api_client-0.30.0/src/plex_api_client/models/errors/getresourcesstatistics.py +0 -90
  384. plex_api_client-0.30.0/src/plex_api_client/models/errors/getsearchresults.py +0 -90
  385. plex_api_client-0.30.0/src/plex_api_client/models/errors/getserveractivities.py +0 -90
  386. plex_api_client-0.30.0/src/plex_api_client/models/errors/getservercapabilities.py +0 -90
  387. plex_api_client-0.30.0/src/plex_api_client/models/errors/getserverlist.py +0 -90
  388. plex_api_client-0.30.0/src/plex_api_client/models/errors/getserverpreferences.py +0 -90
  389. plex_api_client-0.30.0/src/plex_api_client/models/errors/getsessionhistory.py +0 -90
  390. plex_api_client-0.30.0/src/plex_api_client/models/errors/getsessions.py +0 -90
  391. plex_api_client-0.30.0/src/plex_api_client/models/errors/getsourceconnectioninformation.py +0 -90
  392. plex_api_client-0.30.0/src/plex_api_client/models/errors/getstatistics.py +0 -90
  393. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettimeline.py +0 -90
  394. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettokenbypinid.py +0 -87
  395. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettokendetails.py +0 -90
  396. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettopwatchedcontent.py +0 -90
  397. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettranscodesessions.py +0 -90
  398. plex_api_client-0.30.0/src/plex_api_client/models/errors/gettransienttoken.py +0 -90
  399. plex_api_client-0.30.0/src/plex_api_client/models/errors/getupdatestatus.py +0 -90
  400. plex_api_client-0.30.0/src/plex_api_client/models/errors/getuserfriends.py +0 -90
  401. plex_api_client-0.30.0/src/plex_api_client/models/errors/logline.py +0 -90
  402. plex_api_client-0.30.0/src/plex_api_client/models/errors/logmultiline.py +0 -90
  403. plex_api_client-0.30.0/src/plex_api_client/models/errors/markplayed.py +0 -90
  404. plex_api_client-0.30.0/src/plex_api_client/models/errors/markunplayed.py +0 -90
  405. plex_api_client-0.30.0/src/plex_api_client/models/errors/performsearch.py +0 -90
  406. plex_api_client-0.30.0/src/plex_api_client/models/errors/performvoicesearch.py +0 -90
  407. plex_api_client-0.30.0/src/plex_api_client/models/errors/post_users_sign_in_data.py +0 -90
  408. plex_api_client-0.30.0/src/plex_api_client/models/errors/startalltasks.py +0 -90
  409. plex_api_client-0.30.0/src/plex_api_client/models/errors/starttask.py +0 -90
  410. plex_api_client-0.30.0/src/plex_api_client/models/errors/startuniversaltranscode.py +0 -90
  411. plex_api_client-0.30.0/src/plex_api_client/models/errors/stopalltasks.py +0 -90
  412. plex_api_client-0.30.0/src/plex_api_client/models/errors/stoptask.py +0 -90
  413. plex_api_client-0.30.0/src/plex_api_client/models/errors/stoptranscodesession.py +0 -90
  414. plex_api_client-0.30.0/src/plex_api_client/models/errors/updateplaylist.py +0 -90
  415. plex_api_client-0.30.0/src/plex_api_client/models/errors/updateplayprogress.py +0 -90
  416. plex_api_client-0.30.0/src/plex_api_client/models/errors/uploadplaylist.py +0 -90
  417. plex_api_client-0.30.0/src/plex_api_client/models/operations/__init__.py +0 -3469
  418. plex_api_client-0.30.0/src/plex_api_client/models/operations/addplaylistcontents.py +0 -146
  419. plex_api_client-0.30.0/src/plex_api_client/models/operations/applyupdates.py +0 -64
  420. plex_api_client-0.30.0/src/plex_api_client/models/operations/checkforupdates.py +0 -49
  421. plex_api_client-0.30.0/src/plex_api_client/models/operations/createplaylist.py +0 -179
  422. plex_api_client-0.30.0/src/plex_api_client/models/operations/deletelibrary.py +0 -48
  423. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_actors_library.py +0 -218
  424. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_all_libraries.py +0 -224
  425. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_banner_image.py +0 -87
  426. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_countries_library.py +0 -206
  427. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_genres_library.py +0 -208
  428. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_library_details.py +0 -297
  429. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_library_items.py +0 -1631
  430. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_library_sections_all.py +0 -1574
  431. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_media_arts.py +0 -120
  432. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_media_meta_data.py +0 -1623
  433. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_media_posters.py +0 -120
  434. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_recently_added.py +0 -1679
  435. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_recently_added_library.py +0 -659
  436. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_refresh_library_metadata.py +0 -65
  437. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_search_all_libraries.py +0 -1218
  438. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_search_library.py +0 -238
  439. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_server_resources.py +0 -281
  440. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_thumb_image.py +0 -87
  441. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_users.py +0 -477
  442. plex_api_client-0.30.0/src/plex_api_client/models/operations/get_watch_list.py +0 -386
  443. plex_api_client-0.30.0/src/plex_api_client/models/operations/getavailableclients.py +0 -103
  444. plex_api_client-0.30.0/src/plex_api_client/models/operations/getbandwidthstatistics.py +0 -171
  445. plex_api_client-0.30.0/src/plex_api_client/models/operations/getcompanionsdata.py +0 -63
  446. plex_api_client-0.30.0/src/plex_api_client/models/operations/getdevices.py +0 -83
  447. plex_api_client-0.30.0/src/plex_api_client/models/operations/getfilehash.py +0 -48
  448. plex_api_client-0.30.0/src/plex_api_client/models/operations/getgeodata.py +0 -101
  449. plex_api_client-0.30.0/src/plex_api_client/models/operations/getglobalhubs.py +0 -195
  450. plex_api_client-0.30.0/src/plex_api_client/models/operations/gethomedata.py +0 -66
  451. plex_api_client-0.30.0/src/plex_api_client/models/operations/getlibraryhubs.py +0 -453
  452. plex_api_client-0.30.0/src/plex_api_client/models/operations/getmetadatachildren.py +0 -278
  453. plex_api_client-0.30.0/src/plex_api_client/models/operations/getmyplexaccount.py +0 -96
  454. plex_api_client-0.30.0/src/plex_api_client/models/operations/getpin.py +0 -262
  455. plex_api_client-0.30.0/src/plex_api_client/models/operations/getplaylist.py +0 -125
  456. plex_api_client-0.30.0/src/plex_api_client/models/operations/getplaylistcontents.py +0 -429
  457. plex_api_client-0.30.0/src/plex_api_client/models/operations/getplaylists.py +0 -156
  458. plex_api_client-0.30.0/src/plex_api_client/models/operations/getresizedphoto.py +0 -99
  459. plex_api_client-0.30.0/src/plex_api_client/models/operations/getresourcesstatistics.py +0 -112
  460. plex_api_client-0.30.0/src/plex_api_client/models/operations/getsearchresults.py +0 -370
  461. plex_api_client-0.30.0/src/plex_api_client/models/operations/getserveractivities.py +0 -100
  462. plex_api_client-0.30.0/src/plex_api_client/models/operations/getserverlist.py +0 -85
  463. plex_api_client-0.30.0/src/plex_api_client/models/operations/getserverpreferences.py +0 -94
  464. plex_api_client-0.30.0/src/plex_api_client/models/operations/getsessionhistory.py +0 -209
  465. plex_api_client-0.30.0/src/plex_api_client/models/operations/getsessions.py +0 -430
  466. plex_api_client-0.30.0/src/plex_api_client/models/operations/getstatistics.py +0 -171
  467. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettimeline.py +0 -123
  468. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettokenbypinid.py +0 -255
  469. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettokendetails.py +0 -696
  470. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettopwatchedcontent.py +0 -354
  471. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettranscodesessions.py +0 -156
  472. plex_api_client-0.30.0/src/plex_api_client/models/operations/gettransienttoken.py +0 -60
  473. plex_api_client-0.30.0/src/plex_api_client/models/operations/getupdatestatus.py +0 -93
  474. plex_api_client-0.30.0/src/plex_api_client/models/operations/getuserfriends.py +0 -160
  475. plex_api_client-0.30.0/src/plex_api_client/models/operations/logline.py +0 -88
  476. plex_api_client-0.30.0/src/plex_api_client/models/operations/markunplayed.py +0 -39
  477. plex_api_client-0.30.0/src/plex_api_client/models/operations/performsearch.py +0 -58
  478. plex_api_client-0.30.0/src/plex_api_client/models/operations/performvoicesearch.py +0 -58
  479. plex_api_client-0.30.0/src/plex_api_client/models/operations/post_media_arts.py +0 -65
  480. plex_api_client-0.30.0/src/plex_api_client/models/operations/post_media_poster.py +0 -65
  481. plex_api_client-0.30.0/src/plex_api_client/models/operations/post_users_sign_in_data.py +0 -966
  482. plex_api_client-0.30.0/src/plex_api_client/models/operations/starttask.py +0 -64
  483. plex_api_client-0.30.0/src/plex_api_client/models/operations/startuniversaltranscode.py +0 -171
  484. plex_api_client-0.30.0/src/plex_api_client/models/operations/stoptask.py +0 -64
  485. plex_api_client-0.30.0/src/plex_api_client/models/operations/stoptranscodesession.py +0 -42
  486. plex_api_client-0.30.0/src/plex_api_client/models/operations/updateplaylist.py +0 -59
  487. plex_api_client-0.30.0/src/plex_api_client/models/operations/updateplayprogress.py +0 -53
  488. plex_api_client-0.30.0/src/plex_api_client/models/operations/uploadplaylist.py +0 -94
  489. plex_api_client-0.30.0/src/plex_api_client/sdk.py +0 -331
  490. plex_api_client-0.30.0/src/plex_api_client/utils/annotations.py +0 -55
  491. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/LICENSE.md +0 -0
  492. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/py.typed +0 -0
  493. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/__init__.py +0 -0
  494. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/_hooks/__init__.py +0 -0
  495. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/_hooks/registration.py +0 -0
  496. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/_hooks/sdkhooks.py +0 -0
  497. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/_hooks/types.py +0 -0
  498. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/basesdk.py +0 -0
  499. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/models/__init__.py +0 -0
  500. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/py.typed +0 -0
  501. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/types/__init__.py +0 -0
  502. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/types/basemodel.py +0 -0
  503. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/__init__.py +0 -0
  504. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/datetimes.py +0 -0
  505. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/enums.py +0 -0
  506. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/eventstreaming.py +0 -0
  507. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/forms.py +0 -0
  508. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/headers.py +0 -0
  509. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/logger.py +0 -0
  510. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/metadata.py +0 -0
  511. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/queryparams.py +0 -0
  512. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/requestbodies.py +0 -0
  513. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/retries.py +0 -0
  514. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/security.py +0 -0
  515. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/serializers.py +0 -0
  516. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/unmarshal_json_response.py +0 -0
  517. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/url.py +0 -0
  518. {plex_api_client-0.30.0 → plex_api_client-0.31.0}/src/plex_api_client/utils/values.py +0 -0
@@ -0,0 +1,1064 @@
1
+ Metadata-Version: 2.4
2
+ Name: plex-api-client
3
+ Version: 0.31.0
4
+ Summary: Python Client SDK Generated by Speakeasy
5
+ License-File: LICENSE.md
6
+ Author: Speakeasy
7
+ Requires-Python: >=3.9.2
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3.10
10
+ Classifier: Programming Language :: Python :: 3.11
11
+ Classifier: Programming Language :: Python :: 3.12
12
+ Classifier: Programming Language :: Python :: 3.13
13
+ Classifier: Programming Language :: Python :: 3.14
14
+ Requires-Dist: httpcore (>=1.0.9)
15
+ Requires-Dist: httpx (>=0.28.1)
16
+ Requires-Dist: pydantic (>=2.11.2)
17
+ Project-URL: Repository, https://github.com/LukeHagar/plexpy.git
18
+ Description-Content-Type: text/markdown
19
+
20
+ # plexpy
21
+
22
+ <div align="left">
23
+ <a href="https://speakeasyapi.dev/"><img src="https://custom-icon-badges.demolab.com/badge/-Built%20By%20Speakeasy-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" /></a>
24
+ <a href="https://opensource.org/licenses/MIT">
25
+ <img src="https://img.shields.io/badge/License-MIT-blue.svg" style="width: 100px; height: 28px;" />
26
+ </a>
27
+ </div>
28
+
29
+ <!-- Start Summary [summary] -->
30
+ ## Summary
31
+
32
+
33
+ <!-- End Summary [summary] -->
34
+
35
+ <!-- Start Table of Contents [toc] -->
36
+ ## Table of Contents
37
+ <!-- $toc-max-depth=2 -->
38
+ * [plexpy](https://github.com/LukeHagar/plexpy/blob/master/./#plexpy)
39
+ * [SDK Installation](https://github.com/LukeHagar/plexpy/blob/master/./#sdk-installation)
40
+ * [IDE Support](https://github.com/LukeHagar/plexpy/blob/master/./#ide-support)
41
+ * [SDK Example Usage](https://github.com/LukeHagar/plexpy/blob/master/./#sdk-example-usage)
42
+ * [Available Resources and Operations](https://github.com/LukeHagar/plexpy/blob/master/./#available-resources-and-operations)
43
+ * [File uploads](https://github.com/LukeHagar/plexpy/blob/master/./#file-uploads)
44
+ * [Retries](https://github.com/LukeHagar/plexpy/blob/master/./#retries)
45
+ * [Error Handling](https://github.com/LukeHagar/plexpy/blob/master/./#error-handling)
46
+ * [Server Selection](https://github.com/LukeHagar/plexpy/blob/master/./#server-selection)
47
+ * [Custom HTTP Client](https://github.com/LukeHagar/plexpy/blob/master/./#custom-http-client)
48
+ * [Authentication](https://github.com/LukeHagar/plexpy/blob/master/./#authentication)
49
+ * [Resource Management](https://github.com/LukeHagar/plexpy/blob/master/./#resource-management)
50
+ * [Debugging](https://github.com/LukeHagar/plexpy/blob/master/./#debugging)
51
+ * [Development](https://github.com/LukeHagar/plexpy/blob/master/./#development)
52
+ * [Maturity](https://github.com/LukeHagar/plexpy/blob/master/./#maturity)
53
+ * [Contributions](https://github.com/LukeHagar/plexpy/blob/master/./#contributions)
54
+
55
+ <!-- End Table of Contents [toc] -->
56
+
57
+ <!-- Start SDK Installation [installation] -->
58
+ ## SDK Installation
59
+
60
+ > [!NOTE]
61
+ > **Python version upgrade policy**
62
+ >
63
+ > Once a Python version reaches its [official end of life date](https://devguide.python.org/versions/), a 3-month grace period is provided for users to upgrade. Following this grace period, the minimum python version supported in the SDK will be updated.
64
+
65
+ The SDK can be installed with *uv*, *pip*, or *poetry* package managers.
66
+
67
+ ### uv
68
+
69
+ *uv* is a fast Python package installer and resolver, designed as a drop-in replacement for pip and pip-tools. It's recommended for its speed and modern Python tooling capabilities.
70
+
71
+ ```bash
72
+ uv add plex-api-client
73
+ ```
74
+
75
+ ### PIP
76
+
77
+ *PIP* is the default package installer for Python, enabling easy installation and management of packages from PyPI via the command line.
78
+
79
+ ```bash
80
+ pip install plex-api-client
81
+ ```
82
+
83
+ ### Poetry
84
+
85
+ *Poetry* is a modern tool that simplifies dependency management and package publishing by using a single `pyproject.toml` file to handle project metadata and dependencies.
86
+
87
+ ```bash
88
+ poetry add plex-api-client
89
+ ```
90
+
91
+ ### Shell and script usage with `uv`
92
+
93
+ You can use this SDK in a Python shell with [uv](https://docs.astral.sh/uv/) and the `uvx` command that comes with it like so:
94
+
95
+ ```shell
96
+ uvx --from plex-api-client python
97
+ ```
98
+
99
+ It's also possible to write a standalone Python script without needing to set up a whole project like so:
100
+
101
+ ```python
102
+ #!/usr/bin/env -S uv run --script
103
+ # /// script
104
+ # requires-python = ">=3.9"
105
+ # dependencies = [
106
+ # "plex-api-client",
107
+ # ]
108
+ # ///
109
+
110
+ from plex_api_client import PlexAPI
111
+
112
+ sdk = PlexAPI(
113
+ # SDK arguments
114
+ )
115
+
116
+ # Rest of script here...
117
+ ```
118
+
119
+ Once that is saved to a file, you can run it with `uv run script.py` where
120
+ `script.py` can be replaced with the actual file name.
121
+ <!-- End SDK Installation [installation] -->
122
+
123
+ <!-- Start IDE Support [idesupport] -->
124
+ ## IDE Support
125
+
126
+ ### PyCharm
127
+
128
+ Generally, the SDK will work well with most IDEs out of the box. However, when using PyCharm, you can enjoy much better integration with Pydantic by installing an additional plugin.
129
+
130
+ - [PyCharm Pydantic Plugin](https://docs.pydantic.dev/latest/integrations/pycharm/)
131
+ <!-- End IDE Support [idesupport] -->
132
+
133
+ <!-- Start SDK Example Usage [usage] -->
134
+ ## SDK Example Usage
135
+
136
+ ### Example
137
+
138
+ ```python
139
+ # Synchronous Example
140
+ from plex_api_client import PlexAPI
141
+ from plex_api_client.models import components, operations
142
+
143
+
144
+ with PlexAPI(
145
+ accepts=components.Accepts.APPLICATION_XML,
146
+ client_identifier="abc123",
147
+ product="Plex for Roku",
148
+ version="2.4.1",
149
+ platform="Roku",
150
+ platform_version="4.3 build 1057",
151
+ device="Roku 3",
152
+ model="4200X",
153
+ device_vendor="Roku",
154
+ device_name="Living Room TV",
155
+ marketplace="googlePlay",
156
+ token="<YOUR_API_KEY_HERE>",
157
+ ) as plex_api:
158
+
159
+ res = plex_api.transcoder.start_transcode_session(request=operations.StartTranscodeSessionRequest(
160
+ transcode_type=components.TranscodeType.MUSIC,
161
+ extension=operations.Extension.MPD,
162
+ advanced_subtitles=components.AdvancedSubtitles.BURN,
163
+ audio_boost=50,
164
+ audio_channel_count=5,
165
+ auto_adjust_quality=components.BoolInt.ONE,
166
+ auto_adjust_subtitle=components.BoolInt.ONE,
167
+ direct_play=components.BoolInt.ONE,
168
+ direct_stream=components.BoolInt.ONE,
169
+ direct_stream_audio=components.BoolInt.ONE,
170
+ disable_resolution_rotation=components.BoolInt.ONE,
171
+ has_mde=components.BoolInt.ONE,
172
+ location=operations.StartTranscodeSessionQueryParamLocation.WAN,
173
+ media_buffer_size=102400,
174
+ media_index=0,
175
+ music_bitrate=5000,
176
+ offset=90.5,
177
+ part_index=0,
178
+ path="/library/metadata/151671",
179
+ peak_bitrate=12000,
180
+ photo_resolution="1080x1080",
181
+ protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH,
182
+ seconds_per_segment=5,
183
+ subtitle_size=50,
184
+ video_bitrate=12000,
185
+ video_quality=50,
186
+ video_resolution="1080x1080",
187
+ x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)",
188
+ x_plex_client_profile_name="generic",
189
+ ))
190
+
191
+ assert res.response_stream is not None
192
+
193
+ # Handle response
194
+ print(res.response_stream)
195
+ ```
196
+
197
+ </br>
198
+
199
+ The same SDK client can also be used to make asynchronous requests by importing asyncio.
200
+
201
+ ```python
202
+ # Asynchronous Example
203
+ import asyncio
204
+ from plex_api_client import PlexAPI
205
+ from plex_api_client.models import components, operations
206
+
207
+ async def main():
208
+
209
+ async with PlexAPI(
210
+ accepts=components.Accepts.APPLICATION_XML,
211
+ client_identifier="abc123",
212
+ product="Plex for Roku",
213
+ version="2.4.1",
214
+ platform="Roku",
215
+ platform_version="4.3 build 1057",
216
+ device="Roku 3",
217
+ model="4200X",
218
+ device_vendor="Roku",
219
+ device_name="Living Room TV",
220
+ marketplace="googlePlay",
221
+ token="<YOUR_API_KEY_HERE>",
222
+ ) as plex_api:
223
+
224
+ res = await plex_api.transcoder.start_transcode_session_async(request=operations.StartTranscodeSessionRequest(
225
+ transcode_type=components.TranscodeType.MUSIC,
226
+ extension=operations.Extension.MPD,
227
+ advanced_subtitles=components.AdvancedSubtitles.BURN,
228
+ audio_boost=50,
229
+ audio_channel_count=5,
230
+ auto_adjust_quality=components.BoolInt.ONE,
231
+ auto_adjust_subtitle=components.BoolInt.ONE,
232
+ direct_play=components.BoolInt.ONE,
233
+ direct_stream=components.BoolInt.ONE,
234
+ direct_stream_audio=components.BoolInt.ONE,
235
+ disable_resolution_rotation=components.BoolInt.ONE,
236
+ has_mde=components.BoolInt.ONE,
237
+ location=operations.StartTranscodeSessionQueryParamLocation.WAN,
238
+ media_buffer_size=102400,
239
+ media_index=0,
240
+ music_bitrate=5000,
241
+ offset=90.5,
242
+ part_index=0,
243
+ path="/library/metadata/151671",
244
+ peak_bitrate=12000,
245
+ photo_resolution="1080x1080",
246
+ protocol=operations.StartTranscodeSessionQueryParamProtocol.DASH,
247
+ seconds_per_segment=5,
248
+ subtitle_size=50,
249
+ video_bitrate=12000,
250
+ video_quality=50,
251
+ video_resolution="1080x1080",
252
+ x_plex_client_profile_extra="add-limitation(scope=videoCodec&scopeName=*&type=upperBound&name=video.frameRate&value=60&replace=true)+append-transcode-target-codec(type=videoProfile&context=streaming&videoCodec=h264%2Chevc&audioCodec=aac&protocol=dash)",
253
+ x_plex_client_profile_name="generic",
254
+ ))
255
+
256
+ assert res.response_stream is not None
257
+
258
+ # Handle response
259
+ print(res.response_stream)
260
+
261
+ asyncio.run(main())
262
+ ```
263
+ <!-- End SDK Example Usage [usage] -->
264
+
265
+ <!-- Start Available Resources and Operations [operations] -->
266
+ ## Available Resources and Operations
267
+
268
+ <details open>
269
+ <summary>Available methods</summary>
270
+
271
+ ### [activities](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/activities/README.md)
272
+
273
+ * [list_activities](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/activities/README.md#list_activities) - Get all activities
274
+ * [cancel_activity](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/activities/README.md#cancel_activity) - Cancel a running activity
275
+
276
+ ### [butler](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md)
277
+
278
+ * [stop_tasks](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md#stop_tasks) - Stop all Butler tasks
279
+ * [get_tasks](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md#get_tasks) - Get all Butler tasks
280
+ * [start_tasks](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md#start_tasks) - Start all Butler tasks
281
+ * [stop_task](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md#stop_task) - Stop a single Butler task
282
+ * [start_task](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/butler/README.md#start_task) - Start a single Butler task
283
+
284
+ ### [collections](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/collections/README.md)
285
+
286
+ * [create_collection](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/collections/README.md#create_collection) - Create collection
287
+
288
+ ### [content](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md)
289
+
290
+ * [get_collection_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_collection_items) - Get items in a collection
291
+ * [get_metadata_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_metadata_item) - Get a metadata item
292
+ * [get_albums](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_albums) - Set section albums
293
+ * [list_content](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#list_content) - Get items in the section
294
+ * [get_all_leaves](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_all_leaves) - Set section leaves
295
+ * [get_arts](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_arts) - Set section artwork
296
+ * [get_categories](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_categories) - Set section categories
297
+ * [get_cluster](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_cluster) - Set section clusters
298
+ * [get_sonic_path](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_sonic_path) - Similar tracks to transition from one to another
299
+ * [get_folders](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_folders) - Get all folder locations
300
+ * [list_moments](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#list_moments) - Set section moments
301
+ * [get_sonically_similar](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_sonically_similar) - The nearest audio tracks
302
+ * [get_collection_image](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/content/README.md#get_collection_image) - Get a collection's image
303
+
304
+ ### [devices](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md)
305
+
306
+ * [get_available_grabbers](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#get_available_grabbers) - Get available grabbers
307
+ * [list_devices](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#list_devices) - Get all devices
308
+ * [add_device](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#add_device) - Add a device
309
+ * [discover_devices](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#discover_devices) - Tell grabbers to discover devices
310
+ * [remove_device](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#remove_device) - Remove a device
311
+ * [get_device_details](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#get_device_details) - Get device details
312
+ * [modify_device](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#modify_device) - Enable or disable a device
313
+ * [set_channelmap](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#set_channelmap) - Set a device's channel mapping
314
+ * [get_devices_channels](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#get_devices_channels) - Get a device's channels
315
+ * [set_device_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#set_device_preferences) - Set device preferences
316
+ * [stop_scan](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#stop_scan) - Tell a device to stop scanning for channels
317
+ * [scan](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#scan) - Tell a device to scan for channels
318
+ * [get_thumb](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/devices/README.md#get_thumb) - Get device thumb
319
+
320
+ ### [download_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md)
321
+
322
+ * [create_download_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#create_download_queue) - Create download queue
323
+ * [get_download_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#get_download_queue) - Get a download queue
324
+ * [add_download_queue_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#add_download_queue_items) - Add to download queue
325
+ * [list_download_queue_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#list_download_queue_items) - Get download queue items
326
+ * [get_item_decision](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#get_item_decision) - Grab download queue item decision
327
+ * [get_download_queue_media](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#get_download_queue_media) - Grab download queue media
328
+ * [remove_download_queue_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#remove_download_queue_items) - Delete download queue items
329
+ * [get_download_queue_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#get_download_queue_items) - Get download queue items
330
+ * [restart_processing_download_queue_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/downloadqueue/README.md#restart_processing_download_queue_items) - Restart processing of items from the decision
331
+
332
+ ### [dv_rs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md)
333
+
334
+ * [list_dv_rs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#list_dv_rs) - Get DVRs
335
+ * [create_dvr](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#create_dvr) - Create a DVR
336
+ * [delete_dvr](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#delete_dvr) - Delete a single DVR
337
+ * [get_dvr](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#get_dvr) - Get a single DVR
338
+ * [delete_lineup](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#delete_lineup) - Delete a DVR Lineup
339
+ * [add_lineup](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#add_lineup) - Add a DVR Lineup
340
+ * [set_dvr_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#set_dvr_preferences) - Set DVR preferences
341
+ * [stop_dvr_reload](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#stop_dvr_reload) - Tell a DVR to stop reloading program guide
342
+ * [reload_guide](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#reload_guide) - Tell a DVR to reload program guide
343
+ * [tune_channel](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#tune_channel) - Tune a channel on a DVR
344
+ * [remove_device_from_dvr](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#remove_device_from_dvr) - Remove a device from an existing DVR
345
+ * [add_device_to_dvr](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/dvrs/README.md#add_device_to_dvr) - Add a device to an existing DVR
346
+
347
+ ### [epg](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md)
348
+
349
+ * [compute_channel_map](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#compute_channel_map) - Compute the best channel map
350
+ * [get_channels](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_channels) - Get channels for a lineup
351
+ * [get_countries](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_countries) - Get all countries
352
+ * [get_all_languages](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_all_languages) - Get all languages
353
+ * [get_lineup](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_lineup) - Compute the best lineup
354
+ * [get_lineup_channels](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_lineup_channels) - Get the channels for mulitple lineups
355
+ * [get_countries_lineups](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_countries_lineups) - Get lineups for a country via postal code
356
+ * [get_country_regions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#get_country_regions) - Get regions for a country
357
+ * [list_lineups](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/epg/README.md#list_lineups) - Get lineups for a region
358
+
359
+ ### [events](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/events/README.md)
360
+
361
+ * [get_notifications](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/events/README.md#get_notifications) - Connect to Eventsource
362
+ * [connect_web_socket](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/events/README.md#connect_web_socket) - Connect to WebSocket
363
+
364
+ ### [general](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/general/README.md)
365
+
366
+ * [get_server_info](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/general/README.md#get_server_info) - Get PMS info
367
+ * [get_identity](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/general/README.md#get_identity) - Get PMS identity
368
+ * [get_source_connection_information](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/general/README.md#get_source_connection_information) - Get Source Connection Information
369
+ * [get_transient_token](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/general/README.md#get_transient_token) - Get Transient Tokens
370
+
371
+ ### [hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md)
372
+
373
+ * [get_all_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_all_hubs) - Get global hubs
374
+ * [get_continue_watching](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_continue_watching) - Get the continue watching hub
375
+ * [get_hub_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_hub_items) - Get a hub's items
376
+ * [get_promoted_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_promoted_hubs) - Get the hubs which are promoted
377
+ * [get_metadata_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_metadata_hubs) - Get hubs for section by metadata item
378
+ * [get_postplay_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_postplay_hubs) - Get postplay hubs
379
+ * [get_related_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_related_hubs) - Get related hubs
380
+ * [get_section_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#get_section_hubs) - Get section hubs
381
+ * [reset_section_defaults](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#reset_section_defaults) - Reset hubs to defaults
382
+ * [list_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#list_hubs) - Get hubs
383
+ * [create_custom_hub](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#create_custom_hub) - Create a custom hub
384
+ * [move_hub](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#move_hub) - Move Hub
385
+ * [delete_custom_hub](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#delete_custom_hub) - Delete a custom hub
386
+ * [update_hub_visibility](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/hubs/README.md#update_hub_visibility) - Change hub visibility
387
+
388
+ ### [library](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md)
389
+
390
+ * [get_library_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_library_items) - Get all items in library
391
+ * [delete_caches](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_caches) - Delete library caches
392
+ * [clean_bundles](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#clean_bundles) - Clean bundles
393
+ * [ingest_transient_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#ingest_transient_item) - Ingest a transient item
394
+ * [get_library_matches](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_library_matches) - Get library matches
395
+ * [optimize_database](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#optimize_database) - Optimize the Database
396
+ * [get_random_artwork](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_random_artwork) - Get random artwork
397
+ * [get_sections](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_sections) - Get library sections (main Media Provider Only)
398
+ * [add_section](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#add_section) - Add a library section
399
+ * [stop_all_refreshes](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#stop_all_refreshes) - Stop refresh
400
+ * [get_sections_prefs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_sections_prefs) - Get section prefs
401
+ * [refresh_sections_metadata](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#refresh_sections_metadata) - Refresh all sections
402
+ * [get_tags](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_tags) - Get all library tags of a type
403
+ * [delete_metadata_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_metadata_item) - Delete a metadata item
404
+ * [edit_metadata_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#edit_metadata_item) - Edit a metadata item
405
+ * [detect_ads](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#detect_ads) - Ad-detect an item
406
+ * [get_all_item_leaves](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_all_item_leaves) - Get the leaves of an item
407
+ * [analyze_metadata](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#analyze_metadata) - Analyze an item
408
+ * [generate_thumbs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#generate_thumbs) - Generate thumbs of chapters for an item
409
+ * [detect_credits](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#detect_credits) - Credit detect a metadata item
410
+ * [get_extras](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_extras) - Get an item's extras
411
+ * [add_extras](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#add_extras) - Add to an item's extras
412
+ * [get_file](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_file) - Get a file from a metadata or media bundle
413
+ * [start_bif_generation](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#start_bif_generation) - Start BIF generation of an item
414
+ * [detect_intros](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#detect_intros) - Intro detect an item
415
+ * [create_marker](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#create_marker) - Create a marker
416
+ * [match_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#match_item) - Match a metadata item
417
+ * [list_matches](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#list_matches) - Get metadata matches for an item
418
+ * [merge_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#merge_items) - Merge a metadata item
419
+ * [list_sonically_similar](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#list_sonically_similar) - Get nearest tracks to metadata item
420
+ * [set_item_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#set_item_preferences) - Set metadata preferences
421
+ * [refresh_items_metadata](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#refresh_items_metadata) - Refresh a metadata item
422
+ * [get_related_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_related_items) - Get related items
423
+ * [list_similar](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#list_similar) - Get similar items
424
+ * [split_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#split_item) - Split a metadata item
425
+ * [add_subtitles](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#add_subtitles) - Add subtitles
426
+ * [get_item_tree](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_item_tree) - Get metadata items as a tree
427
+ * [unmatch](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#unmatch) - Unmatch a metadata item
428
+ * [list_top_users](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#list_top_users) - Get metadata top users
429
+ * [detect_voice_activity](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#detect_voice_activity) - Detect voice activity
430
+ * [get_augmentation_status](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_augmentation_status) - Get augmentation status
431
+ * [set_stream_selection](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#set_stream_selection) - Set stream selection
432
+ * [get_person](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_person) - Get person details
433
+ * [list_person_media](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#list_person_media) - Get media for a person
434
+ * [delete_library_section](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_library_section) - Delete a library section
435
+ * [get_library_details](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_library_details) - Get a library section by id
436
+ * [edit_section](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#edit_section) - Edit a library section
437
+ * [update_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#update_items) - Set the fields of the filtered items
438
+ * [start_analysis](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#start_analysis) - Analyze a section
439
+ * [autocomplete](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#autocomplete) - Get autocompletions for search
440
+ * [get_collections](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_collections) - Get collections in a section
441
+ * [get_common](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_common) - Get common fields for items
442
+ * [empty_trash](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#empty_trash) - Empty section trash
443
+ * [get_section_filters](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_section_filters) - Get section filters
444
+ * [get_first_characters](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_first_characters) - Get list of first characters
445
+ * [delete_indexes](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_indexes) - Delete section indexes
446
+ * [delete_intros](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_intros) - Delete section intro markers
447
+ * [get_section_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_section_preferences) - Get section prefs
448
+ * [set_section_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#set_section_preferences) - Set section prefs
449
+ * [cancel_refresh](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#cancel_refresh) - Cancel section refresh
450
+ * [refresh_section](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#refresh_section) - Refresh section
451
+ * [get_available_sorts](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_available_sorts) - Get a section sorts
452
+ * [get_stream_levels](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_stream_levels) - Get loudness about a stream in json
453
+ * [get_stream_loudness](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_stream_loudness) - Get loudness about a stream
454
+ * [get_chapter_image](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_chapter_image) - Get a chapter image
455
+ * [set_item_artwork](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#set_item_artwork) - Set an item's artwork, theme, etc
456
+ * [update_item_artwork](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#update_item_artwork) - Set an item's artwork, theme, etc
457
+ * [delete_marker](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_marker) - Delete a marker
458
+ * [edit_marker](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#edit_marker) - Edit a marker
459
+ * [delete_media_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_media_item) - Delete a media item
460
+ * [get_part_index](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_part_index) - Get BIF index for a part
461
+ * [delete_collection](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_collection) - Delete a collection
462
+ * [get_section_image](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_section_image) - Get a section composite image
463
+ * [delete_stream](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#delete_stream) - Delete a stream
464
+ * [get_stream](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_stream) - Get a stream
465
+ * [set_stream_offset](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#set_stream_offset) - Set a stream offset
466
+ * [get_item_artwork](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_item_artwork) - Get an item's artwork, theme, etc
467
+ * [get_media_part](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_media_part) - Get a media part
468
+ * [get_image_from_bif](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/library/README.md#get_image_from_bif) - Get an image from part BIF
469
+
470
+ ### [library_collections](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/librarycollections/README.md)
471
+
472
+ * [add_collection_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/librarycollections/README.md#add_collection_items) - Add items to a collection
473
+ * [delete_collection_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/librarycollections/README.md#delete_collection_item) - Delete an item from a collection
474
+ * [move_collection_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/librarycollections/README.md#move_collection_item) - Reorder an item in the collection
475
+
476
+ ### [library_playlists](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md)
477
+
478
+ * [create_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#create_playlist) - Create a Playlist
479
+ * [upload_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#upload_playlist) - Upload
480
+ * [delete_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#delete_playlist) - Delete a Playlist
481
+ * [update_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#update_playlist) - Editing a Playlist
482
+ * [get_playlist_generators](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#get_playlist_generators) - Get a playlist's generators
483
+ * [clear_playlist_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#clear_playlist_items) - Clearing a playlist
484
+ * [add_playlist_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#add_playlist_items) - Adding to a Playlist
485
+ * [delete_playlist_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#delete_playlist_item) - Delete a Generator
486
+ * [get_playlist_generator](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#get_playlist_generator) - Get a playlist generator
487
+ * [modify_playlist_generator](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#modify_playlist_generator) - Modify a Generator
488
+ * [get_playlist_generator_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#get_playlist_generator_items) - Get a playlist generator's items
489
+ * [move_playlist_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#move_playlist_item) - Moving items in a playlist
490
+ * [refresh_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/libraryplaylists/README.md#refresh_playlist) - Reprocess a generator
491
+
492
+ ### [live_tv](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/livetv/README.md)
493
+
494
+ * [get_sessions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/livetv/README.md#get_sessions) - Get all sessions
495
+ * [get_live_tv_session](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/livetv/README.md#get_live_tv_session) - Get a single session
496
+ * [get_session_playlist_index](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/livetv/README.md#get_session_playlist_index) - Get a session playlist index
497
+ * [get_session_segment](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/livetv/README.md#get_session_segment) - Get a single session segment
498
+
499
+ ### [log](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/log/README.md)
500
+
501
+ * [write_log](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/log/README.md#write_log) - Logging a multi-line message to the Plex Media Server log
502
+ * [write_message](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/log/README.md#write_message) - Logging a single-line message to the Plex Media Server log
503
+ * [enable_papertrail](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/log/README.md#enable_papertrail) - Enabling Papertrail
504
+
505
+ ### [play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md)
506
+
507
+ * [create_play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#create_play_queue) - Create a play queue
508
+ * [get_play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#get_play_queue) - Retrieve a play queue
509
+ * [add_to_play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#add_to_play_queue) - Add a generator or playlist to a play queue
510
+ * [clear_play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#clear_play_queue) - Clear a play queue
511
+ * [reset_play_queue](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#reset_play_queue) - Reset a play queue
512
+ * [shuffle](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#shuffle) - Shuffle a play queue
513
+ * [unshuffle](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#unshuffle) - Unshuffle a play queue
514
+ * [delete_play_queue_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#delete_play_queue_item) - Delete an item from a play queue
515
+ * [move_play_queue_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playqueue/README.md#move_play_queue_item) - Move an item in a play queue
516
+
517
+ ### [playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playlist/README.md)
518
+
519
+ * [list_playlists](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playlist/README.md#list_playlists) - List playlists
520
+ * [get_playlist](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playlist/README.md#get_playlist) - Retrieve Playlist
521
+ * [get_playlist_items](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/playlist/README.md#get_playlist_items) - Retrieve Playlist Contents
522
+
523
+ ### [preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/preferences/README.md)
524
+
525
+ * [get_all_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/preferences/README.md#get_all_preferences) - Get all preferences
526
+ * [set_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/preferences/README.md#set_preferences) - Set preferences
527
+ * [get_preference](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/preferences/README.md#get_preference) - Get a preferences
528
+
529
+ ### [provider](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/provider/README.md)
530
+
531
+ * [list_providers](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/provider/README.md#list_providers) - Get the list of available media providers
532
+ * [add_provider](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/provider/README.md#add_provider) - Add a media provider
533
+ * [refresh_providers](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/provider/README.md#refresh_providers) - Refresh media providers
534
+ * [delete_media_provider](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/provider/README.md#delete_media_provider) - Delete a media provider
535
+
536
+ ### [rate](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/rate/README.md)
537
+
538
+ * [set_rating](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/rate/README.md#set_rating) - Rate an item
539
+
540
+ ### [search](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/search/README.md)
541
+
542
+ * [search_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/search/README.md#search_hubs) - Search Hub
543
+ * [voice_search_hubs](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/search/README.md#voice_search_hubs) - Voice Search Hub
544
+
545
+ ### [status](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md)
546
+
547
+ * [list_sessions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#list_sessions) - List Sessions
548
+ * [get_background_tasks](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#get_background_tasks) - Get background tasks
549
+ * [list_playback_history](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#list_playback_history) - List Playback History
550
+ * [terminate_session](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#terminate_session) - Terminate a session
551
+ * [delete_history](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#delete_history) - Delete Single History Item
552
+ * [get_history_item](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/status/README.md#get_history_item) - Get Single History Item
553
+
554
+ ### [subscriptions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md)
555
+
556
+ * [get_all_subscriptions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#get_all_subscriptions) - Get all subscriptions
557
+ * [create_subscription](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#create_subscription) - Create a subscription
558
+ * [process_subscriptions](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#process_subscriptions) - Process all subscriptions
559
+ * [get_scheduled_recordings](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#get_scheduled_recordings) - Get all scheduled recordings
560
+ * [get_template](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#get_template) - Get the subscription template
561
+ * [cancel_grab](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#cancel_grab) - Cancel an existing grab
562
+ * [delete_subscription](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#delete_subscription) - Delete a subscription
563
+ * [get_subscription](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#get_subscription) - Get a single subscription
564
+ * [edit_subscription_preferences](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#edit_subscription_preferences) - Edit a subscription
565
+ * [reorder_subscription](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/subscriptions/README.md#reorder_subscription) - Re-order a subscription
566
+
567
+ ### [timeline](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/timeline/README.md)
568
+
569
+ * [mark_played](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/timeline/README.md#mark_played) - Mark an item as played
570
+ * [report](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/timeline/README.md#report) - Report media timeline
571
+ * [unscrobble](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/timeline/README.md#unscrobble) - Mark an item as unplayed
572
+
573
+ ### [transcoder](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md)
574
+
575
+ * [transcode_image](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md#transcode_image) - Transcode an image
576
+ * [make_decision](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md#make_decision) - Make a decision on media playback
577
+ * [trigger_fallback](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md#trigger_fallback) - Manually trigger a transcoder fallback
578
+ * [transcode_subtitles](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md#transcode_subtitles) - Transcode subtitles
579
+ * [start_transcode_session](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/transcoder/README.md#start_transcode_session) - Start A Transcoding Session
580
+
581
+ ### [ultra_blur](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/ultrablur/README.md)
582
+
583
+ * [get_colors](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/ultrablur/README.md#get_colors) - Get UltraBlur Colors
584
+ * [get_image](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/ultrablur/README.md#get_image) - Get UltraBlur Image
585
+
586
+ ### [updater](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/updater/README.md)
587
+
588
+ * [apply_updates](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/updater/README.md#apply_updates) - Applying updates
589
+ * [check_updates](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/updater/README.md#check_updates) - Checking for updates
590
+ * [get_updates_status](https://github.com/LukeHagar/plexpy/blob/master/./docs/sdks/updater/README.md#get_updates_status) - Querying status of updates
591
+
592
+ </details>
593
+ <!-- End Available Resources and Operations [operations] -->
594
+
595
+ <!-- Start File uploads [file-upload] -->
596
+ ## File uploads
597
+
598
+ Certain SDK methods accept file objects as part of a request body or multi-part request. It is possible and typically recommended to upload files as a stream rather than reading the entire contents into memory. This avoids excessive memory consumption and potentially crashing with out-of-memory errors when working with very large files. The following example demonstrates how to attach a file stream to a request.
599
+
600
+ > [!TIP]
601
+ >
602
+ > For endpoints that handle file uploads bytes arrays can also be used. However, using streams is recommended for large files.
603
+ >
604
+
605
+ ```python
606
+ from plex_api_client import PlexAPI
607
+
608
+
609
+ with PlexAPI(
610
+ token="<YOUR_API_KEY_HERE>",
611
+ ) as plex_api:
612
+
613
+ res = plex_api.log.write_log(request=open("example.file", "rb"))
614
+
615
+ assert res is not None
616
+
617
+ # Handle response
618
+ print(res)
619
+
620
+ ```
621
+ <!-- End File uploads [file-upload] -->
622
+
623
+ <!-- Start Retries [retries] -->
624
+ ## Retries
625
+
626
+ Some of the endpoints in this SDK support retries. If you use the SDK without any configuration, it will fall back to the default retry strategy provided by the API. However, the default retry strategy can be overridden on a per-operation basis, or across the entire SDK.
627
+
628
+ To change the default retry strategy for a single API call, simply provide a `RetryConfig` object to the call:
629
+ ```python
630
+ from plex_api_client import PlexAPI
631
+ from plex_api_client.models import components
632
+ from plex_api_client.utils import BackoffStrategy, RetryConfig
633
+
634
+
635
+ with PlexAPI(
636
+ accepts=components.Accepts.APPLICATION_XML,
637
+ client_identifier="abc123",
638
+ product="Plex for Roku",
639
+ version="2.4.1",
640
+ platform="Roku",
641
+ platform_version="4.3 build 1057",
642
+ device="Roku 3",
643
+ model="4200X",
644
+ device_vendor="Roku",
645
+ device_name="Living Room TV",
646
+ marketplace="googlePlay",
647
+ token="<YOUR_API_KEY_HERE>",
648
+ ) as plex_api:
649
+
650
+ res = plex_api.general.get_server_info(request={},
651
+ RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
652
+
653
+ assert res.media_container_with_directory is not None
654
+
655
+ # Handle response
656
+ print(res.media_container_with_directory)
657
+
658
+ ```
659
+
660
+ If you'd like to override the default retry strategy for all operations that support retries, you can use the `retry_config` optional parameter when initializing the SDK:
661
+ ```python
662
+ from plex_api_client import PlexAPI
663
+ from plex_api_client.models import components
664
+ from plex_api_client.utils import BackoffStrategy, RetryConfig
665
+
666
+
667
+ with PlexAPI(
668
+ retry_config=RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False),
669
+ accepts=components.Accepts.APPLICATION_XML,
670
+ client_identifier="abc123",
671
+ product="Plex for Roku",
672
+ version="2.4.1",
673
+ platform="Roku",
674
+ platform_version="4.3 build 1057",
675
+ device="Roku 3",
676
+ model="4200X",
677
+ device_vendor="Roku",
678
+ device_name="Living Room TV",
679
+ marketplace="googlePlay",
680
+ token="<YOUR_API_KEY_HERE>",
681
+ ) as plex_api:
682
+
683
+ res = plex_api.general.get_server_info(request={})
684
+
685
+ assert res.media_container_with_directory is not None
686
+
687
+ # Handle response
688
+ print(res.media_container_with_directory)
689
+
690
+ ```
691
+ <!-- End Retries [retries] -->
692
+
693
+ <!-- Start Error Handling [errors] -->
694
+ ## Error Handling
695
+
696
+ [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/././src/plex_api_client/models/errors/plexapierror.py) is the base class for all HTTP error responses. It has the following properties:
697
+
698
+ | Property | Type | Description |
699
+ | ------------------ | ---------------- | ------------------------------------------------------ |
700
+ | `err.message` | `str` | Error message |
701
+ | `err.status_code` | `int` | HTTP response status code eg `404` |
702
+ | `err.headers` | `httpx.Headers` | HTTP response headers |
703
+ | `err.body` | `str` | HTTP body. Can be empty string if no body is returned. |
704
+ | `err.raw_response` | `httpx.Response` | Raw HTTP response |
705
+
706
+ ### Example
707
+ ```python
708
+ from plex_api_client import PlexAPI
709
+ from plex_api_client.models import components, errors
710
+
711
+
712
+ with PlexAPI(
713
+ accepts=components.Accepts.APPLICATION_XML,
714
+ client_identifier="abc123",
715
+ product="Plex for Roku",
716
+ version="2.4.1",
717
+ platform="Roku",
718
+ platform_version="4.3 build 1057",
719
+ device="Roku 3",
720
+ model="4200X",
721
+ device_vendor="Roku",
722
+ device_name="Living Room TV",
723
+ marketplace="googlePlay",
724
+ token="<YOUR_API_KEY_HERE>",
725
+ ) as plex_api:
726
+ res = None
727
+ try:
728
+
729
+ res = plex_api.general.get_server_info(request={})
730
+
731
+ assert res.media_container_with_directory is not None
732
+
733
+ # Handle response
734
+ print(res.media_container_with_directory)
735
+
736
+
737
+ except errors.PlexAPIError as e:
738
+ # The base class for HTTP error responses
739
+ print(e.message)
740
+ print(e.status_code)
741
+ print(e.body)
742
+ print(e.headers)
743
+ print(e.raw_response)
744
+
745
+ ```
746
+
747
+ ### Error Classes
748
+ **Primary error:**
749
+ * [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/././src/plex_api_client/models/errors/plexapierror.py): The base class for HTTP error responses.
750
+
751
+ <details><summary>Less common errors (5)</summary>
752
+
753
+ <br />
754
+
755
+ **Network errors:**
756
+ * [`httpx.RequestError`](https://www.python-httpx.org/exceptions/#httpx.RequestError): Base class for request errors.
757
+ * [`httpx.ConnectError`](https://www.python-httpx.org/exceptions/#httpx.ConnectError): HTTP client was unable to make a request to a server.
758
+ * [`httpx.TimeoutException`](https://www.python-httpx.org/exceptions/#httpx.TimeoutException): HTTP request timed out.
759
+
760
+
761
+ **Inherit from [`PlexAPIError`](https://github.com/LukeHagar/plexpy/blob/master/././src/plex_api_client/models/errors/plexapierror.py)**:
762
+ * [`ResponseValidationError`](https://github.com/LukeHagar/plexpy/blob/master/././src/plex_api_client/models/errors/responsevalidationerror.py): Type mismatch between the response data and the expected Pydantic model. Provides access to the Pydantic validation error via the `cause` attribute.
763
+
764
+ </details>
765
+ <!-- End Error Handling [errors] -->
766
+
767
+ <!-- Start Server Selection [server] -->
768
+ ## Server Selection
769
+
770
+ ### Select Server by Index
771
+
772
+ You can override the default server globally by passing a server index to the `server_idx: int` optional parameter when initializing the SDK client instance. The selected server will then be used as the default on the operations that use it. This table lists the indexes associated with the available servers:
773
+
774
+ | # | Server | Variables | Description |
775
+ | --- | ---------------------------------------------------------- | -------------------------------------------- | ----------- |
776
+ | 0 | `https://{IP-description}.{identifier}.plex.direct:{port}` | `identifier`<br/>`IP-description`<br/>`port` | |
777
+ | 1 | `{protocol}://{host}:{port}` | `protocol`<br/>`host`<br/>`port` | |
778
+ | 2 | `https://{server_url}` | `server_url` | |
779
+
780
+ If the selected server has variables, you may override its default values through the additional parameters made available in the SDK constructor:
781
+
782
+ | Variable | Parameter | Default | Description |
783
+ | ---------------- | ------------------------ | ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
784
+ | `identifier` | `identifier: str` | `"0123456789abcdef0123456789abcdef"` | The unique identifier of this particular PMS |
785
+ | `IP-description` | `ip_description: str` | `"1-2-3-4"` | A `-` separated string of the IPv4 or IPv6 address components |
786
+ | `port` | `port: str` | `"32400"` | The Port number configured on the PMS. Typically (`32400`). <br/>If using a reverse proxy, this would be the port number configured on the proxy.<br/> |
787
+ | `protocol` | `protocol: str` | `"http"` | The network protocol to use. Typically (`http` or `https`) |
788
+ | `host` | `host: str` | `"localhost"` | The Host of the PMS.<br/>If using on a local network, this is the internal IP address of the server hosting the PMS.<br/>If using on an external network, this is the external IP address for your network, and requires port forwarding.<br/>If using a reverse proxy, this would be the external DNS domain for your network, and requires the proxy handle port forwarding. <br/> |
789
+ | `server_url` | `server_url_global: str` | `"http://localhost:32400"` | The full manual URL to access the PMS |
790
+
791
+ #### Example
792
+
793
+ ```python
794
+ from plex_api_client import PlexAPI
795
+ from plex_api_client.models import components
796
+
797
+
798
+ with PlexAPI(
799
+ server_idx=1,
800
+ protocol="<value>"
801
+ host="electric-excess.name"
802
+ port="36393"
803
+ accepts=components.Accepts.APPLICATION_XML,
804
+ client_identifier="abc123",
805
+ product="Plex for Roku",
806
+ version="2.4.1",
807
+ platform="Roku",
808
+ platform_version="4.3 build 1057",
809
+ device="Roku 3",
810
+ model="4200X",
811
+ device_vendor="Roku",
812
+ device_name="Living Room TV",
813
+ marketplace="googlePlay",
814
+ token="<YOUR_API_KEY_HERE>",
815
+ ) as plex_api:
816
+
817
+ res = plex_api.general.get_server_info(request={})
818
+
819
+ assert res.media_container_with_directory is not None
820
+
821
+ # Handle response
822
+ print(res.media_container_with_directory)
823
+
824
+ ```
825
+
826
+ ### Override Server URL Per-Client
827
+
828
+ The default server can also be overridden globally by passing a URL to the `server_url: str` optional parameter when initializing the SDK client instance. For example:
829
+ ```python
830
+ from plex_api_client import PlexAPI
831
+ from plex_api_client.models import components
832
+
833
+
834
+ with PlexAPI(
835
+ server_url="https://http://localhost:32400",
836
+ accepts=components.Accepts.APPLICATION_XML,
837
+ client_identifier="abc123",
838
+ product="Plex for Roku",
839
+ version="2.4.1",
840
+ platform="Roku",
841
+ platform_version="4.3 build 1057",
842
+ device="Roku 3",
843
+ model="4200X",
844
+ device_vendor="Roku",
845
+ device_name="Living Room TV",
846
+ marketplace="googlePlay",
847
+ token="<YOUR_API_KEY_HERE>",
848
+ ) as plex_api:
849
+
850
+ res = plex_api.general.get_server_info(request={})
851
+
852
+ assert res.media_container_with_directory is not None
853
+
854
+ # Handle response
855
+ print(res.media_container_with_directory)
856
+
857
+ ```
858
+ <!-- End Server Selection [server] -->
859
+
860
+ <!-- Start Custom HTTP Client [http-client] -->
861
+ ## Custom HTTP Client
862
+
863
+ The Python SDK makes API calls using the [httpx](https://www.python-httpx.org/) HTTP library. In order to provide a convenient way to configure timeouts, cookies, proxies, custom headers, and other low-level configuration, you can initialize the SDK client with your own HTTP client instance.
864
+ Depending on whether you are using the sync or async version of the SDK, you can pass an instance of `HttpClient` or `AsyncHttpClient` respectively, which are Protocol's ensuring that the client has the necessary methods to make API calls.
865
+ This allows you to wrap the client with your own custom logic, such as adding custom headers, logging, or error handling, or you can just pass an instance of `httpx.Client` or `httpx.AsyncClient` directly.
866
+
867
+ For example, you could specify a header for every request that this sdk makes as follows:
868
+ ```python
869
+ from plex_api_client import PlexAPI
870
+ import httpx
871
+
872
+ http_client = httpx.Client(headers={"x-custom-header": "someValue"})
873
+ s = PlexAPI(client=http_client)
874
+ ```
875
+
876
+ or you could wrap the client with your own custom logic:
877
+ ```python
878
+ from plex_api_client import PlexAPI
879
+ from plex_api_client.httpclient import AsyncHttpClient
880
+ import httpx
881
+
882
+ class CustomClient(AsyncHttpClient):
883
+ client: AsyncHttpClient
884
+
885
+ def __init__(self, client: AsyncHttpClient):
886
+ self.client = client
887
+
888
+ async def send(
889
+ self,
890
+ request: httpx.Request,
891
+ *,
892
+ stream: bool = False,
893
+ auth: Union[
894
+ httpx._types.AuthTypes, httpx._client.UseClientDefault, None
895
+ ] = httpx.USE_CLIENT_DEFAULT,
896
+ follow_redirects: Union[
897
+ bool, httpx._client.UseClientDefault
898
+ ] = httpx.USE_CLIENT_DEFAULT,
899
+ ) -> httpx.Response:
900
+ request.headers["Client-Level-Header"] = "added by client"
901
+
902
+ return await self.client.send(
903
+ request, stream=stream, auth=auth, follow_redirects=follow_redirects
904
+ )
905
+
906
+ def build_request(
907
+ self,
908
+ method: str,
909
+ url: httpx._types.URLTypes,
910
+ *,
911
+ content: Optional[httpx._types.RequestContent] = None,
912
+ data: Optional[httpx._types.RequestData] = None,
913
+ files: Optional[httpx._types.RequestFiles] = None,
914
+ json: Optional[Any] = None,
915
+ params: Optional[httpx._types.QueryParamTypes] = None,
916
+ headers: Optional[httpx._types.HeaderTypes] = None,
917
+ cookies: Optional[httpx._types.CookieTypes] = None,
918
+ timeout: Union[
919
+ httpx._types.TimeoutTypes, httpx._client.UseClientDefault
920
+ ] = httpx.USE_CLIENT_DEFAULT,
921
+ extensions: Optional[httpx._types.RequestExtensions] = None,
922
+ ) -> httpx.Request:
923
+ return self.client.build_request(
924
+ method,
925
+ url,
926
+ content=content,
927
+ data=data,
928
+ files=files,
929
+ json=json,
930
+ params=params,
931
+ headers=headers,
932
+ cookies=cookies,
933
+ timeout=timeout,
934
+ extensions=extensions,
935
+ )
936
+
937
+ s = PlexAPI(async_client=CustomClient(httpx.AsyncClient()))
938
+ ```
939
+ <!-- End Custom HTTP Client [http-client] -->
940
+
941
+ <!-- Start Authentication [security] -->
942
+ ## Authentication
943
+
944
+ ### Per-Client Security Schemes
945
+
946
+ This SDK supports the following security scheme globally:
947
+
948
+ | Name | Type | Scheme |
949
+ | ------- | ------ | ------- |
950
+ | `token` | apiKey | API key |
951
+
952
+ To authenticate with the API the `token` parameter must be set when initializing the SDK client instance. For example:
953
+ ```python
954
+ from plex_api_client import PlexAPI
955
+ from plex_api_client.models import components
956
+
957
+
958
+ with PlexAPI(
959
+ token="<YOUR_API_KEY_HERE>",
960
+ accepts=components.Accepts.APPLICATION_XML,
961
+ client_identifier="abc123",
962
+ product="Plex for Roku",
963
+ version="2.4.1",
964
+ platform="Roku",
965
+ platform_version="4.3 build 1057",
966
+ device="Roku 3",
967
+ model="4200X",
968
+ device_vendor="Roku",
969
+ device_name="Living Room TV",
970
+ marketplace="googlePlay",
971
+ ) as plex_api:
972
+
973
+ res = plex_api.general.get_server_info(request={})
974
+
975
+ assert res.media_container_with_directory is not None
976
+
977
+ # Handle response
978
+ print(res.media_container_with_directory)
979
+
980
+ ```
981
+ <!-- End Authentication [security] -->
982
+
983
+ <!-- Start Resource Management [resource-management] -->
984
+ ## Resource Management
985
+
986
+ The `PlexAPI` class implements the context manager protocol and registers a finalizer function to close the underlying sync and async HTTPX clients it uses under the hood. This will close HTTP connections, release memory and free up other resources held by the SDK. In short-lived Python programs and notebooks that make a few SDK method calls, resource management may not be a concern. However, in longer-lived programs, it is beneficial to create a single SDK instance via a [context manager][context-manager] and reuse it across the application.
987
+
988
+ [context-manager]: https://docs.python.org/3/reference/datamodel.html#context-managers
989
+
990
+ ```python
991
+ from plex_api_client import PlexAPI
992
+ from plex_api_client.models import components
993
+ def main():
994
+
995
+ with PlexAPI(
996
+ accepts=components.Accepts.APPLICATION_XML,
997
+ client_identifier="abc123",
998
+ product="Plex for Roku",
999
+ version="2.4.1",
1000
+ platform="Roku",
1001
+ platform_version="4.3 build 1057",
1002
+ device="Roku 3",
1003
+ model="4200X",
1004
+ device_vendor="Roku",
1005
+ device_name="Living Room TV",
1006
+ marketplace="googlePlay",
1007
+ token="<YOUR_API_KEY_HERE>",
1008
+ ) as plex_api:
1009
+ # Rest of application here...
1010
+
1011
+
1012
+ # Or when using async:
1013
+ async def amain():
1014
+
1015
+ async with PlexAPI(
1016
+ accepts=components.Accepts.APPLICATION_XML,
1017
+ client_identifier="abc123",
1018
+ product="Plex for Roku",
1019
+ version="2.4.1",
1020
+ platform="Roku",
1021
+ platform_version="4.3 build 1057",
1022
+ device="Roku 3",
1023
+ model="4200X",
1024
+ device_vendor="Roku",
1025
+ device_name="Living Room TV",
1026
+ marketplace="googlePlay",
1027
+ token="<YOUR_API_KEY_HERE>",
1028
+ ) as plex_api:
1029
+ # Rest of application here...
1030
+ ```
1031
+ <!-- End Resource Management [resource-management] -->
1032
+
1033
+ <!-- Start Debugging [debug] -->
1034
+ ## Debugging
1035
+
1036
+ You can setup your SDK to emit debug logs for SDK requests and responses.
1037
+
1038
+ You can pass your own logger class directly into your SDK.
1039
+ ```python
1040
+ from plex_api_client import PlexAPI
1041
+ import logging
1042
+
1043
+ logging.basicConfig(level=logging.DEBUG)
1044
+ s = PlexAPI(debug_logger=logging.getLogger("plex_api_client"))
1045
+ ```
1046
+ <!-- End Debugging [debug] -->
1047
+
1048
+ <!-- Placeholder for Future Speakeasy SDK Sections -->
1049
+
1050
+ # Development
1051
+
1052
+ ## Maturity
1053
+
1054
+ This SDK is in beta, and there may be breaking changes between versions without a major version update. Therefore, we recommend pinning usage
1055
+ to a specific package version. This way, you can install the same version each time without breaking changes unless you are intentionally
1056
+ looking for the latest version.
1057
+
1058
+ ## Contributions
1059
+
1060
+ While we value open-source contributions to this SDK, this library is generated programmatically.
1061
+ Feel free to open a PR or a Github issue as a proof of concept and we'll do our best to include it in a future release!
1062
+
1063
+ ### SDK Created by [Speakeasy](https://docs.speakeasyapi.dev/docs/using-speakeasy/client-sdks)
1064
+