Skip to content

Commit 0c63853

Browse files
committed
Slight tweaks to availability indicator
1 parent dbf0b93 commit 0c63853

5 files changed

Lines changed: 32 additions & 31 deletions

File tree

conreq/core/arrs/base.py

Lines changed: 24 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,43 +23,44 @@ def _set_content_attributes(content_type, content_source, results):
2323
results["content_source"] = content_source
2424

2525
@staticmethod
26-
def _check_availability(content: dict):
27-
"""Checks the availability of one item. For use within check_availability()"""
26+
def _determine_availability(content: dict):
27+
"""Checks the availability of one item using fuzzy logic."""
28+
# TODO: Rewrite this into separate methods for Sonarr season, Sonarr series, Radarr movie, etc.
2829
statistics: dict = content.get("statistics") or content or {}
2930
percent_available: int | None = statistics.get("percentOfEpisodes")
30-
grabbed: bool | None = statistics.get("grabbed")
31+
monitored: bool | None = statistics.get("monitored") or content.get("monitored")
3132

3233
##### "Unavailable" #####
33-
# Sonarr/Radarr: Check if an individual movie or episode does not exist
34-
if "hasFile" in content and not content["hasFile"]:
34+
# Sonarr/Radarr: Check if an individual movie or episode does not exist and isn't monitored
35+
if content.get("hasFile") is False and not monitored:
3536
content["availability"] = "Unavailable"
36-
return content
37+
return
3738
# Sonarr: Check if a season or series is completely unavailable
38-
if statistics and percent_available == 0:
39+
if percent_available == 0 and not monitored:
3940
content["availability"] = "Unavailable"
40-
return content
41-
42-
##### "Partial" #####
43-
# Sonarr: Check if season or series is partially downloaded
44-
if statistics and percent_available and percent_available < 100:
45-
content["availability"] = "Partial"
46-
return content
47-
# Radarr: Check if a movie is being downloaded.
48-
if grabbed is True and statistics.get("movieFileCount") == 0:
49-
content["availability"] = "Partial"
50-
return content
41+
return
5142

5243
##### "Available" #####
5344
# Sonarr: Check if a season or series is fully downloaded
54-
if statistics and percent_available == 100:
45+
if percent_available == 100:
5546
content["availability"] = "Available"
56-
return content
47+
return
5748
# Sonarr/Radarr: Check if an individual movie or individual episode exists
58-
if "hasFile" in content and content["hasFile"]:
49+
if content.get("hasFile"):
5950
content["availability"] = "Available"
60-
return content
51+
return
52+
53+
##### "Partial" #####
54+
# Sonarr: Check if season or series is partially downloaded
55+
if percent_available and percent_available < 100:
56+
content["availability"] = "Partial"
57+
return
58+
# Sonarr/Radarr: Check if a content is being monitored.
59+
if monitored:
60+
content["availability"] = "Partial"
61+
return
6162

6263
##### "Unknown" #####
6364
# This should never be reached except with Sonarr/Raddarr API changes
6465
content["availability"] = "Unknown"
65-
return content
66+
return

conreq/core/arrs/radarr.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ def get_radarr_library(self) -> dict | None:
286286
results_with_ids = {}
287287
for movie in results:
288288
if "tmdbId" in movie:
289-
self._check_availability(movie)
289+
self._determine_availability(movie)
290290
self._set_content_attributes("movie", "radarr", movie)
291291
results_with_ids[str(movie["tmdbId"])] = movie
292292

conreq/core/arrs/sonarr.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,7 @@ def get_sonarr_library(self) -> dict | None:
409409
results_with_ids = {}
410410
for series in results:
411411
if "tvdbId" in series:
412-
self._check_availability(series)
412+
self._determine_availability(series)
413413
self._set_content_attributes("tv", "sonarr", series)
414414
results_with_ids[str(series["tvdbId"])] = series
415415

@@ -436,11 +436,11 @@ def _season_episode_availability(self, series) -> None:
436436
episodes = self.__sonarr.get_episodes_by_series_id(series["id"])
437437
for season in series["seasons"]:
438438
# Set the season availability
439-
self._check_availability(season["statistics"])
439+
self._determine_availability(season["statistics"])
440440

441441
# Set the episode availability
442442
season["episodes"] = []
443443
for episode in episodes:
444444
if episode["seasonNumber"] == season["seasonNumber"]:
445-
self._check_availability(episode)
445+
self._determine_availability(episode)
446446
season["episodes"].append(episode)

conreq/core/tmdb/templates/modal/content_preview.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -124,4 +124,4 @@
124124

125125
</div>
126126
</div>
127-
</div
127+
</div

conreq/core/tmdb/templates/viewport/more_info.html

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,11 @@
102102

103103
<!-- Availability -->
104104
<div class="quick-info-block availability">
105-
<div class="quick-info bold"> Availabity </div>
105+
<div class="quick-info bold"> Availability </div>
106106
<div class="quick-info">
107107
{% if content.availability == "Available" %} Available
108108
<div class="inline-availablity-dot green"> </div>
109-
{% elif content.availability == "Partial" %} Partial
109+
{% elif content.availability == "Partial" %} Partially available or monitored
110110
<div class="inline-availablity-dot yellow"> </div>
111111
{% else %} Not Downloaded
112112
<div class="inline-availablity-dot red"> </div>
@@ -455,4 +455,4 @@
455455
<img src="{% static 'images/transparent.png' %}" data-src="{% firstof content.backdrop_path content.backdropPath %}"
456456
class="more-info-backdrop lazy" alt="">
457457
<div class="backdrop-placeholder-gradient"></div>
458-
</div>
458+
</div>

0 commit comments

Comments
 (0)