# mediacurator

mediacurator is a Python command line tool to manage a media database.

- List all the videos and their information with or without filters
- Batch find and repair/convert videos with encoding errors
- Batch recode videos to more modern codecs (x265 / AV1) based on filters: extensions, codecs, resolutions …

## Documentation

The documentation is available on the following [link](https://fabquenneville.github.io/mediacurator/)

## Releases

mediacurator is released on [PyPi](https://pypi.org/project/mediacurator/).
Installation instructions are found on the [GitHub page](https://fabquenneville.github.io/mediacurator/usage/installation.html).

## Usage

```bash
    mediacurator <command> [options]

    # Command options
    mediacurator [list convert] [-del/--delete]
        [-i/--inputs any 3gp asf avi divx dv f4v flv gif m2ts m4v mkv mov mp4 mpeg mpg mts ogm ogv rm swf ts vid vob webm wmv]
        [-fl/--filters fferror old lowres hd 720p 1080p uhd mpeg mpeg4 x264 wmv3 wmv]
        [-o/--outputs mkv/mp4 x265/av1]
        [-p/--printop list formatted verbose]
        [-d/--dirs "/mnt/media/" "/mnt/media2/"]
        [-f/--files "file1.ext" "file2.ext"]
```

**Available commands:**

- `list`: List all videos with specified filters.
- `convert`: Convert videos to specified formats.

**Options:**

- `-del` or `--delete`: Delete found results after successful operations. **Use with caution**.
- `-i <input>` or `--inputs <input>`: Specify input file formats (default: `any`).
- `-fl <filter>` or `--filters <filter>`: Apply filters to the selection of videos.
- `-o <output>` or `--outputs <output>`: Specify output formats (default: `mkv`, `x265`).
- `-p <print_option>` or `--printop <print_option>`: Set print options (default: `list`).
- `-f <file>` or `--files <file>`: Specify files to process.
- `-d <directory>` or `--dirs <directory>`: Specify directories to process.

**For multiple files or filenames, use space-separated values ( ).**

**Default options (if not specified):**

- `-i/--inputs`: `any`
- `-fl/--filters`: (none)
- `-o/--outputs`: `mkv`, `x265`
- `-p/--printop`: `list`

### Examples

```bash
# List all videos with old codecs in formatted output
mediacurator list --filters old --printop formatted --dirs "/mnt/media/" "/mnt/media2/" >> ../medlist.txt

# Convert all MPEG4 videos to AV1 in MP4 format, and delete originals after conversion
mediacurator convert --delete --filters mpeg4 --outputs av1 mp4 --dirs "/mnt/media/" "/mnt/media2/"

# Convert videos with AVI or MPG extensions, print formatted and verbose output, and delete originals
mediacurator convert --delete --inputs avi mpg --printop formatted verbose --dirs "/mnt/media/" "/mnt/media2/"
```

## Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

## License

[GNU GPLv3](https://choosealicense.com/licenses/gpl-3.0/)
