MediaFlowrr automatically organizes downloaded media.
5.2K
✅ Automatic organization of movies and TV shows using TMDB metadata
📁 Multi-folder support: recursively scans the source directory
🧠 Language detection from file names
🛠️ Smart renaming with uniform formatting
🕘 Full cron job support for scheduled scans
🔧 Simple configuration via environment variables
🐳 Available as a Docker container via GHCR/Docker Hub or Python Script
You can choose three different method to run MediaFlowrr:
git clone https://github.com/giuseppe99barchetta/MediaFlowrr
cd MediaFlowrr
pip install -r requirements.txt
Configure the Script:
Create a .env file with your specific settings:
SOURCE_FOLDER: The directory where your downloader places the media.LIBRARY_FOLDER: The root directory where your media files are stored.MOVIE_FOLDER: The subfolder within LIBRARY_FOLDER for movies.TV_FOLDER: The subfolder within LIBRARY_FOLDER for TV shows.TMDB_API_KEY: API key retrieved from TMDB.CHUNK_SIZE: The chunk size used when copying files from source folder to media folder (adjust if needed).CRON_SCHEDULE: Cron expression to schedule periodic runs inside the container.TZ (optional): Timezone string for scheduling.Run MediaFlowrr:
python entrypoint.sh
You can run MediaFlowrr automatically at boot using systemd.
Save the following as /etc/systemd/system/mediaflowrr.service:
[Unit]
Description=MediaFlowrr - Media Organizer
After=network.target
[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/MediaFlowrr
EnvironmentFile=/home/your_username/MediaFlowrr/.env
ExecStart=/usr/bin/python3 /home/your_username/MediaFlowrr/entrypoint.py
Restart=on-failure
[Install]
WantedBy=multi-user.target
🔁 Replace
your_usernameand paths as needed.
Create a .env file with your specific settings:
SOURCE_FOLDER: The directory where your downloader places the media.LIBRARY_FOLDER: The root directory where your media files are stored.MOVIE_FOLDER: The subfolder within LIBRARY_FOLDER for movies.TV_FOLDER: The subfolder within LIBRARY_FOLDER for TV shows.TMDB_API_KEY: API key retrieved from TMDB.CHUNK_SIZE: The chunk size used when copying files from source folder to media folder (adjust if needed).CRON_SCHEDULE: Cron expression to schedule periodic runs inside the container.TZ (optional): Timezone string for scheduling.sudo systemctl daemon-reexec
sudo systemctl daemon-reload
sudo systemctl enable mediaflowrr
sudo systemctl start mediaflowrr
To check logs:
journalctl -u mediaflowrr -f
docker pull ciuse99/mediaflowrr:latest
docker run -d \
-e MOVIE_FOLDER=movies \
-e TV_FOLDER=tv \
-e TMDB_API_KEY=your_api_key_here \
-e CRON_SCHEDULE=*/30 * * * * \
-e TZ=Europe/Rome \
-e CHUNK_SIZE=4096 \
-e LOG_LEVEL=INFO \
-e FILE_NAME_LANGUAGE=en-EN \
-v /host/downloads:/path/to/downloads:ro \
-v /host/library:/path/to/library \
ciuse99/mediaflowrr:latest
version: "3.8"
services:
mediaflowrr:
image: ciuse99/mediaflowrr:latest
volumes:
- /mnt/jdownloader:/media/source # Path to your downloaded media folder
- /mnt/jellyfin:/media/library # Path to your media library
environment:
- MOVIE_FOLDER=movies # Path to your movie folder inside the media library
- TV_FOLDER=tv # Path to your TV shows folder inside the media library
- CHUNK_SIZE=4096 # Size of the chunks to process (leave as default unless you have specific needs)
- TMDB_API_KEY=YOUR_TMDB_API_KEY # Replace with your actual TMDB API key
- LOG_LEVEL=INFO # Set the logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
- FILE_NAME_LANGUAGE=en-EN # Language for file names (e.g., en-EN, it-IT)
- CRON_SCHEDULE=*/30 * * * * # Cron schedule for running the service (every 30 minutes)
- TZ=Europe/Rome # Set your timezone
restart: unless-stopped
Contributions are welcome! If you find any bugs or have suggestions for improvements, please submit an issue or pull request on GitHub.
This project is licensed under the MIT License. See the LICENSE file for details.
Content type
Image
Digest
sha256:3c6b942df…
Size
52.7 MB
Last updated
12 months ago
docker pull ciuse99/mediaflowrr