Skip to content

Commit e1a7830

Browse files
committed
Update to coding and more error handling on playlist management
1 parent 7f083e1 commit e1a7830

7 files changed

+90
-65
lines changed

api/emby.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -241,26 +241,35 @@ def get_playlist_items(self, playlist_id: str) -> EmbyPlaylist:
241241

242242
return None
243243

244-
def add_playlist_items(self, playlist_id: str, item_ids: list[str]):
244+
def add_playlist_items(self, playlist_id: str, item_ids: list[str]) -> bool:
245245
try:
246246
headers = {'accept': 'application/json'}
247247
embyUrl = self.__get_api_url()+ '/Playlists/' + playlist_id + '/Items' + '?Ids=' + self.__get_comma_separated_list(item_ids) + '&api_key=' + self.api_key
248248
r = requests.post(embyUrl, headers=headers)
249+
if r.status_code < 300:
250+
return True
249251
except Exception as e:
250252
self.logger.error("{} add_playlist_items {} {} error {}".format(self.log_header, utils.get_tag('playlist_id', playlist_id), utils.get_tag('item_ids', item_ids), utils.get_tag('error', e)))
253+
return False
251254

252-
def remove_playlist_items(self, playlist_id: str, playlist_item_ids: list[str]):
255+
def remove_playlist_items(self, playlist_id: str, playlist_item_ids: list[str]) -> bool:
253256
try:
254257
headers = {'accept': 'application/json'}
255258
embyUrl = self.__get_api_url()+ '/Playlists/' + playlist_id + '/Items/Delete' + '?EntryIds=' + self.__get_comma_separated_list(playlist_item_ids) + '&api_key=' + self.api_key
256259
r = requests.post(embyUrl, headers=headers)
260+
if r.status_code < 300:
261+
return True
257262
except Exception as e:
258263
self.logger.error("{} remove_playlist_item {} {} error {}".format(self.log_header, utils.get_tag('playlist_id', playlist_id), utils.get_tag('playlist_item_ids', playlist_item_ids), utils.get_tag('error', e)))
264+
return False
259265

260-
def set_move_playlist_item_to_index(self, playlist_id: str, playlist_item_id: str, index: int):
266+
def set_move_playlist_item_to_index(self, playlist_id: str, playlist_item_id: str, index: int) -> bool:
261267
try:
262268
headers = {'accept': 'application/json'}
263269
embyUrl = self.__get_api_url()+ '/Playlists/' + playlist_id + '/Items/' + playlist_item_id + '/Move/' + str(index) + '?api_key=' + self.api_key
264270
r = requests.post(embyUrl, headers=headers)
271+
if r.status_code < 300:
272+
return True
265273
except Exception as e:
266-
self.logger.error("{} set_move_playlist_item_to_index {} {} {} error {}".format(self.log_header, utils.get_tag('playlist_id', playlist_id), utils.get_tag('playlist_item_id', playlist_item_id), utils.get_tag('move_index', index), utils.get_tag('error', e)))
274+
self.logger.error("{} set_move_playlist_item_to_index {} {} {} error {}".format(self.log_header, utils.get_tag('playlist_id', playlist_id), utils.get_tag('playlist_item_id', playlist_item_id), utils.get_tag('move_index', index), utils.get_tag('error', e)))
275+
return False

