55from typing import Annotated
66from uuid import uuid4
77
8+ from plexapi .exceptions import Unauthorized
89from typer import Abort , Option , Typer
910
1011from mediux_posters import __version__ , get_cache_root , setup_logging
1112from mediux_posters .cli import settings_app
1213from mediux_posters .console import CONSOLE
13- from mediux_posters .constants import Constants
1414from mediux_posters .mediux import Mediux
15- from mediux_posters .services import BaseService
15+ from mediux_posters .services import BaseService , Jellyfin , Plex
1616from mediux_posters .services ._base import BaseCollection , BaseMovie , BaseSeries
17+ from mediux_posters .settings import Settings
1718from mediux_posters .utils import MediaType , delete_folder
1819
1920app = Typer ()
@@ -85,9 +86,19 @@ def sync_posters(
8586 if clean_cache :
8687 LOGGER .info ("Cleaning Cache" )
8788 delete_folder (folder = get_cache_root ())
88- mediux = Constants .mediux ()
89+ settings = Settings .load ()
90+ settings .save ()
91+ mediux = Mediux ()
92+ service_list = []
93+ if settings .jellyfin .token :
94+ service_list .append (Jellyfin (settings = settings .jellyfin ))
95+ try :
96+ if settings .plex .token :
97+ service_list .append (Plex (settings = settings .plex ))
98+ except Unauthorized as err :
99+ LOGGER .warning (err )
89100
90- for service in Constants . service_list () :
101+ for service in service_list :
91102 for mediatype , func in {
92103 MediaType .SERIES : service .list_series ,
93104 MediaType .COLLECTION : service .list_collections ,
@@ -104,7 +115,7 @@ def sync_posters(
104115 set_list = mediux .list_sets (mediatype = entry .mediatype , tmdb_id = entry .tmdb_id )
105116 if not set_list :
106117 continue
107- for username in Constants . settings () .priority_usernames :
118+ for username in settings .priority_usernames :
108119 for set_data in [
109120 x for x in set_list if x .get ("user_created" , {}).get ("username" ) == username
110121 ]:
@@ -123,18 +134,12 @@ def sync_posters(
123134 )
124135 if entry .all_posters_uploaded :
125136 break
126- if (
127- not Constants .settings ().only_priority_usernames
128- and not entry .all_posters_uploaded
129- ):
137+ if not settings .only_priority_usernames and not entry .all_posters_uploaded :
130138 for set_data in set_list :
131139 username = set_data .get ("user_created" , {}).get ("username" )
132- if username in Constants . settings () .exclude_usernames :
140+ if username in settings .exclude_usernames :
133141 continue
134- if (
135- Constants .settings ().priority_usernames
136- and username in Constants .settings ().priority_usernames
137- ):
142+ if settings .priority_usernames and username in settings .priority_usernames :
138143 continue
139144 LOGGER .info ("Downloading '%s' by '%s'" , set_data .get ("set_name" ), username )
140145 set_data = mediux .scrape_set (set_id = set_data .get ("id" ))
@@ -196,7 +201,17 @@ def set_posters(
196201 if clean_cache :
197202 LOGGER .info ("Cleaning Cache" )
198203 delete_folder (folder = get_cache_root ())
199- mediux = Constants .mediux ()
204+ settings = Settings .load ()
205+ settings .save ()
206+ mediux = Mediux ()
207+ service_list = []
208+ if settings .jellyfin .token :
209+ service_list .append (Jellyfin (settings = settings .jellyfin ))
210+ try :
211+ if settings .plex .token :
212+ service_list .append (Plex (settings = settings .plex ))
213+ except Unauthorized as err :
214+ LOGGER .warning (err )
200215
201216 url_list = [x .strip () for x in file .read_text ().splitlines ()] if file else urls
202217 for entry in url_list :
@@ -216,7 +231,7 @@ def set_posters(
216231 )
217232 if tmdb_id :
218233 tmdb_id = int (tmdb_id )
219- for service in Constants . service_list () :
234+ for service in service_list :
220235 with CONSOLE .status (
221236 f"Searching { type (service ).__name__ } for '{ set_data .get ('set_name' )} [{ tmdb_id } ]'"
222237 ):
0 commit comments