From 8ace61509a453bb329bcd410c15a4c3e1548a28c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Elan=20Ruusam=C3=A4e?= Date: Sat, 31 Aug 2024 20:14:05 +0300 Subject: [PATCH] Implement cleaning up playlist of watched items --- plextraktsync/commands/update_playlist.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/plextraktsync/commands/update_playlist.py b/plextraktsync/commands/update_playlist.py index dd9d47ef369..14ce208557a 100644 --- a/plextraktsync/commands/update_playlist.py +++ b/plextraktsync/commands/update_playlist.py @@ -4,6 +4,7 @@ from plextraktsync.decorators.coro import coro from plextraktsync.factory import factory +from plextraktsync.plex.PlexPlaylist import PlexPlaylist if TYPE_CHECKING: from plextraktsync.plex.types import PlexPlayable @@ -26,7 +27,18 @@ def format_title(p: PlexPlayable): @coro async def update_playlist(playlist: str, remove_watched: bool, dry_run: bool): print = factory.print - pl = playlist - print(f"Update playlist: '{pl}'") + print(f"Update playlist: '{playlist}'") print(f"Remove watched from playlist: {remove_watched}") print(f"Dry run: {dry_run}") + + pl = PlexPlaylist(factory.plex_server, playlist) + print(f"Playlist: {pl}") + items = pl.playlist.items().copy() + p: PlexPlayable + for p in items: + if remove_watched and p.isPlayed: + print(f"{'Remove' if not dry_run else 'Would remove'} from playlist: {format_title(p)}") + items.remove(p) + print(f"Update playlist: {len(pl)} -> {len(items)} items") + if not dry_run: + pl.update(items)