From df659a0deae1e4a674ea7d17e3c874d4de60f5f9 Mon Sep 17 00:00:00 2001 From: dec05eba Date: Mon, 22 Apr 2024 15:24:47 +0200 Subject: Add script to remove episodes finished watching with quickmedia --- tools/remove-watched.py | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100755 tools/remove-watched.py (limited to 'tools/remove-watched.py') 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 ") + 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 -- cgit v1.2.3