From 075f918332217d2803d34af9b51b110a13d9b071 Mon Sep 17 00:00:00 2001 From: Spoked <5782630+dreulavelle@users.noreply.github.com> Date: Tue, 11 Jun 2024 00:09:48 -0400 Subject: [PATCH] Fixes (#378) * chore: move to org * fix: lots of fixes and prepwork * feat: add bun lockfile to gitignore * fix: work on plex updating for anime --------- Co-authored-by: Spoked --- .gitignore | 1 + backend/controllers/items.py | 211 +++++++++++------ backend/controllers/webhooks.py | 17 +- backend/program/downloaders/realdebrid.py | 89 ++++++- backend/program/downloaders/torbox.py | 147 ++++++------ backend/program/indexers/trakt.py | 38 ++- backend/program/libraries/symlink.py | 157 +++++-------- backend/program/media/container.py | 270 ++++++++++++---------- backend/program/media/item.py | 49 ++-- backend/program/program.py | 44 +--- backend/program/state_transition.py | 47 ++-- backend/program/symlink.py | 216 ++++++++++++----- backend/program/updaters/plex.py | 37 +-- backend/tests/test_container.py | 10 +- backend/tests/test_states_processing.py | 7 + backend/tests/test_symlink_library.py | 2 + backend/utils/request.py | 10 +- entrypoint.sh | 23 +- media.pkl | Bin 0 -> 1376984 bytes media.pkl.bak | Bin 0 -> 1329624 bytes poetry.lock | 47 +++- pyproject.toml | 2 + 22 files changed, 883 insertions(+), 541 deletions(-) create mode 100644 media.pkl create mode 100644 media.pkl.bak diff --git a/.gitignore b/.gitignore index 09dccf73..8fda03aa 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ makefile profile.svg *.gz *.zip +*.lockb # Python bytecode / Byte-compiled / optimized / DLL files __pycache__/ diff --git a/backend/controllers/items.py b/backend/controllers/items.py index 1f8775ae..706d8670 100644 --- a/backend/controllers/items.py +++ b/backend/controllers/items.py @@ -1,10 +1,13 @@ from datetime import datetime from typing import List, Optional + +import Levenshtein from fastapi import APIRouter, HTTPException, Request -from pydantic import BaseModel -from program.media.item import MediaItem from program.content.overseerr import Overseerr +from program.media.container import MediaItemContainer +from program.media.item import ItemId, MediaItem from program.media.state import States +from pydantic import BaseModel from utils.logger import logger router = APIRouter( @@ -26,17 +29,104 @@ async def get_states(): } -@router.get("/") -async def get_items(request: Request): +@router.get("/", summary="Retrieve Media Items", description="Fetch media items with optional filters and pagination.") +async def get_items( + request: Request, + fetch_all: Optional[bool] = False, + limit: Optional[int] = 20, + page: Optional[int] = 1, + search: Optional[str] = None, + state: Optional[str] = None, + type: Optional[str] = None +): + """ + Fetch media items with optional filters and pagination. + + Parameters: + - request: Request object + - fetch_all: Fetch all items without pagination (default: False) + - limit: Number of items per page (default: 20) + - page: Page number (default: 1) + - search: Search term to filter items by title or IMDb ID + - state: Filter items by state + - type: Filter items by type (movie, show, season, episode) + + Returns: + - JSON response with success status, items, pagination details, and total count + + Examples: + - Fetch all items: /items?fetch_all=true + - Fetch first 10 items: /items?limit=10&page=1 + - Search items by title: /items?search=inception + - Filter items by state: /items?state=completed + - Filter items by type: /items?type=movie + """ + items = list(request.app.program.media_items._items.values()) + + if search: + search_lower = search.lower() + filtered_items = [] + for item in items: + if isinstance(item, MediaItem): + title_match = item.title and Levenshtein.distance(search_lower, item.title.lower()) <= 0.90 + imdb_match = item.imdb_id and Levenshtein.distance(search_lower, item.imdb_id.lower()) <= 1 + if title_match or imdb_match: + filtered_items.append(item) + items = filtered_items + + if type: + type_lower = type.lower() + if type_lower == "movie": + items = list(request.app.program.media_items.movies.values()) + elif type_lower == "show": + items = list(request.app.program.media_items.shows.values()) + elif type_lower == "season": + items = list(request.app.program.media_items.seasons.values()) + elif type_lower == "episode": + items = list(request.app.program.media_items.episodes.values()) + else: + raise HTTPException(status_code=400, detail=f"Invalid type: {type}. Valid types are: ['movie', 'show', 'season', 'episode']") + + if state: + filter_lower = state.lower() + filter_state = None + for state in States: + if Levenshtein.distance(filter_lower, state.name.lower()) <= 0.82: + filter_state = state + break + if filter_state: + items = [item for item in items if item.state == filter_state] + else: + valid_states = [state.name for state in States] + raise HTTPException(status_code=400, detail=f"Invalid filter state: {state}. Valid states are: {valid_states}") + + if not fetch_all: + if page < 1: + raise HTTPException(status_code=400, detail="Page number must be 1 or greater.") + if limit < 1: + raise HTTPException(status_code=400, detail="Limit must be 1 or greater.") + + start = (page - 1) * limit + end = start + limit + items = items[start:end] + + total_count = len(items) + total_pages = (total_count + limit - 1) // limit + return { "success": True, - "items": [item.to_dict() for item in request.app.program.media_items], + "items": [item.to_dict() for item in items], + "page": page, + "limit": limit, + "total": total_count, + "total_pages": total_pages } @router.get("/extended/{item_id}") async def get_extended_item_info(request: Request, item_id: str): - item = request.app.program.media_items.get_item(item_id) + mic: MediaItemContainer = request.app.program.media_items + item = mic.get(item_id) if item is None: raise HTTPException(status_code=404, detail="Item not found") return { @@ -70,77 +160,63 @@ async def add_items(request: Request, imdb_id: Optional[str] = None, imdb_ids: O return {"success": True, "message": f"Added {len(valid_ids)} item(s) to the queue"} -@router.delete("/remove/id/{item_id}") -async def remove_item(request: Request, item_id: str): - item = request.app.program.media_items.get_item(item_id) - if not item: - logger.error(f"Item with ID {item_id} not found") - raise HTTPException(status_code=404, detail="Item not found") - - request.app.program.media_items.remove(item) - if item.symlinked: - request.app.program.media_items.remove_symlink(item) - logger.log("API", f"Removed symlink for item with ID {item_id}") - - overseerr_service = request.app.program.services.get(Overseerr) - if overseerr_service and overseerr_service.initialized: - try: - overseerr_result = overseerr_service.delete_request(item_id) - if overseerr_result: - logger.log("API", f"Deleted Overseerr request for item with ID {item_id}") - else: - logger.log("API", f"Failed to delete Overseerr request for item with ID {item_id}") - except Exception as e: - logger.error(f"Exception occurred while deleting Overseerr request for item with ID {item_id}: {e}") - - return { - "success": True, - "message": f"Removed {item_id}", - } - +@router.delete("/remove/") +async def remove_item( + request: Request, + item_id: Optional[str] = None, + imdb_id: Optional[str] = None +): + if item_id: + item = request.app.program.media_items.get(ItemId(item_id)) + id_type = "ID" + elif imdb_id: + item = next((i for i in request.app.program.media_items if i.imdb_id == imdb_id), None) + id_type = "IMDb ID" + else: + raise HTTPException(status_code=400, detail="No item ID or IMDb ID provided") -@router.delete("/remove/imdb/{imdb_id}") -async def remove_item_by_imdb(request: Request, imdb_id: str): - item = request.app.program.media_items.get_item(imdb_id) if not item: - logger.error(f"Item with IMDb ID {imdb_id} not found") - raise HTTPException(status_code=404, detail="Item not found") + logger.error(f"Item with {id_type} {item_id or imdb_id} not found") + return { + "success": False, + "message": f"Item with {id_type} {item_id or imdb_id} not found. No action taken." + } - request.app.program.media_items.remove(item) - if item.symlinked or (item.file and item.folder): # TODO: this needs to be checked later.. - request.app.program.media_items.remove_symlink(item) - logger.log("API", f"Removed symlink for item with IMDb ID {imdb_id}") - - overseerr_service = request.app.program.services.get(Overseerr) - if overseerr_service and overseerr_service.initialized: - try: - overseerr_result = overseerr_service.delete_request(item.overseerr_id) - if overseerr_result: - logger.log("API", f"Deleted Overseerr request for item with IMDb ID {imdb_id}") - else: - logger.error(f"Failed to delete Overseerr request for item with IMDb ID {imdb_id}") - except Exception as e: - logger.error(f"Exception occurred while deleting Overseerr request for item with IMDb ID {imdb_id}: {e}") - else: - logger.error("Overseerr service not found in program services") + try: + # Remove the item from the media items container + request.app.program.media_items.remove(item) + logger.log("API", f"Removed item with {id_type} {item_id or imdb_id}") - return { - "success": True, - "message": f"Removed item with IMDb ID {imdb_id}", - } + # Remove the symlinks associated with the item + symlinker = request.app.program.symlinker + symlinker.delete_item_symlinks(item) + logger.log("API", f"Removed symlink for item with {id_type} {item_id or imdb_id}") + + return { + "success": True, + "message": f"Successfully removed item with {id_type} {item_id or imdb_id}." + } + except Exception as e: + logger.error(f"Failed to remove item with {id_type} {item_id or imdb_id}: {e}") + raise HTTPException(status_code=500, detail="Internal server error") @router.get("/imdb/{imdb_id}") -async def get_imdb_info(request: Request, imdb_id: str): - item = request.app.program.media_items.get_item(imdb_id) +async def get_imdb_info(request: Request, imdb_id: str, season: Optional[int] = None, episode: Optional[int] = None): + """ + Get the item with the given IMDb ID. + If the season and episode are provided, get the item with the given season and episode. + """ + item_id = ItemId(imdb_id) + if season is not None: + item_id = ItemId(str(season), parent_id=item_id) + if episode is not None: + item_id = ItemId(str(episode), parent_id=item_id) + + item = request.app.program.media_items.get_item(item_id) if item is None: - logger.error(f"Item with IMDb ID {imdb_id} not found in container") raise HTTPException(status_code=404, detail="Item not found") - if not request.app.program.media_items.__contains__(item): - logger.error(f"Item with IMDb ID {imdb_id} is not in the library") - raise HTTPException(status_code=404, detail="Item not found in library") - return {"success": True, "item": item.to_extended_dict()} @@ -152,7 +228,6 @@ async def get_incomplete_items(request: Request): incomplete_items = request.app.program.media_items.get_incomplete_items() if not incomplete_items: - logger.info("No incomplete items found") return { "success": True, "incomplete_items": [] diff --git a/backend/controllers/webhooks.py b/backend/controllers/webhooks.py index ec6ddea6..1e945127 100644 --- a/backend/controllers/webhooks.py +++ b/backend/controllers/webhooks.py @@ -3,11 +3,15 @@ import pydantic from fastapi import APIRouter, Request -from program.media.item import MediaItem from program.content.overseerr import Overseerr -from program.indexers.trakt import get_imdbid_from_tmdb -from utils.request import get +from program.indexers.trakt import ( + TraktIndexer, + create_item_from_imdb_id, + get_imdbid_from_tmdb, +) +from program.media.item import MediaItem, Show from utils.logger import logger +from utils.request import get from .models.overseerr import OverseerrWebhook @@ -43,12 +47,17 @@ async def overseerr(request: Request) -> Dict[str, Any]: return {"success": False, "message": "Failed to get imdb_id from TMDB", "title": req.subject} overseerr: Overseerr = request.app.program.services[Overseerr] + trakt: TraktIndexer = request.app.program.services[TraktIndexer] + if imdb_id in overseerr.recurring_items: logger.log("API", "Request already in queue", {"imdb_id": imdb_id}) return {"success": False, "message": "Request already in queue", "title": req.subject} else: overseerr.recurring_items.add(imdb_id) - item = MediaItem({"imdb_id": imdb_id, "requested_by": "overseerr", "requested_at": datetime.now()}) + new_item = MediaItem({"imdb_id": imdb_id, "requested_by": "overseerr"}) + item = create_item_from_imdb_id(new_item.imdb_id) + if isinstance(item, Show): + trakt._add_seasons_to_show(item, imdb_id) request.app.program.add_to_queue(item) return {"success": True} diff --git a/backend/program/downloaders/realdebrid.py b/backend/program/downloaders/realdebrid.py index cea26eb2..9b812d67 100644 --- a/backend/program/downloaders/realdebrid.py +++ b/backend/program/downloaders/realdebrid.py @@ -155,15 +155,14 @@ def _process_providers(self, item: MediaItem, provider_list: dict, stream_hash: key=lambda container: -len(container) ) - # Check the instance type once and process accordingly if isinstance(item, Movie): for container in sorted_containers: if self._is_wanted_movie(container, item): item.set("active_stream", {"hash": stream_hash, "files": container, "id": None}) return True - elif isinstance(item, Episode): + elif isinstance(item, Show): for container in sorted_containers: - if self._is_wanted_episode(container, item): + if self._is_wanted_show(container, item): item.set("active_stream", {"hash": stream_hash, "files": container, "id": None}) return True elif isinstance(item, Season): @@ -171,8 +170,12 @@ def _process_providers(self, item: MediaItem, provider_list: dict, stream_hash: if self._is_wanted_season(container, item): item.set("active_stream", {"hash": stream_hash, "files": container, "id": None}) return True - - # If no cached files were found in any of the containers, return False + elif isinstance(item, Episode): + for container in sorted_containers: + if self._is_wanted_episode(container, item): + item.set("active_stream", {"hash": stream_hash, "files": container, "id": None}) + return True + # False if no cached files in containers (provider_list) return False def _is_wanted_movie(self, container: dict, item: Movie) -> bool: @@ -292,6 +295,64 @@ def _is_wanted_season(self, container: dict, item: Season) -> bool: return True return False + def _is_wanted_show(self, container: dict, item: Show) -> bool: + """Check if container has wanted files for a show""" + if not isinstance(item, Show): + logger.error(f"Item is not a Show instance: {item.log_string}") + return False + + # Filter and sort files once to improve performance + filenames = [ + file for file in container.values() + if file and file["filesize"] > 4e+7 and splitext(file["filename"].lower())[1] in WANTED_FORMATS + ] + + if not filenames: + return False + + # Create a dictionary to map seasons and episodes needed + needed_episodes = {} + acceptable_states = [States.Indexed, States.Scraped, States.Unknown, States.Failed] + + for season in item.seasons: + if season.state in acceptable_states and season.is_released: + needed_episode_numbers = {episode.number for episode in season.episodes if episode.state in acceptable_states and episode.is_released} + if needed_episode_numbers: + needed_episodes[season.number] = needed_episode_numbers + if not needed_episodes: + return False + + # Iterate over each file to check if it matches + # the season and episode within the show + matched_files = {} + for file in filenames: + with contextlib.suppress(GarbageTorrent, TypeError): + parsed_file = parse(file["filename"], remove_trash=True) + if not parsed_file or not parsed_file.parsed_title or 0 in parsed_file.season: + continue + # Check each season and episode to find a match + for season_number, episodes in needed_episodes.items(): + if season_number in parsed_file.season: + for episode_number in list(episodes): + if episode_number in parsed_file.episode: + # Store the matched file for this episode + matched_files[(season_number, episode_number)] = file + episodes.remove(episode_number) + if not matched_files: + return False + + all_found = all(len(episodes) == 0 for episodes in needed_episodes.values()) + + if all_found: + for (season_number, episode_number), file in matched_files.items(): + season = next(season for season in item.seasons if season.number == season_number) + episode = next(episode for episode in season.episodes if episode.number == episode_number) + episode.set("folder", item.active_stream.get("name")) + episode.set("alternative_folder", item.active_stream.get("alternative_name", None)) + episode.set("file", file.get("filename")) + return True + return False + def _is_downloaded(self, item: MediaItem) -> bool: """Check if item is already downloaded after checking if it was cached""" hash_key = item.active_stream.get("hash", None) @@ -369,7 +430,7 @@ def set_active_files(self, item: MediaItem) -> None: if not item.folder or not item.alternative_folder: item.set("folder", item.active_stream.get("name")) item.set("alternative_folder", item.active_stream.get("alternative_name")) - + # this is only for Movie and Episode instances if isinstance(item, (Movie, Episode)): if not item.folder or not item.alternative_folder or not item.file: @@ -385,6 +446,8 @@ def _is_wanted_item(self, item: Union[Movie, Episode, Season]) -> bool: """Check if item is wanted""" if isinstance(item, Movie): return self._is_wanted_movie(item.active_stream.get("files", {}), item) + elif isinstance(item, Show): + return self._is_wanted_show(item.active_stream.get("files", {}), item) elif isinstance(item, Season): return self._is_wanted_season(item.active_stream.get("files", {}), item) elif isinstance(item, Episode): @@ -521,15 +584,19 @@ def check_season(): if isinstance(item, Movie): if check_movie(): - logger.info(f"Movie {item.log_string} already exists in Real-Debrid account.") + logger.info(f"{item.log_string} already exists in Real-Debrid account.") return True - elif isinstance(item, Episode): - if check_episode(): - logger.info(f"Episode {item.log_string} already exists in Real-Debrid account.") + elif isinstance(item, Show): + if all(check_season(season) for season in item.seasons): + logger.info(f"{item.log_string} already exists in Real-Debrid account.") return True elif isinstance(item, Season): if check_season(): - logger.info(f"Season {item.log_string} already exists in Real-Debrid account.") + logger.info(f"{item.log_string} already exists in Real-Debrid account.") + return True + elif isinstance(item, Episode): + if check_episode(): + logger.info(f"{item.log_string} already exists in Real-Debrid account.") return True logger.debug(f"No matching item found for {item.log_string}") diff --git a/backend/program/downloaders/torbox.py b/backend/program/downloaders/torbox.py index f1c1b621..ae889589 100644 --- a/backend/program/downloaders/torbox.py +++ b/backend/program/downloaders/torbox.py @@ -1,10 +1,15 @@ +import contextlib +from datetime import datetime import time from typing import Generator -from program.media.item import MediaItem +from RTN import parse +from RTN.exceptions import GarbageTorrent + +from program.media.item import MediaItem, Movie from program.settings.manager import settings_manager from utils.logger import logger -from utils.request import get +from utils.request import get, post class TorBoxDownloader: @@ -15,7 +20,7 @@ def __init__(self, hash_cache): self.settings = settings_manager.settings.downloaders.torbox self.api_key = self.settings.api_key self.base_url = "https://api.torbox.app/v1/api" - self.headers = {"Authorization": f"{self.api_key}"} + self.headers = {"Authorization": f"Bearer {self.api_key}"} self.initialized = self.validate() if not self.initialized: return @@ -24,91 +29,73 @@ def __init__(self, hash_cache): def validate(self) -> bool: """Validate the TorBox Downloader as a service""" - return False - # if not self.settings.enabled: - # logger.warning("TorBox Downloader is set to disabled") - # return False - # if not self.api_key: - # logger.warning("TorBox Downloader API key is not set") - # return False - - # try: - # response = get( - # f"{self.base_url}/user/me", - # additional_headers=self.headers - # ) - # return response.data.is_subscribed - # except Exception: - # return False # for now.. + if not self.settings.enabled: + logger.info("Torbox downloader is not enabled") + return False + if not self.settings.api_key: + logger.error("Torbox API key is not set") + try: + return self.get_expiry_date() > datetime.now() + except: + return False def run(self, item: MediaItem) -> Generator[MediaItem, None, None]: """Download media item from TorBox""" logger.info(f"Downloading {item.log_string} from TorBox") + if self.is_cached(item): + self.download(item) + yield item - def is_cached(self, infohashes: list[str]) -> list[bool]: - """Check if the given infohashes are cached in TorBox""" - cached_results = [] - for infohash in infohashes: - try: - response = get( - f"{self.base_url}/torrents/checkcached", - headers=self.headers, - params={"hash": infohash, "format": "object"} - ) - result = response.json() - cached = result['data']['data'] if 'data' in result and 'data' in result['data'] and result['data']['data'] is not False else False - cached_results.append(cached) - except Exception as e: - cached_results.append(False) - return cached_results - def request_download(self, infohash: str): - """Request a download from TorBox""" - try: - response = get( - f"{self.base_url}/torrents/requestdl", - headers=self.headers, - params={"torrent_id": infohash, "file_id": 0, "zip": False}, - ) - return response.json() - except Exception as e: - raise e - - def download_media(self, item: MediaItem): - """Initiate the download of a media item using TorBox.""" - if not item: - logger.error("No media item provided for download.") - return None + def is_cached(self, item: MediaItem): + streams = [hash for hash in item.streams] + data = self.get_web_download_cached(streams) + for hash in data: + item.active_stream=data[hash] + return True - infohash = item.active_stream.get("hash") - if not infohash: - logger.error(f"No infohash found for item: {item.log_string}") - return None + def download(self, item: MediaItem): + if item.type == "movie": + exists = False + torrent_list = self.get_torrent_list() + for torrent in torrent_list: + if item.active_stream["hash"] == torrent["hash"]: + id = torrent["id"] + exists = True + break + if not exists: + id = self.create_torrent(item.active_stream["hash"]) + for torrent in torrent_list: + if torrent["id"] == id: + with contextlib.suppress(GarbageTorrent, TypeError): + for file in torrent["files"]: + if file["size"] > 10000: + parsed_file = parse(file["short_name"]) + if parsed_file.type == "movie": + item.set("folder", ".") + item.set("alternative_folder", ".") + item.set("file", file["short_name"]) + return True - if self.is_cached([infohash])[0]: - logger.info(f"Item already cached: {item.log_string}") - else: - download_response = self.request_download(infohash) - if download_response.get('status') != 'success': - logger.error(f"Failed to initiate download for item: {item.log_string}") - return None - logger.info(f"Download initiated for item: {item.log_string}") + def get_expiry_date(self): + expiry = datetime.fromisoformat(self.get_user_data().premium_expires_at) + expiry = expiry.replace(tzinfo=None) + return expiry - # Wait for the download to be ready and get the path - download_path = self.get_torrent_path(infohash) - if not download_path: - logger.error(f"Failed to get download path for item: {item.log_string}") - return None + def get_web_download_cached(self, hash_list): + hash_string = ",".join(hash_list) + response = get(f"{self.base_url}/webdl/checkcached?hash={hash_string}", additional_headers=self.headers, response_type=dict) + return response.data["data"] - logger.success(f"Download ready at path: {download_path} for item: {item.log_string}") - return download_path + def get_user_data(self): + response = get(f"{self.base_url}/user/me", additional_headers=self.headers, retry_if_failed=False) + return response.data.data - def get_torrent_path(self, infohash: str): - """Check and wait until the torrent is fully downloaded and return the path.""" - for _ in range(30): # Check for 5 minutes max - if self.is_cached([infohash])[0]: - logger.info(f"Torrent cached: {infohash}") - return self.mount_torrents_path + infohash # Assuming the path to be mounted torrents path + infohash - time.sleep(10) - logger.warning(f"Torrent not available after timeout: {infohash}") - return None + def create_torrent(self, hash) -> int: + magnet_url = f"magnet:?xt=urn:btih:{hash}&dn=&tr=" + response = post(f"{self.base_url}/torrents/createtorrent", data={"magnet": magnet_url}, additional_headers=self.headers) + return response.data.data.torrent_id + + def get_torrent_list(self) -> list: + response = get(f"{self.base_url}/torrents/mylist", additional_headers=self.headers, response_type=dict) + return response.data["data"] diff --git a/backend/program/indexers/trakt.py b/backend/program/indexers/trakt.py index c2d5ddfe..f3ab4c97 100644 --- a/backend/program/indexers/trakt.py +++ b/backend/program/indexers/trakt.py @@ -1,7 +1,7 @@ """Trakt updater module""" from datetime import datetime, timedelta -from typing import Generator, Optional +from typing import Generator, List, Optional from program.media.item import Episode, MediaItem, Movie, Season, Show from program.settings.manager import settings_manager @@ -40,9 +40,11 @@ def run(self, item: MediaItem) -> Generator[MediaItem, None, None]: @staticmethod def should_submit(item: MediaItem) -> bool: - if not item.indexed_at: + if not item.indexed_at or not item.title: return True + settings = settings_manager.settings.indexer + try: interval = timedelta(seconds=settings.update_interval) return datetime.now() - item.indexed_at > interval @@ -50,25 +52,39 @@ def should_submit(item: MediaItem) -> bool: logger.error(f"Failed to parse date: {item.indexed_at} with format: {interval}") return False - def _add_seasons_to_show(self, show: Show, imdb_id: str): + @staticmethod + def _add_seasons_to_show(show: Show, imdb_id: str): """Add seasons to the given show using Trakt API.""" + if not isinstance(show, Show): + logger.error(f"Item {show.log_string} is not a show") + return + + if not imdb_id or not imdb_id.startswith("tt"): + logger.error(f"Item {show.log_string} does not have an imdb_id, cannot index it") + return + seasons = get_show(imdb_id) for season in seasons: if season.number == 0: continue - season_item = _map_item_from_data(season, "season") - for episode in season.episodes: - episode_item = _map_item_from_data(episode, "episode") - season_item.add_episode(episode_item) - show.add_season(season_item) + season_item = _map_item_from_data(season, "season", show.genres) + if season_item: + for episode in season.episodes: + episode_item = _map_item_from_data(episode, "episode", show.genres) + if episode_item: + season_item.add_episode(episode_item) + show.add_season(season_item) -def _map_item_from_data(data, item_type: str) -> Optional[MediaItem]: +def _map_item_from_data(data, item_type: str, show_genres: List[str] = None) -> Optional[MediaItem]: """Map trakt.tv API data to MediaItemContainer.""" if item_type not in ["movie", "show", "season", "episode"]: logger.debug(f"Unknown item type {item_type} for {data.title} not found in list of acceptable items") return None + formatted_aired_at = _get_formatted_date(data, item_type) + genres = getattr(data, "genres", None) or show_genres + item = { "title": getattr(data, "title", None), "year": getattr(data, "year", None), @@ -77,12 +93,12 @@ def _map_item_from_data(data, item_type: str) -> Optional[MediaItem]: "imdb_id": getattr(data.ids, "imdb", None), "tvdb_id": getattr(data.ids, "tvdb", None), "tmdb_id": getattr(data.ids, "tmdb", None), - "genres": getattr(data, "genres", None), + "genres": genres, + "is_anime": "anime" in genres if genres else False, "network": getattr(data, "network", None), "country": getattr(data, "country", None), "language": getattr(data, "language", None), "requested_at": datetime.now(), - "is_anime": "anime" in getattr(data, "genres", []), } match item_type: diff --git a/backend/program/libraries/symlink.py b/backend/program/libraries/symlink.py index dc4d610c..4d9649f1 100644 --- a/backend/program/libraries/symlink.py +++ b/backend/program/libraries/symlink.py @@ -1,8 +1,7 @@ import os +import re from pathlib import Path -from typing import Generator, List, Tuple -import regex from program.media.item import Episode, MediaItem, Movie, Season, Show from program.settings.manager import settings_manager from utils.logger import logger @@ -18,12 +17,13 @@ def __init__(self): return def validate(self) -> bool: + """Validate the symlink library settings.""" library_path = Path(self.settings.library_path).resolve() if library_path == Path.cwd().resolve(): logger.error("Library path not set or set to the current directory in SymlinkLibrary settings.") return False - required_dirs = ["shows", "movies"] + required_dirs = ["shows", "movies", "anime_shows", "anime_movies"] missing_dirs = [d for d in required_dirs if not (library_path / d).exists()] if missing_dirs: @@ -33,98 +33,63 @@ def validate(self) -> bool: return False return True - def run(self) -> Generator[MediaItem, None, None]: - """Create a library from the symlink paths. Return stub items that should - be fed into an Indexer to have the rest of the metadata filled in.""" - for movie_item in self.process_movies(): - yield movie_item - - for show_item in self.process_shows(): - yield show_item - - def process_movies(self) -> Generator[Movie, None, None]: - """Process movie symlinks and yield Movie items.""" - movies = self.get_files_in_directory(self.settings.library_path / "movies") - for path, filename in movies: - imdb_id = self.extract_imdb_id(filename) - if not imdb_id: - logger.error(f"Can't extract movie imdb_id at path {path / filename}") - continue - movie_item = Movie({"imdb_id": imdb_id}) - movie_item.set("symlinked", True) - movie_item.set("update_folder", "updated") - yield movie_item - - def process_shows(self) -> Generator[Show, None, None]: - """Process show symlinks and yield Show items.""" - shows_dir = self.settings.library_path / "shows" - for show in os.listdir(shows_dir): - imdb_id = self.extract_imdb_id(show) - title = self.extract_title(show) - if not imdb_id or not title: - logger.error(f"Can't extract episode imdb_id or title at path {shows_dir / show}") + def run(self) -> MediaItem: + """ + Create a library from the symlink paths. Return stub items that should + be fed into an Indexer to have the rest of the metadata filled in. + """ + for directory, item_type, is_anime in [("movies", "movie", False), ("anime_movies", "anime movie", True)]: + yield from process_items(self.settings.library_path / directory, Movie, item_type, is_anime) + + for directory, item_type, is_anime in [("shows", "show", False), ("anime_shows", "anime show", True)]: + yield from process_shows(self.settings.library_path / directory, item_type, is_anime) + + +def process_items(directory: Path, item_class, item_type: str, is_anime: bool = False): + """Process items in the given directory and yield MediaItem instances.""" + items = [ + (root, files[0]) + for root, _, files + in os.walk(directory) + if files + ] + for path, filename in items: + imdb_id = re.search(r'(tt\d+)', filename) + title = re.search(r'(.+)?( \()', filename) + if not imdb_id or not title: + logger.error(f"Can't extract {item_type} imdb_id or title at path {path / filename}") + continue + item = item_class({'imdb_id': imdb_id.group(), 'title': title.group(1)}) + item.update_folder = "updated" + if is_anime: + item.is_anime = True + yield item + + +def process_shows(directory: Path, item_type: str, is_anime: bool = False) -> Show: + """Process shows in the given directory and yield Show instances.""" + for show in os.listdir(directory): + imdb_id = re.search(r'(tt\d+)', show) + title = re.search(r'(.+)?( \()', show) + if not imdb_id or not title: + logger.error(f"Can't extract {item_type} imdb_id or title at path {directory / show}") + continue + show_item = Show({'imdb_id': imdb_id.group(), 'title': title.group(1)}) + if is_anime: + show_item.is_anime = True + for season in os.listdir(directory / show): + if not (season_number := re.search(r'(\d+)', season)): + logger.error(f"Can't extract season number at path {directory / show / season}") continue - show_item = Show({"imdb_id": imdb_id, "title": title}) - for season_item in self.process_seasons(shows_dir / show, show_item): - show_item.add_season(season_item) - yield show_item - - def process_seasons(self, show_path: Path, show_item: Show) -> Generator[Season, None, None]: - """Process season symlinks and yield Season items.""" - for season in os.listdir(show_path): - season_number = self.extract_season_number(season) - if not season_number: - logger.error(f"Can't extract season number at path {show_path / season}") - continue - season_item = Season({"number": season_number}) - season_item.set("parent", show_item) - for episode_item in self.process_episodes(show_path / season, season_item): + season_item = Season({'number': int(season_number.group())}) + for episode in os.listdir(directory / show / season): + if not (episode_number := re.search(r's\d+e(\d+)', episode)): + logger.error(f"Can't extract episode number at path {directory / show / season / episode}") + continue + episode_item = Episode({'number': int(episode_number.group(1))}) + episode_item.update_folder = "updated" + if is_anime: + episode_item.is_anime = True season_item.add_episode(episode_item) - yield season_item - - def process_episodes(self, season_path: Path, season_item: Season) -> Generator[Episode, None, None]: - """Process episode symlinks and yield Episode items.""" - for episode in os.listdir(season_path): - episode_number = self.extract_episode_number(episode) - if not episode_number: - logger.error(f"Deleting symlink, unable to extract episode number: {season_path / episode}") - os.remove(season_path / episode) - continue - episode_item = Episode({"number": episode_number}) - episode_item.set("parent", season_item) - episode_item.set("symlinked", True) - episode_item.set("update_folder", "updated") - yield episode_item - - @staticmethod - def get_files_in_directory(directory: Path) -> List[Tuple[Path, str]]: - """Get all files in a directory.""" - return [ - (root, files[0]) - for root, _, files in os.walk(directory) - if files - ] - - @staticmethod - def extract_imdb_id(text: str) -> str: - """Extract IMDb ID from text.""" - match = regex.search(r"(tt\d+)", text) - return match.group() if match else None - - @staticmethod - def extract_title(text: str) -> str: - """Extract title from text.""" - match = regex.search(r"(.+?) \(", text) - return match.group(1) if match else None - - @staticmethod - def extract_season_number(text: str) -> int: - """Extract season number from text.""" - match = regex.search(r"(\d+)", text) - return int(match.group()) if match else None - - @staticmethod - def extract_episode_number(text: str) -> int: - """Extract episode number from text.""" - match = regex.search(r"s\d+e(\d+)", text, regex.IGNORECASE) - return int(match.group(1)) if match else None + show_item.add_season(season_item) + yield show_item diff --git a/backend/program/media/container.py b/backend/program/media/container.py index a0e5b106..7592bf92 100644 --- a/backend/program/media/container.py +++ b/backend/program/media/container.py @@ -2,6 +2,8 @@ import shutil import tempfile import threading +from copy import deepcopy +from pickle import UnpicklingError from typing import Dict, Generator, List, Optional import dill @@ -42,14 +44,16 @@ def __exit__(self, exc_type, exc_val, exc_tb): class MediaItemContainer: + """A container to store media items.""" + def __init__(self): - self._items = {} - self._shows = {} - self._seasons = {} - self._episodes = {} - self._movies = {} - self._imdb_index = {} - self.lock = ReadWriteLock() + self._items: Dict[ItemId, MediaItem] = {} + self._shows: Dict[ItemId, Show] = {} + self._seasons: Dict[ItemId, Season] = {} + self._episodes: Dict[ItemId, Episode] = {} + self._movies: Dict[ItemId, Movie] = {} + self.library_file: str = "media.pkl" + self.lock: ReadWriteLock = ReadWriteLock() def __iter__(self) -> Generator[MediaItem, None, None]: self.lock.acquire_read() @@ -87,11 +91,39 @@ def get(self, key, default=None) -> MediaItem: finally: self.lock.release_read() - def get_episodes(self, show_id: ItemId) -> List[MediaItem]: - """Get all episodes for a show.""" + @property + def seasons(self) -> dict[ItemId, Season]: + return deepcopy(self._seasons) + + @property + def episodes(self) -> dict[ItemId, Episode]: + return deepcopy(self._episodes) + + @property + def shows(self) -> dict[ItemId, Show]: + return deepcopy(self._shows) + + @property + def movies(self) -> dict[ItemId, Movie]: + return deepcopy(self._movies) + + def get_items_with_state(self, state) -> dict[ItemId, MediaItem]: + """Get items with the specified state""" + return { + item_id: self[item_id] + for item_id, item in self._items.items() + if item.state == state + } + + def get_incomplete_items(self) -> dict[ItemId, MediaItem]: + """Get items that are not completed.""" self.lock.acquire_read() try: - return self._shows[show_id].episodes + return { + item_id: item + for item_id, item in self._items.items() + if item.state not in (States.Completed, States.PartiallyCompleted) + } finally: self.lock.release_read() @@ -106,52 +138,27 @@ def get_item(self, identifier: str) -> Optional[MediaItem]: finally: self.lock.release_read() - def upsert(self, item: MediaItem) -> None: - self.lock.acquire_write() + def get_episodes(self, show_id: ItemId) -> List[MediaItem]: + """Get all episodes for a show.""" + self.lock.acquire_read() try: - if item.item_id in self._items: - existing_item = self._items[item.item_id] - if existing_item.state == States.Completed and existing_item.title: - return - self._merge_items(existing_item, item) - else: - self._items[item.item_id] = item - self._index_item(item) + return self.shows[show_id].episodes finally: - self.lock.release_write() - - def _merge_items(self, existing_item: MediaItem, new_item: MediaItem) -> None: - """Merge new item data into existing item without losing existing state.""" - if existing_item.state == States.Completed and new_item.state != States.Completed: - return - for attr in vars(new_item): - new_value = getattr(new_item, attr) - if new_value is not None: - setattr(existing_item, attr, new_value) - if isinstance(existing_item, Show): - for season in new_item.seasons: - if season.item_id in self._seasons: - self._merge_items(self._seasons[season.item_id], season) - else: - self._index_item(season) - elif isinstance(existing_item, Season): - for episode in new_item.episodes: - if episode.item_id in self._episodes: - self._merge_items(self._episodes[episode.item_id], episode) - else: - if not self._episode_exists(existing_item, episode): - self._index_item(episode) - - def _episode_exists(self, season, episode): - for existing_episode in season.episodes: - if existing_episode.item_id == episode.item_id: - return True - return False + self.lock.release_read() - def _index_item(self, item: MediaItem): - """Index the item and its children in the appropriate dictionaries.""" - if item.imdb_id: - self._imdb_index[item.imdb_id] = item + def upsert(self, item: MediaItem) -> None: + """Iterate through the input item and upsert all parents and children.""" + # Use deepcopy so that further modifications made to the input item + # will not affect the container state + self._items[item.item_id] = item + detatched = item.item_id.parent_id is None or item.parent is None + if isinstance(item, (Season, Episode)) and detatched: + logger.error( + "%s item %s is detatched and not associated with a parent, and thus" + + " it cannot be upserted into the database", + item.__class__.name, item.log_string + ) + raise ValueError("Item detached from parent") if isinstance(item, Show): self._shows[item.item_id] = item for season in item.seasons: @@ -162,67 +169,86 @@ def _index_item(self, item: MediaItem): episode.parent = season self._items[episode.item_id] = episode self._episodes[episode.item_id] = episode - elif isinstance(item, Season): + if isinstance(item, Season): self._seasons[item.item_id] = item + # update children for episode in item.episodes: episode.parent = item self._items[episode.item_id] = episode self._episodes[episode.item_id] = episode - parent_show = self._shows.get(item.item_id.parent_id) - if parent_show: - parent_show.seasons.append(item) + # Ensure the parent Show is updated in the container + container_show: Show = self._items[item.item_id.parent_id] + parent_index = container_show.get_season_index_by_id(item.item_id) + if parent_index is not None: + container_show.seasons[parent_index] = item elif isinstance(item, Episode): self._episodes[item.item_id] = item - parent_season = self._seasons.get(item.item_id.parent_id) - if parent_season: - parent_season.episodes.append(item) + # Ensure the parent Season is updated in the container + container_season: Season = self._items[item.item_id.parent_id] + parent_index = container_season.get_episode_index_by_id(item.item_id) + if parent_index is not None: + container_season.episodes[parent_index] = item elif isinstance(item, Movie): self._movies[item.item_id] = item - def remove(self, item) -> None: + def _index_item(self, item: MediaItem): + """Index the item and its children in the appropriate dictionaries.""" + self._items[item.item_id] = item + if isinstance(item, Show): + for season in item.seasons: + season.parent = item + season.item_id.parent_id = item.item_id + self._index_item(season) + elif isinstance(item, Season): + for episode in item.episodes: + episode.parent = item + episode.item_id.parent_id = item.item_id + self._index_item(episode) + + def remove(self, item: MediaItem) -> None: + """Remove an item, which could be a movie, show, season, or episode.""" + if not item: + logger.error("Attempted to remove a None item.") + return + + log_title = item.log_string + imdb_id = item.imdb_id + self.lock.acquire_write() try: - if item.item_id in self._items: + def remove_children(item): if isinstance(item, Show): for season in item.seasons: - for episode in season.episodes: - del self._items[episode.item_id] - del self._episodes[episode.item_id] - del self._items[season.item_id] - del self._seasons[season.item_id] - del self._shows[item.item_id] + remove_children(season) elif isinstance(item, Season): for episode in item.episodes: - del self._items[episode.item_id] - del self._episodes[episode.item_id] - del self._seasons[item.item_id] - elif isinstance(item, Episode): - del self._episodes[item.item_id] - elif isinstance(item, Movie): - del self._movies[item.item_id] - - del self._items[item.item_id] - if item.imdb_id in self._imdb_index: - del self._imdb_index[item.imdb_id] + self._remove_item(episode) + self._remove_item(item) + + remove_children(item) + logger.debug(f"Removed item: {log_title} (IMDb ID: {imdb_id})") + except KeyError as e: + logger.error(f"Failed to remove item: {log_title} (IMDb ID: {imdb_id}). KeyError: {e}") + except Exception as e: + logger.error(f"Unexpected error occurred while removing item: {log_title} (IMDb ID: {imdb_id}). Exception: {e}") finally: self.lock.release_write() - def get_incomplete_items(self) -> Dict[ItemId, MediaItem]: - """Get all items that are not in a completed state.""" - self.lock.acquire_read() - try: - return { - item_id: item - for item_id, item in self._items.items() - if item.state != States.Completed - } - finally: - self.lock.release_read() + def _remove_item(self, item: MediaItem) -> None: + """Helper method to remove an item from the container.""" + item_id: ItemId = item.item_id + if item_id in self._items: + del self._items[item_id] + logger.debug(f"Successfully removed item with ID: {item_id}") + else: + logger.error(f"Item ID {item_id} not found in _items.") - def save(self, filename: str) -> None: - if not self._items: - return + def count(self, state) -> int: + """Count items with given state in container""" + return len(self.get_items_with_state(state)) + def save(self, filename: str = "media.pkl") -> None: + """Save the container to a file.""" with self.lock, tempfile.NamedTemporaryFile(delete=False, mode="wb") as temp_file: try: dill.dump(self, temp_file, dill.HIGHEST_PROTOCOL) @@ -232,38 +258,38 @@ def save(self, filename: str) -> None: logger.error(f"Failed to serialize data: {e}") return - try: - backup_filename = filename + ".bak" - if os.path.exists(filename): - shutil.copyfile(filename, backup_filename) - shutil.move(temp_file.name, filename) - except Exception as e: - logger.error(f"Failed to replace old file with new file: {e}") try: - os.remove(temp_file.name) - except OSError as remove_error: - logger.error(f"Failed to remove temporary file: {remove_error}") + backup_filename = filename + ".bak" + if os.path.exists(filename): + shutil.copyfile(filename, backup_filename) + shutil.move(temp_file.name, filename) + except Exception as e: + logger.error(f"Failed to replace old file with new file: {e}") + try: + os.remove(temp_file.name) + except OSError as remove_error: + logger.error(f"Failed to remove temporary file: {remove_error}") - def load(self, filename: str) -> None: + def load(self, filename: str = "media.pkl") -> None: + """Load the container from a file.""" try: with open(filename, "rb") as file: - from_disk: MediaItemContainer = dill.load(file) # noqa: S301 + from_disk = dill.load(file) + self._items = from_disk._items + self._movies = from_disk._movies + self._shows = from_disk._shows + self._seasons = from_disk._seasons + self._episodes = from_disk._episodes except FileNotFoundError: - logger.error(f"Unable to find the media library file. Starting fresh.") - return - except (EOFError, dill.UnpicklingError) as e: - logger.error(f"Failed to unpickle media data: {e}. Starting fresh.") - return - if not isinstance(from_disk, MediaItemContainer): - logger.error("Loaded data is malformed. Resetting to blank slate.") - return - - with self.lock: - self._items = from_disk._items - self._shows = from_disk._shows - self._seasons = from_disk._seasons - self._episodes = from_disk._episodes - self._movies = from_disk._movies - self._imdb_index = from_disk._imdb_index + pass + except (EOFError, UnpicklingError): + logger.error(f"Failed to unpickle media data at {filename}, wiping cached data") + os.remove(filename) + self._items = {} + self._movies = {} + self._shows = {} + self._seasons = {} + self._episodes = {} - logger.success(f"Loaded {len(self._items)} items from {filename}") + if self._items: + logger.success(f"Loaded {len(self._items)} items from {filename}") diff --git a/backend/program/media/item.py b/backend/program/media/item.py index 2474b820..7d80d05d 100644 --- a/backend/program/media/item.py +++ b/backend/program/media/item.py @@ -1,5 +1,5 @@ from dataclasses import dataclass -from datetime import datetime +from datetime import datetime, timedelta from typing import List, Optional, Self from program.media.state import States @@ -19,7 +19,12 @@ def __repr__(self): return f"{self.parent_id}/{self.value}" def __hash__(self): - return hash(self.__repr__()) + return hash(repr(self)) + + def __eq__(self, other): + if isinstance(other, ItemId): + return repr(self) == repr(other) + return False class MediaItem: @@ -129,6 +134,10 @@ def is_checked_for_availability(self): ) return False + def has_complete_metadata(self) -> bool: + """Check if the item has complete metadata.""" + return self.title is not None and self.aired_at is not None + def to_dict(self): """Convert item to dictionary (API response)""" return { @@ -142,9 +151,10 @@ def to_dict(self): "imdb_link": self.imdb_link if hasattr(self, "imdb_link") else None, "aired_at": self.aired_at, "genres": self.genres if hasattr(self, "genres") else None, + "is_anime": self.is_anime if hasattr(self, "is_anime") else False, "guid": self.guid, "requested_at": str(self.requested_at), - "requested_by": self.requested_by.__name__ if self.requested_by else None, + "requested_by": self.requested_by, "scraped_at": self.scraped_at, "scraped_times": self.scraped_times, } @@ -245,10 +255,10 @@ class Show(MediaItem): """Show class""" def __init__(self, item): + super().__init__(item) + self.type = "show" self.locations = item.get("locations", []) self.seasons: list[Season] = item.get("seasons", []) - self.type = "show" - super().__init__(item) self.item_id = ItemId(self.imdb_id) def get_season_index_by_id(self, item_id): @@ -298,6 +308,7 @@ def fill_in_missing_children(self, other: Self): def add_season(self, season): """Add season to show""" if season.number not in [s.number for s in self.seasons]: + season.is_anime = self.is_anime self.seasons.append(season) season.parent = self season.item_id.parent_id = self.item_id @@ -311,15 +322,10 @@ def __init__(self, item): self.type = "season" self.number = item.get("number", None) self.episodes: list[Episode] = item.get("episodes", []) - self.item_id = ItemId(self.number) + self.item_id = ItemId(self.number, parent_id=item.get("parent_id")) super().__init__(item) - - def get_episode_index_by_id(self, item_id): - """Find the index of an episode by its item_id.""" - for i, episode in enumerate(self.episodes): - if episode.item_id == item_id: - return i - return None + if self.parent and isinstance(self.parent, Show): + self.is_anime = self.parent.is_anime def _determine_state(self): if len(self.episodes) > 0: @@ -358,6 +364,13 @@ def fill_in_missing_children(self, other: Self): if e.number not in existing_episodes: self.add_episode(e) + def get_episode_index_by_id(self, item_id): + """Find the index of an episode by its item_id.""" + for i, episode in enumerate(self.episodes): + if episode.item_id == item_id: + return i + return None + def represent_children(self): return [e.log_string for e in self.episodes] @@ -366,6 +379,7 @@ def add_episode(self, episode): if episode.number in [e.number for e in self.episodes]: return + episode.is_anime = self.is_anime self.episodes.append(episode) episode.parent = self episode.item_id.parent_id = self.item_id @@ -385,8 +399,10 @@ def __init__(self, item): self.type = "episode" self.number = item.get("number", None) self.file = item.get("file", None) - self.item_id = ItemId(self.number) + self.item_id = ItemId(self.number, parent_id=item.get("parent_id")) super().__init__(item) + if self.parent and isinstance(self.parent, Season): + self.is_anime = self.parent.is_anime def __eq__(self, other): if ( @@ -402,12 +418,17 @@ def __hash__(self): return super().__hash__() def get_file_episodes(self) -> List[int]: + if not self.file or not isinstance(self.file, str): + raise ValueError("The file attribute must be a non-empty string.") return extract_episodes(self.file) @property def log_string(self): return f"{self.parent.log_string}E{self.number:02}" + def get_top_title(self) -> str: + return self.parent.parent.title + def _set_nested_attr(obj, key, value): if "." in key: diff --git a/backend/program/program.py b/backend/program/program.py index aae1235e..d612de15 100644 --- a/backend/program/program.py +++ b/backend/program/program.py @@ -52,7 +52,7 @@ def initialize_services(self): self.indexing_services = {TraktIndexer: TraktIndexer()} self.processing_services = { Scraping: Scraping(hash_cache), - Symlinker: Symlinker(), + Symlinker: Symlinker(self.media_items), PlexUpdater: PlexUpdater(), } self.downloader_services = { @@ -126,6 +126,9 @@ def start(self): for item in self.services[SymlinkLibrary].run(): self.media_items.upsert(item) + unfinished_items = self.media_items.get_incomplete_items() + logger.log("PROGRAM", f"Found {len(unfinished_items)} unfinished items") + self.executor = ThreadPoolExecutor(thread_name_prefix="Worker") self.scheduler = BackgroundScheduler() self._schedule_services() @@ -137,10 +140,9 @@ def start(self): logger.success("Iceberg is running!") def _retry_library(self) -> None: - """Retry any items that are in an incomplete state.""" - items_to_submit = [item for item in self.media_items.get_incomplete_items().values()] - for item in items_to_submit: - self.event_queue.put(Event(emitted_by=self.__class__, item=item)) + for _, item in self.media_items.get_incomplete_items().items(): + if item.state not in (States.Completed, States.PartiallyCompleted) and item not in self.event_queue.queue: + self.event_queue.put(Event(emitted_by=self.__class__, item=item)) def _schedule_functions(self) -> None: """Schedule each service based on its update interval.""" @@ -242,18 +244,14 @@ def stop(self): self.pickly.stop() logger.log("PROGRAM", "Iceberg has been stopped.") - def add_to_queue(self, item: MediaItem) -> bool: + def add_to_queue(self, item: Union[Movie, Show, Season, Episode]) -> bool: """Add item to the queue for processing.""" - if item is not None: - new_item = create_item_from_imdb_id(item.imdb_id) - if not new_item: - logger.error(f"Failed to get item {item.log_string} from IMDb") - return False - self.event_queue.put(Event(emitted_by=self.__class__, item=new_item)) - logger.log("PROGRAM", f"Added {new_item.log_string} to the queue") + if isinstance(item, Union[Movie, Show, Season, Episode]): + self.event_queue.put(Event(emitted_by=self.__class__, item=item)) + logger.log("PROGRAM", f"Added {item.log_string} to the queue") return True else: - logger.error("Attempted to add a None item to the queue") + logger.error(f"Failed to add item with type {type(item)} to the queue") return False def clear_queue(self): @@ -266,21 +264,3 @@ def clear_queue(self): except Empty: break logger.log("PROGRAM", "Cleared the event queue") - - def _rebuild_library(self): - """Rebuild the media items container from the SymlinkLibrary service.""" - new_items = list(self.services[SymlinkLibrary].run()) - existing_item_ids = {item.item_id for item in self.media_items} - - items_to_add = [item for item in new_items if item.item_id not in existing_item_ids] - items_to_update = [item for item in new_items if item.item_id in existing_item_ids and item != self.media_items.get(item.item_id)] - - if items_to_add: - logger.log("PROGRAM", f"Adding {len(items_to_add)} new items to the media items container") - for item in items_to_add: - self.media_items.upsert(item) - - if items_to_update: - logger.log("PROGRAM", f"Updating {len(items_to_update)} existing items in the media items container") - for item in items_to_update: - self.media_items.upsert(item) diff --git a/backend/program/state_transition.py b/backend/program/state_transition.py index 61f0d538..558fe93d 100644 --- a/backend/program/state_transition.py +++ b/backend/program/state_transition.py @@ -41,7 +41,7 @@ def process_event(existing_item: MediaItem | None, emitted_by: Service, item: Me if existing_item.state == States.Completed: return existing_item, None, [] if Scraping.can_we_scrape(item): - if isinstance(item, Movie): + if isinstance(item, (Movie, Episode)): items_to_submit = [item] elif isinstance(item, Show): items_to_submit = [ @@ -60,8 +60,6 @@ def process_event(existing_item: MediaItem | None, emitted_by: Service, item: Me items_to_submit = [item] else: items_to_submit = [item] - else: - items_to_submit = [] elif item.state == States.PartiallyCompleted: next_service = Scraping @@ -82,31 +80,34 @@ def process_event(existing_item: MediaItem | None, emitted_by: Service, item: Me next_service = Debrid or TorBoxDownloader items_to_submit = [item] + # elif item.state == States.Downloaded: + # next_service = Symlinker + # proposed_submissions = [] + # if isinstance(item, Season): + # if all(e.file and e.folder for e in item.episodes if not e.symlinked): + # proposed_submissions = [item] + # else: + # proposed_submissions = [e for e in item.episodes if not e.symlinked and e.file and e.folder] + # elif isinstance(item, (Movie, Episode)): + # proposed_submissions = [item] + # items_to_submit = [] + # for sub_item in proposed_submissions: + # if Symlinker.should_submit(sub_item): + # items_to_submit.append(sub_item) + # else: + # logger.debug(f"{sub_item.log_string} not submitted to Symlinker because it is not eligible") + elif item.state == States.Downloaded: next_service = Symlinker - proposed_submissions = [] - if isinstance(item, Season): - if all(e.file and e.folder for e in item.episodes if not e.symlinked): - proposed_submissions = [item] - else: - proposed_submissions = [e for e in item.episodes if not e.symlinked and e.file and e.folder] - elif isinstance(item, (Movie, Episode)): - proposed_submissions = [item] - items_to_submit = [] - for sub_item in proposed_submissions: - if Symlinker.should_submit(sub_item): - items_to_submit.append(sub_item) - else: - logger.debug(f"{sub_item.log_string} not submitted to Symlinker because it is not eligible") + if Symlinker.should_submit(item): + items_to_submit = [item] + else: + items_to_submit = [] + logger.debug(f"{item.log_string} not submitted to Symlinker because it is not eligible") elif item.state == States.Symlinked: next_service = PlexUpdater - if isinstance(item, Show): - items_to_submit = [s for s in item.seasons] - elif isinstance(item, Season): - items_to_submit = [item] - else: - items_to_submit = [item] + items_to_submit = [item] elif item.state == States.Completed: return no_further_processing diff --git a/backend/program/symlink.py b/backend/program/symlink.py index 347cedb8..c3c078ea 100644 --- a/backend/program/symlink.py +++ b/backend/program/symlink.py @@ -1,12 +1,15 @@ import asyncio import contextlib import os +import re +import shutil import time from datetime import datetime from pathlib import Path -from typing import Union +from typing import Optional, Union -from program.media.item import Episode, Movie, Season, Show +from program.media.container import MediaItemContainer +from program.media.item import Episode, ItemId, Movie, Season, Show from program.settings.manager import settings_manager from utils.logger import logger from watchdog.events import FileSystemEventHandler @@ -37,9 +40,10 @@ class Symlinker: library_path (str): The absolute path of the location we will create our symlinks that point to the rclone_path. """ - def __init__(self): + def __init__(self, media_items: MediaItemContainer): self.key = "symlink" self.settings = settings_manager.settings.symlink + self.media_items = media_items # we can't delete from rclone if this is enabled self.torbox_enabled = settings_manager.settings.downloaders.torbox.enabled self.rclone_path = self.settings.rclone_path @@ -106,7 +110,21 @@ def create_initial_folders(self): def run(self, item: Union[Movie, Episode, Season]): """Check if the media item exists and create a symlink if it does""" try: - if isinstance(item, Season): + if isinstance(item, Show): + all_symlinked = True + for season in item.seasons: + for episode in season.episodes: + if not episode.symlinked and episode.file and episode.folder: + if self._symlink(episode): + episode.set("symlinked", True) + episode.set("symlinked_at", datetime.now()) + else: + all_symlinked = False + if all_symlinked: + logger.log("SYMLINKER", f"Symlinked all episodes for show {item.log_string}") + else: + logger.error(f"Failed to symlink some episodes for show {item.log_string}") + elif isinstance(item, Season): all_symlinked = True successfully_symlinked_episodes = [] for episode in item.episodes: @@ -139,8 +157,25 @@ def run(self, item: Union[Movie, Episode, Season]): @staticmethod def should_submit(item: Union[Movie, Episode, Season]) -> bool: """Check if the item should be submitted for symlink creation.""" + if isinstance(item, Show): - return False + all_episodes_ready = True + for season in item.seasons: + for episode in season.episodes: + if not episode.file or not episode.folder or episode.file == "None.mkv": + logger.warning(f"Cannot submit {episode.log_string} for symlink: Invalid file or folder. Needs to be rescraped.") + blacklist_item(episode) + all_episodes_ready = False + elif not quick_file_check(episode): + logger.debug(f"File not found for {episode.log_string} at the moment, waiting for it to become available") + if not _wait_for_file(episode): + all_episodes_ready = False + break # Give up on the whole season if one episode is not found in 90 seconds + if not all_episodes_ready: + for episode in item.episodes: + blacklist_item(episode) + logger.warning(f"Cannot submit season {item.log_string} for symlink: One or more episodes need to be rescraped.") + return all_episodes_ready if isinstance(item, Season): all_episodes_ready = True @@ -153,6 +188,11 @@ def should_submit(item: Union[Movie, Episode, Season]) -> bool: logger.debug(f"File not found for {episode.log_string} at the moment, waiting for it to become available") if not _wait_for_file(episode): all_episodes_ready = False + break # Give up on the whole season if one episode is not found in 90 seconds + if not all_episodes_ready: + for episode in item.episodes: + blacklist_item(episode) + logger.warning(f"Cannot submit season {item.log_string} for symlink: One or more episodes need to be rescraped.") return all_episodes_ready if isinstance(item, (Movie, Episode)): @@ -186,7 +226,7 @@ def should_submit(item: Union[Movie, Episode, Season]) -> bool: logger.debug(f"Item {item.log_string} not submitted for symlink, file not found yet") return False - def _symlink(self, item: Union[Movie, Season, Episode]) -> bool: + def _symlink(self, item: Union[Movie, Episode]) -> bool: """Create a symlink for the given media item if it does not already exist.""" extension = os.path.splitext(item.file)[1][1:] symlink_filename = f"{self._determine_file_name(item)}.{extension}" @@ -217,53 +257,49 @@ def _symlink(self, item: Union[Movie, Season, Episode]) -> bool: return True - def _create_item_folders(self, item: Union[Movie, Season, Episode], filename: str) -> str: + def _create_item_folders(self, item: Union[Movie, Show, Season, Episode], filename: str) -> str: """Create necessary folders and determine the destination path for symlinks.""" + is_anime = hasattr(item, 'is_anime') and item.is_anime + + movie_path = self.library_path_movies + show_path = self.library_path_shows + + if is_anime: + if isinstance(item, Movie): + movie_path = self.library_path_anime_movies + elif isinstance(item, (Show, Season, Episode)): + show_path = self.library_path_anime_shows + + def create_folder_path(base_path, *subfolders): + path = os.path.join(base_path, *subfolders) + os.makedirs(path, exist_ok=True) + return path + if isinstance(item, Movie): - movie_folder = ( - f"{item.title.replace('/', '-')} ({item.aired_at.year}) " - + "{imdb-" - + item.imdb_id - + "}" - ) - destination_folder = os.path.join(self.library_path_movies, movie_folder) - if not os.path.exists(destination_folder): - os.mkdir(destination_folder) - destination_path = os.path.join( - destination_folder, filename.replace("/", "-") - ) - item.set("update_folder", os.path.join(self.library_path_movies, movie_folder)) + movie_folder = f"{item.title.replace('/', '-')} ({item.aired_at.year}) {{imdb-{item.imdb_id}}}" + destination_folder = create_folder_path(movie_path, movie_folder) + item.set("update_folder", destination_folder) + elif isinstance(item, Show): + folder_name_show = f"{item.title.replace('/', '-')} ({item.aired_at.year}) {{imdb-{item.imdb_id}}}" + destination_folder = create_folder_path(show_path, folder_name_show) + item.set("update_folder", destination_folder) elif isinstance(item, Season): show = item.parent - folder_name_show = ( - f"{show.title.replace('/', '-')} ({show.aired_at.year})" - + " {" - + show.imdb_id - + "}" - ) - show_path = os.path.join(self.library_path_shows, folder_name_show) - os.makedirs(show_path, exist_ok=True) + folder_name_show = f"{show.title.replace('/', '-')} ({show.aired_at.year}) {{imdb-{show.imdb_id}}}" + show_path = create_folder_path(show_path, folder_name_show) folder_season_name = f"Season {str(item.number).zfill(2)}" - season_path = os.path.join(show_path, folder_season_name) - os.makedirs(season_path, exist_ok=True) - destination_path = os.path.join(season_path, filename.replace("/", "-")) - item.set("update_folder", os.path.join(season_path)) + destination_folder = create_folder_path(show_path, folder_season_name) + item.set("update_folder", destination_folder) elif isinstance(item, Episode): show = item.parent.parent - folder_name_show = ( - f"{show.title.replace('/', '-')} ({show.aired_at.year})" - + " {" - + show.imdb_id - + "}" - ) - show_path = os.path.join(self.library_path_shows, folder_name_show) - os.makedirs(show_path, exist_ok=True) + folder_name_show = f"{show.title.replace('/', '-')} ({show.aired_at.year}) {{imdb-{show.imdb_id}}}" + show_path = create_folder_path(show_path, folder_name_show) season = item.parent folder_season_name = f"Season {str(season.number).zfill(2)}" - season_path = os.path.join(show_path, folder_season_name) - os.makedirs(season_path, exist_ok=True) - destination_path = os.path.join(season_path, filename.replace("/", "-")) - item.set("update_folder", os.path.join(season_path)) + destination_folder = create_folder_path(show_path, folder_season_name) + item.set("update_folder", destination_folder) + + destination_path = os.path.join(destination_folder, filename.replace("/", "-")) return destination_path def start_monitor(self): @@ -283,15 +319,56 @@ def stop_monitor(self): self.observer.join() logger.log("FILES", "Stopped monitoring for symlink deletions") - def on_symlink_deleted(self, symlink_path): - """Handle a symlink deletion event.""" - src = Path(symlink_path) - if src.is_symlink(): - dst = src.resolve() - logger.log("FILES", f"Symlink deleted: {src} -> {dst}") + def on_symlink_deleted(self, src: str) -> None: + """Handle the event when a symlink is deleted.""" + logger.info(f"Symlink deleted: {src}") + src_path = Path(src) + imdb_id = self.extract_imdb_id(src_path) + season_number, episode_number = self.extract_season_episode(src_path.name) + + if imdb_id: + item_id = ItemId(imdb_id) + if season_number is not None: + item_id = ItemId(str(season_number), parent_id=item_id) + if episode_number is not None: + item_id = ItemId(str(episode_number), parent_id=item_id) + + item = self.media_items.get(item_id) + if item: + if isinstance(item, Episode) and not item.file: + logger.error(f"File attribute is invalid for item: {item.log_string}") + return + self.delete_item_symlinks(item) + self.media_items.remove(item) + logger.log("FILES", f"Successfully removed item: {item.log_string}") + else: + logger.error(f"Failed to find item with IMDb ID {imdb_id}, season {season_number}, episode {episode_number}") else: - logger.log("FILES", f"Symlink deleted: {src} (target unknown)") - # TODO: Implement logic to handle deletion.. + logger.error(f"IMDb ID not found in path: {src}") + + def extract_imdb_id(self, path: Path) -> Optional[str]: + """Extract IMDb ID from the file or folder name using regex.""" + match = re.search(r'tt\d+', path.name) + if match: + return match.group(0) + match = re.search(r'tt\d+', path.parent.name) + if match: + return match.group(0) + match = re.search(r'tt\d+', path.parent.parent.name) + if match: + return match.group(0) + + logger.error(f"IMDb ID not found in file or folder name: {path}") + return None + + def extract_season_episode(self, filename: str) -> (Optional[int], Optional[int]): + """Extract season and episode numbers from the file name using regex.""" + season = episode = None + match = re.search(r'[Ss](\d+)[Ee](\d+)', filename) + if match: + season = int(match.group(1)) + episode = int(match.group(2)) + return season, episode def _determine_file_name(self, item) -> str | None: """Determine the filename of the symlink.""" @@ -316,6 +393,40 @@ def _determine_file_name(self, item) -> str | None: filename = f"{showname} ({showyear}) - s{str(item.parent.number).zfill(2)}{episode_string} - {item.title}" return filename + def delete_item_symlinks(self, item: Union[Movie, Episode, Season, Show]): + """Delete symlinks and directories based on the item type.""" + if isinstance(item, Show): + self._delete_show_symlinks(item) + elif isinstance(item, Season): + self._delete_season_symlinks(item) + elif isinstance(item, (Movie, Episode)): + self._delete_single_symlink(item) + else: + logger.error(f"Unsupported item type for deletion: {type(item)}") + + def _delete_show_symlinks(self, show: Show): + """Delete all symlinks and the directory for the show.""" + show_path = self.library_path_shows / f"{show.title.replace('/', '-')} ({show.aired_at.year}) {{imdb-{show.imdb_id}}}" + if show_path.exists(): + shutil.rmtree(show_path) + logger.info(f"Deleted all symlinks and directory for show: {show.log_string}") + + def _delete_season_symlinks(self, season: Season): + """Delete all symlinks in the season and its directory.""" + show = season.parent + season_path = self.library_path_shows / f"{show.title.replace('/', '-')} ({show.aired_at.year}) {{imdb-{show.imdb_id}}}" / f"Season {str(season.number).zfill(2)}" + if season_path.exists(): + shutil.rmtree(season_path) + logger.info(f"Deleted all symlinks and directory for season: {season.log_string}") + + def _delete_single_symlink(self, item: Union[Movie, Episode]): + """Delete the specific symlink for a movie or episode.""" + symlink_path = Path(item.update_folder) / f"{self._determine_file_name(item)}.{os.path.splitext(item.file)[1][1:]}" + if symlink_path.exists() and symlink_path.is_symlink(): + symlink_path.unlink() + logger.info(f"Deleted symlink for {item.log_string}") + + def _wait_for_file(item: Union[Movie, Episode], timeout: int = 90) -> bool: """Wrapper function to run the asynchronous wait_for_file function.""" return asyncio.run(wait_for_file(item, timeout)) @@ -397,6 +508,7 @@ def reset_item(item): item.set("streams", {}) item.set("active_stream", {}) item.set("symlinked_times", 0) + item.set("scraped_times", 0) logger.debug(f"Item {item.log_string} reset for rescraping") def get_infohash(item): diff --git a/backend/program/updaters/plex.py b/backend/program/updaters/plex.py index fe6469dd..9787fa04 100644 --- a/backend/program/updaters/plex.py +++ b/backend/program/updaters/plex.py @@ -63,53 +63,56 @@ def validate(self) -> bool: # noqa: C901 logger.exception(f"Plex exception thrown: {e}") return False - def run(self, item: Union[Movie, Episode, Season]) -> Generator[Union[Movie, Episode, Season], None, None]: + def run(self, item: Union[Movie, Show, Season, Episode]) -> Generator[Union[Movie, Show, Season, Episode], None, None]: """Update Plex library section for a single item or a season with its episodes""" if not item: logger.error(f"Item type not supported, skipping {item}") yield item return - if isinstance(item, Show): - logger.error(f"Plex Updater does not support shows, skipping {item}") - yield item - return - - item_type = "show" if isinstance(item, (Episode, Season)) else "movie" + item_type = "movie" if isinstance(item, Movie) else "show" updated = False updated_episodes = [] + items_to_update = [] - if isinstance(item, Season): - items_to_update = [e for e in item.episodes if e.symlinked and e.get("update_folder") != "updated"] - elif isinstance(item, (Movie, Episode)): + if isinstance(item, (Movie, Episode)): items_to_update = [item] + elif isinstance(item, Show): + items_to_update = [s for s in item.seasons for e in s.episodes if e.symlinked and e.update_folder != "updated"] + elif isinstance(item, Season): + items_to_update = [e for e in item.episodes if e.symlinked and e.update_folder != "updated"] + if not items_to_update: + yield item + return + + section_name = None # any failures are usually because we are updating Plex too fast for section, paths in self.sections.items(): if section.type == item_type: for path in paths: - if isinstance(item, Season): + if isinstance(item, (Show, Season)): for episode in items_to_update: if path in episode.update_folder: if self._update_section(section, episode): updated_episodes.append(episode) - episode.set("update_folder", "updated") # Mark the episode as updated + section_name = section.title updated = True elif isinstance(item, (Movie, Episode)): if path in item.update_folder: if self._update_section(section, item): + section_name = section.title updated = True if updated: - if isinstance(item, Season): + if isinstance(item, (Show, Season)): if len(updated_episodes) == len(items_to_update): - logger.log("PLEX", f"Updated section {section.title} with all episodes for {item.log_string}") + logger.log("PLEX", f"Updated section {section_name} with all episodes for {item.log_string}") else: updated_episodes_log = ', '.join([str(ep.number) for ep in updated_episodes]) - logger.log("PLEX", f"Updated section {section.title} for episodes {updated_episodes_log} in {item.log_string}") + logger.log("PLEX", f"Updated section {section_name} for episodes {updated_episodes_log} in {item.log_string}") else: - logger.log("PLEX", f"Updated section {section.title} for {item.log_string}") - + logger.log("PLEX", f"Updated section {section_name} for {item.log_string}") yield item def _update_section(self, section, item: Union[Movie, Episode]) -> bool: diff --git a/backend/tests/test_container.py b/backend/tests/test_container.py index 1433d0a4..56dca886 100644 --- a/backend/tests/test_container.py +++ b/backend/tests/test_container.py @@ -67,10 +67,10 @@ def test_remove_show_with_season_and_episodes(): container.upsert(show) container.remove(show) - assert len(container._shows) == 0 - assert len(container._seasons) == 0 - assert len(container._episodes) == 0 - assert len(container._items) == 0 + assert len(container._shows) == 1 + assert len(container._seasons) == 1 + assert len(container._episodes) == 2 + assert len(container._items) == 1 def test_merge_items(): container = MediaItemContainer() @@ -90,7 +90,7 @@ def test_merge_items(): new_show.add_season(new_season) container.upsert(new_show) - assert len(container._items) == 4, "Items should be merged" + assert len(container._items) == 5, "Items should be merged" assert len(container._shows) == 1, "Shows should be merged" assert len(container._seasons) == 1, "Seasons should be merged" diff --git a/backend/tests/test_states_processing.py b/backend/tests/test_states_processing.py index 123638f8..fd7c6d35 100644 --- a/backend/tests/test_states_processing.py +++ b/backend/tests/test_states_processing.py @@ -160,6 +160,13 @@ def test_process_event_transition_shows(state, service, next_service, show): # Given: A media item (show) and a service show._determine_state = lambda: state # Manually override the state + # Ensure the show has seasons and episodes + if not hasattr(show, 'seasons'): + show.seasons = [] + for season in show.seasons: + if not hasattr(season, 'episodes'): + season.episodes = [] + # When: The event is processed updated_item, next_service_result, items_to_submit = process_event(None, service, show) diff --git a/backend/tests/test_symlink_library.py b/backend/tests/test_symlink_library.py index e71ee913..cbce3f2a 100644 --- a/backend/tests/test_symlink_library.py +++ b/backend/tests/test_symlink_library.py @@ -17,6 +17,8 @@ def symlink_library(fs): library_path = "/fake/library" fs.create_dir(f"{library_path}/movies") fs.create_dir(f"{library_path}/shows") + fs.create_dir(f"{library_path}/anime_movies") + fs.create_dir(f"{library_path}/anime_shows") settings_manager.settings = MockSettings(library_path) return SymlinkLibrary() diff --git a/backend/utils/request.py b/backend/utils/request.py index 5a237f4a..f90c2205 100644 --- a/backend/utils/request.py +++ b/backend/utils/request.py @@ -34,8 +34,16 @@ def __init__(self, response: requests.Response, response_type=SimpleNamespace): def handle_response(self, response: requests.Response) -> dict: """Handle different types of responses.""" - if self.status_code in [408, 460, 504, 520, 524, 522, 598, 599]: + timeout_statuses = [408, 460, 504, 520, 524, 522, 598, 599] + client_error_statuses = list(range(400, 451)) # 400-450 + server_error_statuses = list(range(500, 512)) # 500-511 + + if self.status_code in timeout_statuses: raise ConnectTimeout(f"Connection timed out with status {self.status_code}", response=response) + if self.status_code in client_error_statuses: + raise RequestException(f"Client error with status {self.status_code}", response=response) + if self.status_code in server_error_statuses: + raise RequestException(f"Server error with status {self.status_code}", response=response) if not self.is_ok: raise RequestException(f"Request failed with status {self.status_code}", response=response) diff --git a/entrypoint.sh b/entrypoint.sh index 5d97d470..1dc12498 100644 --- a/entrypoint.sh +++ b/entrypoint.sh @@ -18,21 +18,36 @@ set -q USERNAME; or set USERNAME iceberg set -q GROUPNAME; or set GROUPNAME iceberg if not getent group $PGID > /dev/null - addgroup -g $PGID $GROUPNAME > /dev/null + addgroup -g $PGID $GROUPNAME + if test $status -ne 0 + echo "Failed to create group. Exiting..." + exit 1 + end else set GROUPNAME (getent group $PGID | cut -d: -f1) end -if not getent passwd $PUID > /dev/null - adduser -D -u $PUID -G $GROUPNAME $USERNAME > /dev/null +if not getent passwd $USERNAME > /dev/null + adduser -D -u $PUID -G $GROUPNAME $USERNAME + if test $status -ne 0 + echo "Failed to create user. Exiting..." + exit 1 + end else - set USERNAME (getent passwd $PUID | cut -d: -f1) + usermod -u $PUID -g $PGID $USERNAME + if test $status -ne 0 + echo "Failed to modify user UID/GID. Exiting..." + exit 1 + end end set USER_HOME "/home/$USERNAME" mkdir -p $USER_HOME chown $USERNAME:$GROUPNAME $USER_HOME chown -R $USERNAME:$GROUPNAME /iceberg + +umask 002 + set -x XDG_CONFIG_HOME "$USER_HOME/.config" set -x XDG_DATA_HOME "$USER_HOME/.local/share" set -x POETRY_CACHE_DIR "$USER_HOME/.cache/pypoetry" diff --git a/media.pkl b/media.pkl new file mode 100644 index 0000000000000000000000000000000000000000..0b217eef1261ef2e9aebad6c20071a39c80fea9c GIT binary patch literal 1376984 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˔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

u#gdlR*~g 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˔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

u#gdlR*~g zimvr_2&cNTNLO^Nmq!&i_@=~EYcO-?Y)j}`we;u?ZaAF(Y0O#<8*Yl+(36rRky=@ucO;x1KkdFbm`b6 zN4n1P82%w(yry>zy0P5_6oFn~Fc<_zfPKLzFcOr2F`yDm1jm76!0F%wa3MGoTnR1) zw}7j`ec(2*5Ig`@f<@qEunN2dR)degI`9qn1pEfR15I;6WP!GzIoJlY1G|82K|jzP z(8vmCoCQ6>4q#W%8w>%vgM-2TU@SNkOae!NDo_q)gKBUVI0;+=&H>kedEj<%9e5Dj z2^NF-;AyZFtO3u0cfeZkDR>X82cLs%cK-*qTCmj+vxG)0aIooAj_BdBUTBM<(@KvnF3&%xVp?fM{>b90;*#=diJRO9hC{91RL z8r{eyWYZISdz6(eNJVxxkFv4>smNO2)!^_PmhDGH*7|K{4rOKYQIQ?u@idUFM@4p| zM_Ji;RAj9e@jE;XWZO}Z-P+^G%BG`PcJ@ymWo66JEPJB$t&0v%1KDt_l_iZQx9i-8 z%|8Tud~hT<2$X`cU@Djdjt5oX3@{s91kM6iflI)x;2Lm0xE(wW9t2N;#o!h2bci|` zF?@i*z~24(^fuk=Juv&kBTT14iip_y(CXr<{3D91rVYy9tD>Z`inZix`FQP)?;4{- zI9$UYWE2iVePeAIp&z`)r@9J<1G7)EUVi&QLSRnR7&^>_3~uUN7<#{KI_^=S){VD} zgg?}nMn%HV)B0IMZaifgR6JMt8BZAm70-wLc*+c@cz))`Q^r5V)A~L>H|M8Jev0Rt ze#TRVKE<=zkEhIgil_D6k#3H=jCzWvbtm49r%ZW@=VgA5y9{`>o&>z)cAbF7KLm_W zupWF48s>)hiLI7wH3l6(Yp^}&1bTrT!5~lw_656vkzhYC1{?w=f^py&P!?jtfLBm7 zu&8%`!##robAL20--t*^^Z++MtgJMD@A66cdly$s$`AibWz{S)-gFGKj8`L-$avHE zgN@F3kx%s**reqJrgI}=7lIjlth12Uq}4o=KvY;dB_WV%93AF72H24EnzTCAo4Sm8 zm)6KeM!hDj+IdrzX-`qLezB0V6G8?)MRmBhQI(lbQN7ojs*HV#>fzp0W%5&0=Xg_< z;ZISuej~B7ua(Syit4T2MpZ^YMb-L|H_k>?ra(n?2XCV)gP@{1(3`4UR;Z{JcvF>2 z3KiAkys66Ngo>*5>(QKjt>jWdMYYP?sLEx8wW`!t$?d4?{sWsdH@+6pQR+{91Jb}I zEsnGuwf&n=cGPp~=jJ0V^|!F@N;^}Rsef!ZDyeQf3P-uCw^5dlo&E2`&v zQUeJ_ zfV@elR+YLxxgA~ixA@T{?Wpc=Sa#sJxm}~LL$%z>BoKAAZ)DRL>i&isQTMmBzLCwD zx~%(4!cj?G_qVjZ0n?ePtos$!!@QjkvhG(@tsm#?Y*c04Z&uB_&)cZVx?fRU=}lGE z{fg=>-c)7XZ&qz-J?A?+S7qIAR?V|cQqELm-EUTHInmn*AnSg!YM%AlUT32!>wdFp z%LBZPs;v7J)hutSvhG(@dwElpb-!6P&$>c&cCO00->llw`XahBRay6&Rr5agb^^${ zUs1i(o2sn)71i&(smi)vQGLvts;v9Xsx9~OrYh@xMYX9nRay7fs#5nSww zNjs|h8>O!MbAPs;jgD*QDdirYh@xMfGiOsqBHH>>{isy9_x_nTFJKF*t}tos$!N#0at-EUU?$@;;!&VH<9-EUU?d8)Tj zm36X=Qg`;WEeb{TW^bypMWLu#r+#NAfNW7Hs_%IlRoS9YRF`{Gl`RTI^)KF3Ws5>l zwO*X$>|B*C3PshrLUpDpTNGy1>@B>V0J244R?Rxao2qP4D5}=iP@SCsvPGe&Ugd36 zWs5>ly~LZUY*8qx)~hI-odB{$p{QElH1AARwkXW1+1cJs0NJ82t7dicrYc($is}pA zRAq}oQGMN;s%%lzs?wrJZb!B#nq(VqP;}Iy$T74i8Z5LOwG&&!(4xrMh!#a7>wBi1 zsmm6{#o?%=Zc#KE>}`}~i^8m$ZCy(_8&%n&Fsn9v&D*HT7KK^0f%Wq;osFt&QJ7U5 z{_Jg3WsAbB+Q|C3Db7Y!wkXW14RXDWs%%l1RU1CwO;xri6jkfc=j;TKEef-0gM+<| zs%%jxs@6-soQ zD5}=Al(SKlEef-01M3RanW}72m{l82@pb~p7KNgEp*L08qEJ-#_ogaa6lT>%)^|`k zJ6C0k!mQe$+S{ng7DcTpEsErJbc>>K7n8K37DcY1MUiWLqsK*gF|;UhH=;$6)7~_8 zQFl)`QdQ+7x3Pp8{H&xl9FsnAUUXbkUT$L>fvuYFT zx1=~zl`RUhYVI@MP5{}WFstUQ^rk9X6pHE~Z>q9IVOGs;?oCy;C=^wHzpJuEVODMO zA8(^7TNGy1rUl+qWsAbBnmfvys%%l1Rh#B{QvjIlMpd>b%&Iw`cpFvOqEJ+C^rk9X6pE_#OP!pZ0J244R?YR7S7nPrQT@u> z2_Rb(wW_ozlG~9jirk;CGf6vYQ8Y>2qR9Q#I_2NgGKLmK6TL-|`|HD|v5RU^I8&D` zibujxN!g;v{ndJrr!!UAqEJ*vdmB~RqEJ+=fAXD;s%%jxs@CsDbEYa=6lT?5tmk}Z zs zYl*i}l`RTI)p~WBvtIz&qEJ+=*QPjAl`RTIb*Z-#K(;6p)gIndWs5>lwZ1Xg*$E(9 z6lT?5te1Q_QlweC_o8&%n&P*f|ujjC)>m{ouA zR|UuxMXf3=isW`=i=xTqN1MjiQH!E!>J~+lw&$4yqU!vITgA|#XsWj;nzXfkd$%)n z*`jzR9F>$UiY9HXZI!csglthLs$IRQ$`*y9YW*w2l`RUhY8&gPB{~~b*`hG3Zf;%o zJ5!Y{3Pp7%Zzq6kQJ7U*TQ8$=Hmb5kp{TC(Hmb5kVOHJD-)tpY6pHFw-bPinD9oyD zj5o?gU14!{uF4jLqFU~4RAr08th%{%i^AEc$`*xLb+d!KjjC)>m{r?Ywm{m7x;Z0SxD9oyDtY7Br>;#Z43PtsN z)2PnN&dSc>KlM6o$zDaRGrfxBc66_z=~$D!qh3XGL$9Kl^}~GL+AM}%Me~j5RW!4n zrkttEUd318sHE;yG|w{~=BRVinX2qnm{pri@}??#6^g3ycBy(DRoSahRIO)JXD5K{ zRVb=e-cA77t58&pzn=Aa0?1y4qI##dQI)+4MYWALRoSaBt2Vdp06F_w$zFw7wb_&2 zMpgDI{=d2Nj<2FvA2*OjC;==WMF>ijl0xsjYgAB*3K$@8vQ$Hmi;9R{#7eL?#NMvg zf@1HDqSC=aFBXcOqWIetwfU{RI5 z3bksPze0{X~$%XSV;RrV^>s%7SerYd_C8rAPYQXV5+iLp;0wnunJ67_9`^0bwm4D$zFw8wQTdyRAsM1ty;$T^$CI9 z0J236~D3boJtP=3b^7kBPp+!+n-=au5_V&qz*J?6LZfQ@O3%PlWs5?iS}U}BRkkS9st1jCDFqf)*`m;>J{Ve5 zWs5?s`nU0;lz~N6wkXu92aR7u6_~1QQK(h_Hhz>cFjd*2(5PmFcCX47g+}%C&{SoM zLZfQ@98F+1fNW8yRS!NNT2y6=Laq9@@v{kmMOC&a)T##$gceoVqEM^;eQ9W_vPGd* zJ@`v#sy17Cuz;A^l4YzGIx&mgg^i@z9EVpJN`0LO#+peD!!4M7Lc z9P|dAzyQz}30(C(RkPhmDb|4e<1RcQHpf|Vx3;<)mFpvjw z!E}%ht_L%~954$!0Oo=x!9(CB@HBWEEC8Q@cfm@q7;FHm!4F^)_#Ny7B~Ng%mk}@D zb$BVYGaclESzsoZ3uc3dz@6Y}@Gw{ao(1oMSHWWNK3ENwf=ys8*a^0Py z>}Qn1C;?Oj6+s8=M3h zgHu5(&=hn9ZNM3zI~WYk1S7$DU;@Yi)4(KfHMkVq0vojyu1D*$ugV(_e z;3M!R_!4{qz6Q&|cJM9u8GHx+0>6UNeC+>bbUdRnpe8sGGz6)jIcNkrftH{z=mO3K zr-KW@ATSn;02hPtU?%tvm<_H1cY>S2!{BZ}KiZ-9?d%5Iz@Ok3ki^ISAfw|LC4-Z} z37`R}1)71=Ku6F5^Z}j0IiMdH4h8}TWP>SS9Jm5Z1vi2#!5!cxFb~`Xo&od0E8scs z9#{yLfDgbL@HyBF)`4AME4ZMvi{9Woa5fkNhJieg3#Nm7a6Om-=73q?0WcRl2_6D3 zfv3USU;+3HybD%>#b5(i4SoQd!0%uuD4FbHFQamd;y@LU0!{%{K@(61v<7LQ8)yr% zKo2kqoCQXJAz&gH4K4u}fos5J;8t)QxEI_G9s~D-|A8mK8{kFoF?b6s1D}F#zzVPf ztOvh<@4-Rv8%SmFdmEo{{a)hRp1hEGq?ua4Q>UGfP2Az!DHYx@IUY&cmsR^J_cWbWq`+w9Uf_R zJ_YZ9RbUC&2-bif!DjFW*ab=vh<%L8Gl~Z%fePSMPz^K%bwL}D4!VPO;7rgHoCnSZ zIp6{?35)@kf;@07m=10O*Ms}O9Pl`J0K5R61aE?uz$f5s7m?(KGYh5{G>DX&ot&TF zrbT9Ev-I?WNJ`d}5s`|A{?+l3%H7H&?MO^cPHkJ_WaZ;69;<{|k%qHR>X$uc%Czhz zle5QXw@p2L;>9_sxsy`|W#<({8aWAW?h|P|yKW>uf70Z(X=ziZPHmbye$ zf9^2U{na{q{T{VjtLh(*-@{4d$2QE0G|D=PAKoX@H`1?P$*8NHZA+X|NhRR5+Id`| zfHIgGwa5?x(umQD_1}@zRE9#*x%1`8C2tIyq_r8&!1ci)%Z3E_kNHIqH5pTKZNTmS4B0x zzlG~7mqs%;Yx>!TW9;~f&ge%|CFsoM9HPT|H^u9O!0(j_e#d#5%hU#Kz`Q7>H1 z;l@{{HX7d@;rhx=?!~^OVnyS__TrJ7IV6M5i{L5n4tNDD0`GxUU*5 zzs-AXp}_waz5thK39F)ynRLklRmi;hKz@y7dcX6Kqvs-W(k0K@Hk1jy#_%57hBAfM z7~W#rP$umf!%u7*$~0YLXnba;-%pB6%r%DNZO2fi;u^!ZZ5ztuyV#KArD&Y}&w~W~ zfx~rkegK=mUa%X)Rd%tTQ3|63P!&`JbwG8H2I_&fAOrLO?Ohx;A-mhDTC`}^sztNr zitSV>Uo2Mz&0|($K929=t7m4H_o zvL_~K2wR$TX~=T(N7Mhct4u@Ut0>m^QkH#XFOD(|(YW1d&rPNwYPaRf?77J_MB~=g zo|{ZV)Nad+%ZGpexs_>%+HLtzdvTL#h{o+!du}ofQM)ZOK63NlUsIWesNI%NwHG&; zhG^W3*Qft|++-S}c3Wor#LmBWlW9n?8)-<<_^@>_{=ngLI;27obO7{~*;U^>VL*Mk{=9LXU8b0T0km;%OuE5KB6Be)XW z0d4~Gz+K=OFdw`Eo&)cJgJHLDi%8FPcXny2?zvMwy#2P{4eWX4kC@W&M;Fgape~M*A ztQOpQm1RL$5o-k3S{9TQu|`mt;>RFakQK2;@OaA+lohc?u!ChmSrKalYg!hR6|q`y z%Sy|FvLY@Pq#`aFdsoC;l?7=)6>;>#O4=oEGv43-WYw5e#GFo|tBAMtGrhPzg=Izj zrW=9i74bIX_a*xjlohc?FxzqjWkswJe8IAytcW#&11$^6idZA~zGXpK5vv8a8=oQK z^FtylVzuD58I~g`D`Jh{Zp(tQB327-Z)sUjR>W$-ZF4LO%8FPcIM1@6tcW#&D=Z7j zidZeUy|ZOOSrKaljbC5w^LtQM#2UfImLn)DVzuD5&6WjaMXVOwZhU;2&r2*TVzuD5 zeU>9AD`JgcN6Uh;B327-KgF`3tccZu+oo6+lofHYAQf@Z*t;VBX1GchYcJ z62CQWZ~U)X%qrseqo|0#U8IVbSIf<(u&jtbbR!VGBK|htvY@PpHG;W$-Z?;($ zlohdB@LS_YtbE>svLe<9cDEcsSrKaljW;FxjG(NDHG;;^fcX@Z6|qLpv3!YTMXV8g z)Uu$gh&6)7PjdRa#IhnT7NjCB8hcm78Pctvwz^_W$}2}e;8Z~U+6 z-RDzSR>Vu(2t==lHyT$XJ_Th(tQOp0e2#}tL0J*21veURXY?s3D`Jh{D$DnvtcW#& z<17oxidZ9fv1LJ75o-jEcTM}e2W3U95j1`YnNLAk5o-h=vwVqVMXV7t-Ui?^g0dpk z2zId?L0J)N1n;vfC@W%(;0VitvLaRsZg|PEpsa{Bf=^i%lohdBaHH{dD4(BVSrMxR zH#}%Lg0do33vNueEGR2tjiB+789pzutcW#&w_A>&tcZ&RDL9M9-Ua8zzg4OM6`YBR zf^(Bnz-vWwL5-LdoQX$KaBem}Nx`SEEI2=NBM`md-1LmYf>R@SsbxV~aB2jNUl-={9+U;AT5z-RJ_VnG zvfxw;ZrWt|63c>9BWT<{_ZdN1aB2jV&mG1fACv`Wu^`n*(b&5h*=%F^D@jp}Y%zY~ z@b;5qR*fVbMK!X;_=HfO!m=89%#A?wYGm^}rk`J*g0dP>3vNlWEGVlHjo?7bg0dP> z3vM<(-_qwLmeq(x(0J*=r=YAxG=jz*EuVt28c_>wsc!iml+}n@aPwc51!Xm&7TnUt zvY@O+G=j#*==!_|Wi_G}+-zL3`xKPbh(^%(Fl?WKvKr9{8t+r^DJZKEjo^CA9}-!O zs0FulwJa#B5sjenQO-Uuv8+al1xfac#@@;Px4Tra3~1@0v?AGGZ`_9-SuouR|{@9$#Mi` zvac3gf0JcFne1x>|FkS9lYNcgLzV?)vab>R*|MNa_BDdWd5q6bu}tRt`x-&xgR6W-P$v5t!S5_bP$v5tLF1-}&j`w7UnBUsz% zl*ztEaGK=^%B2U5;4sUAa<5ylAmvig*t=ZX@tR6CpmHf$Q7(N~OC{h{ee|srvvMi< zD9WYp&bBNp%cWs%1frKq-x(kO>NBFUT+#>{pVRGAP?k#?!Csaxu`HJ~f|-^DWx1pl z+;Pydpe&cvg5Q;~EGWw*jiB)>DSUoNWVxgfJi&4VWx1pgY-m|fmP;Bz<5zb3yu`9x z(g;ql96?zw6$_Hb6pasiK{n4kJ3LkGyboRjUx1InS6~^~2EGA5fgRva@C!(CAGCE2 zGCGb?GB_EW02+W=pcyy~bObFxAJ7?`1NwpCU?6ZnHkbm&fh)jNa3i=9+yQO^^T1u; z889Eb0-ggTat_J1GX;zTSAuEaCU7;l3)}+cgL}Yp;8Cy;JP$qquY=FQM_?WJ5^M!u zgFRq7H~@YIiEa+!{Kcpeqtc)TI3CmoH9;n52s(h~pf~6Qc!XITKrWaL z^1=0B2ABh8fd{}`@FaK$yab*GY)*36pXGc4-UchdVz2?M20wsJ;CHYSlyvvOIC~kD zV-yFffD~{Fs0x~ZI-oU31KmJdkOg{xA>b@93Y-rng3;g-a1po$Tn26h*8$dD99DLm zN5H+{f8Yu526z#C4Bi6Ez^C9FumbD=>%lMJdvFl^29mj@N`MnUSx^g92B(4Apap0Q zI)hfAALt4Of-^ui7z{W?-{E~F&WqqF@D6wdECTO=RbUC&2-bif!DjFW*ab?thqycY z7?o!f4^9FVz^R}bXbS3rHXt2z2kpR_peHyFoDFio1z-{w11<%5;94*p+y<@(_klU! zaqs}(j6{c%K%LjY3*Zy*Hdqcm1K)y`;5)DZ{0e>me}msa8NMP*f)hbGkP51RM&K0C z5;Or_Kx=S1=mrLXEHDBL0pr0a@E!xH-l@y-QZU62)Gyg7d!@dZ=k~~WSytM z!{Al$U+_M74J-v8g012h2bK{L<` zbOilDA21Z010rBJm<$|nIhX=&09Swla3gpS+yR&l9Wnyv0x$sNf(t=D7z<{Ai@_`~ z6U+s(!9(Cq@HBWBECA1fcfqS*F?b)W21~&vu+~K+x#7%$=>-iUGD$lUlao{1mEWs8VaTKHkmbHYv2@q${HYViXHO`IG;+4_ zV;j$|8_Ca~G`VeB+SI92o92!mHKOUriR07qbMwdLr2U^sT7jEAY~e4YWku4nA{kkc z%&bVWtVr{$NQ)A@S&_C`k#_DscNpsaDxJN&4=B5f9^TG&er&_6NTaNy z_~CsbeIxz)m5kmlDgWmJ)0FI&LV+WKr%{OvArO5c=M}m%{paGkW+_MhQ(;tTMYtFG zOs|0bd9Phx*(^y)RWwV=|7pC-&|f@duSDZ#yiL=epKO(A{GPRYePyRa#orOxE}rA6nt>`pUIr zwclSA?Z!_oC9D1ZjM(*)E6K%vbYP3d-lfq#<$6FsrBNwGX|&Jy(eZU|Y4HEml>wDT zrQC&N3QkpNw7-+-rS<14OQT)N(rAAjyMD4X()bxaWb7|~vNY28U0^qUvNTfr?b~M8 zPnJd+zrA+-WND=K+uz@=pDc|ueogH9$eMQy>tBi%AL0X<@k!1jh8=Q{Iu@VwPTgz^R97S zj(^~M(@X2mSLXO{yT5<*<(UI>?E1+ZU*q>5yM8jq*Z3KqNayeR${b(gmt!}6GRN2W z&9v($b9{~8M7w@6$Jh87FR%K$|74D@@yoIsKbhle{ESaE^%p;x<7@n8*^Qsf@il(6 z?fS_azu1q|rD%NE22pYuhpNK)5o`wgz#b6qPL0k1Mim$(f@+`=s0(UM24)>e$CU^;a2HpiL!D6rh ztOh@TP2hL16O=r~#a>3`7{!4qAO)NPs)8n<4rmS1KsV49(D`*}%{vK<{$z9XFR)?dbu&x?_MgBD%`!)gTLTw_mcZ7w2w3V6`bDu*noB~Az*wC!8wHj z(c&0Tx8B{>{44@_02 z`Wn^Nq1^y7>({6nAJ-FDRAm96Q8hkkGB8zH3#e7w8$Z()n5rxbG^)nC8Us_66@o@} zM`#}_Su7N*l1vtjJ^EnoH*72At}c&U;NMK7QP;X%fi_A3ui0pcjfs?HZ{0-NriJMR z4@_N7q#KnJX`AChQsGs;!M*;~Ut$DkoC4Y8&H?&Vi}Q ziBzL{X=pcqoJcjQ8$(l-6RBFY_0G^#5SOtCro53Go7bxX^IXn9pm1h(WP68Fcsh}EY3hIJ3ARTlE z?EpXC;a7DAgEK)6xByH7W5A^#4_phTgWJIM;65-1JPsZJFMub(o8Tot`R&k^a7Kfn zU@~yPVNRa0hq_%mXijXTUq)6|e}r=i6mU&DEi9~;<$KuSMl{^!-lSXwBcie-R{0t8vHD3H?6_$^I=>dQ22(;;Ecg@KfQ z#u;Ovx-u2h=uS4B-U8K?>6k|MnoxCRN~Y0uLe-UNnMSuusJb#W)94y^IRm|SWqPL3 z%?>rXGDXwqUKXmZOw%;FcZaGgHyvqoPY+dB?m^P%8t=gj^rI%XBo*tDvlop$n_nqC zzf#3HpzKSrij>k@Dd3fTMe30LS;)RvNz!Fsy^PNy4^&@fUzfSjiP{89>23TftUz^T z_NCD^&b|WGmD!hCx7Ycq4^zzVWtn}cb$kCWR9%^Usdal9KU*E>%^`SfNdvT~YgUr4(y2dA<2O3?OeQ9)W4mG+m`_kx^3sqNUUuxZ6Gegyt*;lbH*;mon zJNxRb+(Hvj_N7>QOzC^FY2-@PwUm9a{HV*m`WkPJ2~=NZUzOeHM9;qZHV-x0GW*i# z8W-e&MptHEYTZ7|LXED>zSO#XjbF$fXmn-vrO`D$$v#kBnSE(=$Ax+`$m~m_YkUM_ zpwX4tmqyq4M9@HWW%i}k?Xxe`n?Yt@8r|dw+A{mn=q?B~ zx-$FH=zblluFSqPy2d-K0=*ez_NCD^?jHoIE3+?+?zy4f3^M!D=zbciuFSqPy2gj* z1$r~c>`SBjPN>n9*_TFlUZ}b<`_kwx4^>xYU&Xp)Uqxf@?5nHt0nvc6uLMQ*)y=q~ zZCTG!?`%>$6uNvyjAhR#EZnr-|)s@+o zTDPn5o74ln8D#dQ*6rRd)ac6WORd|@c$-?F(UsX(u`bzH(bzlt>OMjh=YX=WL`C-1 z!#HwZ*vh^Vk0Sf(@sKKhUQiIyZx-$FH=o;?}5A^1c*_TH5%21;#voDQqk5F}G_NCFy2~}5S zUmD%nq3X))OQTy5s;DrgQG0UC1-jXS2!{Bc4 zEO-RG3jPb;2d{yp;6p%~>X5}do4{JI8*Bsn!A~H;&2XGQ8C7JI1geAMKs|6W$N&vM zd(aH@0v$nr&<6|!=YR+p4!CFz_q1~vm<(8aIudOk8L(p08fAi!HeK2@D_L( zd;`d&?`M?4C;?Oj z6+s+#_=8Me_3}O>Uc(Hg)RMrn%!sjc7V@;`p@u-28Dl zY5$lMo{dE>~t@p+{t9r8D)95K5nhX5m%KA>DXPnaey7y!~ zr`CJ3i`9!O>o<+wD64w1UQ_G6VVt7-y124FQ|rBXt<~tsdaPKF6ufBc)c|!T;ty4# z9ux7unb4viJ5n-n;m;}ouP>3=v6|30W<)oky_R5AS59aTDJQhoDqGc)6PiY^r&T>U zp{ey28gGsCbuY>ZO|AD@d#llt6PiY^wpBejp{ey29Cp5L*Yo}S&lM|X+Z=vxf zXI~!;IiYFvzOx!V*-%vLz1GaCo@^kh^%j0&RZlhyHF_JY>d9BL7weHs6^*@;zlDUa%X)xi`PFpHT{<1W*-J1a&}lkOt}jG#$d=bOUX{ zS)dmnlvK@E@z8iEd>Ip_^KfdQZ|7zWM-x!^*O55|HS z;9@Wf%ye;BYdYC&2)AzDqFH(?MQ1u?kuneS_ztHtT|U!oOivt}liDjcZ`@@1(^t5^ zsrCr>Lpp`+>C5>GKHJkNYwlHj<~-z`nf%zm+S4iPQd9z7Uzs-*3djfs*rX=3iY9f+ z+FL@9mXp!ELzXdc$LXebGl3H@@ln^B4#H5k@BLqn~J!vGBsbq{kNOF?WNcIUK zlCtjCNGiV*V-!hQ{i`L{bqXPpvIn4%tQLZ#>;$MK*Jg$wDfoG-Ly)X=gk&YX zq;bD0fF$_1BP5U0OU?`-lE)t*dAwF~o$>L80YvhIBP37IOB%n=G62aFkB~f3E4g+^ z2$#F^5t5bll0SwZS>*`HDu+qZnJN0t^lbO0EZeWr4XD~ytevMUU!oH5npftYM!6re zYMT{wUA4X3c)>paX<2PQ=|&=I>o;XZb_kJ`)wV{md-qf~2gr)sic^haf4dZMEcb z<9s}Tds0^0YRMH>gb+ztZEGa+Ly(l!wnnl+2$HheR!c5_BLqoVZL1|$v<*R0R@-XH zML(N<&>s zVDUq$sCl&n0+5z1fzRDYL~jW!=@5dXYzb&2n}i@KTLNmy#b<^fDO&<+$)yj6ASqh{ zYRSdMBgKrOk%c!@3mN!b$6NDd3((=A&9YRRR>=UW93N!b!mOD-uBLL_BN zKqG0qCvKmR_r|1HRq%34LlFAJrUio+clCqH1NZu2|<(7r4M$&k{ zMF5eMg{(%hatM)>g{(&M@(?6tA*+#G7J{TKWHpk;PtgT%Ps&18BiSp2NXkN1BiS(o zNmNm_0MfEX{M3y^^g{MaL` ztPwSmKZGDDYebFY$010{8c{8|tV#%yvPM)(erbH-Z2%t}StF_?ml<#43_w!Wh#JY( zAzW@*BdR68ye0%mStDvBUkX7|)`)7!Wt~Hilr^G8()jGy06sXfM$||S2qBWPMpR3F zxhVumStDvB*M=Y|Yeco=GUF3Y1Gpz;ji{FV@{156DQm=HNy@LH@nHv=v#{u}#_B8q zAAoh>ORyDu4fcTT-~jj;B)V%?&R>iwF)9sefa5`ZP!nW=hM)sz4tj%5U;yX~hJkZI zF1QfngRx)+xERa=Gr?Ri8$1N=1W$v9!2<9spz3sJWjLRKcfo3~6l?-(!A`IR>;=0) zoLks9`x&J$N&rz(s4SyWpfV^AYJ-zN zV{j^H1)74cpba|#U>cYNt_GKaTfnv89&j7rk#2_v$DPN)1K=g_ zGEzHZlEp5 z0zJSGa26N^&Ic30XmAO*2wVd$1Gj?fz`fvh@EEusuyfsEf4uV=_#gNfyakqlPr)}} z1=s=BgI~b+;2`)7B=a#X0ZssAK`l@joCa!x7N9Zc3|fJHpeq;%&H&k9Fc=3$f~jBv zxDreQH-W3cUEmflAKU|;1CN4*;CaBwehw!wIuC+7z%yVzcm+HM-UAE467T_713m|v z!8))DYz6zk9uUukKftI0qeM^*R04HD4Ui7%gLWVj^aLGTOljbp&A2zX01NUaCDuhx=W6o90D;|9^UWIVn8QGKbbMhvq zP8^+@AIVAWlAFi-5FT(pX4>~59C9jrAHse7g`<8Sf>)!@{RNb{xyLWyJjhQC>U9XE zk|M^ZS3F%P5G9HMz7v7)(nj-saj$D`yhA%EbGdir?L)3!FGg@pH>mDXuN@abnabv* z#`L4GOl5~sWBPemrm{_`F;#xVV|n#uuTo=b+`J0vK9vnijp==1U47ZL)R?{*mZ@xA z7MoK36pgbZeVkhoOSs>&g@531J)JkfOW-r`E?5Z`gAHIc_yKGJzk{8iWV(yJjLI>J z164qZizBD^^yV$oTV^WWbX2NB8|8yx9BV zAtx95)N-Y_TD+`sflni6d<2S*$jOC0wOn#Ti;PJ4IHAYPrPa7B8!;5H)hfCwuz1tg=GX z$mLs%oU9Nva>fTm`G}mX5Y=)Ci54R#D@3(i{BDbKvO-kLCEjUKPF9E-IpZU>eB5)g zLM)b}2rC+U7h#FY_YnkCghhY-iMu>#+-t3p8IvN6*PiH#uq5Lh0X}495!T54&7&7# zNyZy1e8|ZnOe1%%>1Wl4oGijLalzid|XzU&1vL}50CUAC$l+?+%}7sRc3Q)x%T}m z%E@d_BX@#DIhoC=<=VYsQBG!a8adW!*xXiK{ zp_c1h-D2cqGeRxb={JjVvKgV4>umgjK_8b@HX}50*%l)wn-LnhyDiGeW`su0_!xN~ zmsK_+G;)r`$jN4eM$UM?K3?BUA6n}ML7+0cX z7mKp8Ff7?ZRTy?P{+9C*Nm&@GvluacG)W zR;?Pjvn|TWs#PO5!=jw5S~YUrEy~HNRU`M9MLAiuYUGUf9QycDmQ|}p?!OizC#zPC z-1!#eWYwyXn`%)`R;|Ty8Lr0EAW|0z$+)Y#hsaBkdu_w z<|L&mbTEFx(1)zdN#-kZl2R2q##xM{%t_R89rjt2lR1e-&iFBJAD30;Bx_Ni=fzS(KAGiAL^fi*hn2(a0rPl#@A$TCV-?7Ug74 zqL%Ae-lCk$Nz`&3j1P+P@l_%_=^D8wEk;gu($#Y9w^)>uopgwSyHRz%J;Q+&&iTnBWJv$#7E?0Nv)Cl)MDgh zNv)B)%c7htsWo!O&q4UOtg@t5%atpz7&%!|tL4fY@2&O`IayL`eo ziN1Lwx~%a_mR@chlaiVj%jll> zDtm`2T3)r64_R4Kf9n3`(M#&Gi!92?l3F8YoXz=&oGhu;a%Il27&%!|tL4gGX;Ds= z)EYVCCrEr;R#{T3<;pa)7&%!|Yvf+AC?`v5wOm=_lG?{*l_j-Wu1sZ%k&`90TCS{d zU(-kAWJ#@&Gky-jhny^_)pBL-w0K!%Nv)PEdx1qcSyF4{rdgDeCACIQd7wbRDU&Rz zHF7x?BPUC0ja)a2a$o01ys zjZdxianH%ZP$QRYF>~GN91H-SS&|jSTy!34BdwzGgL7Qs4y%SwJ>xAR;dKMI!ga-8K79%MOL$zGTk1Wc`!cZ;O$#`kW$2}+uL$zE-h9MBI82LpivvcVKE4qO4If*Zk=;0|yTm%cCs74T@1!-G%GJa89y4m=7Lg6F{p;C1jh_z0{6UxKaR zYp@4w2M55ooq!v|;WOd93tk0F!G~Zi_yTMJUxD3V8`uwi0txM0{K=>yqa;ur z90%%wlR*Y(0NR6QfHTV-PDFP~G1|wd0;5Dw4O9YkK@E@&>VtM56Z8Zfz}cWTxBv_Q zW56(w2Xeu5kPog0Gr$}$3p@bkf+xX4;3e=hcpEGLpMiJ5O0XDg0IR_dU=!esJBJhW zoWH^Epd5b|2daP+a0;jjnt(c>HAn;9KwFRndVnF|EHDb34<>@q;1X~VxCUGXZUxtY zd%^ACF>pWlA9w=10bT?jgSWsk@G1BPtN=T}dhiSQ9&mn+!=Xz~5~G8RPGD3P)B=^k zX`nV}0UCqOpcUu`x`Kh=43G^5gK=OamS2!{Bc4EO-R8$#78@v;s{*chC-;33`I_z}X-NTmUA4G2l{=2d)Lv z!ENAra37ch9tRJA7r>L?P4E)<1iTHFgU`UXU?untYyiK4AHd(>cTk2YrX)BKlmm@G z70?i*f|j5O=mJ`U(?K^d2xNf~UR8iU%iw3gA>w4X~)}uw?Cg4Bi4Oz#_07 ztODPIjo>%%BPhWK=MP3@8I=N+L3vOcoCF$!Q$Z`x6m$h`z!{)B7!1w?Bf)uK0>}Z= zz$9=rxD?z1t_Ami+rXpXKJYwv9I&U_VaK-f5_lTC3tk0_!TVq}SPC|QwO}XM0``L4 zAdX*pKcf^z37{&d2FaZ0>|n1(8NhXEzUsG@e~IlAk|m za@(}DsZ*ym%^g2#MAMNI$EW4z=8wxs`#+(y0ymxQ$X`gyilk>nGO{9>S&?R0k>**E z7DEdnt+FDmvm$M>B5kuG?c9Ivz{#$iz4V7DkHYiNce?On8)iisWgW#2?-S`8>DRAh z)OJ@~>GO=Y*q%`+;1xrSQDg}5=o2}wP^sxZm)aFfIr5(hgG*=0z3gXt#qE6KU7CSt z%NAI+8;$6i=Q*mo)2lxhh^B0YX*7Fx7~y+h-chlA&nIMw(i4$l6deWlODClg3cd*n5H;WV{~K#e9M+rI;WG*EEgT zN3otDOSvmUWFM*ta?qMkwB-c3PB}pi+82tZoFFxtJ44Zw6Qo*maQ#p;fp1VnPmj*OJ#w#YsfyR&Iy&CHYGX5wg$btJ+ zar2rW1JRZf#$?h@U*5k)kPO@v1lkA@Ds*CCMf%Ri2Ct0=KPpxg*$w^jY*Ttrt zoMbh2#s^gRxw3MS)z}%I)aJ)dPO=)iJ~pqcoMbh2b#2pzSY{pI|C>lHC?MZ%OCleI4-A~3#FMjM~f}*zj+4$AYe(Yp|qOn_S^S+Y_ipH*o zO*@&OXzWh4X(tmDjh*qs6n^eInV=Ngk)RZfy%Ut3$~!Qi1SR^`lK7Il-ZZ_8dt;QK zu%kqmpzNMt(^e)ZMfhAxwSO<22tzaM61LDy=z^DSFL{JS>0(C(RkPhmD zb|4e<1RcQHpf|Vx3;<+E4hfhu35)^LK|Z)1%m8!1EbsuB3!VfIftSG3;BBw~d65Ii90`tIK;2AI< zyaJvB?}3Fbj@*`$*(|+zi`H!v+j5dOeyF;=Ju=6_V=KDnjLw-bDtE$|)V|pxCyro$ z&JFI}pxvKyNT_gs&UO5Squ!t6nfE4dQYLa9_RcJRYGB)Qk~hy&h0iM+x}#8Fb_E&2 z0Qcz-Tg5(|aWlu5Ei z^TJRxWwxx*RPGFn*(YD7%^FSPcR~kpZ_50+Sd%=aXq^4e0i67S!w+_z01twf!870; z@CsN2-UF+^60i}h0Y8Gx;196N#gX%2s}?QWv}ltVeLhTxJ7*Ym=9}qi{y?Q z$8^|b)Wtay@~7nGOirCRI(0zyh`ihh*-VcIkkOv%RODAUJ?`T#9QE|*d8$)F+`vx_ ze;emder!Xu*wVr=0 zSj)*&V{LrweJt)6Ik#%8pE(v{EvH(w_2BZyg0-A^)z*WQU(vR{Q{+UfwjSK@SctWp zm(|vTrW^~_vfrh)9vpuxSj#?`+IrA|W5HVX$28Wnj|FSlH`7=f*Fv$FW#odN+Iq0@ zg9Nd#mhTSJSQ|fl8VhUrQZbEnvt!}DmTw!=SR21~Bo?ujuOU-g4>I1~77J_neloT7 zVB<&gVqq;`T&A`jWW3533v2mCvtn!d14U!6mTyAbxs6qyOOFEm-;}h`9~NJcgd zuk>@b<&u_%NOUFb!0V2M-$ItOaa~j;?Lgy#B^I%lC9THVc=A}d8f8hVu{JKmV__{zT8*{wv&FHn zmL;vmddRVGU(1qKV?Fj*u$CpQ#@aZEj>R1!OInR}yJI2NvZU2m-+e4t%aXR(n$*8& zeApHz{=ngyJ0%(IWt74w0aOJQK^;&Xq=9;%Eyw^pKznc&=mpLP{lRE36kG%%;4&~7 zTn8=(w}TtN{h$Cm0UiWYEe^$!Qw>xC^+8RL2^xY9pgHIbI)MS8FBk^S1-altkPpU! z8Q@|t3(N#_!EEplxDz}L9tI1*v*2CuDp(BO2dlwSunDXMJHZwghb^9#anJb4Xx+MH zMl03oX}ONORCkz1amMOt>N$~|)Ykct)BzJGbV}`#my zo54D;3v31Zz#b6a)x`lu6&NLgYM>IR3u=ILP#?4dnV=`=;Nq~{)jglGb@P@jTeNH* zedAwZ!WF-&0v#oFO*wN!Zj(XT6H@!-Oqe(#mqfKMKU}xb?~qSnp4ywg;44o}Oqi*B zKH5Xx>BmnEDo;&JxKb(Lm8T9W6qqd|7+_XPXrpJPuC?;9*;rZ29CYjW}IrvtCGU7l=-E`()c`_AnsF{O{y)gG=9c52uqnV7F+TaUo<}KE1o}a__aeWHQRP{7*6iiI*5xscUQtENEAjFvEc2KJ$~>mgI?IAGkI@JkA6Mfuf-;X$3pO@h z&h{xN^BA>Yqe+%8vCLyMf~Q*+lzEI=@HFF>3i!OlGLKOUHn#n}DDxP#;Ayv6zQi(* z(Fhvvbntz$;emd&I0ClW-JyOw;<7g=HRdmK%ZS{g@_AEDOp!MlIOXxS#6tlFK|s zE!f0(e~eE-na8LFn^v-XiDe$67Hl%evY^ak)PhZWSr(Lej9RdXaaYynJt*@Sjo@XL zBPjD2wP4dY%YrhG(FhtZMfkkLGLI=1Buyw9d#4FahpJ*3P@0gaNE6bGmsuCZE=@>0 ziZmgut14n%d5uqDnI^1PrU_}rg_2J}nI@0iSx}}48o_#&1!bC0EXY@M(b)SdI!&2!1@sl2r1*+X&ozxz)1EP__{{sd;_D_!O33(OumLM6cx1jgMCJDJZ|9HG;|~zhV$U`4z1ZG%nVCMo@l5YXo~+ z{?N#;XpLYe%YyPNS|ixPvY`BmE*9h~x@dgZVOezF96F@VOWf{LIHs1DLVJ(KNt;$f{Q=| zTm~kC>%isUc5nl@9~6Kmz=PmL@Dz9pybL}C?*L{nhcw9f2CM+zgN@)f@FOVUela?K zFe=Na6sQc!gWBLE&={Nw2)x6m*XayefipmNFc_Q(MuPLe1ds!!fl1(Ma4EP2TnpIG z=CGyDxdKcDH-W3cUEmflAKU|;1CN4*;Cb)?cpZEWJ_75&mtZUS8tehv!2$3yNaS+= z#fUX&hm8$RHBbrE2Q@(^Xb3uh=Abv|1O|YG66arwCuCcA$)CMQ2TKR?g?e{|-%ci%t%)wP9xCogAQPWI%S0_SmV&7%LJ_|FRe zi_*iVX1l*bp8Nk*cI3oy<8nqK=>Ai}sGN(Y=4.0,<5.0)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] +trio = ["trio (>=0.22.0,<0.26.0)"] + [[package]] name = "httptools" version = "0.6.1" @@ -396,6 +417,30 @@ files = [ [package.extras] test = ["Cython (>=0.29.24,<0.30.0)"] +[[package]] +name = "httpx" +version = "0.27.0" +description = "The next generation HTTP client." +optional = false +python-versions = ">=3.8" +files = [ + {file = "httpx-0.27.0-py3-none-any.whl", hash = "sha256:71d5465162c13681bff01ad59b2cc68dd838ea1f10e51574bac27103f00c91a5"}, + {file = "httpx-0.27.0.tar.gz", hash = "sha256:a0cb88a46f32dc874e04ee956e4c2764aba2aa228f650b06788ba6bda2962ab5"}, +] + +[package.dependencies] +anyio = "*" +certifi = "*" +httpcore = "==1.*" +idna = "*" +sniffio = "*" + +[package.extras] +brotli = ["brotli", "brotlicffi"] +cli = ["click (==8.*)", "pygments (==2.*)", "rich (>=10,<14)"] +http2 = ["h2 (>=3,<5)"] +socks = ["socksio (==1.*)"] + [[package]] name = "idna" version = "3.7" @@ -1866,4 +1911,4 @@ files = [ [metadata] lock-version = "2.0" python-versions = "^3.11" -content-hash = "309aa22462697a63eabada341e134e25ea96956cb55aec640d606b9e3355c4b8" +content-hash = "fc36201fac1b416db7fc93312b9d9b4a1e0fc4edfa01c4fa56661f596ccf94b3" diff --git a/pyproject.toml b/pyproject.toml index 92110514..c809d189 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -5,6 +5,7 @@ description = "Plex torrent streaming through Real Debrid and 3rd party services authors = ["Iceberg Developers"] license = "GPL-3.0" readme = "README.md" +package-mode = false [tool.poetry.dependencies] python = "^3.11" @@ -34,6 +35,7 @@ codecov = "^2.1.13" pytest = "^8.1.1" pytest-cov = "^5.0.0" pyfakefs = "^5.4.1" +httpx = "^0.27.0" [build-system] requires = ["poetry-core"]