diff --git a/utils_qb.py b/utils_qb.py index 53504d2..ed33eb0 100644 --- a/utils_qb.py +++ b/utils_qb.py @@ -86,3 +86,27 @@ def get_torrent_hash(source: str | bytes) -> str: except Exception as e: print(f"Could not parse torrent hash: {e}") return "" + +def rename_torrent_and_folder(qb_client: Client, torrent_hash: str, new_name: str) -> None: + """ + Renames the torrent display name and the top-level folder on disk to the given `new_name`. + """ + info = qb_client.torrents_info(hashes=torrent_hash) + if not info: + print(f"Torrent {torrent_hash} not found to rename.") + return + + t_info = info[0] + old_name = t_info.name + + print(f"Renaming torrent and top-level dir from '{old_name}' to '{new_name}'") + try: + qb_client.torrents_rename(torrent_hash=torrent_hash, new_torrent_name=new_name) + except Exception as e: + print(f"Failed to rename torrent: {e}") + + try: + qb_client.torrents_rename_folder(torrent_hash=torrent_hash, old_path=old_name, new_path=new_name) + except Exception as e: + # Might be a single-file torrent or no root folder + print(f"Failed to rename folder: {e}") diff --git a/workflow.py b/workflow.py index e211a6f..85c1d5e 100644 --- a/workflow.py +++ b/workflow.py @@ -12,7 +12,8 @@ from utils_qb import ( get_qb_client, download_torrent, get_torrent_file_tree, - get_torrent_hash + get_torrent_hash, + rename_torrent_and_folder ) from utils_ai import ( @@ -107,6 +108,9 @@ def process_imdb_workflow(imdb_id: str, dl_dir: str = "/data/qb", jellyfin_base_ print(f"Tracking torrent Hash: {t_hash}") + new_name = f"{year} {title}".strip() + rename_torrent_and_folder(qb, t_hash, new_name) + while True: info = qb.torrents_info(hashes=t_hash) if not info: