karaokatalog/README.md
2025-06-01 16:46:31 +02:00

58 lines
1.8 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Karaokatalog
Tools to manage an Ultrastar DX song library. Features include:
1. Deduplication
2. Organization
3. Recoding
## Setup
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
## Run
We assume that your song library is stored at `$SONG_LIBRARY`. Replace this placeholder when running the command, or just set the variable, e.g., like this:
```bash
export SONG_LIBRARY=/path/to/library
```
### Deduplication
**Find and delete exactly duplicated songs**, i.e., songs with the same title and artist that also consist of exactly the same files in the directory.
⚠️ This will _irreversibly_ delete all song folders it considers to be exact duplicates.
Deduplication is (mostly) risk-free: As it only deletes exact duplicates, you will not lose any data (given that I've made no programming errors, which is why the operation is only _mostly_ risk-free).
```bash
python3 -m karaokatalog.deduplicate $SONG_LIBRARY
```
### Organization
**Rename/move every song folder to `$SONG_LIBRARY/<artist>/<title>`.** If such a folder already exists, a number is appended to distinguish.
Moving will not overwrite already existing files, the operation is therefore risk-free.
```bash
python3 -m karaokatalog.organize $SONG_LIBRARY
```
### Recoding
**Re-encode all txt files into UTF-8.** This will use normal UTF-8, i.e., UTF-8 without BOM. If the txt uses UTF-8 with BOM, BOM is removed.
⚠️ This will _irreversible_ change the encoding of the txt files (based on a guessed encoding).
Deduplication is risk-reduced: We only change the encoding if we are reasonably certain our guessed encoding is correct. However, we could still make mistakes when detecting.
```bash
python3 -m karaokatalog.recode $SONG_LIBRARY
```