Skip to content

Commit cf950c4

Browse files
committed
add source_url to media data for external linking
1 parent 9eee810 commit cf950c4

File tree

8 files changed

+41
-13
lines changed

8 files changed

+41
-13
lines changed

src/app/providers/igdb.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ def game(media_id):
7373
url = f"{base_url}/games"
7474
data = (
7575
"fields name,cover.image_id,artworks.image_id,"
76-
"summary,game_type,first_release_date,"
76+
"url,summary,game_type,first_release_date,"
7777
"genres.name,themes.name,platforms.name,involved_companies.company.name,"
7878
"parent_game.name,parent_game.cover.image_id,"
7979
"remasters.name,remasters.cover.image_id,"
@@ -93,6 +93,7 @@ def game(media_id):
9393
data = {
9494
"media_id": response["id"],
9595
"source": "igdb",
96+
"source_url": response["url"],
9697
"media_type": "game",
9798
"title": response["name"],
9899
"max_progress": None,

src/app/providers/mal.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ def anime(media_id):
7777
data = {
7878
"media_id": media_id,
7979
"source": "mal",
80+
"source_url": f"https://myanimelist.net/anime/{media_id}",
8081
"media_type": "anime",
8182
"title": response["title"],
8283
"max_progress": num_episodes,
@@ -132,6 +133,7 @@ def manga(media_id):
132133
data = {
133134
"media_id": media_id,
134135
"source": "mal",
136+
"source_url": f"https://myanimelist.net/manga/{media_id}",
135137
"media_type": "manga",
136138
"title": response["title"],
137139
"image": get_image_url(response),

src/app/providers/mangaupdates.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ async def async_manga(media_id):
8383
data = {
8484
"media_id": media_id,
8585
"source": "mangaupdates",
86+
"source_url": response["url"],
8687
"media_type": "manga",
8788
"title": response["title"],
8889
"image": get_image_url(response),

src/app/providers/openlibrary.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ async def async_book(media_id):
117117
data = {
118118
"media_id": media_id,
119119
"source": "openlibrary",
120+
"source_url": f"https://openlibrary.org/books/{media_id}",
120121
"media_type": "book",
121122
"title": response_book["title"],
122123
"max_progress": response_book.get("number_of_pages"),

src/app/providers/tmdb.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ def movie(media_id):
5858
data = {
5959
"media_id": media_id,
6060
"source": "tmdb",
61+
"source_url": f"https://www.themoviedb.org/movie/{media_id}",
6162
"media_type": "movie",
6263
"title": response["title"],
6364
"max_progress": 1,
@@ -138,7 +139,12 @@ def tv_with_seasons(media_id, season_numbers):
138139
raise requests.exceptions.HTTPError(msg, response=not_found_response)
139140

140141
season_data = process_season(response[season_key])
142+
143+
# add from tv show metadata to the season metadata
141144
season_data["media_id"] = media_id
145+
season_data["source_url"] = (
146+
f"https://www.themoviedb.org/tv/{media_id}/season/{season_number}"
147+
)
142148
season_data["title"] = data["title"]
143149
season_data["external_ids"] = data["external_ids"]
144150
season_data["genres"] = data["genres"]
@@ -174,6 +180,7 @@ def process_tv(response):
174180
return {
175181
"media_id": response["id"],
176182
"source": "tmdb",
183+
"source_url": f"https://www.themoviedb.org/tv/{response['id']}",
177184
"media_type": "tv",
178185
"title": response["name"],
179186
"max_progress": num_episodes,

src/app/templatetags/app_tags.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,12 @@ def is_list(arg1):
6060
return isinstance(arg1, list)
6161

6262

63+
@register.filter
64+
def source_readable(source):
65+
"""Return the readable source name."""
66+
return models.Sources(source).label
67+
68+
6369
@register.filter
6470
def media_type_readable(media_type):
6571
"""Return the readable media type."""

src/config/settings.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@
150150
"BACKEND": "django.core.cache.backends.redis.RedisCache",
151151
"LOCATION": REDIS_URL,
152152
"TIMEOUT": 18000, # 5 hours,
153-
"VERSION": 5,
153+
"VERSION": 6,
154154
},
155155
}
156156

src/templates/app/media_details.html

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -195,18 +195,28 @@ <h1 class="text-3xl font-bold mb-4 text-center md:text-start">{{ media.title }}<
195195
<div class="w-full md:w-1/4 md:max-w-[250px]">
196196
<h2 class="text-2xl font-bold mb-4">Details</h2>
197197
<div class="bg-[#2a2f35] p-4 rounded-lg text-center md:text-start">
198-
{% for key, value in media.details.items %}
199-
<div class="mb-4 last:mb-0">
200-
<h3 class="text-sm font-semibold text-gray-400">{{ key|no_underscore|upper }}</h3>
201-
{% if value|is_list %}
202-
{% for item in value %}<p class="text-gray-200">{{ item }}</p>{% endfor %}
203-
{% else %}
204-
<p class="text-gray-200">{{ value|default_if_none:"Unknown" }}</p>
205-
{% endif %}
206-
</div>
207-
{% empty %}
198+
{% if media.details.items %}
199+
{% for key, value in media.details.items %}
200+
<div class="mb-4">
201+
<h3 class="text-sm font-semibold text-gray-400">{{ key|no_underscore|upper }}</h3>
202+
{% if value|is_list %}
203+
{% for item in value %}<p class="text-gray-200">{{ item }}</p>{% endfor %}
204+
{% else %}
205+
<p class="text-gray-200">{{ value|default_if_none:"Unknown" }}</p>
206+
{% endif %}
207+
</div>
208+
{% endfor %}
209+
{% if media.source != "manual" %}
210+
<div>
211+
<h3 class="text-sm font-semibold text-gray-400">Source</h3>
212+
<a href="{{ media.source_url }}"
213+
class="text-gray-200 hover:text-indigo-500 transition-colors duration-200"
214+
target="_blank">{{ media.source|source_readable }}</a>
215+
</div>
216+
{% endif %}
217+
{% else %}
208218
<div class="text-gray-200">No details available</div>
209-
{% endfor %}
219+
{% endif %}
210220
</div>
211221
</div>
212222

0 commit comments

Comments
 (0)