import logging import threading import time from pyarr import RadarrAPI from aria2p import API, Client class Aria2API: def __init__(self, url, secret): self.aria2_client = Client(url, secret=secret) self.aria2_api = API(self.aria2_client) self.is_running = True self.check_interval = 10 self.monitor_thread = None def remove(self, download): return self.aria2_api.remove(download) def get_downloads(self): # 返回所有下载信息的列表 return self.aria2_api.get_downloads() def add_url(self, url, options=None): """ 将下载链接添加到 Aria2。 :param url: 下载链接 :param options: Aria2下载选项,例如下载目录 """ try: # 添加下载链接到 Aria2 download = self.aria2_api.add_uris([url], options=options if options else {}) return download except Exception as e: print(f"Error adding URL to Aria2: {e}") return None def monitor_aria2_and_delete(self): logging.info('Start remote Aria2 download is_complete monitoring') while self.is_running: # 获取 Aria2 当前的下载列表 downloads = self.aria2_api.get_downloads() for download in downloads: if download.is_complete: pass # movie_name = self.radar_client.get_all_movie_names() # for file_name in movie_name: # # logging.info(f"Download completed: {file_name}") # # 处理每个下载完成的文件 # # 调用方法并获取返回的电影 ID # movie_id = self.radar_client.find_movie_id_by_filename(file_name) # # # 打印结果 # if movie_id is not None: # print(f"Found movie ID for '{file_name}': {movie_id}") # else: # print(f"No movie found for '{file_name}'") time.sleep(self.check_interval) def start_monitoring(self): if not self.is_running: self.is_running = True self.monitor_thread = threading.Thread(target=self.monitor_aria2_and_delete) self.monitor_thread.start() def stop_monitoring(self): self.is_running = False if self.monitor_thread: self.monitor_thread.join()