Skip to content

Commit 0cd4360

Browse files
authored
Add seekPosition and endPosition parameters to program conversion functions and templates (#112)
1 parent b94b84b commit 0cd4360

File tree

4 files changed

+35
-5
lines changed

4 files changed

+35
-5
lines changed

dizqueTV/dizquetv.py

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,8 @@ def convert_custom_show_to_programs(
114114

115115

116116
def convert_plex_item_to_program(
117-
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
117+
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
118+
seek_position: int = None, end_position: int = None
118119
) -> Program:
119120
"""
120121
Convert a PlexAPI Video, Movie, Episode or Track object into a Program
@@ -123,12 +124,18 @@ def convert_plex_item_to_program(
123124
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
124125
:param plex_server: plexapi.server.PlexServer object
125126
:type plex_server: plexapi.server.PlexServer
127+
:param seek_position: Position in milliseconds to start playback from (optional)
128+
:type seek_position: int, optional
129+
:param end_position: Position in milliseconds to end playback at (optional)
130+
:type end_position: int, optional
126131
:return: Program object
127132
:rtype: Program
128133
"""
129134
data = helpers._make_program_dict_from_plex_item(
130-
plex_item=plex_item, plex_server=plex_server
135+
plex_item=plex_item, plex_server=plex_server,
136+
seek_position=seek_position, end_position=end_position
131137
)
138+
132139
return Program(data=data, dizque_instance=None, channel_instance=None)
133140

134141

@@ -1584,7 +1591,8 @@ def guide_lineup_json(self) -> dict:
15841591

15851592
# Other Functions
15861593
def convert_plex_item_to_program(
1587-
self, plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
1594+
self, plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
1595+
seek_position: int = None, end_position: int = None
15881596
) -> Program:
15891597
"""
15901598
Convert a PlexAPI Video, Movie, Episode or Track object into a Program.
@@ -1593,11 +1601,16 @@ def convert_plex_item_to_program(
15931601
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
15941602
:param plex_server: plexapi.server.PlexServer object
15951603
:type plex_server: plexapi.server.PlexServer
1604+
:param seek_position: Position in milliseconds to start playback from (optional)
1605+
:type seek_position: int, optional
1606+
:param end_position: Position in milliseconds to end playback at (optional)
1607+
:type end_position: int, optional
15961608
:return: Program object
15971609
:rtype: Program
15981610
"""
15991611
return convert_plex_item_to_program(
1600-
plex_item=plex_item, plex_server=plex_server
1612+
plex_item=plex_item, plex_server=plex_server,
1613+
seek_position=seek_position, end_position=end_position
16011614
)
16021615

16031616
def extract_episodes(self, plex_item: Union[Show, Season]) -> List[Episode]:

dizqueTV/helpers.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -274,7 +274,8 @@ def _object_has_attribute(obj: object, attribute_name: str) -> bool:
274274

275275

276276
def _make_program_dict_from_plex_item(
277-
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
277+
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
278+
seek_position: int = None, end_position: int = None
278279
) -> dict:
279280
"""
280281
Build a dictionary for a Program using a PlexAPI Video, Movie, Episode or Track object.
@@ -283,6 +284,10 @@ def _make_program_dict_from_plex_item(
283284
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
284285
:param plex_server: plexapi.server.PlexServer object
285286
:type plex_server: plexapi.server.PlexServer
287+
:param seek_position: Position in milliseconds to start playback from (optional)
288+
:type seek_position: int, optional
289+
:param end_position: Position in milliseconds to end playback at (optional)
290+
:type end_position: int, optional
286291
:return: dict of Plex item information
287292
:rtype: dict
288293
"""
@@ -337,6 +342,12 @@ def _make_program_dict_from_plex_item(
337342
"showIcon"
338343
] = f"{plex_uri}{plex_item.grandparentThumb}?X-Plex-Token={plex_token}"
339344
data["icon"] = data["showIcon"]
345+
346+
if seek_position is not None:
347+
data["seekPosition"] = seek_position
348+
if end_position is not None:
349+
data["endPosition"] = end_position
350+
340351
return data
341352

342353

dizqueTV/models/media.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ def __init__(self, data: dict, dizque_instance, channel_instance):
6868
channel_instance=channel_instance,
6969
)
7070
self.rating = data.get("rating")
71+
self.seekPosition = data.get("seekPosition")
72+
self.endPosition = data.get("endPosition")
7173

7274
def __repr__(self):
7375
return f"{self.__class__.__name__}({self.title})"

dizqueTV/models/templates.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@
201201
"episode": int,
202202
"season": int,
203203
"serverKey": str,
204+
"seekPosition": int,
205+
"endPosition": int,
204206
}
205207

206208
EPISODE_PROGRAM_TEMPLATE = {
@@ -223,6 +225,8 @@
223225
"showIcon": str,
224226
"episodeIcon": str,
225227
"seasonIcon": str,
228+
"seekPosition": int,
229+
"endPosition": int,
226230
}
227231

228232
TRACK_PROGRAM_TEMPLATE = {

0 commit comments

Comments
 (0)