Linkarr
Organize your media library with ease - without moving or duplicating your files!
Organize your media library with ease - **without moving or duplicating your files!** The project is written primarily in Python, distributed under the GNU General Public License v3.0 license, first published in 2025. Key topics include: episodes, jellyfin, media, movie, openelec.
<img width="128px" src="./docs/logo.png" alt="Linkarr"></img>
Linkarr - Media Organizer
Organize your media library with ease - without moving or duplicating your files!
- ๐ฆ No file moving/copying: Monitors for changes, and then organizes your media with symlinks only.
- ๐งฒ Perfect for seeding/usenet: Works with files managed by torrent or usenet clients.
- ๐ฌ Jellyfin ready: Import organized folders directly into your media server.
- ๐ณ Easy Docker deployment: Run anywhere, just map your folders.
Example:
| ๐ Before (Source Folder) | ๐ After (Organized Folder) | |
|---|---|---|
| TV | /media/TV/<br>โโ ๐Show.Name.S01/<br>ย ย ย ย โโโ Show.Name.S01E01.1080p.mkv<br>ย ย ย ย โโโ Show.Name.S01E02.1080p.mkv<br>โโ๐ Show.Name.S02/<br>ย ย ย ย โโโ Show.Name.S02E01.1080p.mkv<br>ย ย ย ย โโโ Show.Name.S02E02.1080p.mkv<br>โโโ Another.Show.Name.S04E07.1080p.mkv | /organized/TV/<br>โโ๐๏ธ Show Name/<br>ย ย ย ย โโ๐ Season 01/<br>ย ย ย ย ย ย ย ย โโ๐ Show.Name.S01E01.1080p.mkv<br>ย ย ย ย ย ย ย ย โโ๐ Show.Name.S01E02.1080p.mkv <br>ย ย ย ย โโ๐ Season 02/<br>ย ย ย ย ย ย ย ย โโ๐ Show.Name.S02E01.1080p.mkv<br>ย ย ย ย ย ย ย ย โโ๐ Show.Name.S02E02.1080p.mkv <br>โโ๐๏ธ Another Show Name/<br>ย ย ย ย โโ๐ Season 04/<br>ย ย ย ย ย ย ย ย โโ๐ Show.Name.S04E07.1080p.mkv |
| Movies | /media/Movies/<br>โโ๐ Movie.Title.2023.1080p/<br>ย ย ย ย โโโ Movie.Title.2023.1080p.mkv<br>โโโ Another.Movie.Title.2024.1080p.mkv | /organized/Movies/<br>โโ๐ Movie Title (2023)/<br>ย ย ย ย โโ๐ Movie.Title.2023.1080p.mkv <br>โโ๐ Another Movie Title (2024)/<br>ย ย ย ย โโ๐ Another.Movie.Title.2024.1080p.mkv |
Getting started
๐ Docker Usage (Recommended)
You will need Docker installed on your system.
Important: You must map your source and destination folders to the same paths inside the container as on your host system. This ensures symlinks work correctly.
bashdocker run -d \ -v /path/to/source:/path/to/source \ -v /path/to/organized:/path/to/organized \ -v $(pwd)/config.json:/config/config.json \ itsmejoeeey/linkarr:latest
Or with Docker Compose:
yamlservices: my-linkarr: image: itsmejoeeey/linkarr:latest container_name: linkarr # Pass in your config file below, by specifying the path on your host machine volumes: - /path/to/source:/path/to/source - /path/to/organized:/path/to/organized - ./config.json:/config/config.json restart: unless-stopped
See Configuration for details on configuring.
- Make sure to provide a valid
config.json. - Replace
/path/to/sourceand/path/to/organizedwith your actual media paths.
Running manually
-
Install dependencies:
bashpython -m venv venv source venv/bin/activate pip install -r requirements.txt -
Copy and edit the example config:
bashcp config.example.json config.json # Edit config.json to match your source/destination folders and preferences -
Run the organizer:
bashcd src python -m linkarr.main ../config.json
Configuration
See config.example.json and src/linkarr/config.schema.json for configuration options.
Development
Contributors
Showing top 1 contributor by commit count.
