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.
- plex_api/__init__.py +4 -0
- plex_api/_hooks/__init__.py +5 -0
- plex_api/_hooks/registration.py +13 -0
- plex_api/_hooks/sdkhooks.py +57 -0
- plex_api/_hooks/types.py +74 -0
- plex_api/activities.py +151 -0
- plex_api/authentication.py +146 -0
- plex_api/butler.py +333 -0
- plex_api/hubs.py +158 -0
- plex_api/library.py +808 -0
- plex_api/log.py +225 -0
- plex_api/media.py +210 -0
- plex_api/models/__init__.py +4 -0
- plex_api/models/components/__init__.py +5 -0
- plex_api/models/components/security.py +11 -0
- plex_api/models/errors/__init__.py +63 -0
- plex_api/models/errors/addplaylistcontents.py +32 -0
- plex_api/models/errors/applyupdates.py +32 -0
- plex_api/models/errors/cancelserveractivities.py +32 -0
- plex_api/models/errors/checkforupdates.py +32 -0
- plex_api/models/errors/clearplaylistcontents.py +32 -0
- plex_api/models/errors/createplaylist.py +32 -0
- plex_api/models/errors/deletelibrary.py +32 -0
- plex_api/models/errors/deleteplaylist.py +32 -0
- plex_api/models/errors/enablepapertrail.py +32 -0
- plex_api/models/errors/getavailableclients.py +32 -0
- plex_api/models/errors/getbutlertasks.py +32 -0
- plex_api/models/errors/getdevices.py +32 -0
- plex_api/models/errors/getfilehash.py +32 -0
- plex_api/models/errors/getglobalhubs.py +32 -0
- plex_api/models/errors/getlibraries.py +32 -0
- plex_api/models/errors/getlibrary.py +32 -0
- plex_api/models/errors/getlibraryhubs.py +32 -0
- plex_api/models/errors/getmetadata.py +32 -0
- plex_api/models/errors/getmetadatachildren.py +32 -0
- plex_api/models/errors/getmyplexaccount.py +32 -0
- plex_api/models/errors/getondeck.py +32 -0
- plex_api/models/errors/getpin.py +32 -0
- plex_api/models/errors/getplaylist.py +32 -0
- plex_api/models/errors/getplaylistcontents.py +32 -0
- plex_api/models/errors/getplaylists.py +32 -0
- plex_api/models/errors/getrecentlyadded.py +32 -0
- plex_api/models/errors/getresizedphoto.py +32 -0
- plex_api/models/errors/getsearchresults.py +32 -0
- plex_api/models/errors/getserveractivities.py +32 -0
- plex_api/models/errors/getservercapabilities.py +32 -0
- plex_api/models/errors/getserveridentity.py +32 -0
- plex_api/models/errors/getserverlist.py +32 -0
- plex_api/models/errors/getserverpreferences.py +32 -0
- plex_api/models/errors/getsessionhistory.py +32 -0
- plex_api/models/errors/getsessions.py +32 -0
- plex_api/models/errors/getsourceconnectioninformation.py +32 -0
- plex_api/models/errors/getstatistics.py +32 -0
- plex_api/models/errors/gettimeline.py +32 -0
- plex_api/models/errors/gettoken.py +32 -0
- plex_api/models/errors/gettranscodesessions.py +32 -0
- plex_api/models/errors/gettransienttoken.py +32 -0
- plex_api/models/errors/getupdatestatus.py +32 -0
- plex_api/models/errors/logline.py +32 -0
- plex_api/models/errors/logmultiline.py +32 -0
- plex_api/models/errors/markplayed.py +32 -0
- plex_api/models/errors/markunplayed.py +32 -0
- plex_api/models/errors/performsearch.py +32 -0
- plex_api/models/errors/performvoicesearch.py +32 -0
- plex_api/models/errors/refreshlibrary.py +32 -0
- plex_api/models/errors/sdkerror.py +24 -0
- plex_api/models/errors/startalltasks.py +32 -0
- plex_api/models/errors/starttask.py +32 -0
- plex_api/models/errors/startuniversaltranscode.py +32 -0
- plex_api/models/errors/stopalltasks.py +32 -0
- plex_api/models/errors/stoptask.py +32 -0
- plex_api/models/errors/stoptranscodesession.py +32 -0
- plex_api/models/errors/updateplaylist.py +32 -0
- plex_api/models/errors/updateplayprogress.py +32 -0
- plex_api/models/errors/uploadplaylist.py +32 -0
- plex_api/models/operations/__init__.py +64 -0
- plex_api/models/operations/addplaylistcontents.py +74 -0
- plex_api/models/operations/applyupdates.py +39 -0
- plex_api/models/operations/cancelserveractivities.py +25 -0
- plex_api/models/operations/checkforupdates.py +32 -0
- plex_api/models/operations/clearplaylistcontents.py +25 -0
- plex_api/models/operations/createplaylist.py +91 -0
- plex_api/models/operations/deletelibrary.py +25 -0
- plex_api/models/operations/deleteplaylist.py +25 -0
- plex_api/models/operations/enablepapertrail.py +17 -0
- plex_api/models/operations/getavailableclients.py +58 -0
- plex_api/models/operations/getbutlertasks.py +52 -0
- plex_api/models/operations/getdevices.py +53 -0
- plex_api/models/operations/getfilehash.py +28 -0
- plex_api/models/operations/getglobalhubs.py +100 -0
- plex_api/models/operations/getlibraries.py +79 -0
- plex_api/models/operations/getlibrary.py +153 -0
- plex_api/models/operations/getlibraryhubs.py +205 -0
- plex_api/models/operations/getlibraryitems.py +227 -0
- plex_api/models/operations/getmetadata.py +264 -0
- plex_api/models/operations/getmetadatachildren.py +115 -0
- plex_api/models/operations/getmyplexaccount.py +50 -0
- plex_api/models/operations/getondeck.py +166 -0
- plex_api/models/operations/getpin.py +86 -0
- plex_api/models/operations/getplaylist.py +70 -0
- plex_api/models/operations/getplaylistcontents.py +178 -0
- plex_api/models/operations/getplaylists.py +85 -0
- plex_api/models/operations/getrecentlyadded.py +166 -0
- plex_api/models/operations/getresizedphoto.py +48 -0
- plex_api/models/operations/getsearchresults.py +182 -0
- plex_api/models/operations/getserveractivities.py +63 -0
- plex_api/models/operations/getservercapabilities.py +99 -0
- plex_api/models/operations/getserveridentity.py +42 -0
- plex_api/models/operations/getserverlist.py +53 -0
- plex_api/models/operations/getserverpreferences.py +57 -0
- plex_api/models/operations/getsessionhistory.py +67 -0
- plex_api/models/operations/getsessions.py +185 -0
- plex_api/models/operations/getsourceconnectioninformation.py +25 -0
- plex_api/models/operations/getstatistics.py +93 -0
- plex_api/models/operations/gettimeline.py +50 -0
- plex_api/models/operations/gettoken.py +35 -0
- plex_api/models/operations/gettranscodesessions.py +71 -0
- plex_api/models/operations/gettransienttoken.py +36 -0
- plex_api/models/operations/getupdatestatus.py +57 -0
- plex_api/models/operations/logline.py +50 -0
- plex_api/models/operations/logmultiline.py +17 -0
- plex_api/models/operations/markplayed.py +25 -0
- plex_api/models/operations/markunplayed.py +25 -0
- plex_api/models/operations/performsearch.py +30 -0
- plex_api/models/operations/performvoicesearch.py +30 -0
- plex_api/models/operations/refreshlibrary.py +25 -0
- plex_api/models/operations/searchlibrary.py +96 -0
- plex_api/models/operations/startalltasks.py +17 -0
- plex_api/models/operations/starttask.py +43 -0
- plex_api/models/operations/startuniversaltranscode.py +56 -0
- plex_api/models/operations/stopalltasks.py +17 -0
- plex_api/models/operations/stoptask.py +43 -0
- plex_api/models/operations/stoptranscodesession.py +25 -0
- plex_api/models/operations/updateplaylist.py +30 -0
- plex_api/models/operations/updateplayprogress.py +29 -0
- plex_api/models/operations/uploadplaylist.py +47 -0
- plex_api/playlists.py +629 -0
- plex_api/plex.py +154 -0
- plex_api/sdk.py +180 -0
- plex_api/sdkconfiguration.py +52 -0
- plex_api/search.py +232 -0
- plex_api/server.py +525 -0
- plex_api/sessions.py +272 -0
- plex_api/statistics.py +86 -0
- plex_api/updater.py +212 -0
- plex_api/utils/__init__.py +4 -0
- plex_api/utils/retries.py +120 -0
- plex_api/utils/utils.py +898 -0
- plex_api/video.py +136 -0
- plex_api_client-0.6.1.dist-info/LICENSE.md +21 -0
- plex_api_client-0.6.1.dist-info/METADATA +397 -0
- plex_api_client-0.6.1.dist-info/RECORD +154 -0
- plex_api_client-0.6.1.dist-info/WHEEL +5 -0
- 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
|
+
|