123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- 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()
|