from datetime import datetime import qbittorrentapi ''' 官方文档:https://qbittorrent-api.readthedocs.io/en/latest/introduction.html ''' # instantiate a Client using the appropriate WebUI configuration conn_info = dict( host="192.168.3.172", port=7021, username="qnloft", password="EtDgCb@123", ) qbt_client = qbittorrentapi.Client(**conn_info) try: qbt_client.auth_log_in() except qbittorrentapi.LoginFailed as e: print(e) # 显示qBittorrent信息 print(f"qBittorrent: {qbt_client.app_version()}") print(f"qBittorrent Web API: {qbt_client.app_web_api_version()}") # qbt_client.app_preferences() # 偏好配置 for k, v in qbt_client.app.build_info.items(): print(f"{k}: {v}") # 从url下载种子 返回 "Ok." 成功 或者 "Fails."失败 # add_res = qbt_client.torrents_add(urls="https://www.pttime.org/download.php?id=63655&passkey=b282678479d8f2cb8de1a811a707483d&uid=91145") # print(add_res) # qbt_client.torrents_reannounce() def format_stamp(timestamp): return datetime.utcfromtimestamp(timestamp).strftime("%Y-%m-%d %H:%M:%S") def format_day(timestamp): days = timestamp // (24 * 3600) hours = (timestamp % (24 * 3600)) // 3600 return f"{days}天零{hours}小时" # 检索并显示所有种子 for torrent in qbt_client.torrents_info(): # 完成任务的时间 seen_complete = format_stamp(torrent.seen_complete) # 任务添加时间 added_on = format_stamp(torrent.added_on) # 任务完成时间 completion_on = format_stamp(torrent.completion_on) # 最后活动时间 last_activity = format_stamp(torrent.last_activity) # 做种时间 seeding_time = format_day(torrent.seeding_time) # print(f"{torrent.hash[-6:]}: {torrent.name} ({torrent.state})") # print(f"任务添加时间:{added_on}, 成任务的时间:{seen_complete} - {completion_on}, 最后活动时间:{last_activity}, 做种时间:{seeding_time}") print(f"{torrent.progress}") if torrent.progress == 0: # 删除文件 qbt_client.torrents_delete(delete_files=True, torrent_hashes=torrent.hash) # qbt_client.torrents_remove_categories() # 结束与 qBittorrent 的会话 qbt_client.auth_log_out() # 暂停所有种子 # qbt_client.torrents.pause.all() # added_on:任务添加时间(时间戳)。 # completion_on:任务完成时间(时间戳) # eta:预计剩余时间(以秒为单位)。 # last_activity:最后活动时间(时间戳)。 # seeding_time:做种时间。 # seen_complete:完成任务的时间(时间戳)。 # max_seeding_time:最大种子时间。 # time_active:任务活跃时间。 # amount_left:剩余未下载的文件大小。 # auto_tmm:是否启用自动移动下载完成的种子。 # availability:文件可用性。 # category:下载任务的类别。 # completed:任务完成状态,1 表示已完成。 # content_path:下载文件的路径。 # dl_limit:下载速度限制。 # dlspeed:当前下载速度。 # download_path:下载文件保存路径。 # downloaded:已下载文件大小。 # downloaded_session:当前会话中已下载的文件大小。 # f_l_piece_prio:是否启用首尾片段优先下载。 # force_start:是否强制开始下载。 # inactive_seeding_time_limit:不活动种子的时间限制。 # magnet_uri:磁力链接。 # max_inactive_seeding_time:最大不活动种子时间。 # max_ratio:最大分享率。 # name:文件名称。 # num_complete:完成下载的数量。 # num_incomplete:未完成下载的数量。 # num_leechs:下载中的数量。 # num_seeds:做种中的数量。 # priority:下载任务的优先级。 # progress:下载进度(百分比)。 # ratio:分享率。 # ratio_limit:分享率限制。 # save_path:保存路径。 # seeding_time_limit:做种时间限制。 # seq_dl:是否启用顺序下载。 # size:文件总大小。 # state:下载任务的状态。 # super_seeding:是否启用超级做种。 # tags:下载任务的标签。 # total_size:总大小。 # tracker:Tracker 地址。 # trackers_count:Tracker 数量。 # up_limit:上传速度限制。 # uploaded:已上传文件大小。 # uploaded_session:当前会话中已上传的文件大小。 # upspeed:当前上传速度。