Files
crunchyroll-watchlist/GEMINI.md
T
pie 47e66478c4
Build and Push Docker Image / build-and-push-image (push) Failing after 14m8s
Initial commit
2026-04-19 17:08:09 +01:00

2.1 KiB

Crunchyroll Watchlist

A polished, Streamlit-based dashboard for viewing and managing your Crunchyroll watchlist. This project provides a custom-styled interface with category-based grouping and interactive carousels.

Project Overview

  • Purpose: Provide an enhanced visual interface for the Crunchyroll watchlist using the Crunchyroll API.
  • Main Technologies:
  • Key Features:
    • OAuth2 Authentication with Crunchyroll.
    • Custom CSS for a dark-themed, "Netflix-style" UI.
    • Category-based sorting (Action, Adventure, Comedy, etc.).
    • Interactive row carousels for series navigation.

Building and Running

The project is fully containerized for easy deployment.

  1. Build the image:

    docker build -t crunchyroll-watchlist .
    
  2. Run the container:

    docker run -p 8501:8501 \
      -e CR_EMAIL="your-email@example.com" \
      -e CR_PASSWORD="your-password" \
      crunchyroll-watchlist
    

    Access the app at http://localhost:8501. If environment variables are provided, the app will attempt to log in automatically.

Local Development

  1. Install dependencies:

    pip install streamlit requests
    
  2. Run the application:

    streamlit run crunchyroll_watchlist.py
    

Development Conventions

  • Frontend: Custom styling is handled via st.markdown with unsafe_allow_html=True.
  • Components: Complex interactive elements (like the carousel) are implemented using Streamlit HTML components (components.html).
  • State Management: Uses st.session_state to manage authentication tokens and account data.
  • Caching: API calls are cached using st.cache_data to improve performance and reduce API load.

Project Structure

  • crunchyroll_watchlist.py: The main application logic, including authentication, API interaction, and UI rendering.
  • Dockerfile: Configuration for building the project as a container.