aboutsummaryrefslogtreecommitdiff
path: root/templates
diff options
context:
space:
mode:
authorBobby <[email protected]>2025-03-10 21:22:04 +0530
committerBobby <[email protected]>2025-03-10 21:22:04 +0530
commitf5ef9d42ebe7b2be932b35db7c5d801e9cfeb2c1 (patch)
treeed065e5e65500fe8f804cb4ac003caa3623817b5 /templates
parenta9c4481356e54317584a4f92d7329364f8ad99e3 (diff)
downloadthatcomputerscientist-f5ef9d42ebe7b2be932b35db7c5d801e9cfeb2c1.tar.xz
thatcomputerscientist-f5ef9d42ebe7b2be932b35db7c5d801e9cfeb2c1.zip
refactor code; add genre colors; rename video player class
Diffstat (limited to 'templates')
-rw-r--r--[-rwxr-xr-x]templates/400.html0
-rw-r--r--[-rwxr-xr-x]templates/403.html0
-rw-r--r--[-rwxr-xr-x]templates/404.html0
-rw-r--r--[-rwxr-xr-x]templates/500.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/account.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/activity.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/anidata.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/anilist.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/archives.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/articles.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/categories.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/home.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/base.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/mathjax.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/post_list.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/search/comment_list.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/search/post_list.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/search/user_list.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/partials/sidebar.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/post.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/register.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/resetpass.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/resetpass_input.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/search.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/site_policy.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/socialify.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/tagged.html0
-rw-r--r--[-rwxr-xr-x]templates/blog/tags.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/comments.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/edit_post.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/new_post.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/partials/category_topbar.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/partials/posts_topbar.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/partials/tags_topbar.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/partials/users_topbar.html0
-rw-r--r--[-rwxr-xr-x]templates/blog_admin/posts.html0
-rw-r--r--[-rwxr-xr-x]templates/dev_status/home.html0
-rw-r--r--[-rwxr-xr-x]templates/dev_status/repo.html0
-rw-r--r--[-rwxr-xr-x]templates/en/core/home.html0
-rw-r--r--[-rwxr-xr-x]templates/en/pagoda/home.html0
-rw-r--r--[-rwxr-xr-x]templates/en/pagoda/site_dashboard.html0
-rw-r--r--[-rwxr-xr-x]templates/en/pagoda/site_verification.html0
-rw-r--r--[-rwxr-xr-x]templates/ja/core/home.html0
-rw-r--r--[-rwxr-xr-x]templates/ja/pagoda/home.html0
-rw-r--r--[-rwxr-xr-x]templates/ja/pagoda/site_verification.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_anime_footer.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_anime_list.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_footer.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_header.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_left_sidebar.html9
-rw-r--r--[-rwxr-xr-x]templates/partials/_right_sidebar.html0
-rw-r--r--[-rwxr-xr-x]templates/partials/_weblog_list.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/administration/manage_storage_buckets_bucket.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/administration/manage_storage_buckets_home.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/anime/anime.html533
-rw-r--r--[-rwxr-xr-x]templates/shared/anime/home.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/anime/search.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/core/base.html49
-rw-r--r--[-rwxr-xr-x]templates/shared/journals/single.html0
-rw-r--r--[-rwxr-xr-x]templates/shared/my/journals.html0
-rw-r--r--[-rwxr-xr-x]templates/userpages/home.html0
-rw-r--r--[-rwxr-xr-x]templates/userpages/partials/base.html0
-rw-r--r--[-rwxr-xr-x]templates/userpages/partials/navbar.html0
63 files changed, 317 insertions, 274 deletions
diff --git a/templates/400.html b/templates/400.html
index e45508f8..e45508f8 100755..100644
--- a/templates/400.html
+++ b/templates/400.html
diff --git a/templates/403.html b/templates/403.html
index 9e0e766e..9e0e766e 100755..100644
--- a/templates/403.html
+++ b/templates/403.html
diff --git a/templates/404.html b/templates/404.html
index ae858be7..ae858be7 100755..100644
--- a/templates/404.html
+++ b/templates/404.html
diff --git a/templates/500.html b/templates/500.html
index 5cfdd6ca..5cfdd6ca 100755..100644
--- a/templates/500.html
+++ b/templates/500.html
diff --git a/templates/blog/account.html b/templates/blog/account.html
index 968433e4..968433e4 100755..100644
--- a/templates/blog/account.html
+++ b/templates/blog/account.html
diff --git a/templates/blog/activity.html b/templates/blog/activity.html
index e47dd537..e47dd537 100755..100644
--- a/templates/blog/activity.html
+++ b/templates/blog/activity.html
diff --git a/templates/blog/anidata.html b/templates/blog/anidata.html
index 78e7106c..78e7106c 100755..100644
--- a/templates/blog/anidata.html
+++ b/templates/blog/anidata.html
diff --git a/templates/blog/anilist.html b/templates/blog/anilist.html
index 7e60a48b..7e60a48b 100755..100644
--- a/templates/blog/anilist.html
+++ b/templates/blog/anilist.html
diff --git a/templates/blog/archives.html b/templates/blog/archives.html
index 6c3420a4..6c3420a4 100755..100644
--- a/templates/blog/archives.html
+++ b/templates/blog/archives.html
diff --git a/templates/blog/articles.html b/templates/blog/articles.html
index 79a90732..79a90732 100755..100644
--- a/templates/blog/articles.html
+++ b/templates/blog/articles.html
diff --git a/templates/blog/categories.html b/templates/blog/categories.html
index aa1eeff6..aa1eeff6 100755..100644
--- a/templates/blog/categories.html
+++ b/templates/blog/categories.html
diff --git a/templates/blog/home.html b/templates/blog/home.html
index 683afcbe..683afcbe 100755..100644
--- a/templates/blog/home.html
+++ b/templates/blog/home.html
diff --git a/templates/blog/partials/base.html b/templates/blog/partials/base.html
index 6f7affb7..6f7affb7 100755..100644
--- a/templates/blog/partials/base.html
+++ b/templates/blog/partials/base.html
diff --git a/templates/blog/partials/mathjax.html b/templates/blog/partials/mathjax.html
index dd1944d4..dd1944d4 100755..100644
--- a/templates/blog/partials/mathjax.html
+++ b/templates/blog/partials/mathjax.html
diff --git a/templates/blog/partials/post_list.html b/templates/blog/partials/post_list.html
index 96a76a19..96a76a19 100755..100644
--- a/templates/blog/partials/post_list.html
+++ b/templates/blog/partials/post_list.html
diff --git a/templates/blog/partials/search/comment_list.html b/templates/blog/partials/search/comment_list.html
index d539c6b7..d539c6b7 100755..100644
--- a/templates/blog/partials/search/comment_list.html
+++ b/templates/blog/partials/search/comment_list.html
diff --git a/templates/blog/partials/search/post_list.html b/templates/blog/partials/search/post_list.html
index 81afb03e..81afb03e 100755..100644
--- a/templates/blog/partials/search/post_list.html
+++ b/templates/blog/partials/search/post_list.html
diff --git a/templates/blog/partials/search/user_list.html b/templates/blog/partials/search/user_list.html
index 3d9ab865..3d9ab865 100755..100644
--- a/templates/blog/partials/search/user_list.html
+++ b/templates/blog/partials/search/user_list.html
diff --git a/templates/blog/partials/sidebar.html b/templates/blog/partials/sidebar.html
index 83f7628f..83f7628f 100755..100644
--- a/templates/blog/partials/sidebar.html
+++ b/templates/blog/partials/sidebar.html
diff --git a/templates/blog/post.html b/templates/blog/post.html
index 7043f387..7043f387 100755..100644
--- a/templates/blog/post.html
+++ b/templates/blog/post.html
diff --git a/templates/blog/register.html b/templates/blog/register.html
index 2f05874a..2f05874a 100755..100644
--- a/templates/blog/register.html
+++ b/templates/blog/register.html
diff --git a/templates/blog/resetpass.html b/templates/blog/resetpass.html
index 81c68c56..81c68c56 100755..100644
--- a/templates/blog/resetpass.html
+++ b/templates/blog/resetpass.html
diff --git a/templates/blog/resetpass_input.html b/templates/blog/resetpass_input.html
index 939eab9d..939eab9d 100755..100644
--- a/templates/blog/resetpass_input.html
+++ b/templates/blog/resetpass_input.html
diff --git a/templates/blog/search.html b/templates/blog/search.html
index fcf98c99..fcf98c99 100755..100644
--- a/templates/blog/search.html
+++ b/templates/blog/search.html
diff --git a/templates/blog/site_policy.html b/templates/blog/site_policy.html
index 683e2c07..683e2c07 100755..100644
--- a/templates/blog/site_policy.html
+++ b/templates/blog/site_policy.html
diff --git a/templates/blog/socialify.html b/templates/blog/socialify.html
index f48eba25..f48eba25 100755..100644
--- a/templates/blog/socialify.html
+++ b/templates/blog/socialify.html
diff --git a/templates/blog/tagged.html b/templates/blog/tagged.html
index 192ef2ee..192ef2ee 100755..100644
--- a/templates/blog/tagged.html
+++ b/templates/blog/tagged.html
diff --git a/templates/blog/tags.html b/templates/blog/tags.html
index 96743843..96743843 100755..100644
--- a/templates/blog/tags.html
+++ b/templates/blog/tags.html
diff --git a/templates/blog_admin/comments.html b/templates/blog_admin/comments.html
index 95ae1d96..95ae1d96 100755..100644
--- a/templates/blog_admin/comments.html
+++ b/templates/blog_admin/comments.html
diff --git a/templates/blog_admin/edit_post.html b/templates/blog_admin/edit_post.html
index 6ce7af18..6ce7af18 100755..100644
--- a/templates/blog_admin/edit_post.html
+++ b/templates/blog_admin/edit_post.html
diff --git a/templates/blog_admin/new_post.html b/templates/blog_admin/new_post.html
index c2e911b6..c2e911b6 100755..100644
--- a/templates/blog_admin/new_post.html
+++ b/templates/blog_admin/new_post.html
diff --git a/templates/blog_admin/partials/category_topbar.html b/templates/blog_admin/partials/category_topbar.html
index a52b2bb3..a52b2bb3 100755..100644
--- a/templates/blog_admin/partials/category_topbar.html
+++ b/templates/blog_admin/partials/category_topbar.html
diff --git a/templates/blog_admin/partials/posts_topbar.html b/templates/blog_admin/partials/posts_topbar.html
index b9bad541..b9bad541 100755..100644
--- a/templates/blog_admin/partials/posts_topbar.html
+++ b/templates/blog_admin/partials/posts_topbar.html
diff --git a/templates/blog_admin/partials/tags_topbar.html b/templates/blog_admin/partials/tags_topbar.html
index c4a49ccf..c4a49ccf 100755..100644
--- a/templates/blog_admin/partials/tags_topbar.html
+++ b/templates/blog_admin/partials/tags_topbar.html
diff --git a/templates/blog_admin/partials/users_topbar.html b/templates/blog_admin/partials/users_topbar.html
index a0be6122..a0be6122 100755..100644
--- a/templates/blog_admin/partials/users_topbar.html
+++ b/templates/blog_admin/partials/users_topbar.html
diff --git a/templates/blog_admin/posts.html b/templates/blog_admin/posts.html
index 3e6fad17..3e6fad17 100755..100644
--- a/templates/blog_admin/posts.html
+++ b/templates/blog_admin/posts.html
diff --git a/templates/dev_status/home.html b/templates/dev_status/home.html
index 2b4eaba0..2b4eaba0 100755..100644
--- a/templates/dev_status/home.html
+++ b/templates/dev_status/home.html
diff --git a/templates/dev_status/repo.html b/templates/dev_status/repo.html
index 23230a12..23230a12 100755..100644
--- a/templates/dev_status/repo.html
+++ b/templates/dev_status/repo.html
diff --git a/templates/en/core/home.html b/templates/en/core/home.html
index 5ecb7a2e..5ecb7a2e 100755..100644
--- a/templates/en/core/home.html
+++ b/templates/en/core/home.html
diff --git a/templates/en/pagoda/home.html b/templates/en/pagoda/home.html
index 3a4d7dc9..3a4d7dc9 100755..100644
--- a/templates/en/pagoda/home.html
+++ b/templates/en/pagoda/home.html
diff --git a/templates/en/pagoda/site_dashboard.html b/templates/en/pagoda/site_dashboard.html
index ff8c24d0..ff8c24d0 100755..100644
--- a/templates/en/pagoda/site_dashboard.html
+++ b/templates/en/pagoda/site_dashboard.html
diff --git a/templates/en/pagoda/site_verification.html b/templates/en/pagoda/site_verification.html
index 3944859c..3944859c 100755..100644
--- a/templates/en/pagoda/site_verification.html
+++ b/templates/en/pagoda/site_verification.html
diff --git a/templates/ja/core/home.html b/templates/ja/core/home.html
index 3cd42785..3cd42785 100755..100644
--- a/templates/ja/core/home.html
+++ b/templates/ja/core/home.html
diff --git a/templates/ja/pagoda/home.html b/templates/ja/pagoda/home.html
index f64a1a14..f64a1a14 100755..100644
--- a/templates/ja/pagoda/home.html
+++ b/templates/ja/pagoda/home.html
diff --git a/templates/ja/pagoda/site_verification.html b/templates/ja/pagoda/site_verification.html
index 0e1a3b5a..0e1a3b5a 100755..100644
--- a/templates/ja/pagoda/site_verification.html
+++ b/templates/ja/pagoda/site_verification.html
diff --git a/templates/partials/_anime_footer.html b/templates/partials/_anime_footer.html
index 2ec4b1d1..2ec4b1d1 100755..100644
--- a/templates/partials/_anime_footer.html
+++ b/templates/partials/_anime_footer.html
diff --git a/templates/partials/_anime_list.html b/templates/partials/_anime_list.html
index 1ce3f578..1ce3f578 100755..100644
--- a/templates/partials/_anime_list.html
+++ b/templates/partials/_anime_list.html
diff --git a/templates/partials/_footer.html b/templates/partials/_footer.html
index 73dc174c..73dc174c 100755..100644
--- a/templates/partials/_footer.html
+++ b/templates/partials/_footer.html
diff --git a/templates/partials/_header.html b/templates/partials/_header.html
index 13e2ab6d..13e2ab6d 100755..100644
--- a/templates/partials/_header.html
+++ b/templates/partials/_header.html
diff --git a/templates/partials/_left_sidebar.html b/templates/partials/_left_sidebar.html
index 878fb399..804b80ad 100755..100644
--- a/templates/partials/_left_sidebar.html
+++ b/templates/partials/_left_sidebar.html
@@ -54,7 +54,14 @@
<div class="navigation-links">
<div class="navigation-title-container">
- <h1 class="navigation-title">{% if request.LANGUAGE_CODE == 'ja' %}ナビゲーション{% else %}Navigation{% endif %}</h1>
+ {% comment %} {% if request.LANGUAGE_CODE == 'ja' %}
+ <img src="{% static 'images/core/messages/texts/navigation_ja.png' %}" alt="ナビゲーション" class="navigation-title" />
+ {% else %}
+ <img src="{% static 'images/core/messages/texts/navigation_en.gif' %}" alt="Navigation" class="navigation-title" />
+ {% endif %} {% endcomment %}
+ <h1 class="navigation-title">
+ {% if request.LANGUAGE_CODE == 'ja' %}ナビゲーション{% else %}Navigation{% endif %}
+ </h1>
</div>
<div class="navigation-items-container">
<div class="navigation-item">
diff --git a/templates/partials/_right_sidebar.html b/templates/partials/_right_sidebar.html
index 1c9375cd..1c9375cd 100755..100644
--- a/templates/partials/_right_sidebar.html
+++ b/templates/partials/_right_sidebar.html
diff --git a/templates/partials/_weblog_list.html b/templates/partials/_weblog_list.html
index a9b33462..a9b33462 100755..100644
--- a/templates/partials/_weblog_list.html
+++ b/templates/partials/_weblog_list.html
diff --git a/templates/shared/administration/manage_storage_buckets_bucket.html b/templates/shared/administration/manage_storage_buckets_bucket.html
index 0c6f9268..0c6f9268 100755..100644
--- a/templates/shared/administration/manage_storage_buckets_bucket.html
+++ b/templates/shared/administration/manage_storage_buckets_bucket.html
diff --git a/templates/shared/administration/manage_storage_buckets_home.html b/templates/shared/administration/manage_storage_buckets_home.html
index ceffea44..ceffea44 100755..100644
--- a/templates/shared/administration/manage_storage_buckets_home.html
+++ b/templates/shared/administration/manage_storage_buckets_home.html
diff --git a/templates/shared/anime/anime.html b/templates/shared/anime/anime.html
index 8cacd20a..ddfd2c25 100755..100644
--- a/templates/shared/anime/anime.html
+++ b/templates/shared/anime/anime.html
@@ -2,306 +2,301 @@
{% load static %}
{% block head %}
-<link rel="stylesheet" href="{% static 'css/anime/anime.css' %}">
-<link rel="stylesheet" href="{% static 'css/anime/single_anime.css' %}">
-<link rel="stylesheet" href="{% static 'css/anime/video_player.css' %}">
-{% endblock head %}
+ <link rel="stylesheet" href="{% static 'css/anime/anime.css' %}" />
+ <link rel="stylesheet" href="{% static 'css/anime/single_anime.css' %}" />
+ <link rel="stylesheet" href="{% static 'css/anime/video_player.css' %}" />
+{% endblock %}
{% block content %}
-<div class="anime-single">
+ <div class="anime-single">
<div class="player-area">
- <div class="video-container">
- <div class="win98-player">
- <div class="win98-title-bar">
- <div class="title-bar-text">{{ anime.title.english|default:anime.title.romaji }}</div>
+ <div class="video-container">
+ <div class="shifoo-video-player">
+ <div class="shifoo-video-player-title-bar">
+ <div class="title-bar-text">{{ anime.title.english|default:anime.title.romaji }}</div>
+ </div>
+ <div class="shifoo-video-player-content">
+ {% if user.is_authenticated %}
+ <div class="retro-buffer">
+ <img src="{% static 'images/core/gifs/buffering.gif' %}" alt="Loading..." />
+ </div>
+ <video id="video-player"></video>
+ <div id="custom-subtitles" class="custom-subtitles"></div>
+ {% else %}
+ <div id="video-player" class="unauth-video">
+ <div class="unauth-warning">
+ <div class="warning-icon">
+ <svg viewBox="0 0 32 32">
+ <path d="M16,2 L2,28 L30,28 L16,2 Z M16,6 L27,26 L5,26 L16,6 Z" fill="#ffdd00" />
+ <path d="M16,11 L16,20 M16,22 L16,24" stroke="#ffdd00" stroke-width="3" stroke-linecap="round" />
+ </svg>
+ </div>
+ <div class="warning-message">
+ <div class="warning-title">Authentication Required</div>
+ <div class="warning-text">No undeserving lackeys allowed among these parts of the internet. Either register or login to access this content.</div>
+ </div>
+ </div>
+ </div>
+ {% endif %}
+ <div class="episode-title">Episode {{ anime.current_episode.number }}. {{ anime.current_episode.title }}</div>
+ <div class="shifoo-video-player-controls">
+ <div class="seek-control">
+ <span class="time-current">00:00</span>
+ <div class="seek-slider-container">
+ <input type="range" class="seek-slider" min="0" max="100" value="0" />
+ <div class="seek-track">
+ <div class="seek-fill"></div>
+ <div class="seek-buffer"></div>
+ </div>
+ <div class="seek-thumb"></div>
</div>
- <div class="win98-player-content">
- {% if user.is_authenticated %}
- <div class="retro-buffer">
- <img src="{% static 'images/core/gifs/buffering.gif' %}" alt="Loading...">
+ <span class="time-total">00:00</span>
+ </div>
+ <div class="controls-and-volume">
+ <div class="control-buttons">
+ <button class="shifoo-video-player-btn" id="playBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
+ <path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" />
+ </svg>
+ </button>
+ <button class="shifoo-video-player-btn" id="pauseBtn">
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="shifoo-video-player-icon">
+ <path fill-rule="evenodd" d="M6.75 5.25a.75.75 0 0 1 .75-.75H9a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V5.25Zm7.5 0A.75.75 0 0 1 15 4.5h1.5a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H15a.75.75 0 0 1-.75-.75V5.25Z" clip-rule="evenodd" />
+ </svg>
+ </button>
+ <button class="shifoo-video-player-btn" id="stopBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
+ <path fill-rule="evenodd" d="M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z" clip-rule="evenodd" />
+ </svg>
+ </button>
+ <button class="shifoo-video-player-btn" id="seekBackBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
+ <path d="M9.195 18.44c1.25.714 2.805-.189 2.805-1.629v-2.34l6.945 3.968c1.25.715 2.805-.188 2.805-1.628V8.69c0-1.44-1.555-2.343-2.805-1.628L12 11.029v-2.34c0-1.44-1.555-2.343-2.805-1.628l-7.108 4.061c-1.26.72-1.26 2.536 0 3.256l7.108 4.061Z" />
+ </svg>
+ </button>
+ <button class="shifoo-video-player-btn" id="seekForwardBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
+ <path d="M5.055 7.06C3.805 6.347 2.25 7.25 2.25 8.69v8.122c0 1.44 1.555 2.343 2.805 1.628L12 14.471v2.34c0 1.44 1.555 2.343 2.805 1.628l7.108-4.061c1.26-.72 1.26-2.536 0-3.256l-7.108-4.061C13.555 6.346 12 7.249 12 8.689v2.34L5.055 7.061Z" />
+ </svg>
+ </button>
+ <button class="shifoo-video-player-btn" id="fullscreenBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15" />
+ </svg>
+ </button>
+ <div class="quality-control">
+ <button class="shifoo-video-player-btn quality-btn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" />
+ <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
+ </svg>
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
+ </svg>Auto
+ </button>
+ <div class="quality-menu">
+ <!-- Populated by JS -->
</div>
- <video id="video-player"></video>
- <div id="custom-subtitles" class="custom-subtitles"></div>
- {% else %}
- <div id="video-player" class="unauth-video">
- <div class="unauth-warning">
- <div class="warning-icon">
- <svg viewBox="0 0 32 32">
- <path d="M16,2 L2,28 L30,28 L16,2 Z M16,6 L27,26 L5,26 L16,6 Z" fill="#ffdd00"/>
- <path d="M16,11 L16,20 M16,22 L16,24" stroke="#ffdd00" stroke-width="3" stroke-linecap="round"/>
- </svg>
- </div>
- <div class="warning-message">
- <div class="warning-title">Authentication Required</div>
- <div class="warning-text">No undeserving lackeys allowed among these parts of the internet. Either register or login to access this content.</div>
- </div>
- </div>
+ </div>
+ <div class="sub-dub-control">
+ <button class="shifoo-video-player-btn sub-dub-btn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
+ </svg>
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 1 1 6 0v8.25a3 3 0 0 1-3 3Z" />
+ </svg>
+ {% if request.COOKIES.anime_dub == 'True' %}
+ Dub
+ {% else %}
+ Sub
+ {% endif %}
+ </button>
+ <div class="sub-dub-menu">
+ <button onclick="javascript:document.cookie='anime_dub=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';location.reload();">Sub</button>
+ <button onclick="javascript:document.cookie='anime_dub=True;path=/';location.reload();">Dub</button>
</div>
- {% endif %}
- <div class="episode-title">Episode {{ anime.current_episode.number }}. {{ anime.current_episode.title }}</div>
- <div class="win98-controls">
- <div class="seek-control">
- <span class="time-current">00:00</span>
- <div class="seek-slider-container">
- <input type="range" class="seek-slider" min="0" max="100" value="0">
- <div class="seek-track">
- <div class="seek-fill"></div>
- <div class="seek-buffer"></div>
- </div>
- <div class="seek-thumb"></div>
- </div>
- <span class="time-total">00:00</span>
+ </div>
+ </div>
+ <div class="volume-control">
+ <button class="shifoo-video-player-btn" id="muteBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" />
+ </svg>
+ </button>
+ <div class="volume-slider-container">
+ <input type="range" class="volume-slider" min="0" max="100" value="100" />
+ <div class="volume-track">
+ <div class="volume-fill"></div>
</div>
- <div class="controls-and-volume">
- <div class="control-buttons">
- <button class="win98-btn" id="playBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
- <path fill-rule="evenodd" d="M4.5 5.653c0-1.427 1.529-2.33 2.779-1.643l11.54 6.347c1.295.712 1.295 2.573 0 3.286L7.28 19.99c-1.25.687-2.779-.217-2.779-1.643V5.653Z" clip-rule="evenodd" />
- </svg>
-
- </button>
- <button class="win98-btn" id="pauseBtn">
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" class="win98-icon">
- <path fill-rule="evenodd" d="M6.75 5.25a.75.75 0 0 1 .75-.75H9a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H7.5a.75.75 0 0 1-.75-.75V5.25Zm7.5 0A.75.75 0 0 1 15 4.5h1.5a.75.75 0 0 1 .75.75v13.5a.75.75 0 0 1-.75.75H15a.75.75 0 0 1-.75-.75V5.25Z" clip-rule="evenodd" />
- </svg>
- </button>
- <button class="win98-btn" id="stopBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
- <path fill-rule="evenodd" d="M4.5 7.5a3 3 0 0 1 3-3h9a3 3 0 0 1 3 3v9a3 3 0 0 1-3 3h-9a3 3 0 0 1-3-3v-9Z" clip-rule="evenodd" />
- </svg>
- </button>
- <button class="win98-btn" id="seekBackBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
- <path d="M9.195 18.44c1.25.714 2.805-.189 2.805-1.629v-2.34l6.945 3.968c1.25.715 2.805-.188 2.805-1.628V8.69c0-1.44-1.555-2.343-2.805-1.628L12 11.029v-2.34c0-1.44-1.555-2.343-2.805-1.628l-7.108 4.061c-1.26.72-1.26 2.536 0 3.256l7.108 4.061Z" />
- </svg>
- </button>
- <button class="win98-btn" id="seekForwardBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">
- <path d="M5.055 7.06C3.805 6.347 2.25 7.25 2.25 8.69v8.122c0 1.44 1.555 2.343 2.805 1.628L12 14.471v2.34c0 1.44 1.555 2.343 2.805 1.628l7.108-4.061c1.26-.72 1.26-2.536 0-3.256l-7.108-4.061C13.555 6.346 12 7.249 12 8.689v2.34L5.055 7.061Z" />
- </svg>
- </button>
- <button class="win98-btn" id="fullscreenBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15" />
- </svg>
- </button>
- <div class="quality-control">
- <button class="win98-btn quality-btn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z" />
- <path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z" />
- </svg>
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
- </svg>
- Auto
- </button>
- <div class="quality-menu">
- <!-- Populated by JS -->
- </div>
- </div>
- <div class="sub-dub-control">
- <button class="win98-btn sub-dub-btn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
- </svg>
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 1 1 6 0v8.25a3 3 0 0 1-3 3Z" />
- </svg>
- {% if request.COOKIES.anime_dub == 'True' %}
- Dub
- {% else %}
- Sub
- {% endif %}
- </button>
- <div class="sub-dub-menu">
- <button onclick="javascript:document.cookie='anime_dub=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/';location.reload();">Sub</button>
- <button onclick="javascript:document.cookie='anime_dub=True;path=/';location.reload();">Dub</button>
- </div>
- </div>
- </div>
- <div class="volume-control">
- <button class="win98-btn" id="muteBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z" />
- </svg>
- </button>
- <div class="volume-slider-container">
- <input type="range" class="volume-slider" min="0" max="100" value="100">
- <div class="volume-track">
- <div class="volume-fill"></div>
- </div>
- <div class="volume-thumb"></div>
- </div>
- {% if streaming_data.data.tracks %}
- <div class="caption-control">
- <button class="win98-btn" id="ccBtn">
- <svg class="win98-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
- <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
- </svg>
- English
- </button>
- <div class="caption-menu">
- <!-- Populated by JS -->
- </div>
- </div>
- {% endif %}
+ <div class="volume-thumb"></div>
+ </div>
+ {% if streaming_data.data.tracks %}
+ <div class="caption-control">
+ <button class="shifoo-video-player-btn" id="ccBtn">
+ <svg class="shifoo-video-player-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke-width="2" stroke="currentColor">
+ <path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
+ </svg>English
+ </button>
+ <div class="caption-menu">
+ <!-- Populated by JS -->
</div>
</div>
- </div>
+ {% endif %}
</div>
</div>
+ </div>
+ </div>
</div>
+ </div>
</div>
<!-- Anime Details Section -->
<div class="anime-details">
- <div class="details-grid">
- <div class="info-section">
- <img src="{{ anime.image }}" alt="{{ anime.title.english }}" class="anime-poster">
- <div class="info-list">
- <div class="info-item">
- <span class="label">Status:</span>
- <span>{{ anime.status }}</span>
- </div>
- <div class="info-item">
- <span class="label">Type:</span>
- <span>{{ anime.type }}</span>
- </div>
- <div class="info-item">
- <span class="label">Episodes:</span>
- <span>{{ anime.totalEpisodes }}</span>
- </div>
- {% if anime.duration %}
- <div class="info-item">
- <span class="label">Duration:</span>
- <span>{{ anime.duration }} min</span>
- </div>
- {% endif %}
- {% if anime.rating %}
- <div class="info-item">
- <span class="label">Rating:</span>
- <span>★ {{ anime.rating }}%</span>
- </div>
- {% endif %}
- <div class="info-item">
- <span class="label">Studios:</span>
- <span>{{ anime.studios|join:", " }}</span>
- </div>
- </div>
+ <div class="details-grid">
+ <div class="info-section">
+ <img src="{{ anime.image }}" alt="{{ anime.title.english }}" class="anime-poster" />
+ <div class="info-list">
+ <div class="info-item">
+ <span class="label">Status:</span>
+ <span>{{ anime.status }}</span>
</div>
-
- <div class="content-section">
- <div class="episodes-list">
- <div class="episodes-header">
- <h3>Episodes</h3>
- <span>{{ anime.totalEpisodes }} Total</span>
- </div>
- <div class="episodes-scroll" id="episodeList">
- {% for episode in anime.episodes %}
- <a href="{% url "anime:anime" anime.id episode.number %}" class="episode-item {% if episode.number == anime.current_episode.number %}active{% endif %}" {% if episode.number == anime.current_episode.number %}id="currentEpisode"{% endif %}>
- <div class="episode-preview">
- <img src="{{ episode.image }}" alt="Episode {{ episode.number }}">
- </div>
- <div class="episode-text">
- <span class="ep-number">{{ episode.number }}.</span>
- <span class="ep-title">{{ episode.title }}</span>
- </div>
- </a>
- {% endfor %}
- </div>
- </div>
- <div class="synopsis">
- <h1 class="anime-title" style="color: {{ anime.color|default:'#8d8dff' }}">
- {{ anime.title.english|default:anime.title.romaji }}
- </h1>
- <p>{{ anime.description|safe }}</p>
- <div class="genres-list">
- <span class="genres-label">Genres:</span>
- {% for genre in anime.genres %}
- <a href="{% url 'anime:search' %}?genre={{ genre }}" class="genre-link">{{ genre }}</a>
- {% endfor %}
- </div>
- </div>
+ <div class="info-item">
+ <span class="label">Type:</span>
+ <span>{{ anime.type }}</span>
+ </div>
+ <div class="info-item">
+ <span class="label">Episodes:</span>
+ <span>{{ anime.totalEpisodes }}</span>
</div>
+ {% if anime.duration %}
+ <div class="info-item">
+ <span class="label">Duration:</span>
+ <span>{{ anime.duration }} min</span>
+ </div>
+ {% endif %}
+ {% if anime.rating %}
+ <div class="info-item">
+ <span class="label">Rating:</span>
+ <span>★ {{ anime.rating }}%</span>
+ </div>
+ {% endif %}
+ <div class="info-item">
+ <span class="label">Studios:</span>
+ <span>{{ anime.studios|join:', ' }}</span>
+ </div>
+ </div>
</div>
- <!-- Characters Section -->
- <div class="characters-section">
- <h3>Characters</h3>
- <div class="characters-grid">
- {% for character in anime.characters %}
- <div class="character-card">
- <div class="character-image">
- <img src="{{ character.image }}" alt="{{ character.name.full }}">
- </div>
- <div class="character-info">
- <span class="character-name">{{ character.name.full }}</span>
- <span class="character-role">{{ character.role }}</span>
- </div>
- </div>
- {% endfor %}
+ <div class="content-section">
+ <div class="episodes-list">
+ <div class="episodes-header">
+ <h3>Episodes</h3>
+ <span>{{ anime.totalEpisodes }} Total</span>
+ </div>
+ <div class="episodes-scroll" id="episodeList">
+ {% for episode in anime.episodes %}
+ <a href="{% url 'anime:anime' anime.id episode.number %}" class="episode-item {% if episode.number == anime.current_episode.number %}active{% endif %}" id="{% if episode.number == anime.current_episode.number %}currentEpisode{% endif %}">
+ <div class="episode-preview">
+ <img src="{{ episode.image }}" alt="Episode {{ episode.number }}" />
+ </div>
+ <div class="episode-text">
+ <span class="ep-number">{{ episode.number }}.</span>
+ <span class="ep-title">{{ episode.title }}</span>
+ </div>
+ </a>
+ {% endfor %}
+ </div>
+ </div>
+ <div class="synopsis">
+ <h1 class="anime-title" style="color: {{ anime.color|default:'#8d8dff' }}">{{ anime.title.english|default:anime.title.romaji }}</h1>
+ <p>{{ anime.description|safe }}</p>
+ <div class="genres-list">
+ <span class="genres-label">Genres:</span>
+ {% for genre in anime.genres %}
+ <a href="{% url 'anime:search' %}?genre={{ genre }}" class="genre-link">{{ genre }}</a>
+ {% endfor %}
</div>
+ </div>
</div>
+ </div>
- <!-- Recommendations Section -->
- <div class="recommendations-section">
- {% include 'partials/_anime_list.html' with anime_list=anime.relations title="Related Anime" %}
- </div>
- <div class="recommendations-section">
- {% include 'partials/_anime_list.html' with anime_list=anime.recommendations title="Recommended Anime" %}
+ <!-- Characters Section -->
+ <div class="characters-section">
+ <h3>Characters</h3>
+ <div class="characters-grid">
+ {% for character in anime.characters %}
+ <div class="character-card">
+ <div class="character-image">
+ <img src="{{ character.image }}" alt="{{ character.name.full }}" />
+ </div>
+ <div class="character-info">
+ <span class="character-name">{{ character.name.full }}</span>
+ <span class="character-role">{{ character.role }}</span>
+ </div>
+ </div>
+ {% endfor %}
</div>
+ </div>
+
+ <!-- Recommendations Section -->
+ <div class="recommendations-section">
+ {% include 'partials/_anime_list.html' with anime_list=anime.relations title='Related Anime' %}
+ </div>
+ <div class="recommendations-section">
+ {% include 'partials/_anime_list.html' with anime_list=anime.recommendations title='Recommended Anime' %}
+ </div>
</div>
-</div>
-{% endblock content %}
+ </div>
+{% endblock %}
{% block scripts %}
-{% if user.is_authenticated %}
-<script src="{% static 'js/libs/hls.js' %}"></script>
-<script src="{% static 'js/libs/videoPlayer.js' %}"></script>
-{{ streaming_data.data.tracks|json_script:"tracks-data" }}
-<script>
- document.addEventListener('DOMContentLoaded', () => {
- const videoStreamingURL = `/services/stream/anime/?url=${encodeURIComponent('{{ streaming_data.data.sources.url }}')}`;
- var tracks = [];
+ {% if user.is_authenticated %}
+ <script src="{% static 'js/libs/hls.js' %}"></script>
+ <script src="{% static 'js/libs/videoPlayer.js' %}"></script>
+ {{ streaming_data.data.tracks|json_script:'tracks-data' }}
+ <script>
+ document.addEventListener('DOMContentLoaded', () => {
+ const videoStreamingURL = `/services/stream/anime/?url=${encodeURIComponent('{{ streaming_data.data.sources.url }}')}`
+ var tracks = []
try {
- tracks = JSON.parse(document.getElementById('tracks-data').textContent)
- .filter(track => track.kind === 'captions')
- .map(track => ({
- ...track,
- file: `/services/stream/anime/?url=${encodeURIComponent(track.file)}`
- }));
+ tracks = JSON.parse(document.getElementById('tracks-data').textContent)
+ .filter((track) => track.kind === 'captions')
+ .map((track) => ({
+ ...track,
+ file: `/services/stream/anime/?url=${encodeURIComponent(track.file)}`
+ }))
} catch (error) {}
-
+
if (tracks.length === 0) {
- try {
- document.querySelector('.caption-control').style.display = 'none';
- } catch (error) {}
+ try {
+ document.querySelector('.caption-control').style.display = 'none'
+ } catch (error) {}
}
-
- let player;
+
+ let player
if (videoStreamingURL !== '/services/stream/anime/?url=') {
- player = new VideoPlayer({
- source: {
- url: videoStreamingURL,
- type: 'hls',
- tracks: tracks
- }
- });
+ player = new VideoPlayer({
+ source: {
+ url: videoStreamingURL,
+ type: 'hls',
+ tracks: tracks
+ }
+ })
} else {
- player = new VideoPlayer({
- source: {
- url: '',
- type: 'video',
- tracks: tracks
- }
- });
+ player = new VideoPlayer({
+ source: {
+ url: '',
+ type: 'video',
+ tracks: tracks
+ }
+ })
}
-
- const currentEpisode = document.getElementById('currentEpisode');
+
+ const currentEpisode = document.getElementById('currentEpisode')
if (currentEpisode) {
- const episodeList = document.getElementById('episodeList');
- episodeList.scrollTop = currentEpisode.offsetTop - episodeList.offsetTop - 10;
+ const episodeList = document.getElementById('episodeList')
+ episodeList.scrollTop = currentEpisode.offsetTop - episodeList.offsetTop - 10
}
- });
-</script>
-{% endif %}
-{% endblock scripts %}
+ })
+ </script>
+ {% endif %}
+{% endblock %}
diff --git a/templates/shared/anime/home.html b/templates/shared/anime/home.html
index 17741ed7..17741ed7 100755..100644
--- a/templates/shared/anime/home.html
+++ b/templates/shared/anime/home.html
diff --git a/templates/shared/anime/search.html b/templates/shared/anime/search.html
index 7bd7ffcf..7bd7ffcf 100755..100644
--- a/templates/shared/anime/search.html
+++ b/templates/shared/anime/search.html
diff --git a/templates/shared/core/base.html b/templates/shared/core/base.html
index a91d4800..1e4ffdfa 100755..100644
--- a/templates/shared/core/base.html
+++ b/templates/shared/core/base.html
@@ -14,7 +14,9 @@
<meta property="og:image" content="{{ request.meta.image }}" />
<meta property="og:url" content="{{ request.meta.url }}" />
<meta property="robots" content="{{ request.meta.robots }}" />
- {% block title %}{% endblock title %}
+ {% block title %}
+
+ {% endblock %}
<link rel="apple-touch-icon" sizes="180x180" href="{% static 'images/favicons/apple-touch-icon.png' %}" />
<link rel="icon" type="image/png" sizes="32x32" href="{% static 'images/favicons/favicon-32x32.png' %}" />
<link rel="icon" type="image/png" sizes="16x16" href="{% static 'images/favicons/favicon-16x16.png' %}" />
@@ -28,11 +30,12 @@
<video autoplay muted loop id="video-background" preload="auto">
<source src="{% static 'videos/background_.mp4' %}" type="video/mp4" />
</video>
+ <img src="{% static 'images/core/img/pngegg.png' %}" id="spaceship" />
<div id="video-overlay"></div>
<div id="body-wrapper">
{% include 'partials/_header.html' %}
<div id="content-wrapper">
- <div id="left-sidebar" {% if user.is_authenticated %}style="border-top-left-radius: 0px;"{% endif %}>
+ <div id="left-sidebar" style="{% if user.is_authenticated %}border-top-left-radius: 0px;{% endif %}">
{% include 'partials/_left_sidebar.html' %}
</div>
<div id="main-content">
@@ -51,10 +54,48 @@
<div id="scanlines"></div>
</body>
{% block scripts %}
-
+
{% endblock %}
<script src="{% static 'js/libs/pamphlet.js' %}"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/MotionPathPlugin.min.js"></script>
<script type="text/javascript">
- new Pamphlet();
+ new Pamphlet()
+ const animationPlayed = sessionStorage.getItem('animationPlayed')
+ document.addEventListener('DOMContentLoaded', function () {
+ // Move all calculations inside the DOMContentLoaded event
+ const spaceship = document.getElementById('spaceship')
+ const leftSidebar = document.getElementById('left-sidebar')
+ const sidebarRect = leftSidebar.getBoundingClientRect()
+ const sidebarLeft = sidebarRect.left
+ const sidebarTop = sidebarRect.top
+ const initialX = Math.min(200, sidebarLeft - 100)
+
+ if (animationPlayed) {
+ // Set final position of spaceship
+ gsap.set(spaceship, { x: sidebarLeft + 100, y: -200, rotation: -10 })
+ return
+ }
+
+ gsap.registerPlugin(MotionPathPlugin)
+
+ gsap.to(spaceship, {
+ duration: 120,
+ motionPath: {
+ path: [
+ { x: initialX, y: -50 },
+ { x: sidebarLeft, y: -100 },
+ { x: sidebarLeft + 100, y: -200 }
+ ],
+ curviness: 1.5
+ },
+ ease: 'power2.inOut',
+ rotation: -10,
+ onComplete: () => {
+ // Set animation played flag
+ sessionStorage.setItem('animationPlayed', true)
+ }
+ })
+ })
</script>
</html>
diff --git a/templates/shared/journals/single.html b/templates/shared/journals/single.html
index 045c33df..045c33df 100755..100644
--- a/templates/shared/journals/single.html
+++ b/templates/shared/journals/single.html
diff --git a/templates/shared/my/journals.html b/templates/shared/my/journals.html
index 846d9cad..846d9cad 100755..100644
--- a/templates/shared/my/journals.html
+++ b/templates/shared/my/journals.html
diff --git a/templates/userpages/home.html b/templates/userpages/home.html
index 68a13b2c..68a13b2c 100755..100644
--- a/templates/userpages/home.html
+++ b/templates/userpages/home.html
diff --git a/templates/userpages/partials/base.html b/templates/userpages/partials/base.html
index d6dd452a..d6dd452a 100755..100644
--- a/templates/userpages/partials/base.html
+++ b/templates/userpages/partials/base.html
diff --git a/templates/userpages/partials/navbar.html b/templates/userpages/partials/navbar.html
index e69de29b..e69de29b 100755..100644
--- a/templates/userpages/partials/navbar.html
+++ b/templates/userpages/partials/navbar.html