diff options
author | dec05eba <dec05eba@protonmail.com> | 2024-04-22 15:24:47 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2024-04-22 15:24:47 +0200 |
commit | df659a0deae1e4a674ea7d17e3c874d4de60f5f9 (patch) | |
tree | cc5ac29c6ebff12d24f1fa771f055e61a256fcb4 /tools | |
parent | aaf36275048b201e876841dfc456b3f2f341c8a9 (diff) |
Add script to remove episodes finished watching with quickmedia
Diffstat (limited to 'tools')
-rwxr-xr-x | tools/remove-watched.py | 63 |
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 |