Skip to content

Commit ac471ec

Browse files
committed
Checking OnDeck items as well
Helps cover items that have previously been watched.
1 parent a13d17c commit ac471ec

File tree

1 file changed

+33
-7
lines changed

1 file changed

+33
-7
lines changed

tools/plex-markwatched.py

Lines changed: 33 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,14 +18,40 @@
1818
from plexapi.server import PlexServer
1919

2020

21+
def _has_markwatched_tag(item):
22+
collections = item.show().collections if item.type == 'episode' else item.collections
23+
tags = [c.tag.lower() for c in collections]
24+
return 'markwatched' in tags
25+
26+
27+
def _get_title(item):
28+
if item.type == 'episode':
29+
return f'{item.grandparentTitle} {item.seasonEpisode}'
30+
return item.title
31+
32+
33+
def _iter_items(search):
34+
for item in search:
35+
if item.type in ['show']:
36+
for episode in item.episodes():
37+
yield episode
38+
break
39+
yield item
40+
41+
2142
if __name__ == '__main__':
2243
datestr = lambda: datetime.now().strftime('%Y-%m-%d %H:%M:%S')
23-
print('%s Starting plex-markwatched script..' % datestr())
44+
print(f'{datestr()} Starting plex-markwatched script..')
2445
plex = PlexServer()
2546
for section in plex.library.sections():
26-
if section.type in ('show',): # ('movie', 'artist', 'show'):
27-
for item in section.search(collection='markwatched'):
28-
for episode in item.episodes():
29-
if not episode.isWatched:
30-
print('%s Marking %s watched.' % (datestr(), episode.title))
31-
item.markWatched()
47+
print(f'{datestr()} Checking {section.title} for unwatched items..')
48+
for item in _iter_items(section.search(collection='markwatched')):
49+
if not item.isWatched:
50+
print(f'{datestr()} Marking {_get_title(item)} watched.')
51+
item.markWatched()
52+
# Check all OnDeck items
53+
print(f'{datestr()} Checking OnDeck for unwatched items..')
54+
for item in plex.library.onDeck():
55+
if not item.isWatched and _has_markwatched_tag(item):
56+
print(f'{datestr()} Marking {_get_title(item)} watched.')
57+
item.markWatched()

0 commit comments

Comments
 (0)