Skip to content

Commit

Permalink
Fixed an issue that could clear episodes history in case Sonarr API r…
Browse files Browse the repository at this point in the history
…eturn something else than valid series or episodes.
  • Loading branch information
morpheus65535 committed Nov 23, 2023
1 parent addae11 commit 97bdf00
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 11 deletions.
8 changes: 7 additions & 1 deletion bazarr/radarr/sync/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -85,5 +85,11 @@ def get_movies_from_radarr_api(apikey_radarr, radarr_id=None):
except requests.exceptions.RequestException:
logging.exception("BAZARR Error trying to get movies from Radarr.")
return
except Exception as e:
logging.exception(f"Exception raised while getting movies from Radarr API: {e}")
return
else:
return r.json()
if r.status_code == 200:
return r.json()
else:
return
2 changes: 2 additions & 0 deletions bazarr/sonarr/sync/episodes.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ def sync_episodes(series_id, send_event=True):
episodes_to_update.append(parsed_episode)
else:
episodes_to_add.append(episodeParser(episode))
else:
return

# Remove old episodes from DB
episodes_to_delete = list(set(current_episodes_id_db_list) - set(current_episodes_sonarr))
Expand Down
5 changes: 2 additions & 3 deletions bazarr/sonarr/sync/series.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ def update_series(send_event=True):
tagsDict = get_tags()

# Get shows data from Sonarr
series = get_series_from_sonarr_api(url=url_sonarr(), apikey_sonarr=apikey_sonarr)
series = get_series_from_sonarr_api(apikey_sonarr=apikey_sonarr)
if not isinstance(series, list):
return
else:
Expand Down Expand Up @@ -157,8 +157,7 @@ def update_one_series(series_id, action):
# Get series data from sonarr api
series = None

series_data = get_series_from_sonarr_api(url=url_sonarr(), apikey_sonarr=settings.sonarr.apikey,
sonarr_series_id=int(series_id))
series_data = get_series_from_sonarr_api(apikey_sonarr=settings.sonarr.apikey, sonarr_series_id=int(series_id))

if not series_data:
return
Expand Down
32 changes: 25 additions & 7 deletions bazarr/sonarr/sync/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ def get_tags():
return tagsDict.json()


def get_series_from_sonarr_api(url, apikey_sonarr, sonarr_series_id=None):
def get_series_from_sonarr_api(apikey_sonarr, sonarr_series_id=None):
url_sonarr_api_series = (f"{url_api_sonarr()}series/{sonarr_series_id if sonarr_series_id else ''}?"
f"apikey={apikey_sonarr}")
try:
Expand All @@ -87,12 +87,18 @@ def get_series_from_sonarr_api(url, apikey_sonarr, sonarr_series_id=None):
except requests.exceptions.RequestException:
logging.exception("BAZARR Error trying to get series from Sonarr.")
return
except Exception as e:
logging.exception(f"Exception raised while getting series from Sonarr API: {e}")
return
else:
result = r.json()
if isinstance(result, dict):
return [result]
if r.status_code == 200:
result = r.json()
if isinstance(result, dict):
return [result]
else:
return r.json()
else:
return r.json()
return


def get_episodes_from_sonarr_api(apikey_sonarr, series_id=None, episode_id=None):
Expand All @@ -118,8 +124,14 @@ def get_episodes_from_sonarr_api(apikey_sonarr, series_id=None, episode_id=None)
except requests.exceptions.RequestException:
logging.exception("BAZARR Error trying to get episodes from Sonarr.")
return
except Exception as e:
logging.exception(f"Exception raised while getting episodes from Sonarr API: {e}")
return
else:
return r.json()
if r.status_code == 200:
return r.json()
else:
return


def get_episodesFiles_from_sonarr_api(apikey_sonarr, series_id=None, episode_file_id=None):
Expand All @@ -146,5 +158,11 @@ def get_episodesFiles_from_sonarr_api(apikey_sonarr, series_id=None, episode_fil
except requests.exceptions.RequestException:
logging.exception("BAZARR Error trying to get episodeFiles from Sonarr.")
return
except Exception as e:
logging.exception(f"Exception raised while getting episodes from Sonarr API: {e}")
return
else:
return r.json()
if r.status_code == 200:
return r.json()
else:
return

0 comments on commit 97bdf00

Please sign in to comment.