From 206df8b15045abc49b54a8756ce6fc7a308577f1 Mon Sep 17 00:00:00 2001 From: maxDorninger <97409287+maxDorninger@users.noreply.github.com> Date: Thu, 29 May 2025 14:30:39 +0200 Subject: [PATCH] refactor: change folder structure --- .env | 5 ---- .gitignore | 8 +++--- backend/alembic.ini => alembic.ini | 0 {backend/alembic => alembic}/README | 0 {backend/alembic => alembic}/env.py | 10 +++---- {backend/alembic => alembic}/script.py.mako | 0 .../93fb07842385_initial_migration.py | 0 backend/src/indexer/__init__.py | 12 --------- {backend/src => media_manager}/auth/config.py | 0 {backend/src => media_manager}/auth/db.py | 4 +-- {backend/src => media_manager}/auth/router.py | 12 ++++----- .../src => media_manager}/auth/schemas.py | 0 {backend/src => media_manager}/auth/users.py | 8 +++--- {backend/src => media_manager}/config.py | 0 .../database/__init__.py | 3 ++- .../src => media_manager}/database/config.py | 0 media_manager/indexer/__init__.py | 12 +++++++++ .../src => media_manager}/indexer/config.py | 0 .../indexer/indexers/__init__.py | 0 .../indexer/indexers/generic.py | 2 +- .../indexer/indexers/prowlarr.py | 6 ++--- .../src => media_manager}/indexer/models.py | 6 ++--- .../indexer/repository.py | 4 +-- .../src => media_manager}/indexer/schemas.py | 2 +- .../src => media_manager}/indexer/service.py | 6 ++--- {backend/src => media_manager}/main.py | 27 +++++++++---------- .../metadataProvider/__init__.py | 6 ++--- .../abstractMetaDataProvider.py | 4 +-- .../metadataProvider/schemas.py | 0 .../metadataProvider/tmdb.py | 6 ++--- .../metadataProvider/tvdb.py | 6 ++--- .../metadataProvider/utils.py | 0 .../src => media_manager}/torrent/__init__.py | 0 .../torrent/dependencies.py | 4 +-- .../src => media_manager}/torrent/models.py | 4 +-- .../torrent/repository.py | 8 +++--- .../src => media_manager}/torrent/router.py | 6 ++--- .../src => media_manager}/torrent/schemas.py | 0 .../src => media_manager}/torrent/service.py | 10 +++---- .../src => media_manager}/torrent/utils.py | 2 +- {backend/src => media_manager}/tv/__init__.py | 0 .../src => media_manager}/tv/exceptions.py | 0 {backend/src => media_manager}/tv/models.py | 6 ++--- .../src => media_manager}/tv/repository.py | 10 +++---- {backend/src => media_manager}/tv/router.py | 20 +++++++------- {backend/src => media_manager}/tv/schemas.py | 6 ++--- {backend/src => media_manager}/tv/service.py | 20 +++++++------- backend/requirements.txt => requirements.txt | 0 48 files changed, 120 insertions(+), 125 deletions(-) delete mode 100644 .env rename backend/alembic.ini => alembic.ini (100%) rename {backend/alembic => alembic}/README (100%) rename {backend/alembic => alembic}/env.py (91%) rename {backend/alembic => alembic}/script.py.mako (100%) rename {backend/alembic => alembic}/versions/93fb07842385_initial_migration.py (100%) delete mode 100644 backend/src/indexer/__init__.py rename {backend/src => media_manager}/auth/config.py (100%) rename {backend/src => media_manager}/auth/db.py (92%) rename {backend/src => media_manager}/auth/router.py (73%) rename {backend/src => media_manager}/auth/schemas.py (100%) rename {backend/src => media_manager}/auth/users.py (95%) rename {backend/src => media_manager}/config.py (100%) rename {backend/src => media_manager}/database/__init__.py (93%) rename {backend/src => media_manager}/database/config.py (100%) create mode 100644 media_manager/indexer/__init__.py rename {backend/src => media_manager}/indexer/config.py (100%) rename {backend/src => media_manager}/indexer/indexers/__init__.py (100%) rename {backend/src => media_manager}/indexer/indexers/generic.py (90%) rename {backend/src => media_manager}/indexer/indexers/prowlarr.py (91%) rename {backend/src => media_manager}/indexer/models.py (76%) rename {backend/src => media_manager}/indexer/repository.py (82%) rename {backend/src => media_manager}/indexer/schemas.py (97%) rename {backend/src => media_manager}/indexer/service.py (75%) rename {backend/src => media_manager}/main.py (84%) rename {backend/src => media_manager}/metadataProvider/__init__.py (78%) rename {backend/src => media_manager}/metadataProvider/abstractMetaDataProvider.py (85%) rename {backend/src => media_manager}/metadataProvider/schemas.py (100%) rename {backend/src => media_manager}/metadataProvider/tmdb.py (95%) rename {backend/src => media_manager}/metadataProvider/tvdb.py (94%) rename {backend/src => media_manager}/metadataProvider/utils.py (100%) rename {backend/src => media_manager}/torrent/__init__.py (100%) rename {backend/src => media_manager}/torrent/dependencies.py (68%) rename {backend/src => media_manager}/torrent/models.py (79%) rename {backend/src => media_manager}/torrent/repository.py (83%) rename {backend/src => media_manager}/torrent/router.py (86%) rename {backend/src => media_manager}/torrent/schemas.py (100%) rename {backend/src => media_manager}/torrent/service.py (97%) rename {backend/src => media_manager}/torrent/utils.py (96%) rename {backend/src => media_manager}/tv/__init__.py (100%) rename {backend/src => media_manager}/tv/exceptions.py (100%) rename {backend/src => media_manager}/tv/models.py (96%) rename {backend/src => media_manager}/tv/repository.py (96%) rename {backend/src => media_manager}/tv/router.py (93%) rename {backend/src => media_manager}/tv/schemas.py (95%) rename {backend/src => media_manager}/tv/service.py (93%) rename backend/requirements.txt => requirements.txt (100%) diff --git a/.env b/.env deleted file mode 100644 index 5cebe4e..0000000 --- a/.env +++ /dev/null @@ -1,5 +0,0 @@ -# See the documentation for more information: https://pocket-id.org/docs/configuration/environment-variables -APP_URL=http://localhost:1411 -TRUST_PROXY=false -PUID=1000 -PGID=1000 diff --git a/.gitignore b/.gitignore index df67f47..66a1752 100644 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,6 @@ .idea venv MediaManager.iml -backend/res -backend/res/.env docker-compose.yml data/* movie/* @@ -10,8 +8,10 @@ torrent/* tv/* log.txt res/* -/backend/src/indexer/indexers/prowlarr.http -/web/cache/ +media_manager/indexer/indexers/prowlarr.http + + +web/cache/ web/node_modules # Output diff --git a/backend/alembic.ini b/alembic.ini similarity index 100% rename from backend/alembic.ini rename to alembic.ini diff --git a/backend/alembic/README b/alembic/README similarity index 100% rename from backend/alembic/README rename to alembic/README diff --git a/backend/alembic/env.py b/alembic/env.py similarity index 91% rename from backend/alembic/env.py rename to alembic/env.py index ea908e1..ae79a14 100644 --- a/backend/alembic/env.py +++ b/alembic/env.py @@ -32,12 +32,12 @@ if config.config_file_name is not None: # from myapp import mymodel # target_metadata = mymodel.Base.metadata -from backend.src.auth.db import User, OAuthAccount -from backend.src.indexer.models import IndexerQueryResult -from backend.src.torrent.models import Torrent -from backend.src.tv.models import Show, Season, Episode, SeasonFile, SeasonRequest +from media_manager.auth.db import User, OAuthAccount +from media_manager.indexer.models import IndexerQueryResult +from media_manager.torrent.models import Torrent +from media_manager.tv.models import Show, Season, Episode, SeasonFile, SeasonRequest -from backend.src.database import Base +from media_manager.database import Base target_metadata = Base.metadata # this is to keep pycharm from complaining about/optimizing unused imports diff --git a/backend/alembic/script.py.mako b/alembic/script.py.mako similarity index 100% rename from backend/alembic/script.py.mako rename to alembic/script.py.mako diff --git a/backend/alembic/versions/93fb07842385_initial_migration.py b/alembic/versions/93fb07842385_initial_migration.py similarity index 100% rename from backend/alembic/versions/93fb07842385_initial_migration.py rename to alembic/versions/93fb07842385_initial_migration.py diff --git a/backend/src/indexer/__init__.py b/backend/src/indexer/__init__.py deleted file mode 100644 index 20a3556..0000000 --- a/backend/src/indexer/__init__.py +++ /dev/null @@ -1,12 +0,0 @@ -import logging - -from backend.src.indexer.config import ProwlarrConfig -from backend.src.indexer.indexers.generic import GenericIndexer, IndexerQueryResult -from backend.src.indexer.indexers.prowlarr import Prowlarr - -log = logging.getLogger(__name__) - -indexers: list[GenericIndexer] = [] - -if ProwlarrConfig().enabled: - indexers.append(Prowlarr()) diff --git a/backend/src/auth/config.py b/media_manager/auth/config.py similarity index 100% rename from backend/src/auth/config.py rename to media_manager/auth/config.py diff --git a/backend/src/auth/db.py b/media_manager/auth/db.py similarity index 92% rename from backend/src/auth/db.py rename to media_manager/auth/db.py index c0a1e01..bfb612e 100644 --- a/backend/src/auth/db.py +++ b/media_manager/auth/db.py @@ -9,8 +9,8 @@ from fastapi_users.db import ( from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine from sqlalchemy.orm import Mapped, relationship -from backend.src.database import Base -from backend.src.database import db_url +from media_manager.database import Base +from media_manager.database import db_url class OAuthAccount(SQLAlchemyBaseOAuthAccountTableUUID, Base): diff --git a/backend/src/auth/router.py b/media_manager/auth/router.py similarity index 73% rename from backend/src/auth/router.py rename to media_manager/auth/router.py index 1d7dc27..4ffdcf8 100644 --- a/backend/src/auth/router.py +++ b/media_manager/auth/router.py @@ -2,12 +2,12 @@ from fastapi import APIRouter, Depends from fastapi import status from sqlalchemy import select -from auth.config import OAuth2Config -from auth.db import User -from auth.schemas import UserRead -from auth.users import current_superuser -from database import DbSessionDependency -from auth.users import oauth_client +from media_manager.auth.config import OAuth2Config +from media_manager.auth.db import User +from media_manager.auth.schemas import UserRead +from media_manager.auth.users import current_superuser +from media_manager.database import DbSessionDependency +from media_manager.auth.users import oauth_client users_router = APIRouter() auth_metadata_router = APIRouter() diff --git a/backend/src/auth/schemas.py b/media_manager/auth/schemas.py similarity index 100% rename from backend/src/auth/schemas.py rename to media_manager/auth/schemas.py diff --git a/backend/src/auth/users.py b/media_manager/auth/users.py similarity index 95% rename from backend/src/auth/users.py rename to media_manager/auth/users.py index 2222401..90b7ab7 100644 --- a/backend/src/auth/users.py +++ b/media_manager/auth/users.py @@ -16,10 +16,10 @@ from httpx_oauth.oauth2 import OAuth2 from fastapi.responses import RedirectResponse, Response from starlette import status -from backend.src.auth.config import AuthConfig, OAuth2Config -from backend.src.auth.db import User, get_user_db -from backend.src.auth.schemas import UserUpdate -from backend.src.config import BasicConfig +from media_manager.auth.config import AuthConfig, OAuth2Config +from media_manager.auth.db import User, get_user_db +from media_manager.auth.schemas import UserUpdate +from media_manager.config import BasicConfig config = AuthConfig() SECRET = config.token_secret diff --git a/backend/src/config.py b/media_manager/config.py similarity index 100% rename from backend/src/config.py rename to media_manager/config.py diff --git a/backend/src/database/__init__.py b/media_manager/database/__init__.py similarity index 93% rename from backend/src/database/__init__.py rename to media_manager/database/__init__.py index 4ce4fdd..582e7c4 100644 --- a/backend/src/database/__init__.py +++ b/media_manager/database/__init__.py @@ -4,10 +4,11 @@ from contextvars import ContextVar from typing import Annotated, Any, Generator from fastapi import Depends +from jsonschema.validators import extend from sqlalchemy import create_engine from sqlalchemy.orm import Session, declarative_base, sessionmaker -from backend.src.database.config import DbConfig +from media_manager.database.config import DbConfig log = logging.getLogger(__name__) config = DbConfig() diff --git a/backend/src/database/config.py b/media_manager/database/config.py similarity index 100% rename from backend/src/database/config.py rename to media_manager/database/config.py diff --git a/media_manager/indexer/__init__.py b/media_manager/indexer/__init__.py new file mode 100644 index 0000000..db2d00b --- /dev/null +++ b/media_manager/indexer/__init__.py @@ -0,0 +1,12 @@ +import logging + +from media_manager.indexer.config import ProwlarrConfig +from media_manager.indexer.indexers.generic import GenericIndexer, IndexerQueryResult +from media_manager.indexer.indexers.prowlarr import Prowlarr + +log = logging.getLogger(__name__) + +indexers: list[GenericIndexer] = [] + +if ProwlarrConfig().enabled: + indexers.append(Prowlarr()) diff --git a/backend/src/indexer/config.py b/media_manager/indexer/config.py similarity index 100% rename from backend/src/indexer/config.py rename to media_manager/indexer/config.py diff --git a/backend/src/indexer/indexers/__init__.py b/media_manager/indexer/indexers/__init__.py similarity index 100% rename from backend/src/indexer/indexers/__init__.py rename to media_manager/indexer/indexers/__init__.py diff --git a/backend/src/indexer/indexers/generic.py b/media_manager/indexer/indexers/generic.py similarity index 90% rename from backend/src/indexer/indexers/generic.py rename to media_manager/indexer/indexers/generic.py index 6b7ee19..d008873 100644 --- a/backend/src/indexer/indexers/generic.py +++ b/media_manager/indexer/indexers/generic.py @@ -1,4 +1,4 @@ -from backend.src.indexer.schemas import IndexerQueryResult +from media_manager.indexer.schemas import IndexerQueryResult class GenericIndexer(object): diff --git a/backend/src/indexer/indexers/prowlarr.py b/media_manager/indexer/indexers/prowlarr.py similarity index 91% rename from backend/src/indexer/indexers/prowlarr.py rename to media_manager/indexer/indexers/prowlarr.py index 6ffd298..1e3dd0a 100644 --- a/backend/src/indexer/indexers/prowlarr.py +++ b/media_manager/indexer/indexers/prowlarr.py @@ -2,9 +2,9 @@ import logging import requests -from backend.src.indexer import GenericIndexer -from backend.src.indexer.config import ProwlarrConfig -from backend.src.indexer.schemas import IndexerQueryResult +from media_manager.indexer import GenericIndexer +from media_manager.indexer.config import ProwlarrConfig +from media_manager.indexer.schemas import IndexerQueryResult log = logging.getLogger(__name__) diff --git a/backend/src/indexer/models.py b/media_manager/indexer/models.py similarity index 76% rename from backend/src/indexer/models.py rename to media_manager/indexer/models.py index 643b349..9057c68 100644 --- a/backend/src/indexer/models.py +++ b/media_manager/indexer/models.py @@ -2,9 +2,9 @@ from sqlalchemy import String, Integer from sqlalchemy.dialects.postgresql import ARRAY from sqlalchemy.orm import Mapped, mapped_column -from backend.src.database import Base -from backend.src.indexer.schemas import IndexerQueryResultId -from backend.src.torrent.schemas import Quality +from media_manager.database import Base +from media_manager.indexer.schemas import IndexerQueryResultId +from media_manager.torrent.schemas import Quality class IndexerQueryResult(Base): diff --git a/backend/src/indexer/repository.py b/media_manager/indexer/repository.py similarity index 82% rename from backend/src/indexer/repository.py rename to media_manager/indexer/repository.py index 8c7214e..8e041d5 100644 --- a/backend/src/indexer/repository.py +++ b/media_manager/indexer/repository.py @@ -1,7 +1,7 @@ from sqlalchemy.orm import Session -from indexer.models import IndexerQueryResult -from indexer.schemas import ( +from media_manager.indexer.models import IndexerQueryResult +from media_manager.indexer.schemas import ( IndexerQueryResultId, IndexerQueryResult as IndexerQueryResultSchema, ) diff --git a/backend/src/indexer/schemas.py b/media_manager/indexer/schemas.py similarity index 97% rename from backend/src/indexer/schemas.py rename to media_manager/indexer/schemas.py index 6d2a07f..6091998 100644 --- a/backend/src/indexer/schemas.py +++ b/media_manager/indexer/schemas.py @@ -5,7 +5,7 @@ from uuid import UUID, uuid4 import pydantic from pydantic import BaseModel, computed_field, ConfigDict -from backend.src.torrent.models import Quality +from media_manager.torrent.models import Quality IndexerQueryResultId = typing.NewType("IndexerQueryResultId", UUID) diff --git a/backend/src/indexer/service.py b/media_manager/indexer/service.py similarity index 75% rename from backend/src/indexer/service.py rename to media_manager/indexer/service.py index 804789d..76e3c10 100644 --- a/backend/src/indexer/service.py +++ b/media_manager/indexer/service.py @@ -1,9 +1,9 @@ from sqlalchemy.orm import Session import indexer.repository -from indexer import IndexerQueryResult, log, indexers -from indexer.repository import save_result -from indexer.schemas import IndexerQueryResultId +from media_manager.indexer import IndexerQueryResult, log, indexers +from media_manager.indexer.repository import save_result +from media_manager.indexer.schemas import IndexerQueryResultId def search(query: str, db: Session) -> list[IndexerQueryResult]: diff --git a/backend/src/main.py b/media_manager/main.py similarity index 84% rename from backend/src/main.py rename to media_manager/main.py index 7ba6540..92d8531 100644 --- a/backend/src/main.py +++ b/media_manager/main.py @@ -45,30 +45,29 @@ logging.basicConfig( ) log = logging.getLogger(__name__) -from backend.src.database import init_db -import tv.router -import torrent.router - +from media_manager.database import init_db +import media_manager.tv.router as tv_router +import media_manager.torrent.router as torrent_router init_db() log.info("Database initialized") -from auth.users import oauth_client -import auth.users -from config import BasicConfig +from media_manager.auth.users import oauth_client +from media_manager.auth.users import SECRET as AUTH_USERS_SECRET +from media_manager.config import BasicConfig import uvicorn from fastapi import FastAPI from fastapi.middleware.cors import CORSMiddleware from fastapi.staticfiles import StaticFiles -from auth.schemas import UserCreate, UserRead, UserUpdate -from auth.users import ( +from media_manager.auth.schemas import UserCreate, UserRead, UserUpdate +from media_manager.auth.users import ( bearer_auth_backend, fastapi_users, cookie_auth_backend, oauth_cookie_auth_backend, ) -from auth.router import users_router as custom_users_router -from auth.router import auth_metadata_router +from media_manager.auth.router import users_router as custom_users_router +from media_manager.auth.router import auth_metadata_router basic_config = BasicConfig() if basic_config.DEVELOPMENT: @@ -137,7 +136,7 @@ if oauth_client is not None: fastapi_users.get_oauth_router( oauth_client, oauth_cookie_auth_backend, - auth.users.SECRET, + AUTH_USERS_SECRET, associate_by_email=True, is_verified_by_default=True, ), @@ -145,8 +144,8 @@ if oauth_client is not None: tags=["oauth"], ) -app.include_router(tv.router.router, prefix="/tv", tags=["tv"]) -app.include_router(torrent.router.router, prefix="/torrent", tags=["torrent"]) +app.include_router(tv_router.router, prefix="/tv", tags=["tv"]) +app.include_router(torrent_router.router, prefix="/torrent", tags=["torrent"]) # static file routers app.mount( diff --git a/backend/src/metadataProvider/__init__.py b/media_manager/metadataProvider/__init__.py similarity index 78% rename from backend/src/metadataProvider/__init__.py rename to media_manager/metadataProvider/__init__.py index 6c880b2..dce95bd 100644 --- a/backend/src/metadataProvider/__init__.py +++ b/media_manager/metadataProvider/__init__.py @@ -3,9 +3,9 @@ from cachetools import TTLCache, cached import metadataProvider.tmdb import metadataProvider.tvdb -from metadataProvider.abstractMetaDataProvider import metadata_providers -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from tv.schemas import Show +from media_manager.metadataProvider.abstractMetaDataProvider import metadata_providers +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.tv.schemas import Show log = logging.getLogger(__name__) search_show_cache = TTLCache(maxsize=128, ttl=24 * 60 * 60) # Cache for 24 hours diff --git a/backend/src/metadataProvider/abstractMetaDataProvider.py b/media_manager/metadataProvider/abstractMetaDataProvider.py similarity index 85% rename from backend/src/metadataProvider/abstractMetaDataProvider.py rename to media_manager/metadataProvider/abstractMetaDataProvider.py index 5b081d7..87a1a4b 100644 --- a/backend/src/metadataProvider/abstractMetaDataProvider.py +++ b/media_manager/metadataProvider/abstractMetaDataProvider.py @@ -2,8 +2,8 @@ import logging from abc import ABC, abstractmethod import config -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from tv.schemas import Show +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.tv.schemas import Show log = logging.getLogger(__name__) diff --git a/backend/src/metadataProvider/schemas.py b/media_manager/metadataProvider/schemas.py similarity index 100% rename from backend/src/metadataProvider/schemas.py rename to media_manager/metadataProvider/schemas.py diff --git a/backend/src/metadataProvider/tmdb.py b/media_manager/metadataProvider/tmdb.py similarity index 95% rename from backend/src/metadataProvider/tmdb.py rename to media_manager/metadataProvider/tmdb.py index dbf11ce..cebd338 100644 --- a/backend/src/metadataProvider/tmdb.py +++ b/media_manager/metadataProvider/tmdb.py @@ -7,12 +7,12 @@ from pydantic_settings import BaseSettings from tmdbsimple import TV, TV_Seasons import metadataProvider.utils -from metadataProvider.abstractMetaDataProvider import ( +from media_manager.metadataProvider.abstractMetaDataProvider import ( AbstractMetadataProvider, register_metadata_provider, ) -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from tv.schemas import Episode, Season, Show, SeasonNumber, EpisodeNumber +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.tv.schemas import Episode, Season, Show, SeasonNumber, EpisodeNumber class TmdbConfig(BaseSettings): diff --git a/backend/src/metadataProvider/tvdb.py b/media_manager/metadataProvider/tvdb.py similarity index 94% rename from backend/src/metadataProvider/tvdb.py rename to media_manager/metadataProvider/tvdb.py index 746fbe9..99f0ba9 100644 --- a/backend/src/metadataProvider/tvdb.py +++ b/media_manager/metadataProvider/tvdb.py @@ -11,12 +11,12 @@ from pydantic_settings import BaseSettings from tmdbsimple import TV, TV_Seasons import metadataProvider.utils -from metadataProvider.abstractMetaDataProvider import ( +from media_manager.metadataProvider.abstractMetaDataProvider import ( AbstractMetadataProvider, register_metadata_provider, ) -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from tv.schemas import Episode, Season, Show, SeasonNumber, EpisodeNumber +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.tv.schemas import Episode, Season, Show, SeasonNumber, EpisodeNumber class TvdbConfig(BaseSettings): diff --git a/backend/src/metadataProvider/utils.py b/media_manager/metadataProvider/utils.py similarity index 100% rename from backend/src/metadataProvider/utils.py rename to media_manager/metadataProvider/utils.py diff --git a/backend/src/torrent/__init__.py b/media_manager/torrent/__init__.py similarity index 100% rename from backend/src/torrent/__init__.py rename to media_manager/torrent/__init__.py diff --git a/backend/src/torrent/dependencies.py b/media_manager/torrent/dependencies.py similarity index 68% rename from backend/src/torrent/dependencies.py rename to media_manager/torrent/dependencies.py index ee4f961..44fa78f 100644 --- a/backend/src/torrent/dependencies.py +++ b/media_manager/torrent/dependencies.py @@ -2,8 +2,8 @@ from typing import Annotated from fastapi import Depends -from backend.src.database import DbSessionDependency -from torrent.service import TorrentService +from media_manager.database import DbSessionDependency +from media_manager.torrent.service import TorrentService def get_torrent_service(db: DbSessionDependency) -> TorrentService: diff --git a/backend/src/torrent/models.py b/media_manager/torrent/models.py similarity index 79% rename from backend/src/torrent/models.py rename to media_manager/torrent/models.py index 9245c83..e9b8780 100644 --- a/backend/src/torrent/models.py +++ b/media_manager/torrent/models.py @@ -2,8 +2,8 @@ from uuid import UUID from sqlalchemy.orm import Mapped, mapped_column, relationship -from backend.src.database import Base -from backend.src.torrent.schemas import Quality, TorrentStatus +from media_manager.database import Base +from media_manager.torrent.schemas import Quality, TorrentStatus class Torrent(Base): diff --git a/backend/src/torrent/repository.py b/media_manager/torrent/repository.py similarity index 83% rename from backend/src/torrent/repository.py rename to media_manager/torrent/repository.py index 7a447df..88e14ab 100644 --- a/backend/src/torrent/repository.py +++ b/media_manager/torrent/repository.py @@ -1,10 +1,10 @@ from sqlalchemy import select from sqlalchemy.orm import Session -from torrent.models import Torrent -from torrent.schemas import TorrentId, Torrent as TorrentSchema -from tv.models import SeasonFile, Show, Season -from tv.schemas import SeasonFile as SeasonFileSchema, Show as ShowSchema +from media_manager.torrent.models import Torrent +from media_manager.torrent.schemas import TorrentId, Torrent as TorrentSchema +from media_manager.tv.models import SeasonFile, Show, Season +from media_manager.tv.schemas import SeasonFile as SeasonFileSchema, Show as ShowSchema def get_seasons_files_of_torrent( diff --git a/backend/src/torrent/router.py b/media_manager/torrent/router.py similarity index 86% rename from backend/src/torrent/router.py rename to media_manager/torrent/router.py index adcf6d7..1b9d6de 100644 --- a/backend/src/torrent/router.py +++ b/media_manager/torrent/router.py @@ -2,9 +2,9 @@ from fastapi import APIRouter from fastapi import status from fastapi.params import Depends -from auth.users import current_active_user, current_superuser -from torrent.dependencies import TorrentServiceDependency -from torrent.schemas import TorrentId, Torrent +from media_manager.auth.users import current_active_user, current_superuser +from media_manager.torrent.dependencies import TorrentServiceDependency +from media_manager.torrent.schemas import TorrentId, Torrent router = APIRouter() diff --git a/backend/src/torrent/schemas.py b/media_manager/torrent/schemas.py similarity index 100% rename from backend/src/torrent/schemas.py rename to media_manager/torrent/schemas.py diff --git a/backend/src/torrent/service.py b/media_manager/torrent/service.py similarity index 97% rename from backend/src/torrent/service.py rename to media_manager/torrent/service.py index 3db4765..b6437d5 100644 --- a/backend/src/torrent/service.py +++ b/media_manager/torrent/service.py @@ -16,20 +16,20 @@ import torrent.repository import tv.repository import tv.service from config import BasicConfig -from indexer import IndexerQueryResult -from torrent.repository import ( +from media_manager.indexer import IndexerQueryResult +from media_manager.torrent.repository import ( get_seasons_files_of_torrent, get_show_of_torrent, save_torrent, ) -from torrent.schemas import Torrent, TorrentStatus, TorrentId -from torrent.utils import ( +from media_manager.torrent.schemas import Torrent, TorrentStatus, TorrentId +from media_manager.torrent.utils import ( list_files_recursively, get_torrent_filepath, import_file, extract_archives, ) -from tv.schemas import SeasonFile, Show +from media_manager.tv.schemas import SeasonFile, Show log = logging.getLogger(__name__) diff --git a/backend/src/torrent/utils.py b/media_manager/torrent/utils.py similarity index 96% rename from backend/src/torrent/utils.py rename to media_manager/torrent/utils.py index 1780c1e..a0e54e2 100644 --- a/backend/src/torrent/utils.py +++ b/media_manager/torrent/utils.py @@ -5,7 +5,7 @@ from pathlib import Path import patoolib from config import BasicConfig -from torrent.schemas import Torrent +from media_manager.torrent.schemas import Torrent log = logging.getLogger(__name__) diff --git a/backend/src/tv/__init__.py b/media_manager/tv/__init__.py similarity index 100% rename from backend/src/tv/__init__.py rename to media_manager/tv/__init__.py diff --git a/backend/src/tv/exceptions.py b/media_manager/tv/exceptions.py similarity index 100% rename from backend/src/tv/exceptions.py rename to media_manager/tv/exceptions.py diff --git a/backend/src/tv/models.py b/media_manager/tv/models.py similarity index 96% rename from backend/src/tv/models.py rename to media_manager/tv/models.py index 90e74b1..095b2ab 100644 --- a/backend/src/tv/models.py +++ b/media_manager/tv/models.py @@ -3,9 +3,9 @@ from uuid import UUID from sqlalchemy import ForeignKey, PrimaryKeyConstraint, UniqueConstraint from sqlalchemy.orm import Mapped, mapped_column, relationship -from backend.src.auth.db import User -from backend.src.database import Base -from backend.src.torrent.models import Quality +from media_manager.auth.db import User +from media_manager.database import Base +from media_manager.torrent.models import Quality class Show(Base): diff --git a/backend/src/tv/repository.py b/media_manager/tv/repository.py similarity index 96% rename from backend/src/tv/repository.py rename to media_manager/tv/repository.py index a78738f..44029c8 100644 --- a/backend/src/tv/repository.py +++ b/media_manager/tv/repository.py @@ -2,11 +2,11 @@ from sqlalchemy import select, delete from sqlalchemy.exc import IntegrityError from sqlalchemy.orm import Session, joinedload -from torrent.models import Torrent -from torrent.schemas import TorrentId, Torrent as TorrentSchema -from tv import log -from tv.models import Season, Show, Episode, SeasonRequest, SeasonFile -from tv.schemas import ( +from media_manager.torrent.models import Torrent +from media_manager.torrent.schemas import TorrentId, Torrent as TorrentSchema +from media_manager.tv import log +from media_manager.tv.models import Season, Show, Episode, SeasonRequest, SeasonFile +from media_manager.tv.schemas import ( Season as SeasonSchema, SeasonId, Show as ShowSchema, diff --git a/backend/src/tv/router.py b/media_manager/tv/router.py similarity index 93% rename from backend/src/tv/router.py rename to media_manager/tv/router.py index ce4ab17..a304946 100644 --- a/backend/src/tv/router.py +++ b/media_manager/tv/router.py @@ -5,16 +5,16 @@ from fastapi.responses import JSONResponse import tv.repository import tv.service -from auth.db import User -from auth.schemas import UserRead -from auth.users import current_active_user, current_superuser -from backend.src.database import DbSessionDependency -from indexer.schemas import PublicIndexerQueryResult, IndexerQueryResultId -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from torrent.schemas import Torrent -from tv import log -from tv.exceptions import MediaAlreadyExists -from tv.schemas import ( +from media_manager.auth.db import User +from media_manager.auth.schemas import UserRead +from media_manager.auth.users import current_active_user, current_superuser +from media_manager.database import DbSessionDependency +from media_manager.indexer.schemas import PublicIndexerQueryResult, IndexerQueryResultId +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.torrent.schemas import Torrent +from media_manager.tv import log +from media_manager.tv.exceptions import MediaAlreadyExists +from media_manager.tv.schemas import ( Show, SeasonRequest, ShowId, diff --git a/backend/src/tv/schemas.py b/media_manager/tv/schemas.py similarity index 95% rename from backend/src/tv/schemas.py rename to media_manager/tv/schemas.py index 6436187..743979e 100644 --- a/backend/src/tv/schemas.py +++ b/media_manager/tv/schemas.py @@ -5,9 +5,9 @@ from uuid import UUID from pydantic import BaseModel, Field, ConfigDict, model_validator from tvdb_v4_official import Request -from auth.schemas import UserRead -from torrent.models import Quality -from torrent.schemas import TorrentId, TorrentStatus +from media_manager.auth.schemas import UserRead +from media_manager.torrent.models import Quality +from media_manager.torrent.schemas import TorrentId, TorrentStatus ShowId = typing.NewType("ShowId", UUID) SeasonId = typing.NewType("SeasonId", UUID) diff --git a/backend/src/tv/service.py b/media_manager/tv/service.py similarity index 93% rename from backend/src/tv/service.py rename to media_manager/tv/service.py index 52ba60a..a95beeb 100644 --- a/backend/src/tv/service.py +++ b/media_manager/tv/service.py @@ -5,16 +5,16 @@ import indexer.service import metadataProvider import torrent.repository import tv.repository -from indexer import IndexerQueryResult -from indexer.schemas import IndexerQueryResultId -from metadataProvider.schemas import MetaDataProviderShowSearchResult -from torrent.repository import get_seasons_files_of_torrent -from torrent.schemas import Torrent -from torrent.service import TorrentService -from tv import log -from tv.exceptions import MediaAlreadyExists -from tv.repository import add_season_file, get_season_files_by_season_id -from tv.schemas import ( +from media_manager.indexer import IndexerQueryResult +from media_manager.indexer.schemas import IndexerQueryResultId +from media_manager.metadataProvider.schemas import MetaDataProviderShowSearchResult +from media_manager.torrent.repository import get_seasons_files_of_torrent +from media_manager.torrent.schemas import Torrent +from media_manager.torrent.service import TorrentService +from media_manager.tv import log +from media_manager.tv.exceptions import MediaAlreadyExists +from media_manager.tv.repository import add_season_file, get_season_files_by_season_id +from media_manager.tv.schemas import ( Show, ShowId, SeasonRequest, diff --git a/backend/requirements.txt b/requirements.txt similarity index 100% rename from backend/requirements.txt rename to requirements.txt