61 lines
2.1 KiB
Markdown
61 lines
2.1 KiB
Markdown
# 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:**
|
|
- [Python](https://www.python.org/)
|
|
- [Streamlit](https://streamlit.io/) (Web Framework)
|
|
- [Requests](https://requests.readthedocs.io/) (API communication)
|
|
- **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
|
|
|
|
### Using Docker (Recommended)
|
|
|
|
The project is fully containerized for easy deployment.
|
|
|
|
1. **Build the image:**
|
|
```bash
|
|
docker build -t crunchyroll-watchlist .
|
|
```
|
|
|
|
2. **Run the container:**
|
|
```bash
|
|
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:**
|
|
```bash
|
|
pip install streamlit requests
|
|
```
|
|
|
|
2. **Run the application:**
|
|
```bash
|
|
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.
|