mirror of
https://github.com/barkeser2002/offline-db.git
synced 2026-09-25 06:00:11 +03:00
This major update transforms the platform into a personalized anime experience. Key Changes: - Database: Added 'users', 'watch_history', and 'watchlists' tables with appropriate relationships and indices. - Backend: Created 'blueprints/user.py' for authentication (Register/Login/Logout) and User Data API (History/Watchlist). - Security: Implemented password hashing using werkzeug.security and enabled Flask sessions. - Frontend Architecture: Refactored all templates to use a new 'base.html' for global navigation and consistent styling. - UI/UX: Added 'Continue Watching' and 'My Watchlist' sections to the home page. - Tracking: Integrated real-time watch progress tracking in the video player. This moves the platform from a static database to a dynamic, user-centric streaming site. Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
42 lines
2.2 KiB
HTML
42 lines
2.2 KiB
HTML
{% extends "base.html" %}
|
|
|
|
{% block title %}{{ season.title() }} {{ year }} Anime - Anime Platform{% endblock %}
|
|
|
|
{% block content %}
|
|
<div class="flex justify-between items-center mb-6">
|
|
<h2 class="text-3xl font-bold">{{ season.title() }} {{ year }} <span class="text-gray-500 text-xl font-normal">({{ anime_list|length }} animes)</span></h2>
|
|
<div class="bg-gray-800 px-4 py-2 rounded-lg border border-gray-700">
|
|
<span class="text-green-500 font-bold">{{ in_db_count }}</span> / {{ anime_list|length }} in Database
|
|
</div>
|
|
</div>
|
|
|
|
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-5 gap-6">
|
|
{% for anime in anime_list %}
|
|
<div class="anime-card bg-gray-800 rounded-lg overflow-hidden shadow-lg border {% if anime.in_db %}border-green-600{% else %}border-gray-700{% endif %} flex flex-col">
|
|
<div class="relative">
|
|
<img src="{{ anime.image }}" alt="{{ anime.title }}" class="w-full h-64 object-cover">
|
|
{% if anime.in_db %}
|
|
<div class="absolute top-2 left-2 bg-green-600 text-white text-[10px] font-bold px-1.5 py-0.5 rounded shadow uppercase">
|
|
In DB
|
|
</div>
|
|
{% endif %}
|
|
<div class="absolute top-2 right-2 bg-blue-600 text-white text-xs font-bold px-2 py-1 rounded shadow">
|
|
{{ anime.type }}
|
|
</div>
|
|
</div>
|
|
<div class="p-4 flex-grow flex flex-col justify-between">
|
|
<div>
|
|
<h3 class="font-bold text-lg leading-tight mb-2 line-clamp-2" title="{{ anime.title }}">{{ anime.title }}</h3>
|
|
</div>
|
|
<div class="flex items-center justify-between mt-auto">
|
|
<span class="text-yellow-500 font-bold text-sm">⭐ {{ anime.score or 'N/A' }}</span>
|
|
<a href="/player?mal_id={{ anime.mal_id }}" class="bg-blue-600 hover:bg-blue-700 text-white text-xs font-bold px-4 py-2 rounded transition">
|
|
Watch
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endfor %}
|
|
</div>
|
|
{% endblock %}
|