aboutsummaryrefslogtreecommitdiff
path: root/tools/remove-watched.py
diff options
context:
space:
mode:
authordec05eba <dec05eba@protonmail.com>2024-04-22 15:24:47 +0200
committerdec05eba <dec05eba@protonmail.com>2024-04-22 15:24:47 +0200
commitdf659a0deae1e4a674ea7d17e3c874d4de60f5f9 (patch)
treecc5ac29c6ebff12d24f1fa771f055e61a256fcb4 /tools/remove-watched.py
parentaaf36275048b201e876841dfc456b3f2f341c8a9 (diff)
Add script to remove episodes finished watching with quickmedia
Diffstat (limited to 'tools/remove-watched.py')
-rwxr-xr-xtools/remove-watched.py63
1 files changed, 63 insertions, 0 deletions
diff --git a/tools/remove-watched.py b/tools/remove-watched.py
new file mode 100755
index 0000000..a2a5b00
--- /dev/null
+++ b/tools/remove-watched.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+
+import json
+import os
+import sys
+
+def file_get_content_json(filepath):
+ with open(filepath) as f:
+ return json.load(f)
+
+def get_watch_progress(time, duration):
+ if duration == 0:
+ return 0
+ return time / duration
+
+def get_quickmedia_watched_episodes(downloads_dir):
+ watched_episodes = []
+ local_anime_watch_progress_json = file_get_content_json(os.path.expanduser("~/.config/quickmedia/watch-progress/local-anime"))
+ for filename, anime_item in local_anime_watch_progress_json.items():
+ episode_filepath = os.path.join(downloads_dir, filename)
+ time = int(anime_item["time"])
+ duration = int(anime_item["duration"])
+ watch_progress = get_watch_progress(time, duration)
+ if watch_progress >= 0.9:
+ watched_episodes.append(episode_filepath)
+ return watched_episodes
+
+def main(args):
+ if len(args) != 2:
+ print("usage: remove-watched.py <downloads-dir>")
+ print("")
+ print("This script removes anime episodes that you have finished watching with QuickMedia")
+ exit(1)
+
+ downloads_dir = args[1]
+ watched_episodes = get_quickmedia_watched_episodes(downloads_dir)
+
+ print("Files to remove:")
+ removable_files = []
+ for watched_episode in watched_episodes:
+ if os.path.exists(watched_episode):
+ print(" %s" % watched_episode)
+ removable_files.append(watched_episode)
+
+ while True:
+ response = input("Are you sure you want to remove the above %d episode(s)? (y/n): " % len(removable_files))
+ if len(response) < 1:
+ continue
+
+ if response[0] == 'Y' or response[0] == 'y':
+ for filepath in removable_files:
+ try:
+ os.remove(filepath)
+ print("Removed %s" % filepath)
+ except OSError:
+ pass
+ return
+
+ if response[0] == 'N' or response[0] == 'n':
+ print("Cancelled deletion of episodes")
+ return
+
+main(sys.argv) \ No newline at end of file