plex-api-client 0.6.1__py3-none-any.whl

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 (154) hide show
  1. plex_api/__init__.py +4 -0
  2. plex_api/_hooks/__init__.py +5 -0
  3. plex_api/_hooks/registration.py +13 -0
  4. plex_api/_hooks/sdkhooks.py +57 -0
  5. plex_api/_hooks/types.py +74 -0
  6. plex_api/activities.py +151 -0
  7. plex_api/authentication.py +146 -0
  8. plex_api/butler.py +333 -0
  9. plex_api/hubs.py +158 -0
  10. plex_api/library.py +808 -0
  11. plex_api/log.py +225 -0
  12. plex_api/media.py +210 -0
  13. plex_api/models/__init__.py +4 -0
  14. plex_api/models/components/__init__.py +5 -0
  15. plex_api/models/components/security.py +11 -0
  16. plex_api/models/errors/__init__.py +63 -0
  17. plex_api/models/errors/addplaylistcontents.py +32 -0
  18. plex_api/models/errors/applyupdates.py +32 -0
  19. plex_api/models/errors/cancelserveractivities.py +32 -0
  20. plex_api/models/errors/checkforupdates.py +32 -0
  21. plex_api/models/errors/clearplaylistcontents.py +32 -0
  22. plex_api/models/errors/createplaylist.py +32 -0
  23. plex_api/models/errors/deletelibrary.py +32 -0
  24. plex_api/models/errors/deleteplaylist.py +32 -0
  25. plex_api/models/errors/enablepapertrail.py +32 -0
  26. plex_api/models/errors/getavailableclients.py +32 -0
  27. plex_api/models/errors/getbutlertasks.py +32 -0
  28. plex_api/models/errors/getdevices.py +32 -0
  29. plex_api/models/errors/getfilehash.py +32 -0
  30. plex_api/models/errors/getglobalhubs.py +32 -0
  31. plex_api/models/errors/getlibraries.py +32 -0
  32. plex_api/models/errors/getlibrary.py +32 -0
  33. plex_api/models/errors/getlibraryhubs.py +32 -0
  34. plex_api/models/errors/getmetadata.py +32 -0
  35. plex_api/models/errors/getmetadatachildren.py +32 -0
  36. plex_api/models/errors/getmyplexaccount.py +32 -0
  37. plex_api/models/errors/getondeck.py +32 -0
  38. plex_api/models/errors/getpin.py +32 -0
  39. plex_api/models/errors/getplaylist.py +32 -0
  40. plex_api/models/errors/getplaylistcontents.py +32 -0
  41. plex_api/models/errors/getplaylists.py +32 -0
  42. plex_api/models/errors/getrecentlyadded.py +32 -0
  43. plex_api/models/errors/getresizedphoto.py +32 -0
  44. plex_api/models/errors/getsearchresults.py +32 -0
  45. plex_api/models/errors/getserveractivities.py +32 -0
  46. plex_api/models/errors/getservercapabilities.py +32 -0
  47. plex_api/models/errors/getserveridentity.py +32 -0
  48. plex_api/models/errors/getserverlist.py +32 -0
  49. plex_api/models/errors/getserverpreferences.py +32 -0
  50. plex_api/models/errors/getsessionhistory.py +32 -0
  51. plex_api/models/errors/getsessions.py +32 -0
  52. plex_api/models/errors/getsourceconnectioninformation.py +32 -0
  53. plex_api/models/errors/getstatistics.py +32 -0
  54. plex_api/models/errors/gettimeline.py +32 -0
  55. plex_api/models/errors/gettoken.py +32 -0
  56. plex_api/models/errors/gettranscodesessions.py +32 -0
  57. plex_api/models/errors/gettransienttoken.py +32 -0
  58. plex_api/models/errors/getupdatestatus.py +32 -0
  59. plex_api/models/errors/logline.py +32 -0
  60. plex_api/models/errors/logmultiline.py +32 -0
  61. plex_api/models/errors/markplayed.py +32 -0
  62. plex_api/models/errors/markunplayed.py +32 -0
  63. plex_api/models/errors/performsearch.py +32 -0
  64. plex_api/models/errors/performvoicesearch.py +32 -0
  65. plex_api/models/errors/refreshlibrary.py +32 -0
  66. plex_api/models/errors/sdkerror.py +24 -0
  67. plex_api/models/errors/startalltasks.py +32 -0
  68. plex_api/models/errors/starttask.py +32 -0
  69. plex_api/models/errors/startuniversaltranscode.py +32 -0
  70. plex_api/models/errors/stopalltasks.py +32 -0
  71. plex_api/models/errors/stoptask.py +32 -0
  72. plex_api/models/errors/stoptranscodesession.py +32 -0
  73. plex_api/models/errors/updateplaylist.py +32 -0
  74. plex_api/models/errors/updateplayprogress.py +32 -0
  75. plex_api/models/errors/uploadplaylist.py +32 -0
  76. plex_api/models/operations/__init__.py +64 -0
  77. plex_api/models/operations/addplaylistcontents.py +74 -0
  78. plex_api/models/operations/applyupdates.py +39 -0
  79. plex_api/models/operations/cancelserveractivities.py +25 -0
  80. plex_api/models/operations/checkforupdates.py +32 -0
  81. plex_api/models/operations/clearplaylistcontents.py +25 -0
  82. plex_api/models/operations/createplaylist.py +91 -0
  83. plex_api/models/operations/deletelibrary.py +25 -0
  84. plex_api/models/operations/deleteplaylist.py +25 -0
  85. plex_api/models/operations/enablepapertrail.py +17 -0
  86. plex_api/models/operations/getavailableclients.py +58 -0
  87. plex_api/models/operations/getbutlertasks.py +52 -0
  88. plex_api/models/operations/getdevices.py +53 -0
  89. plex_api/models/operations/getfilehash.py +28 -0
  90. plex_api/models/operations/getglobalhubs.py +100 -0
  91. plex_api/models/operations/getlibraries.py +79 -0
  92. plex_api/models/operations/getlibrary.py +153 -0
  93. plex_api/models/operations/getlibraryhubs.py +205 -0
  94. plex_api/models/operations/getlibraryitems.py +227 -0
  95. plex_api/models/operations/getmetadata.py +264 -0
  96. plex_api/models/operations/getmetadatachildren.py +115 -0
  97. plex_api/models/operations/getmyplexaccount.py +50 -0
  98. plex_api/models/operations/getondeck.py +166 -0
  99. plex_api/models/operations/getpin.py +86 -0
  100. plex_api/models/operations/getplaylist.py +70 -0
  101. plex_api/models/operations/getplaylistcontents.py +178 -0
  102. plex_api/models/operations/getplaylists.py +85 -0
  103. plex_api/models/operations/getrecentlyadded.py +166 -0
  104. plex_api/models/operations/getresizedphoto.py +48 -0
  105. plex_api/models/operations/getsearchresults.py +182 -0
  106. plex_api/models/operations/getserveractivities.py +63 -0
  107. plex_api/models/operations/getservercapabilities.py +99 -0
  108. plex_api/models/operations/getserveridentity.py +42 -0
  109. plex_api/models/operations/getserverlist.py +53 -0
  110. plex_api/models/operations/getserverpreferences.py +57 -0
  111. plex_api/models/operations/getsessionhistory.py +67 -0
  112. plex_api/models/operations/getsessions.py +185 -0
  113. plex_api/models/operations/getsourceconnectioninformation.py +25 -0
  114. plex_api/models/operations/getstatistics.py +93 -0
  115. plex_api/models/operations/gettimeline.py +50 -0
  116. plex_api/models/operations/gettoken.py +35 -0
  117. plex_api/models/operations/gettranscodesessions.py +71 -0
  118. plex_api/models/operations/gettransienttoken.py +36 -0
  119. plex_api/models/operations/getupdatestatus.py +57 -0
  120. plex_api/models/operations/logline.py +50 -0
  121. plex_api/models/operations/logmultiline.py +17 -0
  122. plex_api/models/operations/markplayed.py +25 -0
  123. plex_api/models/operations/markunplayed.py +25 -0
  124. plex_api/models/operations/performsearch.py +30 -0
  125. plex_api/models/operations/performvoicesearch.py +30 -0
  126. plex_api/models/operations/refreshlibrary.py +25 -0
  127. plex_api/models/operations/searchlibrary.py +96 -0
  128. plex_api/models/operations/startalltasks.py +17 -0
  129. plex_api/models/operations/starttask.py +43 -0
  130. plex_api/models/operations/startuniversaltranscode.py +56 -0
  131. plex_api/models/operations/stopalltasks.py +17 -0
  132. plex_api/models/operations/stoptask.py +43 -0
  133. plex_api/models/operations/stoptranscodesession.py +25 -0
  134. plex_api/models/operations/updateplaylist.py +30 -0
  135. plex_api/models/operations/updateplayprogress.py +29 -0
  136. plex_api/models/operations/uploadplaylist.py +47 -0
  137. plex_api/playlists.py +629 -0
  138. plex_api/plex.py +154 -0
  139. plex_api/sdk.py +180 -0
  140. plex_api/sdkconfiguration.py +52 -0
  141. plex_api/search.py +232 -0
  142. plex_api/server.py +525 -0
  143. plex_api/sessions.py +272 -0
  144. plex_api/statistics.py +86 -0
  145. plex_api/updater.py +212 -0
  146. plex_api/utils/__init__.py +4 -0
  147. plex_api/utils/retries.py +120 -0
  148. plex_api/utils/utils.py +898 -0
  149. plex_api/video.py +136 -0
  150. plex_api_client-0.6.1.dist-info/LICENSE.md +21 -0
  151. plex_api_client-0.6.1.dist-info/METADATA +397 -0
  152. plex_api_client-0.6.1.dist-info/RECORD +154 -0
  153. plex_api_client-0.6.1.dist-info/WHEEL +5 -0
  154. plex_api_client-0.6.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,17 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class LogMultiLineResponse:
