diff options
| author | Bobby <[email protected]> | 2024-09-02 20:57:32 -0400 |
|---|---|---|
| committer | Bobby <[email protected]> | 2024-09-02 20:57:32 -0400 |
| commit | 763cc96fa2f38b2bf3109b036ba58320485c7de2 (patch) | |
| tree | 4b370f28c2f32aef4e2d4ea18ffd56c0a353387b /detail | |
| parent | 773af5c376e2bef6fad28398b5add3c022c1dbf5 (diff) | |
| download | yugen-763cc96fa2f38b2bf3109b036ba58320485c7de2.tar.xz yugen-763cc96fa2f38b2bf3109b036ba58320485c7de2.zip | |
detail page + upcoming fix
Diffstat (limited to 'detail')
| -rw-r--r-- | detail/__init__.py | 0 | ||||
| -rw-r--r-- | detail/admin.py | 3 | ||||
| -rw-r--r-- | detail/apps.py | 6 | ||||
| -rw-r--r-- | detail/migrations/__init__.py | 0 | ||||
| -rw-r--r-- | detail/models.py | 3 | ||||
| -rw-r--r-- | detail/tests.py | 3 | ||||
| -rw-r--r-- | detail/urls.py | 8 | ||||
| -rw-r--r-- | detail/views.py | 41 |
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 |
