Source code for mendevi.download.decapsulation

"""Automatate the decapsulation process."""

import pathlib
import re

from .decompress import decompress
from .torrent_finder import get_torrent
from .transmission import add_torrent


[docs] def retrive_file(file: pathlib.Path | str) -> pathlib.Path: """Attempt to retrieve the file. Parameters ---------- file : pathlike The name or the identifier of the file you want to retrive. Returns ------- decapsulated_file : pathlib.Path The final unencapsulated file. """ file = pathlib.Path(file).expanduser() # handle <...> if re.match(r"^<.+>$", file.name): name = re.sub(r"^<(.+?)(?:\.xz(?:\.torrent)?)?>$", r"\1", file.name) + ".xz.torrent" return retrive_file(file.parent / name) # remove .xz.torrent file = file.parent / re.sub(r"\.xz(?:\.torrent)?$", "", file.name) # shortcut if file.exists(): return file # handle .xz if (prev_file := file.parent / f"{file.name}.xz").exists(): return decompress(prev_file) # handle .torrent if (prev_prev_file := prev_file.parent / f"{prev_file.name}.torrent").exists(): return retrive_file(add_torrent(prev_prev_file)) # general case return retrive_file(get_torrent(prev_prev_file.name))