10
+ content_type: str = dataclasses.field()
11
+ r"""HTTP response content type for this operation"""
12
+ status_code: int = dataclasses.field()
13
+ r"""HTTP response status code for this operation"""
14
+ raw_response: requests_http.Response = dataclasses.field()
15
+ r"""Raw HTTP response; suitable for custom response parsing"""
16
+
17
+
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class MarkPlayedRequest:
10
+ key: float = dataclasses.field(metadata={'query_param': { 'field_name': 'key', 'style': 'form', 'explode': True }})
11
+ r"""The media key to mark as played"""
12
+
13
+
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class MarkPlayedResponse:
18
+ content_type: str = dataclasses.field()
19
+ r"""HTTP response content type for this operation"""
20
+ status_code: int = dataclasses.field()
21
+ r"""HTTP response status code for this operation"""
22
+ raw_response: requests_http.Response = dataclasses.field()
23
+ r"""Raw HTTP response; suitable for custom response parsing"""
24
+
25
+
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class MarkUnplayedRequest:
10
+ key: float = dataclasses.field(metadata={'query_param': { 'field_name': 'key', 'style': 'form', 'explode': True }})
11
+ r"""The media key to mark as Unplayed"""
12
+
13
+
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class MarkUnplayedResponse:
18
+ content_type: str = dataclasses.field()
19
+ r"""HTTP response content type for this operation"""
20
+ status_code: int = dataclasses.field()
21
+ r"""HTTP response status code for this operation"""
22
+ raw_response: requests_http.Response = dataclasses.field()
23
+ r"""Raw HTTP response; suitable for custom response parsing"""
24
+
25
+
@@ -0,0 +1,30 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from typing import Optional
7
+
8
+
9
+ @dataclasses.dataclass
10
+ class PerformSearchRequest:
11
+ query: str = dataclasses.field(metadata={'query_param': { 'field_name': 'query', 'style': 'form', 'explode': True }})
12
+ r"""The query term"""
13
+ section_id: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'sectionId', 'style': 'form', 'explode': True }})
14
+ r"""This gives context to the search, and can result in re-ordering of search result hubs"""
15
+ limit: Optional[float] = dataclasses.field(default=3, metadata={'query_param': { 'field_name': 'limit', 'style': 'form', 'explode': True }})
16
+ r"""The number of items to return per hub"""
17
+
18
+
19
+
20
+
21
+ @dataclasses.dataclass
22
+ class PerformSearchResponse:
23
+ content_type: str = dataclasses.field()
24
+ r"""HTTP response content type for this operation"""
25
+ status_code: int = dataclasses.field()
26
+ r"""HTTP response status code for this operation"""
27
+ raw_response: requests_http.Response = dataclasses.field()
28
+ r"""Raw HTTP response; suitable for custom response parsing"""
29
+
30
+
@@ -0,0 +1,30 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from typing import Optional
7
+
8
+
9
+ @dataclasses.dataclass
10
+ class PerformVoiceSearchRequest:
11
+ query: str = dataclasses.field(metadata={'query_param': { 'field_name': 'query', 'style': 'form', 'explode': True }})
12
+ r"""The query term"""
13
+ section_id: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'sectionId', 'style': 'form', 'explode': True }})
14
+ r"""This gives context to the search, and can result in re-ordering of search result hubs"""
15
+ limit: Optional[float] = dataclasses.field(default=3, metadata={'query_param': { 'field_name': 'limit', 'style': 'form', 'explode': True }})
16
+ r"""The number of items to return per hub"""
17
+
18
+
19
+
20
+
21
+ @dataclasses.dataclass
22
+ class PerformVoiceSearchResponse:
23
+ content_type: str = dataclasses.field()
24
+ r"""HTTP response content type for this operation"""
25
+ status_code: int = dataclasses.field()
26
+ r"""HTTP response status code for this operation"""
27
+ raw_response: requests_http.Response = dataclasses.field()
28
+ r"""Raw HTTP response; suitable for custom response parsing"""
29
+
30
+
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class RefreshLibraryRequest:
10
+ section_id: float = dataclasses.field(metadata={'path_param': { 'field_name': 'sectionId', 'style': 'simple', 'explode': False }})
11
+ r"""the Id of the library to refresh"""
12
+
13
+
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class RefreshLibraryResponse:
18
+ content_type: str = dataclasses.field()
19
+ r"""HTTP response content type for this operation"""
20
+ status_code: int = dataclasses.field()
21
+ r"""HTTP response status code for this operation"""
22
+ raw_response: requests_http.Response = dataclasses.field()
23
+ r"""Raw HTTP response; suitable for custom response parsing"""
24
+
25
+
@@ -0,0 +1,96 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from dataclasses_json import Undefined, dataclass_json
7
+ from enum import Enum
8
+ from plex_api import utils
9
+ from typing import List, Optional
10
+
11
+ class Type(int, Enum):
12
+ r"""Plex content type to search for"""
13
+ ONE = 1
14
+ TWO = 2
15
+ THREE = 3
16
+ FOUR = 4
17
+
18
+
19
+ @dataclasses.dataclass
20
+ class SearchLibraryRequest:
21
+ section_id: int = dataclasses.field(metadata={'path_param': { 'field_name': 'sectionId', 'style': 'simple', 'explode': False }})
22
+ r"""the Id of the library to query"""
23
+ type: Type = dataclasses.field(metadata={'query_param': { 'field_name': 'type', 'style': 'form', 'explode': True }})
24
+ r"""Plex content type to search for"""
25
+
26
+
27
+
28
+
29
+ @dataclass_json(undefined=Undefined.EXCLUDE)
30
+ @dataclasses.dataclass
31
+ class SearchLibraryMetadata:
32
+ rating_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('ratingKey'), 'exclude': lambda f: f is None }})
33
+ key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
34
+ parent_rating_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentRatingKey'), 'exclude': lambda f: f is None }})
35
+ guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('guid'), 'exclude': lambda f: f is None }})
36
+ parent_guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentGuid'), 'exclude': lambda f: f is None }})
37
+ parent_studio: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentStudio'), 'exclude': lambda f: f is None }})
38
+ type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type'), 'exclude': lambda f: f is None }})
39
+ title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }})
40
+ parent_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentKey'), 'exclude': lambda f: f is None }})
41
+ parent_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentTitle'), 'exclude': lambda f: f is None }})
42
+ summary: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('summary'), 'exclude': lambda f: f is None }})
43
+ index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('index'), 'exclude': lambda f: f is None }})
44
+ parent_index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentIndex'), 'exclude': lambda f: f is None }})
45
+ parent_year: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentYear'), 'exclude': lambda f: f is None }})
46
+ thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
47
+ art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('art'), 'exclude': lambda f: f is None }})
48
+ parent_thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentThumb'), 'exclude': lambda f: f is None }})
49
+ parent_theme: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentTheme'), 'exclude': lambda f: f is None }})
50
+ added_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('addedAt'), 'exclude': lambda f: f is None }})
51
+ updated_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt'), 'exclude': lambda f: f is None }})
52
+
53
+
54
+
55
+
56
+ @dataclass_json(undefined=Undefined.EXCLUDE)
57
+ @dataclasses.dataclass
58
+ class SearchLibraryMediaContainer:
59
+ size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
60
+ allow_sync: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('allowSync'), 'exclude': lambda f: f is None }})
61
+ art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('art'), 'exclude': lambda f: f is None }})
62
+ identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('identifier'), 'exclude': lambda f: f is None }})
63
+ media_tag_prefix: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('mediaTagPrefix'), 'exclude': lambda f: f is None }})
64
+ media_tag_version: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('mediaTagVersion'), 'exclude': lambda f: f is None }})
65
+ nocache: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('nocache'), 'exclude': lambda f: f is None }})
66
+ thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
67
+ title1: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title1'), 'exclude': lambda f: f is None }})
68
+ title2: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title2'), 'exclude': lambda f: f is None }})
69
+ view_group: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('viewGroup'), 'exclude': lambda f: f is None }})
70
+ view_mode: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('viewMode'), 'exclude': lambda f: f is None }})
71
+ metadata: Optional[List[SearchLibraryMetadata]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Metadata'), 'exclude': lambda f: f is None }})
72
+
73
+
74
+
75
+
76
+ @dataclass_json(undefined=Undefined.EXCLUDE)
77
+ @dataclasses.dataclass
78
+ class SearchLibraryResponseBody:
79
+ r"""The contents of the library by section and type"""
80
+ media_container: Optional[SearchLibraryMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
81
+
82
+
83
+
84
+
85
+ @dataclasses.dataclass
86
+ class SearchLibraryResponse:
87
+ content_type: str = dataclasses.field()
88
+ r"""HTTP response content type for this operation"""
89
+ status_code: int = dataclasses.field()
90
+ r"""HTTP response status code for this operation"""
91
+ raw_response: requests_http.Response = dataclasses.field()
92
+ r"""Raw HTTP response; suitable for custom response parsing"""
93
+ object: Optional[SearchLibraryResponseBody] = dataclasses.field(default=None)
94
+ r"""The contents of the library by section and type"""
95
+
96
+
@@ -0,0 +1,17 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class StartAllTasksResponse:
10
+ content_type: str = dataclasses.field()
11
+ r"""HTTP response content type for this operation"""
12
+ status_code: int = dataclasses.field()
13
+ r"""HTTP response status code for this operation"""
14
+ raw_response: requests_http.Response = dataclasses.field()
15
+ r"""Raw HTTP response; suitable for custom response parsing"""
16
+
17
+
@@ -0,0 +1,43 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from enum import Enum
7
+
8
+ class TaskName(str, Enum):
9
+ r"""the name of the task to be started."""
10
+ BACKUP_DATABASE = 'BackupDatabase'
11
+ BUILD_GRACENOTE_COLLECTIONS = 'BuildGracenoteCollections'
12
+ CHECK_FOR_UPDATES = 'CheckForUpdates'
13
+ CLEAN_OLD_BUNDLES = 'CleanOldBundles'
14
+ CLEAN_OLD_CACHE_FILES = 'CleanOldCacheFiles'
15
+ DEEP_MEDIA_ANALYSIS = 'DeepMediaAnalysis'
16
+ GENERATE_AUTO_TAGS = 'GenerateAutoTags'
17
+ GENERATE_CHAPTER_THUMBS = 'GenerateChapterThumbs'
18
+ GENERATE_MEDIA_INDEX_FILES = 'GenerateMediaIndexFiles'
19
+ OPTIMIZE_DATABASE = 'OptimizeDatabase'
20
+ REFRESH_LIBRARIES = 'RefreshLibraries'
21
+ REFRESH_LOCAL_MEDIA = 'RefreshLocalMedia'
22
+ REFRESH_PERIODIC_METADATA = 'RefreshPeriodicMetadata'
23
+ UPGRADE_MEDIA_ANALYSIS = 'UpgradeMediaAnalysis'
24
+
25
+
26
+ @dataclasses.dataclass
27
+ class StartTaskRequest:
28
+ task_name: TaskName = dataclasses.field(metadata={'path_param': { 'field_name': 'taskName', 'style': 'simple', 'explode': False }})
29
+ r"""the name of the task to be started."""
30
+
31
+
32
+
33
+
34
+ @dataclasses.dataclass
35
+ class StartTaskResponse:
36
+ content_type: str = dataclasses.field()
37
+ r"""HTTP response content type for this operation"""
38
+ status_code: int = dataclasses.field()
39
+ r"""HTTP response status code for this operation"""
40
+ raw_response: requests_http.Response = dataclasses.field()
41
+ r"""Raw HTTP response; suitable for custom response parsing"""
42
+
43
+
@@ -0,0 +1,56 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from typing import Optional
7
+
8
+
9
+ @dataclasses.dataclass
10
+ class StartUniversalTranscodeRequest:
11
+ has_mde: float = dataclasses.field(metadata={'query_param': { 'field_name': 'hasMDE', 'style': 'form', 'explode': True }})
12
+ r"""Whether the media item has MDE"""
13
+ path: str = dataclasses.field(metadata={'query_param': { 'field_name': 'path', 'style': 'form', 'explode': True }})
14
+ r"""The path to the media item to transcode"""
15
+ media_index: float = dataclasses.field(metadata={'query_param': { 'field_name': 'mediaIndex', 'style': 'form', 'explode': True }})
16
+ r"""The index of the media item to transcode"""
17
+ part_index: float = dataclasses.field(metadata={'query_param': { 'field_name': 'partIndex', 'style': 'form', 'explode': True }})
18
+ r"""The index of the part to transcode"""
19
+ protocol: str = dataclasses.field(metadata={'query_param': { 'field_name': 'protocol', 'style': 'form', 'explode': True }})
20
+ r"""The protocol to use for the transcode session"""
21
+ fast_seek: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'fastSeek', 'style': 'form', 'explode': True }})
22
+ r"""Whether to use fast seek or not"""
23
+ direct_play: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'directPlay', 'style': 'form', 'explode': True }})
24
+ r"""Whether to use direct play or not"""
25
+ direct_stream: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'directStream', 'style': 'form', 'explode': True }})
26
+ r"""Whether to use direct stream or not"""
27
+ subtitle_size: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'subtitleSize', 'style': 'form', 'explode': True }})
28
+ r"""The size of the subtitles"""
29
+ subtites: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'subtites', 'style': 'form', 'explode': True }})
30
+ r"""The subtitles"""
31
+ audio_boost: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'audioBoost', 'style': 'form', 'explode': True }})
32
+ r"""The audio boost"""
33
+ location: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'location', 'style': 'form', 'explode': True }})
34
+ r"""The location of the transcode session"""
35
+ media_buffer_size: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'mediaBufferSize', 'style': 'form', 'explode': True }})
36
+ r"""The size of the media buffer"""
37
+ session: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'session', 'style': 'form', 'explode': True }})
38
+ r"""The session ID"""
39
+ add_debug_overlay: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'addDebugOverlay', 'style': 'form', 'explode': True }})
40
+ r"""Whether to add a debug overlay or not"""
41
+ auto_adjust_quality: Optional[float] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'autoAdjustQuality', 'style': 'form', 'explode': True }})
42
+ r"""Whether to auto adjust quality or not"""
43
+
44
+
45
+
46
+
47
+ @dataclasses.dataclass
48
+ class StartUniversalTranscodeResponse:
49
+ content_type: str = dataclasses.field()
50
+ r"""HTTP response content type for this operation"""
51
+ status_code: int = dataclasses.field()
52
+ r"""HTTP response status code for this operation"""
53
+ raw_response: requests_http.Response = dataclasses.field()
54
+ r"""Raw HTTP response; suitable for custom response parsing"""
55
+
56
+
@@ -0,0 +1,17 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class StopAllTasksResponse:
10
+ content_type: str = dataclasses.field()
11
+ r"""HTTP response content type for this operation"""
12
+ status_code: int = dataclasses.field()
13
+ r"""HTTP response status code for this operation"""
14
+ raw_response: requests_http.Response = dataclasses.field()
15
+ r"""Raw HTTP response; suitable for custom response parsing"""
16
+
17
+
@@ -0,0 +1,43 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from enum import Enum
7
+
8
+ class PathParamTaskName(str, Enum):
9
+ r"""The name of the task to be started."""
10
+ BACKUP_DATABASE = 'BackupDatabase'
11
+ BUILD_GRACENOTE_COLLECTIONS = 'BuildGracenoteCollections'
12
+ CHECK_FOR_UPDATES = 'CheckForUpdates'
13
+ CLEAN_OLD_BUNDLES = 'CleanOldBundles'
14
+ CLEAN_OLD_CACHE_FILES = 'CleanOldCacheFiles'
15
+ DEEP_MEDIA_ANALYSIS = 'DeepMediaAnalysis'
16
+ GENERATE_AUTO_TAGS = 'GenerateAutoTags'
17
+ GENERATE_CHAPTER_THUMBS = 'GenerateChapterThumbs'
18
+ GENERATE_MEDIA_INDEX_FILES = 'GenerateMediaIndexFiles'
19
+ OPTIMIZE_DATABASE = 'OptimizeDatabase'
20
+ REFRESH_LIBRARIES = 'RefreshLibraries'
21
+ REFRESH_LOCAL_MEDIA = 'RefreshLocalMedia'
22
+ REFRESH_PERIODIC_METADATA = 'RefreshPeriodicMetadata'
23
+ UPGRADE_MEDIA_ANALYSIS = 'UpgradeMediaAnalysis'
24
+
25
+
26
+ @dataclasses.dataclass
27
+ class StopTaskRequest:
28
+ task_name: PathParamTaskName = dataclasses.field(metadata={'path_param': { 'field_name': 'taskName', 'style': 'simple', 'explode': False }})
29
+ r"""The name of the task to be started."""
30
+
31
+
32
+
33
+
34
+ @dataclasses.dataclass
35
+ class StopTaskResponse:
36
+ content_type: str = dataclasses.field()
37
+ r"""HTTP response content type for this operation"""
38
+ status_code: int = dataclasses.field()
39
+ r"""HTTP response status code for this operation"""
40
+ raw_response: requests_http.Response = dataclasses.field()
41
+ r"""Raw HTTP response; suitable for custom response parsing"""
42
+
43
+
@@ -0,0 +1,25 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class StopTranscodeSessionRequest:
10
+ session_key: str = dataclasses.field(metadata={'path_param': { 'field_name': 'sessionKey', 'style': 'simple', 'explode': False }})
11
+ r"""the Key of the transcode session to stop"""
12
+
13
+
14
+
15
+
16
+ @dataclasses.dataclass
17
+ class StopTranscodeSessionResponse:
18
+ content_type: str = dataclasses.field()
19
+ r"""HTTP response content type for this operation"""
20
+ status_code: int = dataclasses.field()
21
+ r"""HTTP response status code for this operation"""
22
+ raw_response: requests_http.Response = dataclasses.field()
23
+ r"""Raw HTTP response; suitable for custom response parsing"""
24
+
25
+
@@ -0,0 +1,30 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from typing import Optional
7
+
8
+
9
+ @dataclasses.dataclass
10
+ class UpdatePlaylistRequest:
11
+ playlist_id: float = dataclasses.field(metadata={'path_param': { 'field_name': 'playlistID', 'style': 'simple', 'explode': False }})
12
+ r"""the ID of the playlist"""
13
+ title: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'title', 'style': 'form', 'explode': True }})
14
+ r"""name of the playlist"""
15
+ summary: Optional[str] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'summary', 'style': 'form', 'explode': True }})
16
+ r"""summary description of the playlist"""
17
+
18
+
19
+
20
+
21
+ @dataclasses.dataclass
22
+ class UpdatePlaylistResponse:
23
+ content_type: str = dataclasses.field()
24
+ r"""HTTP response content type for this operation"""
25
+ status_code: int = dataclasses.field()
26
+ r"""HTTP response status code for this operation"""
27
+ raw_response: requests_http.Response = dataclasses.field()
28
+ r"""Raw HTTP response; suitable for custom response parsing"""
29
+
30
+
@@ -0,0 +1,29 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+
7
+
8
+ @dataclasses.dataclass
9
+ class UpdatePlayProgressRequest:
10
+ key: str = dataclasses.field(metadata={'query_param': { 'field_name': 'key', 'style': 'form', 'explode': True }})
11
+ r"""the media key"""
12
+ time: float = dataclasses.field(metadata={'query_param': { 'field_name': 'time', 'style': 'form', 'explode': True }})
13
+ r"""The time, in milliseconds, used to set the media playback progress."""
14
+ state: str = dataclasses.field(metadata={'query_param': { 'field_name': 'state', 'style': 'form', 'explode': True }})
15
+ r"""The playback state of the media item."""
16
+
17
+
18
+
19
+
20
+ @dataclasses.dataclass
21
+ class UpdatePlayProgressResponse:
22
+ content_type: str = dataclasses.field()
23
+ r"""HTTP response content type for this operation"""
24
+ status_code: int = dataclasses.field()
25
+ r"""HTTP response status code for this operation"""
26
+ raw_response: requests_http.Response = dataclasses.field()
27
+ r"""Raw HTTP response; suitable for custom response parsing"""
28
+
29
+
@@ -0,0 +1,47 @@
1
+ """Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ import dataclasses
5
+ import requests as requests_http
6
+ from enum import Enum
7
+
8
+ class Force(int, Enum):
9
+ r"""Force overwriting of duplicate playlists.
10
+ By default, a playlist file uploaded with the same path will overwrite the existing playlist.
11
+ The `force` argument is used to disable overwriting.
12
+ If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
13
+ """
14
+ ZERO = 0
15
+ ONE = 1
16
+
17
+
18
+ @dataclasses.dataclass
19
+ class UploadPlaylistRequest:
20
+ path: str = dataclasses.field(metadata={'query_param': { 'field_name': 'path', 'style': 'form', 'explode': True }})
21
+ r"""absolute path to a directory on the server where m3u files are stored, or the absolute path to a playlist file on the server.
22
+ If the `path` argument is a directory, that path will be scanned for playlist files to be processed.
23
+ Each file in that directory creates a separate playlist, with a name based on the filename of the file that created it.
24
+ The GUID of each playlist is based on the filename.
25
+ If the `path` argument is a file, that file will be used to create a new playlist, with the name based on the filename of the file that created it.
26
+ The GUID of each playlist is based on the filename.
27
+ """
28
+ force: Force = dataclasses.field(metadata={'query_param': { 'field_name': 'force', 'style': 'form', 'explode': True }})
29
+ r"""Force overwriting of duplicate playlists.
30
+ By default, a playlist file uploaded with the same path will overwrite the existing playlist.
31
+ The `force` argument is used to disable overwriting.
32
+ If the `force` argument is set to 0, a new playlist will be created suffixed with the date and time that the duplicate was uploaded.
33
+ """
34
+
35
+
36
+
37
+
38
+ @dataclasses.dataclass
39
+ class UploadPlaylistResponse:
40
+ content_type: str = dataclasses.field()
41
+ r"""HTTP response content type for this operation"""
42
+ status_code: int = dataclasses.field()
43
+ r"""HTTP response status code for this operation"""
44
+ raw_response: requests_http.Response = dataclasses.field()
45
+ r"""Raw HTTP response; suitable for custom response parsing"""
46
+
47
+