2.8 KiB
GEMINI.md
Project Overview
This project is a Python-based web application designed to manage a home media server. It provides a web interface to interact with various services, including Samba file shares, video duplicate identification, and comics management.
The backend is built with the FastAPI framework and uses SQLAlchemy for database interactions. The application is structured with a clear separation of concerns, using FastAPI routers to define API endpoints for different services.
Key Features:
- Samba File Share Management: Provides full access to Samba shares, allowing users to list, upload, download, delete, and rename files.
- Video Duplicate Identification: Scans video files and identifies potential duplicates based on attributes like duration, visual similarity (using image hashing), file size, and file name.
- Comics Management: Organizes comic book archives by converting
.zipfiles to.cbzformat and sorting them into appropriately named folders.
Building and Running
This project is a Python application. To run it, you'll need to have Python and the required dependencies installed.
Dependencies
The project's dependencies are listed in backend/requirements.txt. You can install them using pip:
pip install -r backend/requirements.txt
Running the Application
The application is run using uvicorn, a fast ASGI server.
# TODO: Confirm the exact command to run the application.
# The following is a common command for FastAPI applications.
cd backend/
uvicorn app.main:app --reload
This will start the development server. You can then access the API at http://127.0.0.1:8000.
Development Conventions
The project follows standard conventions for FastAPI applications.
Project Structure
main.py: The main entry point for the FastAPI application.database.py: Contains the SQLAlchemy setup and database connection logic.models.py: Defines the SQLAlchemy models (database schemas).routers/: Contains the API endpoints for different services (Samba, comics, duplicates).samba_manager.py,comics_manager.py,duplicates_manager.py: These files contain the business logic for each service.config.py: Manages application settings usingpydantic-settings.
API Endpoints
The API is organized into the following routers:
- /samba: Endpoints for Samba file share management.
- /comics: Endpoints for organizing comics.
- /duplicates: Endpoints for scanning and finding video duplicates.
Database
The application uses SQLAlchemy for database interactions. The database models are defined in models.py, and the database connection is managed in database.py. A database session is made available to the application using a FastAPI dependency (get_db in main.py).