aboutsummaryrefslogtreecommitdiff
path: root/detail
diff options
context:
space:
mode:
authorBobby <[email protected]>2024-09-02 20:57:32 -0400
committerBobby <[email protected]>2024-09-02 20:57:32 -0400
commit763cc96fa2f38b2bf3109b036ba58320485c7de2 (patch)
tree4b370f28c2f32aef4e2d4ea18ffd56c0a353387b /detail
parent773af5c376e2bef6fad28398b5add3c022c1dbf5 (diff)
downloadyugen-763cc96fa2f38b2bf3109b036ba58320485c7de2.tar.xz
yugen-763cc96fa2f38b2bf3109b036ba58320485c7de2.zip
detail page + upcoming fix
Diffstat (limited to 'detail')
-rw-r--r--detail/__init__.py0
-rw-r--r--detail/admin.py3
-rw-r--r--detail/apps.py6
-rw-r--r--detail/migrations/__init__.py0
-rw-r--r--detail/models.py3
-rw-r--r--detail/tests.py3
-rw-r--r--detail/urls.py8
-rw-r--r--detail/views.py41
8 files changed, 64 insertions, 0 deletions
diff --git a/detail/__init__.py b/detail/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/detail/__init__.py
diff --git a/detail/admin.py b/detail/admin.py
new file mode 100644
index 0000000..8c38f3f
--- /dev/null
+++ b/detail/admin.py
@@ -0,0 +1,3 @@
+from django.contrib import admin
+
+# Register your models here.
diff --git a/detail/apps.py b/detail/apps.py
new file mode 100644
index 0000000..c7f8bff
--- /dev/null
+++ b/detail/apps.py
@@ -0,0 +1,6 @@
+from django.apps import AppConfig
+
+
+class DetailConfig(AppConfig):
+ default_auto_field = "django.db.models.BigAutoField"
+ name = "detail"
diff --git a/detail/migrations/__init__.py b/detail/migrations/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/detail/migrations/__init__.py
diff --git a/detail/models.py b/detail/models.py
new file mode 100644
index 0000000..71a8362
--- /dev/null
+++ b/detail/models.py
@@ -0,0 +1,3 @@
+from django.db import models
+
+# Create your models here.
diff --git a/detail/tests.py b/detail/tests.py
new file mode 100644
index 0000000..7ce503c
--- /dev/null
+++ b/detail/tests.py
@@ -0,0 +1,3 @@
+from django.test import TestCase
+
+# Create your tests here.
diff --git a/detail/urls.py b/detail/urls.py
new file mode 100644
index 0000000..ca85152
--- /dev/null
+++ b/detail/urls.py
@@ -0,0 +1,8 @@
+from django.urls import path
+
+from . import views
+
+app_name = "detail"
+urlpatterns = [
+ path('<int:anime_id>/', views.detail, name='detail'),
+]
diff --git a/detail/views.py b/detail/views.py
new file mode 100644
index 0000000..da67f3f
--- /dev/null
+++ b/detail/views.py
@@ -0,0 +1,41 @@
+import json
+import os
+from django.shortcuts import render
+import requests
+
+from watch.utils import get_all_episode_metadata, get_from_redis_cache, store_in_redis_cache
+
+def detail(request, anime_id):
+ anime_data = None
+ anime_episodes = None
+ anime_episodes_metadata = None
+ try:
+ anime_data = json.loads(get_from_redis_cache(f"anime_{anime_id}_anime_data"))
+ except:
+ base_url = f"{os.getenv("CONSUMET_URL")}/meta/anilist/info/{anime_id}?provider=zoro"
+ response = requests.get(base_url)
+ anime_data = response.json()
+ store_in_redis_cache(f"anime_{anime_id}_anime_data", json.dumps(anime_data))
+
+ try:
+ anime_episodes = json.loads(get_from_redis_cache(f"anime_{anime_id}_anime_episodes"))
+ except:
+ z_anime_id = anime_data["episodes"][0]["id"].split("$")[0] if len(anime_data["episodes"]) > 0 else None
+ if z_anime_id is not None:
+ base_url = f"{os.getenv("ZORO_URL")}/anime/episodes/{z_anime_id}"
+ response = requests.get(base_url)
+ anime_episodes = response.json()
+ store_in_redis_cache(f"anime_{anime_id}_anime_episodes", json.dumps(anime_episodes))
+
+ if anime_episodes is not None:
+ anime_episodes_metadata = get_all_episode_metadata(anime_data)
+ # attach metadata to episodes
+ for i, episode in enumerate(anime_episodes["episodes"]):
+ episode["metadata"] = anime_episodes_metadata[i]
+
+ context = {
+ "anime": anime_data,
+ "episodes": anime_episodes,
+ }
+
+ return render(request, "detail/detail.html", context) \ No newline at end of file