aetaric / checkrr

Checkrr Scans your library files for corrupt media and optionally replaces the files via sonarr and radarr
MIT License
228 stars 10 forks source link
audio audio-processing ffprobe media radarr-api sonarr-api video video-processing

Checkrr

Scan your library files for corrupt media and replace the files via sonarr and radarr

Docker Pulls GitHub Downloads (all assets, all releases) GitHub License GitHub Release GitHub Release Date

Why does this exist

I've been running a media library since 2013, migrating my library between both servers (I've had 3 so far) and filesystems (ext4 on LVM was a mistake). I've lost whole disks worth of data in the past and my library has had various problems ever since that I have never bothered to fully track down until now.

Checkrr runs various checks (ffprobe, magic number, mimetype, and file hash on subsequent runs to drastically improve speed) on the path you specify as checkpath in the config.

Screenshots

Idle screenshot Running screenshot

Installation and running checkrr

cli (without package manager)

docker

YOU MUST CREATE THE CONFIG AND DB FILES BEFORE STARTING. checkrr will complain if these are directories. Docker doesn't know you want to mount a file unless it already exists.

debian/ubuntu

sudo wget -O /etc/apt/trusted.gpg.d/checkrr.gpg https://repo.checkrr.aetaric.ninja/checkrr.gpg
echo "deb [signed-by=/etc/apt/trusted.gpg.d/checkrr.gpg] https://repo.checkrr.aetaric.ninja/ checkrr main" | sudo tee /etc/apt/sources.list.d/checkrr.list
sudo apt update
sudo apt install checkrr

Running Checkrr

cli as a daemon: checkrr -c /etc/checkrr.yaml

cli as a one-off: checkrr -c /etc/checkrr.yaml -o

docker: docker run -v /path/to/checkrr.yaml:/etc/checkrr.yaml -v /path/to/media:/media -v /path/to/checkrr.db:/checkrr.db aetaric/checkrr:latest

compose:

---
version: "3"

services:
  checkrr:
    container_name: checkrr
    image: aetaric/checkrr:latest
    volumes:
      - /path/to/checkrr/config/checkrr.yaml:/etc/checkrr.yaml
      - /path/to/checkrr/config/checkrr.db:/checkrr.db
      - /path/to/media/to/scan:/media
    ports:
      - 8585:8585
    restart: on-failure

unRAID using mrslaw's community applications repo

Please note the Additional Requirements on the details screen prior to pressing install. mrslaw has all the commands you need to run there.

Upgrading to 3.1 or newer

checkrr > 3.1 has changed the way arr services are handled. Please review the example config and bring your config into compliance prior to running checkrr. With the 3.1 release checkrr supports having multiple of each arr service. So you could have 3 sonarr instances connected. Each arr config under arr: has a service key to tell checkrr what service type it is. This can be set to sonarr, radarr, or lidarr. Please note that if you are running on docker, you will likely want to setup path mappings for each service. checkrr will attempt to translate the paths that the arr services see when working with their APIs.

Building

Should you want to build checkrr from source, you can do so with the following: cd webserver && pnpm install && pnpm build && cd .. && go build

You need the following to build checkrr:

go version >= 1.22

nodejs version >= 22.9.0

pnpm installed via: npm install -g pnpm

Please note, if you build checkrr yourself, you will be told to download the official release if you open an issue for a bug.

Contributions

Something something fork and PR if you have something to add to checkrr. I'm happy to review PRs as they come in.

FAQ

How do I add multiple paths for checkrr to check?

You can specify multiple folders to check via the config file

checkrr:
  checkpath:
    - /media/TV_Shows
    - /media/Movies