app.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Media Utilities
33
"""
44

5-
version = 'v2.2.2'
5+
version = 'v2.2.3'
66

77
import sys
88
import os

service/DeleteWatched.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ def __init__(self, ansi_code: str, plex_api: PlexAPI, tautulli_api: TautulliAPI,
8484
plex_library_name: str = ''
8585
plex_media_path: str = ''
8686
if 'plex_library_name' in library and 'plex_media_path' in library:
87-
if plex_users_defined == True:
87+
if plex_users_defined is True:
8888
plex_library_name = library['plex_library_name']
8989
plex_media_path = library['plex_media_path']
9090
else:
@@ -93,7 +93,7 @@ def __init__(self, ansi_code: str, plex_api: PlexAPI, tautulli_api: TautulliAPI,
9393
emby_library_name = ''
9494
emby_media_path = ''
9595
if 'emby_library_name' in library and 'emby_media_path' in library:
96-
if emby_users_defined == True:
96+
if emby_users_defined is True:
9797
emby_library_name = library['emby_library_name']
9898
emby_media_path = library['emby_media_path']
9999
else:
@@ -108,7 +108,7 @@ def __init__(self, ansi_code: str, plex_api: PlexAPI, tautulli_api: TautulliAPI,
108108
self.log_error('Read config {}'.format(utils.get_tag('error', e)))
109109

110110
def hours_since_play(self, use_utc_time: bool, play_date_time: datetime) -> int:
111-
current_date_time = datetime.now(timezone.utc) if use_utc_time == True else datetime.now()
111+
current_date_time = datetime.now(timezone.utc) if use_utc_time is True else datetime.now()
112112
time_difference = current_date_time - play_date_time
113113
return (time_difference.days * 24) + (time_difference.seconds / 3600)
114114

@@ -146,7 +146,7 @@ def __find_emby_watched_media(self, lib: LibraryInfo, user_list: List[UserInfo])
146146
item_id = item['EpisodeId']
147147
else:
148148
item_id = item['NowPlayingItemId']
149-
if self.emby_api.get_watched_status(user.emby_user_id, item_id) == True:
149+
if self.emby_api.get_watched_status(user.emby_user_id, item_id) is True:
150150
item_hours_since_play = self.hours_since_play(True, datetime.fromisoformat(item['ActivityDateInserted']))
151151
if item_hours_since_play >= self.delete_time_hours:
152152
emby_item = self.emby_api.search_item(item_id)
@@ -166,7 +166,7 @@ def __get_libraries(self) -> List[LibraryInfo]:
166166
plex_library_name: str = ''
167167
plex_library_id: str = ''
168168
if library_config.plex_library_name != '':
169-
if self.tautulli_api.get_valid() == True:
169+
if self.tautulli_api.get_valid() is True:
170170
library_id = self.tautulli_api.get_library_id(library_config.plex_library_name)
171171
if library_id != self.tautulli_api.get_invalid_item():
172172
plex_library_name = library_config.plex_library_name
@@ -179,7 +179,7 @@ def __get_libraries(self) -> List[LibraryInfo]:
179179
emby_library_name: str = ''
180180
emby_library_id: str = ''
181181
if library_config.emby_library_name != '':
182-
if self.jellystat_api.get_valid() == True:
182+
if self.jellystat_api.get_valid() is True:
183183
library_id = self.jellystat_api.get_library_id(library_config.emby_library_name)
184184
if library_id != self.jellystat_api.get_invalid_type():
185185
emby_library_name = library_config.emby_library_name
@@ -205,7 +205,7 @@ def __get_user_list(self) -> List[UserInfo]:
205205
if user_config.plex_user_name != '':
206206
plex_api_valid = self.plex_api.get_valid()
207207
tautulli_api_valid = self.tautulli_api.get_valid()
208-
if plex_api_valid == True and tautulli_api_valid == True:
208+
if plex_api_valid is True and tautulli_api_valid is True:
209209
plex_user_info = self.tautulli_api.get_user_info(user_config.plex_user_name)
210210
if plex_user_info != self.tautulli_api.get_invalid_item():
211211
plex_user_name = user_config.plex_user_name
@@ -217,27 +217,27 @@ def __get_user_list(self) -> List[UserInfo]:
217217
else:
218218
self.log_warning('{} could not find {}'.format(utils.get_formatted_tautulli(), utils.get_tag('user', user_config.plex_user_name)))
219219
else:
220-
if plex_api_valid == False:
220+
if plex_api_valid is False:
221221
self.log_warning(self.plex_api.get_connection_error_log())
222-
if tautulli_api_valid == False:
222+
if tautulli_api_valid is False:
223223
self.log_warning(self.tautulli_api.get_connection_error_log())
224224

225225
emby_user_name = ''
226226
emby_user_id = ''
227227
if user_config.emby_user_name != '':
228228
emby_api_valid = self.emby_api.get_valid()
229229
jellystat_api_valid = self.jellystat_api.get_valid()
230-
if emby_api_valid == True and jellystat_api_valid == True:
230+
if emby_api_valid is True and jellystat_api_valid is True:
231231
emby_user_id = self.emby_api.get_user_id(user_config.emby_user_name)
232232
if emby_user_id != self.emby_api.get_invalid_item_id():
233233
emby_user_name = user_config.emby_user_name
234234
else:
235235
emby_user_id = ''
236236
self.log_warning('{} could not find {}'.format(utils.get_formatted_emby(), utils.get_tag('user', user_config.emby_user_name)))
237237
else:
238-
if emby_api_valid == False:
238+
if emby_api_valid is False:
239239
self.log_warning(self.emby_api.get_connection_error_log())
240-
if jellystat_api_valid == False:
240+
if jellystat_api_valid is False:
241241
self.log_warning(self.jellystat_api.get_connection_error_log())
242242

243243
if plex_user_name != '' or emby_user_name != '':
@@ -273,7 +273,7 @@ def __check_delete_media(self):
273273
if notify_lib.id == media.library.id:
274274
notify_lib_found = True
275275
break
276-
if notify_lib_found == False:
276+
if notify_lib_found is False:
277277
libraries_to_notify.append(media.library)
278278
except Exception as e:
279279
self.log_error('Failed to delete {} {}'.format(utils.get_tag('file', media.file_path), utils.get_tag('error', e)))

service/DvrMaintainer.py

+9-9
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ def __get_files_in_path(self, path: str) -> List[FileInfo]:
100100
return file_info
101101

102102
def __delete_file(self, pathFileName: str):
103-
if self.run_test == True:
103+
if self.run_test is True:
104104
self.log_info('Running test! Would delete {}'.format(utils.get_tag('file', pathFileName)))
105105
else:
106106
try:
@@ -145,18 +145,18 @@ def __check_library_delete_shows(self, library: LibraryConfig) -> List[DeletedDa
145145
deleted_data: list[DeletedData] = []
146146
for show in library.shows:
147147
library_file_path = library.utility_path + '/' + show.name
148-
if os.path.exists(library_file_path) == True:
148+
if os.path.exists(library_file_path) is True:
149149
if show.action_type == 'KEEP_LAST':
150150
try:
151151
shows_deleted = self.__keep_last_delete(library_file_path, show.action_value)
152-
if shows_deleted == True:
152+
if shows_deleted is True:
153153
deleted_data.append(DeletedData(library.id, library.plex_library_name, library.emby_library_name, library.emby_library_id))
154154
except Exception as e:
155155
self.log_error('Check show delete keep last {}'.format(utils.get_tag('error', e)))
156156
elif show.action_type == 'KEEP_LENGTH_DAYS':
157157
try:
158158
shows_deleted = self.__keep_show_days(library_file_path, show.action_value)
159-
if shows_deleted == True:
159+
if shows_deleted is True:
160160
deleted_data.append(DeletedData(library.id, library.plex_library_name, library.emby_library_name, library.emby_library_id))
161161
except Exception as e:
162162
self.log_error('Check show delete keep length {}'.format(utils.get_tag('error', e)))
@@ -181,7 +181,7 @@ def __get_library_data(self) -> List[LibraryConfig]:
181181
for library_config in self.library_configs:
182182
plex_library_name = ''
183183
if library_config.plex_library_name != '':
184-
if self.plex_api.get_valid() == True:
184+
if self.plex_api.get_valid() is True:
185185
if self.plex_api.get_library(library_config.plex_library_name) != self.plex_api.get_invalid_type():
186186
plex_library_name = library_config.plex_library_name
187187
else:
@@ -192,7 +192,7 @@ def __get_library_data(self) -> List[LibraryConfig]:
192192
emby_library_name = ''
193193
emby_library_id = ''
194194
if library_config.emby_library_name != '':
195-
if self.emby_api.get_valid() == True:
195+
if self.emby_api.get_valid() is True:
196196
library_id = self.emby_api.get_library_id(library_config.emby_library_name)
197197
if library_id != self.emby_api.get_invalid_item_id():
198198
emby_library_name = library_config.emby_library_name
@@ -225,14 +225,14 @@ def __do_maintenance(self):
225225
if deleted_library.library_id == deleted_data.library_id:
226226
library_in_list = True
227227
break
228-
if library_in_list == False:
228+
if library_in_list is False:
229229
deleted_libraries.append(deleted_data)
230230

231231
for deleted_library in deleted_libraries:
232232
target_name = ''
233-
if self.__notify_plex_refresh(deleted_library.plex_library_name) == True:
233+
if self.__notify_plex_refresh(deleted_library.plex_library_name) is True:
234234
target_name = utils.build_target_string(target_name, utils.get_formatted_plex(), deleted_library.plex_library_name)
235-
if self.__notify_emby_refresh(deleted_library.emby_library_id) == True:
235+
if self.__notify_emby_refresh(deleted_library.emby_library_id) is True:
236236
target_name = utils.build_target_string(target_name, utils.get_formatted_emby(), deleted_library.emby_library_name)
237237

238238
if target_name != '':

service/FolderCleanup.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def __is_dir_empty(self, dirnames: List[str]) -> bool:
6363
else:
6464
dir_empty = False
6565

66-
if dir_empty == False:
66+
if dir_empty is False:
6767
break
6868
return dir_empty
6969

@@ -78,33 +78,33 @@ def __is_files_empty(self, filenames: List[str]) -> bool:
7878
else:
7979
filenames_empty = False
8080

81-
if filenames_empty == False:
81+
if filenames_empty is False:
8282
break
8383
return filenames_empty
8484

8585
def __check_delete_empty_folders(self):
8686
deleted_paths: list[PathInfo] = []
8787
for path in self.paths:
8888
connection_info = utils_server.get_connection_info(self.plex_api, path.plex_library_name, self.emby_api, path.emby_library_name)
89-
if (path.plex_library_name == '' or connection_info.plex_valid == True) and (path.emby_library_name == '' or connection_info.emby_valid == True):
89+
if (path.plex_library_name == '' or connection_info.plex_valid is True) and (path.emby_library_name == '' or connection_info.emby_valid is True):
9090
folders_deleted = False
9191

9292
keep_running = True
93-
while keep_running == True:
93+
while keep_running is True:
9494
keep_running = False
9595
for dirpath, dirnames, filenames in os.walk(path.path, topdown=False):
96-
if self.__is_dir_empty(dirnames) == True and self.__is_files_empty(filenames) == True:
96+
if self.__is_dir_empty(dirnames) is True and self.__is_files_empty(filenames) is True:
9797
self.log_info('Deleting empty {}'.format(utils.get_tag('folder', dirpath)))
9898
shutil.rmtree(dirpath, ignore_errors=True)
9999
keep_running = True
100100
folders_deleted = True
101101

102-
if folders_deleted == True:
102+
if folders_deleted is True:
103103
deleted_paths.append(PathInfo(path.path, path.plex_library_name, path.emby_library_name, connection_info.emby_library_id))
104104
else:
105-
if path.plex_library != '' and connection_info.plex_valid == False:
105+
if path.plex_library_name != '' and connection_info.plex_valid is False:
106106
self.log_warning(self.plex_api.get_connection_error_log())
107-
if path.emby_library_name != '' and connection_info.emby_valid == False:
107+
if path.emby_library_name != '' and connection_info.emby_valid is False:
108108
self.log_warning(self.emby_api.get_connection_error_log())
109109

110110
for deleted_path in deleted_paths:

0 commit comments

Comments
 (0)