Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 17 additions & 4 deletions dizqueTV/dizquetv.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,8 @@ def convert_custom_show_to_programs(


def convert_plex_item_to_program(
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
seek_position: int = None, end_position: int = None
) -> Program:
"""
Convert a PlexAPI Video, Movie, Episode or Track object into a Program
Expand All @@ -123,12 +124,18 @@ def convert_plex_item_to_program(
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
:param plex_server: plexapi.server.PlexServer object
:type plex_server: plexapi.server.PlexServer
:param seek_position: Position in milliseconds to start playback from (optional)
:type seek_position: int, optional
:param end_position: Position in milliseconds to end playback at (optional)
:type end_position: int, optional
:return: Program object
:rtype: Program
"""
data = helpers._make_program_dict_from_plex_item(
plex_item=plex_item, plex_server=plex_server
plex_item=plex_item, plex_server=plex_server,
seek_position=seek_position, end_position=end_position
)

return Program(data=data, dizque_instance=None, channel_instance=None)


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

# Other Functions
def convert_plex_item_to_program(
self, plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
self, plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
seek_position: int = None, end_position: int = None
) -> Program:
"""
Convert a PlexAPI Video, Movie, Episode or Track object into a Program.
Expand All @@ -1593,11 +1601,16 @@ def convert_plex_item_to_program(
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
:param plex_server: plexapi.server.PlexServer object
:type plex_server: plexapi.server.PlexServer
:param seek_position: Position in milliseconds to start playback from (optional)
:type seek_position: int, optional
:param end_position: Position in milliseconds to end playback at (optional)
:type end_position: int, optional
:return: Program object
:rtype: Program
"""
return convert_plex_item_to_program(
plex_item=plex_item, plex_server=plex_server
plex_item=plex_item, plex_server=plex_server,
seek_position=seek_position, end_position=end_position
)

def extract_episodes(self, plex_item: Union[Show, Season]) -> List[Episode]:
Expand Down
13 changes: 12 additions & 1 deletion dizqueTV/helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,8 @@ def _object_has_attribute(obj: object, attribute_name: str) -> bool:


def _make_program_dict_from_plex_item(
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer
plex_item: Union[Video, Movie, Episode, Track], plex_server: PServer,
seek_position: int = None, end_position: int = None
) -> dict:
"""
Build a dictionary for a Program using a PlexAPI Video, Movie, Episode or Track object.
Expand All @@ -283,6 +284,10 @@ def _make_program_dict_from_plex_item(
:type plex_item: Union[plexapi.video.Video, plexapi.video.Movie, plexapi.video.Episode, plexapi.audio.Track]
:param plex_server: plexapi.server.PlexServer object
:type plex_server: plexapi.server.PlexServer
:param seek_position: Position in milliseconds to start playback from (optional)
:type seek_position: int, optional
:param end_position: Position in milliseconds to end playback at (optional)
:type end_position: int, optional
:return: dict of Plex item information
:rtype: dict
"""
Expand Down Expand Up @@ -337,6 +342,12 @@ def _make_program_dict_from_plex_item(
"showIcon"
] = f"{plex_uri}{plex_item.grandparentThumb}?X-Plex-Token={plex_token}"
data["icon"] = data["showIcon"]

if seek_position is not None:
data["seekPosition"] = seek_position
if end_position is not None:
data["endPosition"] = end_position

return data


Expand Down
2 changes: 2 additions & 0 deletions dizqueTV/models/media.py
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,8 @@ def __init__(self, data: dict, dizque_instance, channel_instance):
channel_instance=channel_instance,
)
self.rating = data.get("rating")
self.seekPosition = data.get("seekPosition")
self.endPosition = data.get("endPosition")

def __repr__(self):
return f"{self.__class__.__name__}({self.title})"
Expand Down
4 changes: 4 additions & 0 deletions dizqueTV/models/templates.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,8 @@
"episode": int,
"season": int,
"serverKey": str,
"seekPosition": int,
"endPosition": int,
}

EPISODE_PROGRAM_TEMPLATE = {
Expand All @@ -223,6 +225,8 @@
"showIcon": str,
"episodeIcon": str,
"seasonIcon": str,
"seekPosition": int,
"endPosition": int,
}

TRACK_PROGRAM_TEMPLATE = {
Expand Down
Loading