plexflow 0.0.122__tar.gz → 0.0.123__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {plexflow-0.0.122 → plexflow-0.0.123}/PKG-INFO +1 -1
- plexflow-0.0.123/plexflow/core/context/partials/show.py +107 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_meta.py +4 -1
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/show.cpython-312.pyc +0 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/episode.cpython-312.pyc +0 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/season.cpython-312.pyc +0 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/show.cpython-312.pyc +0 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/episode.py +29 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/season.py +25 -0
- plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/show.py +46 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/datatypes.py +51 -11
- plexflow-0.0.123/plexflow/utils/video/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow-0.0.123/plexflow/utils/video/__pycache__/audio.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/video/audio.py +51 -1
- {plexflow-0.0.122 → plexflow-0.0.123}/pyproject.toml +1 -1
- plexflow-0.0.122/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-312.pyc +0 -0
- plexflow-0.0.122/plexflow/utils/video/__pycache__/__init__.cpython-312.pyc +0 -0
- plexflow-0.0.122/plexflow/utils/video/__pycache__/audio.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/__main__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/.DS_Store +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/partial_context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/partial_context.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/plexflow_context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/plexflow_property.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/tmdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/tmdb/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/metadata/tmdb/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partial_context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/__pycache__/ids.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/__pycache__/watchlist.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/cache.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/candidates.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/completed_downloads.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/ids.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/movie_assets.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/reports.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/subtitles.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/tgx_batch.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/tgx_context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/torrent_blacklist.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/torrent_deadline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/torrents.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/universal_torrents.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/watchlist.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/plexflow_context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/plexflow_property.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/root/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/root/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/root/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/select/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/select/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/select/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/select/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/tpb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/tpb/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/tpb/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/yts/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/yts/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/torrent/yts/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/watchlist/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/watchlist/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/watchlist/__pycache__/context.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/watchlist/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/__pycache__/download_candidate.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/download_candidate.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/filtered.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/rank/__pycache__/ranking.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/rank/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/rank/ranking.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/rank/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/qbit/__pycache__/interface.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/qbit/__pycache__/schedule.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/qbit/interface.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/qbit/schedule.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/env/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/env/env.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/__pycache__/bot.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/__pycache__/plexa.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/bot.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/plexa.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/torrent/__pycache__/imdb_verify.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/torrent/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/torrent/imdb_verify.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/torrent/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/utils/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/utils/__pycache__/loader.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/genai/utils/loader.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/__pycache__/auto_meta.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/episode.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/item.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/item.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/season.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/episode.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/item.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/season.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/auto/show.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/__pycache__/show.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/imdb/show.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/moviemeter/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/plex/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/episode.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/season.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/__pycache__/show.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/episode.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/season.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb/show.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tmdb.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/episode.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/season.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/__pycache__/show.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/episode.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/season.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/auto/auto_providers/tvdb/show.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/imdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/imdb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/imdb/imdb.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/imdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/moviemeter.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/moviemeter.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/moviemeter/moviemeter.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/imdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/moviemeter.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/plex.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/plex.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/plex/plex.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/__pycache__/tmdb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tmdb/tmdb.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/tmdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/tv_datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/tv_datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/tvdb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/__pycache__/tvdb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/tv_datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/tvdb/tvdb.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/movie.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/old.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/metadata/providers/universal/show.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/__pycache__/library.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/__pycache__/authorized.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/__pycache__/discover.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/__pycache__/library.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/authorized.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/discover.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/api/context/library.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/__pycache__/activity.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/__pycache__/comment.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/__pycache__/feed.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/activity.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/comment.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/discover/feed.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__pycache__/plex_authorized.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__pycache__/plex_authorized.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/__pycache__/plexflow_database.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/plex_authorized.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/hooks/plexflow_database.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/__pycache__/library.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/__pycache__/library.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/folders/assets/plex_asset.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/folders/assets/plex_subtitle_asset.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/folders/assets/plex_video_asset.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/folders/plex_folder.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/folders/plex_movie_folder.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/library/library.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/__pycache__/auto_token.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/__pycache__/auto_token.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/token/auto_token.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/__pycache__/paginated.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/__pycache__/paginated.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/utils/paginated.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/datatypes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/watchlist.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/__pycache__/watchlist.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/plex/watchlist/watchlist.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/plexflow_storage.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/plexflow_storage.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/redis_storage.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/__pycache__/redis_storage.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/plexflow_storage.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/storage/object/redis_storage.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__pycache__/auto_subtiltes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/__pycache__/auto_subtitles.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/auto_subtitles.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/datatypes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/download.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/oss.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/oss_subtitle.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/search.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/__pycache__/unlimited_oss.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/datatypes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/download.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/old.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/oss.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/oss_subtitle.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/search.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/unlimited_oss.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/config.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/config.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/download_client.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/download_client.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/exceptions.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/exceptions.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/file_utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/file_utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/languages.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/response_base.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/responses.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/srt.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/__pycache__/srt.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/config.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/download_client.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/exceptions.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/file_utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/languages.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/response_base.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/responses.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/providers/oss/utils/srt.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/results/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/results/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/results/__pycache__/subtitle.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/results/__pycache__/subtitle.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/results/subtitle.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/utils/__pycache__/plex_external_subtitle.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/utils/__pycache__/plex_subtitle.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/utils/plex_external_subtitle.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/utils/plex_internal_subtitle.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/subtitles/utils/plex_subtitle.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/__pycache__/analyzed_torrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/__pycache__/analyzer.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/analyzed_torrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/analyzer.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/torrentquest/__pycache__/analyzer.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/analyzers/torrentquest/analyzer.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/__pycache__/auto_torrents.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/episode.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/episode.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/item.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/item.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/movie.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/movie.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/season.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/season.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/show.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/__pycache__/show.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/auto/torrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_providers/tpb/torrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/auto/auto_torrents.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/ext.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/extratorrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/ext.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/ext/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/extratorrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/extratorrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/extratorrent/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/__pycache__/eztv.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/eztv.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/eztv/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/extratorrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/piratesparadise.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/therarbg.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/piratesparadise.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/piratesparadise/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/rarbg2.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/rarbg2.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/rarbg2.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/rarbg2/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/snowfl.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/yts.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/__pycache__/yts.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/snowfl.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/snowfl/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/context.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/dump.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/tgx.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/context.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/dump.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/tgx.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgx/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgxi/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgxi/tgxi.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tgxi/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/extratorrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/therarbg.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/therarbg.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/therarbg/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/torrentquest.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/torrentquest/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/tpb.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/tpb.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/tpb/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/tpb.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/yts.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/__pycache__/yts.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/providers/yts/yts.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/torrent.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/torrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/universal.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/torrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/universal.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/torrents/results/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/download/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/download/__pycache__/torrent_events.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/download/torrent_events.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/publish/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/publish/__pycache__/publish.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/events/publish/publish.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/__pycache__/log_setup.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/__pycache__/log_setup.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/logging/log_setup.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/__pycache__/quiet_logger.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/quiet_logger.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/__pycache__/settings.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/__pycache__/spider.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/__pycache__/dump_json_pipeline.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/__pycache__/meta_pipeline.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/__pycache__/publish_pipeline.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/__pycache__/torrent_info_pipeline.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/__pycache__/validation_pipeline.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/dump_json_pipeline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/meta_pipeline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/publish_pipeline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/torrent_info_pipeline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/pipelines/validation_pipeline.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/settings.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/spiders/tgx/spider.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/antibot/__pycache__/human_like_requests.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/antibot/human_like_requests.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/context/__pycache__/http.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/context/http.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/antibot_restful.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/plexful.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/restful.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/restful.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/__pycache__/url_builder.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/antibot_restful.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/plexful.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/restful.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/api/rest/url_builder.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/captcha/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/captcha/bypass/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/captcha/bypass/__pycache__/decode_audio.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/captcha/bypass/decode_audio.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/download/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/download/__pycache__/gz.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/download/gz.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/__pycache__/search.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/__pycache__/search.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/filesystem/search.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/gmail/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/gmail/__pycache__/mails.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/gmail/mails.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/google/pubsub/consume.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/google/pubsub/produce.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/http.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/http.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/postgresql.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/redis.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/__pycache__/redis.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/http.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/postgresql.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/hooks/redis.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/image/__pycache__/storage.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/image/storage.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/__pycache__/imdb_codes.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/__pycache__/imdb_codes.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/imdb/imdb_codes.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/llm/mistral.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/pubsub/__pycache__/consume.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/pubsub/__pycache__/produce.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/pubsub/consume.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/pubsub/produce.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/__pycache__/utils.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/__pycache__/utils.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/retry/utils.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/filesize.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/filesize.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/json_extract.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/language.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/__pycache__/sanitize.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/filesize.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/json_extract.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/language.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/strings/sanitize.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/subtitle/__pycache__/search.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/subtitle/search.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/tasks/__pycache__/decorators.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/tasks/__pycache__/tasks.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/tasks/decorators.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/tasks/k8s/task.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/thread_safe/__pycache__/safe_list.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/thread_safe/__pycache__/safe_set.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/thread_safe/safe_list.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/thread_safe/safe_set.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/__init__.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/analyze.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/files.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/hash.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/__pycache__/hash.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/analyze.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/compare/__pycache__/with_subtitles.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/compare/with_subtitles.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/common.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/ext.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/extratorrent.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/piratesparadise.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/tgx.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/therarbg.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/__pycache__/torrentquest.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/common.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/ext.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/extratorrent.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/kat.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/piratesparadise.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/tgx.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/tgxi.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/therarbg.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/extract/torrentquest.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/files.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/torrent/hash.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/transcribe/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/transcribe/__pycache__/__init__.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/transcribe/__pycache__/speech2text.cpython-311.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/transcribe/__pycache__/speech2text.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/transcribe/speech2text.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/video/__init__.py +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/video/__pycache__/subtitle.cpython-312.pyc +0 -0
- {plexflow-0.0.122 → plexflow-0.0.123}/plexflow/utils/video/subtitle.py +0 -0
@@ -0,0 +1,107 @@
|
|
1
|
+
from plexflow.core.context.partial_context import PartialContext
|
2
|
+
from datetime import datetime as dt
|
3
|
+
from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
|
4
|
+
from plexflow.core.metadata.auto.auto_providers.tmdb.show import AutoTmdbShow
|
5
|
+
from plexflow.core.metadata.auto.auto_providers.tvdb.show import AutoTvdbShow
|
6
|
+
from plexflow.core.metadata.auto.auto_providers.imdb.show import AutoImdbShow
|
7
|
+
from plexflow.core.metadata.auto.auto_providers.plex.show import AutoPlexShow
|
8
|
+
|
9
|
+
class Show(PartialContext):
|
10
|
+
def __init__(self, **kwargs) -> None:
|
11
|
+
super().__init__(**kwargs)
|
12
|
+
|
13
|
+
@property
|
14
|
+
def sources(self) -> list:
|
15
|
+
keys = self.get_keys("show/*")
|
16
|
+
# extract the source from the key
|
17
|
+
return [key.split("/")[-1] for key in keys]
|
18
|
+
|
19
|
+
def from_source(self, source: str) -> AutoShow:
|
20
|
+
return self.get(f"show/{source}")
|
21
|
+
|
22
|
+
@property
|
23
|
+
def title(self) -> str:
|
24
|
+
for source in self.sources:
|
25
|
+
details = self.from_source(source)
|
26
|
+
if details and details.title:
|
27
|
+
return details.title
|
28
|
+
|
29
|
+
@property
|
30
|
+
def year(self) -> int:
|
31
|
+
for source in self.sources:
|
32
|
+
details = self.from_source(source)
|
33
|
+
if details and details.year:
|
34
|
+
return details.year
|
35
|
+
|
36
|
+
@property
|
37
|
+
def release_date(self) -> dt:
|
38
|
+
for source in self.sources:
|
39
|
+
details = self.from_source(source)
|
40
|
+
if details and details.release_date:
|
41
|
+
return details.release_date
|
42
|
+
|
43
|
+
@property
|
44
|
+
def rank(self) -> int:
|
45
|
+
return self.plex.rank
|
46
|
+
|
47
|
+
@property
|
48
|
+
def released(self) -> bool:
|
49
|
+
dates = []
|
50
|
+
for source in self.sources:
|
51
|
+
details = self.from_source(source)
|
52
|
+
if details and details.release_date:
|
53
|
+
dates.append(details.release_date)
|
54
|
+
|
55
|
+
sorted_dates = sorted(dates)
|
56
|
+
now = dt.now()
|
57
|
+
return all([date < now for date in sorted_dates])
|
58
|
+
|
59
|
+
@property
|
60
|
+
def runtime(self) -> int:
|
61
|
+
for source in self.sources:
|
62
|
+
details = self.from_source(source)
|
63
|
+
if details and details.runtime:
|
64
|
+
return details.runtime
|
65
|
+
|
66
|
+
@property
|
67
|
+
def titles(self) -> set:
|
68
|
+
titles = set()
|
69
|
+
for source in self.sources:
|
70
|
+
details = self.from_source(source)
|
71
|
+
if details and details.title:
|
72
|
+
titles.add(details.title)
|
73
|
+
titles.update(details.titles)
|
74
|
+
return titles
|
75
|
+
|
76
|
+
@property
|
77
|
+
def summary(self) -> str:
|
78
|
+
for source in self.sources:
|
79
|
+
details = self.from_source(source)
|
80
|
+
if details and details.summary:
|
81
|
+
return details.summary
|
82
|
+
|
83
|
+
@property
|
84
|
+
def language(self) -> str:
|
85
|
+
for source in self.sources:
|
86
|
+
details = self.from_source(source)
|
87
|
+
if details and details.language:
|
88
|
+
return details.language
|
89
|
+
|
90
|
+
@property
|
91
|
+
def plex(self) -> AutoPlexShow:
|
92
|
+
return self.from_source("plex")
|
93
|
+
|
94
|
+
@property
|
95
|
+
def tmdb(self) -> AutoTmdbShow:
|
96
|
+
return self.from_source("tmdb")
|
97
|
+
|
98
|
+
@property
|
99
|
+
def imdb(self) -> AutoImdbShow:
|
100
|
+
return self.from_source("imdb")
|
101
|
+
|
102
|
+
@property
|
103
|
+
def tvdb(self) -> AutoTvdbShow:
|
104
|
+
return self.from_source("tvdb")
|
105
|
+
|
106
|
+
def update(self, movie: AutoShow):
|
107
|
+
self.set(f"show/{movie.source}", movie)
|
Binary file
|
@@ -7,6 +7,7 @@ from plexflow.core.metadata.auto.auto_providers.imdb.movie import AutoImdbMovie
|
|
7
7
|
from plexflow.core.metadata.auto.auto_providers.tmdb.show import AutoTmdbShow
|
8
8
|
from plexflow.core.metadata.auto.auto_providers.tvdb.show import AutoTvdbShow
|
9
9
|
from plexflow.core.metadata.auto.auto_providers.imdb.show import AutoImdbShow
|
10
|
+
from plexflow.core.metadata.auto.auto_providers.plex.show import AutoPlexShow
|
10
11
|
from plexflow.core.metadata.auto.auto_providers.plex.movie import AutoPlexMovie
|
11
12
|
|
12
13
|
class AutoMeta:
|
@@ -29,12 +30,14 @@ class AutoMeta:
|
|
29
30
|
raise ValueError(f"Invalid source: {source}")
|
30
31
|
|
31
32
|
@staticmethod
|
32
|
-
def show(imdb_id: str, source: str = 'tmdb') -> AutoShow:
|
33
|
+
def show(imdb_id: str, source: str = 'tmdb', rating_key: str = None) -> AutoShow:
|
33
34
|
if source == 'tmdb':
|
34
35
|
return AutoTmdbShow(imdb_id)
|
35
36
|
elif source == 'tvdb':
|
36
37
|
return AutoTvdbShow(imdb_id)
|
37
38
|
elif source == 'imdb':
|
38
39
|
return AutoImdbShow(imdb_id)
|
40
|
+
elif source == 'plex':
|
41
|
+
return AutoPlexShow(rating_key=rating_key)
|
39
42
|
else:
|
40
43
|
raise ValueError(f"Invalid source: {source}")
|
Binary file
|
plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/episode.cpython-312.pyc
ADDED
Binary file
|
plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/season.cpython-312.pyc
ADDED
Binary file
|
plexflow-0.0.123/plexflow/core/metadata/auto/auto_providers/plex/__pycache__/show.cpython-312.pyc
ADDED
Binary file
|
@@ -0,0 +1,29 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from plexflow.core.metadata.auto.auto_providers.auto.episode import AutoEpisode
|
3
|
+
from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
|
4
|
+
from plexflow.core.metadata.providers.plex.datatypes import PlexEpisodeMetadata
|
5
|
+
|
6
|
+
class AutoPlexEpisode(AutoEpisode):
|
7
|
+
def __init__(self, parent: AutoSeason, data: PlexEpisodeMetadata) -> None:
|
8
|
+
super().__init__(parent=parent)
|
9
|
+
self._episode = data
|
10
|
+
|
11
|
+
@property
|
12
|
+
def release_date(self) -> datetime:
|
13
|
+
return datetime.strptime(self._episode.originallyAvailableAt, '%Y-%m-%d') if self._episode.originallyAvailableAt else None
|
14
|
+
|
15
|
+
@property
|
16
|
+
def episode_number(self) -> int:
|
17
|
+
return self._episode.index
|
18
|
+
|
19
|
+
@property
|
20
|
+
def title(self) -> str:
|
21
|
+
return self._episode.title
|
22
|
+
|
23
|
+
@property
|
24
|
+
def runtime(self) -> int:
|
25
|
+
return self._episode.duration
|
26
|
+
|
27
|
+
@property
|
28
|
+
def summary(self) -> str:
|
29
|
+
return self._episode.summary
|
@@ -0,0 +1,25 @@
|
|
1
|
+
from datetime import datetime
|
2
|
+
from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
|
3
|
+
from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
|
4
|
+
from plexflow.core.metadata.auto.auto_providers.auto.episode import AutoEpisode
|
5
|
+
from plexflow.core.metadata.providers.plex.datatypes import PlexSeasonMetadata
|
6
|
+
from plexflow.core.metadata.providers.plex.plex import search_episodes_by_season_rating_key
|
7
|
+
from plexflow.core.metadata.auto.auto_providers.plex.episode import AutoPlexEpisode
|
8
|
+
|
9
|
+
class AutoPlexSeason(AutoSeason):
|
10
|
+
def __init__(self, parent: AutoShow, data: PlexSeasonMetadata) -> None:
|
11
|
+
super().__init__(parent)
|
12
|
+
self._season = data
|
13
|
+
|
14
|
+
@property
|
15
|
+
def episodes(self) -> list[AutoEpisode]:
|
16
|
+
episodes = search_episodes_by_season_rating_key(key=self._season.ratingKey)
|
17
|
+
return [AutoPlexEpisode(self, episode) for episode in episodes]
|
18
|
+
|
19
|
+
@property
|
20
|
+
def release_date(self) -> datetime:
|
21
|
+
return datetime.strptime(self._season.originallyAvailableAt, '%Y-%m-%d')
|
22
|
+
|
23
|
+
@property
|
24
|
+
def season_number(self) -> int:
|
25
|
+
return self._season.index
|
@@ -0,0 +1,46 @@
|
|
1
|
+
from plexflow.core.metadata.auto.auto_providers.auto.show import AutoShow
|
2
|
+
from plexflow.core.metadata.auto.auto_providers.auto.season import AutoSeason
|
3
|
+
from plexflow.core.metadata.providers.plex.plex import search_show_by_rating_key, search_seasons_by_show_rating_key
|
4
|
+
from datetime import datetime
|
5
|
+
from plexflow.utils.imdb.imdb_codes import extract_imdb_code
|
6
|
+
from plexflow.core.metadata.auto.auto_providers.plex.season import AutoPlexSeason
|
7
|
+
|
8
|
+
class AutoPlexShow(AutoShow):
|
9
|
+
def __init__(self, rating_key: str) -> None:
|
10
|
+
self._show = search_show_by_rating_key(rating_key)
|
11
|
+
imdb_id = next((next(extract_imdb_code(g.id), None) for g in self._show.Guid), None)
|
12
|
+
|
13
|
+
super().__init__(imdb_id, 'plex')
|
14
|
+
|
15
|
+
@property
|
16
|
+
def id(self) -> str:
|
17
|
+
return self._show.ratingKey
|
18
|
+
|
19
|
+
@property
|
20
|
+
def title(self) -> str:
|
21
|
+
return self._show.title
|
22
|
+
|
23
|
+
@property
|
24
|
+
def release_date(self) -> datetime:
|
25
|
+
return datetime.strptime(self._show.originallyAvailableAt, '%Y-%m-%d')
|
26
|
+
|
27
|
+
@property
|
28
|
+
def runtime(self) -> int:
|
29
|
+
return self._show.duration // 60000 if isinstance(self._show.duration, int) else None
|
30
|
+
|
31
|
+
@property
|
32
|
+
def titles(self) -> list:
|
33
|
+
return []
|
34
|
+
|
35
|
+
@property
|
36
|
+
def summary(self) -> str:
|
37
|
+
return self._show.summary
|
38
|
+
|
39
|
+
@property
|
40
|
+
def language(self) -> str:
|
41
|
+
return None
|
42
|
+
|
43
|
+
@property
|
44
|
+
def seasons(self) -> list[AutoSeason]:
|
45
|
+
seasons = search_seasons_by_show_rating_key(key=self.id)
|
46
|
+
return [AutoPlexSeason(self, season) for season in seasons]
|
Binary file
|
@@ -368,17 +368,57 @@ class PlexShowMetadata:
|
|
368
368
|
_catchall (dict): A catch-all dictionary for any additional attributes.
|
369
369
|
"""
|
370
370
|
|
371
|
+
art: Optional[str] = None,
|
372
|
+
guid: Optional[str] = None,
|
373
|
+
key: Optional[str] = None,
|
374
|
+
primaryExtraKey: Optional[str] = None,
|
375
|
+
rating: Optional[float] = None,
|
376
|
+
ratingKey: Optional[str] = None,
|
377
|
+
studio: Optional[str] = None,
|
378
|
+
subtype: Optional[str] = None,
|
379
|
+
summary: Optional[str] = None,
|
380
|
+
tagline: Optional[str] = None,
|
381
|
+
type: Optional[str] = None,
|
382
|
+
thumb: Optional[str] = None,
|
383
|
+
addedAt: Optional[int] = None,
|
384
|
+
duration: Optional[int] = None,
|
385
|
+
publicPagesURL: Optional[str] = None,
|
386
|
+
slug: Optional[str] = None,
|
387
|
+
userState: Optional[bool] = None,
|
388
|
+
title: Optional[str] = None,
|
389
|
+
leafCount: Optional[int] = None,
|
390
|
+
childCount: Optional[int] = None,
|
391
|
+
skipChildren: Optional[bool] = None,
|
392
|
+
isContinuingSeries: Optional[bool] = None,
|
393
|
+
contentRating: Optional[str] = None,
|
394
|
+
originallyAvailableAt: Optional[str] = None,
|
395
|
+
year: Optional[int] = None,
|
396
|
+
ratingImage: Optional[str] = None,
|
397
|
+
imdbRatingCount: Optional[int] = None,
|
398
|
+
source: Optional[str] = None
|
399
|
+
Image: Optional[List[PlexImage]] = None
|
400
|
+
Guid: Optional[List[PlexGuid]] = None
|
401
|
+
Role: Optional[List[PlexRole]] = None
|
402
|
+
Country: Optional[List[PlexCountry]] = None
|
403
|
+
Director: Optional[List[PlexDirector]] = None
|
404
|
+
Writer: Optional[List[PlexWriter]] = None
|
405
|
+
Rating: Optional[List[PlexRating]] = None
|
406
|
+
Studio: Optional[List[PlexStudio]] = None
|
407
|
+
Producer: Optional[List[PlexProducer]] = None
|
408
|
+
Genre: Optional[List[PlexGenre]] = None
|
409
|
+
_catchall: dict = field(default_factory=dict)
|
410
|
+
|
371
411
|
def __post_init__(self):
|
372
|
-
self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image]
|
373
|
-
self.Genre = [PlexGenre(**genre) if isinstance(genre, dict) else genre for genre in self.Genre]
|
374
|
-
self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid]
|
375
|
-
self.Country = [PlexCountry(**country) if isinstance(country, dict) else country for country in self.Country]
|
376
|
-
self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role]
|
377
|
-
self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director]
|
378
|
-
self.Producer = [PlexProducer(**producer) if isinstance(producer, dict) else producer for producer in self.Producer]
|
379
|
-
self.Writer = [PlexWriter(**writer) if isinstance(writer, dict) else writer for writer in self.Writer]
|
380
|
-
self.Rating = [PlexRating(**rating) if isinstance(rating, dict) else rating for rating in self.Rating]
|
381
|
-
self.Studio = [PlexStudio(**studio) if isinstance(studio, dict) else studio for studio in self.Studio]
|
412
|
+
self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image] if self.Image else []
|
413
|
+
self.Genre = [PlexGenre(**genre) if isinstance(genre, dict) else genre for genre in self.Genre] if self.Genre else []
|
414
|
+
self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid] if self.Guid else []
|
415
|
+
self.Country = [PlexCountry(**country) if isinstance(country, dict) else country for country in self.Country] if self.Country else []
|
416
|
+
self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role] if self.Role else []
|
417
|
+
self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director] if self.Director else []
|
418
|
+
self.Producer = [PlexProducer(**producer) if isinstance(producer, dict) else producer for producer in self.Producer] if self.Producer else []
|
419
|
+
self.Writer = [PlexWriter(**writer) if isinstance(writer, dict) else writer for writer in self.Writer] if self.Writer else []
|
420
|
+
self.Rating = [PlexRating(**rating) if isinstance(rating, dict) else rating for rating in self.Rating] if self.Rating else []
|
421
|
+
self.Studio = [PlexStudio(**studio) if isinstance(studio, dict) else studio for studio in self.Studio] if self.Studio else []
|
382
422
|
|
383
423
|
|
384
424
|
@dataclass_json(undefined=Undefined.EXCLUDE)
|
@@ -614,7 +654,7 @@ class PlexEpisodeMetadata:
|
|
614
654
|
_catchall: dict = field(default_factory=dict)
|
615
655
|
|
616
656
|
def __post_init__(self):
|
617
|
-
self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image]
|
657
|
+
self.Image = [PlexImage(**image) if isinstance(image, dict) else image for image in self.Image] if self.Image else []
|
618
658
|
self.Guid = [PlexGuid(**guid) if isinstance(guid, dict) else guid for guid in self.Guid]
|
619
659
|
self.Role = [PlexRole(**role) if isinstance(role, dict) else role for role in self.Role] if self.Role else []
|
620
660
|
self.Director = [PlexDirector(**director) if isinstance(director, dict) else director for director in self.Director] if self.Director else []
|
Binary file
|
@@ -2,6 +2,9 @@ import subprocess
|
|
2
2
|
from pathlib import Path
|
3
3
|
from typing import List, Optional
|
4
4
|
import re
|
5
|
+
import json
|
6
|
+
from typing import Tuple
|
7
|
+
|
5
8
|
|
6
9
|
class FFmpegError(Exception):
|
7
10
|
"""Custom exception for FFmpeg errors."""
|
@@ -74,6 +77,9 @@ def get_audio_stream_indices(video_path: Path) -> List[int]:
|
|
74
77
|
- FileNotFoundError: If the video file does not exist.
|
75
78
|
- FFmpegError: If ffmpeg encounters an error during processing.
|
76
79
|
"""
|
80
|
+
if isinstance(video_path, str):
|
81
|
+
video_path = Path(video_path)
|
82
|
+
|
77
83
|
if not video_path.exists():
|
78
84
|
raise FileNotFoundError(f"The video file {video_path} does not exist.")
|
79
85
|
|
@@ -95,4 +101,48 @@ def get_audio_stream_indices(video_path: Path) -> List[int]:
|
|
95
101
|
stream_index = int(match.group(1))
|
96
102
|
audio_indices.append(stream_index)
|
97
103
|
|
98
|
-
return audio_indices
|
104
|
+
return audio_indices
|
105
|
+
|
106
|
+
def get_audio_stream_info(video_path: Path) -> List[Tuple[int, Optional[str]]]:
|
107
|
+
"""
|
108
|
+
Retrieves the indices and language tags of audio streams in a video file using ffprobe.
|
109
|
+
|
110
|
+
Parameters:
|
111
|
+
- video_path (Path): Path to the input video file.
|
112
|
+
|
113
|
+
Returns:
|
114
|
+
- List[Tuple[int, Optional[str]]]: A list of tuples, where each tuple contains
|
115
|
+
(stream_index, language_code). language_code will be None if not found.
|
116
|
+
|
117
|
+
Raises:
|
118
|
+
- FileNotFoundError: If the video file does not exist.
|
119
|
+
- FFmpegError: If ffprobe encounters an error during processing or JSON parsing.
|
120
|
+
"""
|
121
|
+
if isinstance(video_path, str):
|
122
|
+
video_path = Path(video_path)
|
123
|
+
|
124
|
+
if not video_path.exists():
|
125
|
+
raise FileNotFoundError(f"The video file {video_path} does not exist.")
|
126
|
+
|
127
|
+
command = [
|
128
|
+
'ffprobe',
|
129
|
+
'-v', 'error', # Suppress verbose output
|
130
|
+
'-select_streams', 'a', # Select only audio streams
|
131
|
+
'-show_entries', 'stream=index:stream_tags=language', # Show index and language tag
|
132
|
+
'-of', 'json', # Output in JSON format
|
133
|
+
str(video_path)
|
134
|
+
]
|
135
|
+
|
136
|
+
try:
|
137
|
+
result = subprocess.run(command, check=True, capture_output=True, text=True)
|
138
|
+
data = json.loads(result.stdout)
|
139
|
+
|
140
|
+
audio_stream_info = []
|
141
|
+
for s in data.get('streams', []):
|
142
|
+
index = s.get('index')
|
143
|
+
language = s.get('tags', {}).get('language')
|
144
|
+
if index is not None:
|
145
|
+
audio_stream_info.append((index, language))
|
146
|
+
return audio_stream_info
|
147
|
+
except (subprocess.CalledProcessError, json.JSONDecodeError) as e:
|
148
|
+
raise FFmpegError(f"FFprobe error: {e.stderr if isinstance(e, subprocess.CalledProcessError) else e}")
|
Binary file
|
Binary file
|
Binary file
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/__init__.cpython-311.pyc
RENAMED
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/__init__.cpython-312.pyc
RENAMED
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/__pycache__/context.cpython-311.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/partials/__pycache__/ids.cpython-311.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/context/root/__pycache__/context.cpython-311.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/__pycache__/__init__.cpython-312.pyc
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{plexflow-0.0.122 → plexflow-0.0.123}/plexflow/core/downloads/candidates/download_candidate.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|