Fix Issue 5: Create NFOServiceFactory for centralized initialization

- Created NFOServiceFactory in src/core/services/nfo_factory.py
- Enforces configuration precedence: explicit params > ENV > config.json
- Provides create() and create_optional() methods
- Singleton factory instance via get_nfo_factory()
- Updated 4 files to use factory (nfo.py, SeriesApp.py, series_manager_service.py, nfo_cli.py)
- Fixed test mocks: added ensure_folder_with_year(), corrected dependency test
- Tests: 17/18 NFO passing, 15/16 anime passing
- Resolves Code Duplication 2 (NFO initialization)
This commit is contained in:
2026-01-24 21:52:54 +01:00
parent 52d82ab6bc
commit fb8f0bdbd2
8 changed files with 356 additions and 76 deletions

View File

@@ -199,13 +199,13 @@ async def update_nfo_files():
print("Updating NFO files with fresh data from TMDB...")
print("(This may take a while)")
# Initialize NFO service
from src.core.services.nfo_service import NFOService
nfo_service = NFOService(
tmdb_api_key=settings.tmdb_api_key,
anime_directory=settings.anime_directory,
image_size=settings.nfo_image_size
)
# Initialize NFO service using factory
from src.core.services.nfo_factory import create_nfo_service
try:
nfo_service = create_nfo_service()
except ValueError as e:
print(f"\nError: {e}")
return 1
success_count = 0
error_count = 0