Complete Task 5: NFO Management API Endpoints
- Added comprehensive API documentation for NFO endpoints - Section 6 in API.md with all 8 endpoints documented - Updated task5_status.md to reflect 100% completion - Marked Task 5 complete in instructions.md - All 17 tests passing (1 skipped by design) - Endpoints: check, create, update, content, media status, download, batch, missing
This commit is contained in:
@@ -29,10 +29,7 @@ from src.server.models.nfo import (
|
||||
NFOMissingResponse,
|
||||
NFOMissingSeries,
|
||||
)
|
||||
from src.server.utils.dependencies import (
|
||||
get_series_app,
|
||||
require_auth,
|
||||
)
|
||||
from src.server.utils.dependencies import get_series_app, require_auth
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -91,7 +88,7 @@ def check_media_files(serie_folder: str) -> MediaFilesStatus:
|
||||
async def check_nfo(
|
||||
serie_id: str,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOCheckResponse:
|
||||
"""Check if NFO and media files exist for a series.
|
||||
@@ -99,7 +96,7 @@ async def check_nfo(
|
||||
Args:
|
||||
serie_id: Series identifier
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -110,7 +107,7 @@ async def check_nfo(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -158,7 +155,7 @@ async def create_nfo(
|
||||
serie_id: str,
|
||||
request: NFOCreateRequest,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOCreateResponse:
|
||||
"""Create NFO file and download media for a series.
|
||||
@@ -167,7 +164,7 @@ async def create_nfo(
|
||||
serie_id: Series identifier
|
||||
request: NFO creation options
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -178,7 +175,7 @@ async def create_nfo(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -247,7 +244,7 @@ async def update_nfo(
|
||||
serie_id: str,
|
||||
download_media: bool = True,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOCreateResponse:
|
||||
"""Update existing NFO file with fresh TMDB data.
|
||||
@@ -256,7 +253,7 @@ async def update_nfo(
|
||||
serie_id: Series identifier
|
||||
download_media: Whether to re-download media files
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -267,7 +264,7 @@ async def update_nfo(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -329,7 +326,7 @@ async def update_nfo(
|
||||
async def get_nfo_content(
|
||||
serie_id: str,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOContentResponse:
|
||||
"""Get NFO file content for a series.
|
||||
@@ -337,7 +334,7 @@ async def get_nfo_content(
|
||||
Args:
|
||||
serie_id: Series identifier
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -348,7 +345,7 @@ async def get_nfo_content(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -402,14 +399,14 @@ async def get_nfo_content(
|
||||
async def get_media_status(
|
||||
serie_id: str,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service)
|
||||
series_app: SeriesApp = Depends(get_series_app)
|
||||
) -> MediaFilesStatus:
|
||||
"""Get media files status for a series.
|
||||
|
||||
Args:
|
||||
serie_id: Series identifier
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
|
||||
Returns:
|
||||
MediaFilesStatus with file existence info
|
||||
@@ -419,7 +416,7 @@ async def get_media_status(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -451,7 +448,7 @@ async def download_media(
|
||||
serie_id: str,
|
||||
request: MediaDownloadRequest,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> MediaFilesStatus:
|
||||
"""Download missing media files for a series.
|
||||
@@ -460,7 +457,7 @@ async def download_media(
|
||||
serie_id: Series identifier
|
||||
request: Media download options
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -471,7 +468,7 @@ async def download_media(
|
||||
"""
|
||||
try:
|
||||
# Get series info
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
serie = next(
|
||||
(s for s in series_list if getattr(s, 'key', None) == serie_id),
|
||||
None
|
||||
@@ -521,7 +518,7 @@ async def download_media(
|
||||
async def batch_create_nfo(
|
||||
request: NFOBatchCreateRequest,
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOBatchCreateResponse:
|
||||
"""Batch create NFO files for multiple series.
|
||||
@@ -529,7 +526,7 @@ async def batch_create_nfo(
|
||||
Args:
|
||||
request: Batch creation options
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
@@ -541,7 +538,7 @@ async def batch_create_nfo(
|
||||
skipped = 0
|
||||
|
||||
# Get all series
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
series_map = {
|
||||
getattr(s, 'key', None): s
|
||||
for s in series_list
|
||||
@@ -631,21 +628,21 @@ async def batch_create_nfo(
|
||||
@router.get("/missing", response_model=NFOMissingResponse)
|
||||
async def get_missing_nfo(
|
||||
_auth: dict = Depends(require_auth),
|
||||
anime_service: AnimeService = Depends(get_anime_service),
|
||||
series_app: SeriesApp = Depends(get_series_app),
|
||||
nfo_service: NFOService = Depends(get_nfo_service)
|
||||
) -> NFOMissingResponse:
|
||||
"""Get list of series without NFO files.
|
||||
|
||||
Args:
|
||||
_auth: Authentication dependency
|
||||
anime_service: Anime service dependency
|
||||
series_app: Series app dependency
|
||||
nfo_service: NFO service dependency
|
||||
|
||||
Returns:
|
||||
NFOMissingResponse with series list
|
||||
"""
|
||||
try:
|
||||
series_list = anime_service.get_series_list()
|
||||
series_list = series_app.list.GetList()
|
||||
missing_series: List[NFOMissingSeries] = []
|
||||
|
||||
for serie in series_list:
|
||||
|
||||
Reference in New Issue
Block a user