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,185 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
12
|
+
@dataclasses.dataclass
|
|
13
|
+
class GetSessionsStream:
|
|
14
|
+
album_gain: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('albumGain'), 'exclude': lambda f: f is None }})
|
|
15
|
+
album_peak: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('albumPeak'), 'exclude': lambda f: f is None }})
|
|
16
|
+
album_range: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('albumRange'), 'exclude': lambda f: f is None }})
|
|
17
|
+
audio_channel_layout: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioChannelLayout'), 'exclude': lambda f: f is None }})
|
|
18
|
+
bit_depth: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bitDepth'), 'exclude': lambda f: f is None }})
|
|
19
|
+
bitrate: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bitrate'), 'exclude': lambda f: f is None }})
|
|
20
|
+
channels: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('channels'), 'exclude': lambda f: f is None }})
|
|
21
|
+
codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('codec'), 'exclude': lambda f: f is None }})
|
|
22
|
+
display_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('displayTitle'), 'exclude': lambda f: f is None }})
|
|
23
|
+
extended_display_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('extendedDisplayTitle'), 'exclude': lambda f: f is None }})
|
|
24
|
+
gain: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('gain'), 'exclude': lambda f: f is None }})
|
|
25
|
+
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
26
|
+
index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('index'), 'exclude': lambda f: f is None }})
|
|
27
|
+
loudness: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('loudness'), 'exclude': lambda f: f is None }})
|
|
28
|
+
lra: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('lra'), 'exclude': lambda f: f is None }})
|
|
29
|
+
peak: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('peak'), 'exclude': lambda f: f is None }})
|
|
30
|
+
sampling_rate: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('samplingRate'), 'exclude': lambda f: f is None }})
|
|
31
|
+
selected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selected'), 'exclude': lambda f: f is None }})
|
|
32
|
+
stream_type: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('streamType'), 'exclude': lambda f: f is None }})
|
|
33
|
+
location: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('location'), 'exclude': lambda f: f is None }})
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
39
|
+
@dataclasses.dataclass
|
|
40
|
+
class GetSessionsPart:
|
|
41
|
+
container: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('container'), 'exclude': lambda f: f is None }})
|
|
42
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
43
|
+
file: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('file'), 'exclude': lambda f: f is None }})
|
|
44
|
+
has_thumbnail: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('hasThumbnail'), 'exclude': lambda f: f is None }})
|
|
45
|
+
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
46
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
47
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
48
|
+
decision: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('decision'), 'exclude': lambda f: f is None }})
|
|
49
|
+
selected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selected'), 'exclude': lambda f: f is None }})
|
|
50
|
+
stream: Optional[List[GetSessionsStream]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Stream'), 'exclude': lambda f: f is None }})
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
56
|
+
@dataclasses.dataclass
|
|
57
|
+
class GetSessionsMedia:
|
|
58
|
+
audio_channels: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioChannels'), 'exclude': lambda f: f is None }})
|
|
59
|
+
audio_codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioCodec'), 'exclude': lambda f: f is None }})
|
|
60
|
+
bitrate: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bitrate'), 'exclude': lambda f: f is None }})
|
|
61
|
+
container: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('container'), 'exclude': lambda f: f is None }})
|
|
62
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
63
|
+
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
64
|
+
selected: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('selected'), 'exclude': lambda f: f is None }})
|
|
65
|
+
part: Optional[List[GetSessionsPart]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Part'), 'exclude': lambda f: f is None }})
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
71
|
+
@dataclasses.dataclass
|
|
72
|
+
class User:
|
|
73
|
+
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
74
|
+
thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
|
|
75
|
+
title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }})
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
81
|
+
@dataclasses.dataclass
|
|
82
|
+
class Player:
|
|
83
|
+
address: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('address'), 'exclude': lambda f: f is None }})
|
|
84
|
+
machine_identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('machineIdentifier'), 'exclude': lambda f: f is None }})
|
|
85
|
+
model: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('model'), 'exclude': lambda f: f is None }})
|
|
86
|
+
platform: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('platform'), 'exclude': lambda f: f is None }})
|
|
87
|
+
platform_version: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('platformVersion'), 'exclude': lambda f: f is None }})
|
|
88
|
+
product: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('product'), 'exclude': lambda f: f is None }})
|
|
89
|
+
profile: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('profile'), 'exclude': lambda f: f is None }})
|
|
90
|
+
remote_public_address: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('remotePublicAddress'), 'exclude': lambda f: f is None }})
|
|
91
|
+
state: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('state'), 'exclude': lambda f: f is None }})
|
|
92
|
+
title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }})
|
|
93
|
+
version: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('version'), 'exclude': lambda f: f is None }})
|
|
94
|
+
local: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('local'), 'exclude': lambda f: f is None }})
|
|
95
|
+
relayed: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('relayed'), 'exclude': lambda f: f is None }})
|
|
96
|
+
secure: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('secure'), 'exclude': lambda f: f is None }})
|
|
97
|
+
user_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('userID'), 'exclude': lambda f: f is None }})
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
103
|
+
@dataclasses.dataclass
|
|
104
|
+
class Session:
|
|
105
|
+
id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
106
|
+
bandwidth: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('bandwidth'), 'exclude': lambda f: f is None }})
|
|
107
|
+
location: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('location'), 'exclude': lambda f: f is None }})
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
113
|
+
@dataclasses.dataclass
|
|
114
|
+
class GetSessionsMetadata:
|
|
115
|
+
added_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('addedAt'), 'exclude': lambda f: f is None }})
|
|
116
|
+
art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('art'), 'exclude': lambda f: f is None }})
|
|
117
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
118
|
+
grandparent_art: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentArt'), 'exclude': lambda f: f is None }})
|
|
119
|
+
grandparent_guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentGuid'), 'exclude': lambda f: f is None }})
|
|
120
|
+
grandparent_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentKey'), 'exclude': lambda f: f is None }})
|
|
121
|
+
grandparent_rating_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentRatingKey'), 'exclude': lambda f: f is None }})
|
|
122
|
+
grandparent_thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentThumb'), 'exclude': lambda f: f is None }})
|
|
123
|
+
grandparent_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('grandparentTitle'), 'exclude': lambda f: f is None }})
|
|
124
|
+
guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('guid'), 'exclude': lambda f: f is None }})
|
|
125
|
+
index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('index'), 'exclude': lambda f: f is None }})
|
|
126
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
127
|
+
library_section_id: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionID'), 'exclude': lambda f: f is None }})
|
|
128
|
+
library_section_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionKey'), 'exclude': lambda f: f is None }})
|
|
129
|
+
library_section_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('librarySectionTitle'), 'exclude': lambda f: f is None }})
|
|
130
|
+
music_analysis_version: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('musicAnalysisVersion'), 'exclude': lambda f: f is None }})
|
|
131
|
+
parent_guid: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentGuid'), 'exclude': lambda f: f is None }})
|
|
132
|
+
parent_index: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentIndex'), 'exclude': lambda f: f is None }})
|
|
133
|
+
parent_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentKey'), 'exclude': lambda f: f is None }})
|
|
134
|
+
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 }})
|
|
135
|
+
parent_studio: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentStudio'), 'exclude': lambda f: f is None }})
|
|
136
|
+
parent_thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentThumb'), 'exclude': lambda f: f is None }})
|
|
137
|
+
parent_title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentTitle'), 'exclude': lambda f: f is None }})
|
|
138
|
+
parent_year: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('parentYear'), 'exclude': lambda f: f is None }})
|
|
139
|
+
rating_count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('ratingCount'), 'exclude': lambda f: f is None }})
|
|
140
|
+
rating_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('ratingKey'), 'exclude': lambda f: f is None }})
|
|
141
|
+
session_key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sessionKey'), 'exclude': lambda f: f is None }})
|
|
142
|
+
thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
|
|
143
|
+
title: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('title'), 'exclude': lambda f: f is None }})
|
|
144
|
+
title_sort: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('titleSort'), 'exclude': lambda f: f is None }})
|
|
145
|
+
type: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('type'), 'exclude': lambda f: f is None }})
|
|
146
|
+
updated_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('updatedAt'), 'exclude': lambda f: f is None }})
|
|
147
|
+
view_offset: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('viewOffset'), 'exclude': lambda f: f is None }})
|
|
148
|
+
media: Optional[List[GetSessionsMedia]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Media'), 'exclude': lambda f: f is None }})
|
|
149
|
+
user: Optional[User] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('User'), 'exclude': lambda f: f is None }})
|
|
150
|
+
player: Optional[Player] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Player'), 'exclude': lambda f: f is None }})
|
|
151
|
+
session: Optional[Session] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Session'), 'exclude': lambda f: f is None }})
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
157
|
+
@dataclasses.dataclass
|
|
158
|
+
class GetSessionsMediaContainer:
|
|
159
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
160
|
+
metadata: Optional[List[GetSessionsMetadata]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Metadata'), 'exclude': lambda f: f is None }})
|
|
161
|
+
|
|
162
|
+
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
166
|
+
@dataclasses.dataclass
|
|
167
|
+
class GetSessionsResponseBody:
|
|
168
|
+
r"""List of Active Plex Sessions"""
|
|
169
|
+
media_container: Optional[GetSessionsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
|
|
170
|
+
|
|
171
|
+
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
@dataclasses.dataclass
|
|
175
|
+
class GetSessionsResponse:
|
|
176
|
+
content_type: str = dataclasses.field()
|
|
177
|
+
r"""HTTP response content type for this operation"""
|
|
178
|
+
status_code: int = dataclasses.field()
|
|
179
|
+
r"""HTTP response status code for this operation"""
|
|
180
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
181
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
182
|
+
object: Optional[GetSessionsResponseBody] = dataclasses.field(default=None)
|
|
183
|
+
r"""List of Active Plex Sessions"""
|
|
184
|
+
|
|
185
|
+
|
|
@@ -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 GetSourceConnectionInformationRequest:
|
|
10
|
+
source: str = dataclasses.field(metadata={'query_param': { 'field_name': 'source', 'style': 'form', 'explode': True }})
|
|
11
|
+
r"""The source identifier with an included prefix."""
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
@dataclasses.dataclass
|
|
17
|
+
class GetSourceConnectionInformationResponse:
|
|
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,93 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclasses.dataclass
|
|
12
|
+
class GetStatisticsRequest:
|
|
13
|
+
timespan: Optional[int] = dataclasses.field(default=None, metadata={'query_param': { 'field_name': 'Timespan', 'style': 'form', 'explode': True }})
|
|
14
|
+
r"""The timespan to retrieve statistics for
|
|
15
|
+
the exact meaning of this parameter is not known
|
|
16
|
+
"""
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
22
|
+
@dataclasses.dataclass
|
|
23
|
+
class GetStatisticsDevice:
|
|
24
|
+
id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
25
|
+
name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }})
|
|
26
|
+
platform: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('platform'), 'exclude': lambda f: f is None }})
|
|
27
|
+
client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('clientIdentifier'), 'exclude': lambda f: f is None }})
|
|
28
|
+
created_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('createdAt'), 'exclude': lambda f: f is None }})
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
34
|
+
@dataclasses.dataclass
|
|
35
|
+
class Account:
|
|
36
|
+
id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('id'), 'exclude': lambda f: f is None }})
|
|
37
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
38
|
+
name: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('name'), 'exclude': lambda f: f is None }})
|
|
39
|
+
default_audio_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultAudioLanguage'), 'exclude': lambda f: f is None }})
|
|
40
|
+
auto_select_audio: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('autoSelectAudio'), 'exclude': lambda f: f is None }})
|
|
41
|
+
default_subtitle_language: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('defaultSubtitleLanguage'), 'exclude': lambda f: f is None }})
|
|
42
|
+
subtitle_mode: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('subtitleMode'), 'exclude': lambda f: f is None }})
|
|
43
|
+
thumb: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('thumb'), 'exclude': lambda f: f is None }})
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
49
|
+
@dataclasses.dataclass
|
|
50
|
+
class StatisticsMedia:
|
|
51
|
+
account_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('accountID'), 'exclude': lambda f: f is None }})
|
|
52
|
+
device_id: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('deviceID'), 'exclude': lambda f: f is None }})
|
|
53
|
+
timespan: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timespan'), 'exclude': lambda f: f is None }})
|
|
54
|
+
at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('at'), 'exclude': lambda f: f is None }})
|
|
55
|
+
metadata_type: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('metadataType'), 'exclude': lambda f: f is None }})
|
|
56
|
+
count: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('count'), 'exclude': lambda f: f is None }})
|
|
57
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
63
|
+
@dataclasses.dataclass
|
|
64
|
+
class GetStatisticsMediaContainer:
|
|
65
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
66
|
+
device: Optional[List[GetStatisticsDevice]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Device'), 'exclude': lambda f: f is None }})
|
|
67
|
+
account: Optional[List[Account]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Account'), 'exclude': lambda f: f is None }})
|
|
68
|
+
statistics_media: Optional[List[StatisticsMedia]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('StatisticsMedia'), 'exclude': lambda f: f is None }})
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
74
|
+
@dataclasses.dataclass
|
|
75
|
+
class GetStatisticsResponseBody:
|
|
76
|
+
r"""Media Statistics"""
|
|
77
|
+
media_container: Optional[GetStatisticsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
@dataclasses.dataclass
|
|
83
|
+
class GetStatisticsResponse:
|
|
84
|
+
content_type: str = dataclasses.field()
|
|
85
|
+
r"""HTTP response content type for this operation"""
|
|
86
|
+
status_code: int = dataclasses.field()
|
|
87
|
+
r"""HTTP response status code for this operation"""
|
|
88
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
89
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
90
|
+
object: Optional[GetStatisticsResponseBody] = dataclasses.field(default=None)
|
|
91
|
+
r"""Media Statistics"""
|
|
92
|
+
|
|
93
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
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 State(str, Enum):
|
|
9
|
+
r"""The state of the media item"""
|
|
10
|
+
PLAYING = 'playing'
|
|
11
|
+
PAUSED = 'paused'
|
|
12
|
+
STOPPED = 'stopped'
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
@dataclasses.dataclass
|
|
16
|
+
class GetTimelineRequest:
|
|
17
|
+
rating_key: float = dataclasses.field(metadata={'query_param': { 'field_name': 'ratingKey', 'style': 'form', 'explode': True }})
|
|
18
|
+
r"""The rating key of the media item"""
|
|
19
|
+
key: str = dataclasses.field(metadata={'query_param': { 'field_name': 'key', 'style': 'form', 'explode': True }})
|
|
20
|
+
r"""The key of the media item to get the timeline for"""
|
|
21
|
+
state: State = dataclasses.field(metadata={'query_param': { 'field_name': 'state', 'style': 'form', 'explode': True }})
|
|
22
|
+
r"""The state of the media item"""
|
|
23
|
+
has_mde: float = dataclasses.field(metadata={'query_param': { 'field_name': 'hasMDE', 'style': 'form', 'explode': True }})
|
|
24
|
+
r"""Whether the media item has MDE"""
|
|
25
|
+
time: float = dataclasses.field(metadata={'query_param': { 'field_name': 'time', 'style': 'form', 'explode': True }})
|
|
26
|
+
r"""The time of the media item"""
|
|
27
|
+
duration: float = dataclasses.field(metadata={'query_param': { 'field_name': 'duration', 'style': 'form', 'explode': True }})
|
|
28
|
+
r"""The duration of the media item"""
|
|
29
|
+
context: str = dataclasses.field(metadata={'query_param': { 'field_name': 'context', 'style': 'form', 'explode': True }})
|
|
30
|
+
r"""The context of the media item"""
|
|
31
|
+
play_queue_item_id: float = dataclasses.field(metadata={'query_param': { 'field_name': 'playQueueItemID', 'style': 'form', 'explode': True }})
|
|
32
|
+
r"""The play queue item ID of the media item"""
|
|
33
|
+
play_back_time: float = dataclasses.field(metadata={'query_param': { 'field_name': 'playBackTime', 'style': 'form', 'explode': True }})
|
|
34
|
+
r"""The playback time of the media item"""
|
|
35
|
+
row: float = dataclasses.field(metadata={'query_param': { 'field_name': 'row', 'style': 'form', 'explode': True }})
|
|
36
|
+
r"""The row of the media item"""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclasses.dataclass
|
|
42
|
+
class GetTimelineResponse:
|
|
43
|
+
content_type: str = dataclasses.field()
|
|
44
|
+
r"""HTTP response content type for this operation"""
|
|
45
|
+
status_code: int = dataclasses.field()
|
|
46
|
+
r"""HTTP response status code for this operation"""
|
|
47
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
48
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
49
|
+
|
|
50
|
+
|
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
GET_TOKEN_SERVERS = [
|
|
9
|
+
"https://plex.tv/api/v2",
|
|
10
|
+
]
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
@dataclasses.dataclass
|
|
14
|
+
class GetTokenRequest:
|
|
15
|
+
pin_id: str = dataclasses.field(metadata={'path_param': { 'field_name': 'pinID', 'style': 'simple', 'explode': False }})
|
|
16
|
+
r"""The PinID to retrieve an access token for"""
|
|
17
|
+
x_plex_client_identifier: Optional[str] = dataclasses.field(default=None, metadata={'header': { 'field_name': 'X-Plex-Client-Identifier', 'style': 'simple', 'explode': False }})
|
|
18
|
+
r"""The unique identifier for the client application
|
|
19
|
+
This is used to track the client application and its usage
|
|
20
|
+
(UUID, serial number, or other number unique per device)
|
|
21
|
+
"""
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
@dataclasses.dataclass
|
|
27
|
+
class GetTokenResponse:
|
|
28
|
+
content_type: str = dataclasses.field()
|
|
29
|
+
r"""HTTP response content type for this operation"""
|
|
30
|
+
status_code: int = dataclasses.field()
|
|
31
|
+
r"""HTTP response status code for this operation"""
|
|
32
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
33
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
34
|
+
|
|
35
|
+
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
12
|
+
@dataclasses.dataclass
|
|
13
|
+
class TranscodeSession:
|
|
14
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
15
|
+
throttled: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('throttled'), 'exclude': lambda f: f is None }})
|
|
16
|
+
complete: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('complete'), 'exclude': lambda f: f is None }})
|
|
17
|
+
progress: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('progress'), 'exclude': lambda f: f is None }})
|
|
18
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
19
|
+
speed: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('speed'), 'exclude': lambda f: f is None }})
|
|
20
|
+
error: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('error'), 'exclude': lambda f: f is None }})
|
|
21
|
+
duration: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('duration'), 'exclude': lambda f: f is None }})
|
|
22
|
+
remaining: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('remaining'), 'exclude': lambda f: f is None }})
|
|
23
|
+
context: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('context'), 'exclude': lambda f: f is None }})
|
|
24
|
+
source_video_codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sourceVideoCodec'), 'exclude': lambda f: f is None }})
|
|
25
|
+
source_audio_codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('sourceAudioCodec'), 'exclude': lambda f: f is None }})
|
|
26
|
+
video_decision: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('videoDecision'), 'exclude': lambda f: f is None }})
|
|
27
|
+
audio_decision: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioDecision'), 'exclude': lambda f: f is None }})
|
|
28
|
+
subtitle_decision: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('subtitleDecision'), 'exclude': lambda f: f is None }})
|
|
29
|
+
protocol: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('protocol'), 'exclude': lambda f: f is None }})
|
|
30
|
+
container: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('container'), 'exclude': lambda f: f is None }})
|
|
31
|
+
video_codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('videoCodec'), 'exclude': lambda f: f is None }})
|
|
32
|
+
audio_codec: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioCodec'), 'exclude': lambda f: f is None }})
|
|
33
|
+
audio_channels: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('audioChannels'), 'exclude': lambda f: f is None }})
|
|
34
|
+
transcode_hw_requested: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('transcodeHwRequested'), 'exclude': lambda f: f is None }})
|
|
35
|
+
time_stamp: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('timeStamp'), 'exclude': lambda f: f is None }})
|
|
36
|
+
max_offset_available: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('maxOffsetAvailable'), 'exclude': lambda f: f is None }})
|
|
37
|
+
min_offset_available: Optional[float] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('minOffsetAvailable'), 'exclude': lambda f: f is None }})
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
43
|
+
@dataclasses.dataclass
|
|
44
|
+
class GetTranscodeSessionsMediaContainer:
|
|
45
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
46
|
+
transcode_session: Optional[List[TranscodeSession]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('TranscodeSession'), 'exclude': lambda f: f is None }})
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
52
|
+
@dataclasses.dataclass
|
|
53
|
+
class GetTranscodeSessionsResponseBody:
|
|
54
|
+
r"""The Transcode Sessions"""
|
|
55
|
+
media_container: Optional[GetTranscodeSessionsMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@dataclasses.dataclass
|
|
61
|
+
class GetTranscodeSessionsResponse:
|
|
62
|
+
content_type: str = dataclasses.field()
|
|
63
|
+
r"""HTTP response content type for this operation"""
|
|
64
|
+
status_code: int = dataclasses.field()
|
|
65
|
+
r"""HTTP response status code for this operation"""
|
|
66
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
67
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
68
|
+
object: Optional[GetTranscodeSessionsResponseBody] = dataclasses.field(default=None)
|
|
69
|
+
r"""The Transcode Sessions"""
|
|
70
|
+
|
|
71
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
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 GetTransientTokenQueryParamType(str, Enum):
|
|
9
|
+
r"""`delegation` - This is the only supported `type` parameter."""
|
|
10
|
+
DELEGATION = 'delegation'
|
|
11
|
+
|
|
12
|
+
class Scope(str, Enum):
|
|
13
|
+
r"""`all` - This is the only supported `scope` parameter."""
|
|
14
|
+
ALL = 'all'
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclasses.dataclass
|
|
18
|
+
class GetTransientTokenRequest:
|
|
19
|
+
type: GetTransientTokenQueryParamType = dataclasses.field(metadata={'query_param': { 'field_name': 'type', 'style': 'form', 'explode': True }})
|
|
20
|
+
r"""`delegation` - This is the only supported `type` parameter."""
|
|
21
|
+
scope: Scope = dataclasses.field(metadata={'query_param': { 'field_name': 'scope', 'style': 'form', 'explode': True }})
|
|
22
|
+
r"""`all` - This is the only supported `scope` parameter."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
@dataclasses.dataclass
|
|
28
|
+
class GetTransientTokenResponse:
|
|
29
|
+
content_type: str = dataclasses.field()
|
|
30
|
+
r"""HTTP response content type for this operation"""
|
|
31
|
+
status_code: int = dataclasses.field()
|
|
32
|
+
r"""HTTP response status code for this operation"""
|
|
33
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
34
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
35
|
+
|
|
36
|
+
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"""Code generated by Speakeasy (https://speakeasyapi.dev). DO NOT EDIT."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
import dataclasses
|
|
5
|
+
import requests as requests_http
|
|
6
|
+
from dataclasses_json import Undefined, dataclass_json
|
|
7
|
+
from plex_api import utils
|
|
8
|
+
from typing import List, Optional
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
12
|
+
@dataclasses.dataclass
|
|
13
|
+
class Release:
|
|
14
|
+
key: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('key'), 'exclude': lambda f: f is None }})
|
|
15
|
+
version: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('version'), 'exclude': lambda f: f is None }})
|
|
16
|
+
added: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('added'), 'exclude': lambda f: f is None }})
|
|
17
|
+
fixed: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('fixed'), 'exclude': lambda f: f is None }})
|
|
18
|
+
download_url: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('downloadURL'), 'exclude': lambda f: f is None }})
|
|
19
|
+
state: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('state'), 'exclude': lambda f: f is None }})
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
25
|
+
@dataclasses.dataclass
|
|
26
|
+
class GetUpdateStatusMediaContainer:
|
|
27
|
+
size: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('size'), 'exclude': lambda f: f is None }})
|
|
28
|
+
can_install: Optional[bool] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('canInstall'), 'exclude': lambda f: f is None }})
|
|
29
|
+
checked_at: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('checkedAt'), 'exclude': lambda f: f is None }})
|
|
30
|
+
download_url: Optional[str] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('downloadURL'), 'exclude': lambda f: f is None }})
|
|
31
|
+
status: Optional[int] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('status'), 'exclude': lambda f: f is None }})
|
|
32
|
+
release: Optional[List[Release]] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('Release'), 'exclude': lambda f: f is None }})
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
@dataclass_json(undefined=Undefined.EXCLUDE)
|
|
38
|
+
@dataclasses.dataclass
|
|
39
|
+
class GetUpdateStatusResponseBody:
|
|
40
|
+
r"""The Server Updates"""
|
|
41
|
+
media_container: Optional[GetUpdateStatusMediaContainer] = dataclasses.field(default=None, metadata={'dataclasses_json': { 'letter_case': utils.get_field_name('MediaContainer'), 'exclude': lambda f: f is None }})
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
@dataclasses.dataclass
|
|
47
|
+
class GetUpdateStatusResponse:
|
|
48
|
+
content_type: str = dataclasses.field()
|
|
49
|
+
r"""HTTP response content type for this operation"""
|
|
50
|
+
status_code: int = dataclasses.field()
|
|
51
|
+
r"""HTTP response status code for this operation"""
|
|
52
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
53
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
54
|
+
object: Optional[GetUpdateStatusResponseBody] = dataclasses.field(default=None)
|
|
55
|
+
r"""The Server Updates"""
|
|
56
|
+
|
|
57
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
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 Level(int, Enum):
|
|
9
|
+
r"""An integer log level to write to the PMS log with.
|
|
10
|
+
0: Error
|
|
11
|
+
1: Warning
|
|
12
|
+
2: Info
|
|
13
|
+
3: Debug
|
|
14
|
+
4: Verbose
|
|
15
|
+
"""
|
|
16
|
+
ZERO = 0
|
|
17
|
+
ONE = 1
|
|
18
|
+
TWO = 2
|
|
19
|
+
THREE = 3
|
|
20
|
+
FOUR = 4
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
@dataclasses.dataclass
|
|
24
|
+
class LogLineRequest:
|
|
25
|
+
level: Level = dataclasses.field(metadata={'query_param': { 'field_name': 'level', 'style': 'form', 'explode': True }})
|
|
26
|
+
r"""An integer log level to write to the PMS log with.
|
|
27
|
+
0: Error
|
|
28
|
+
1: Warning
|
|
29
|
+
2: Info
|
|
30
|
+
3: Debug
|
|
31
|
+
4: Verbose
|
|
32
|
+
"""
|
|
33
|
+
message: str = dataclasses.field(metadata={'query_param': { 'field_name': 'message', 'style': 'form', 'explode': True }})
|
|
34
|
+
r"""The text of the message to write to the log."""
|
|
35
|
+
source: str = dataclasses.field(metadata={'query_param': { 'field_name': 'source', 'style': 'form', 'explode': True }})
|
|
36
|
+
r"""a string indicating the source of the message."""
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
@dataclasses.dataclass
|
|
42
|
+
class LogLineResponse:
|
|
43
|
+
content_type: str = dataclasses.field()
|
|
44
|
+
r"""HTTP response content type for this operation"""
|
|
45
|
+
status_code: int = dataclasses.field()
|
|
46
|
+
r"""HTTP response status code for this operation"""
|
|
47
|
+
raw_response: requests_http.Response = dataclasses.field()
|
|
48
|
+
r"""Raw HTTP response; suitable for custom response parsing"""
|
|
49
|
+
|
|
50
|
+
|