/
Roman_arv
/
UpnpUtil
Обзор
Документация
Войти
/
Roman_arv
/
UpnpUtil
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/folder-analyzer.sh
83 строки
3 KB
Roman_arv
03082026 #5 Analyzer
03 авг 2026, 16:39
03 авг 2026, 16:39
994d8ff
Код
Авторство
О чём код?
#!/bin/bash # ============================================================ # FolderAnalyzer - Скрипт анализа музыкальной коллекции # ============================================================ # Использование: # ./scripts/folder-analyzer.sh analyze <путь_к_музыке> [-o output.json] # ./scripts/folder-analyzer.sh sort-by-genre <input.json> [-o output.json] # ./scripts/folder-analyzer.sh sort-by-artist <input.json> [-o output.json] # ============================================================ set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_DIR="$(dirname "$SCRIPT_DIR")" OUTPUT_DIR="$PROJECT_DIR/test_output" # Создаём папку для выходных данных mkdir -p "$OUTPUT_DIR" # Если нет аргументов — показываем справку if [ $# -eq 0 ]; then echo "============================================================" echo " FolderAnalyzer - Анализатор музыкальной коллекции (FLAC)" echo "============================================================" echo "" echo "Использование:" echo " $0 analyze <путь> [-o output.json] Сканировать коллекцию" echo " $0 sort-by-genre <input.json> [-o out] Группировка по жанру" echo " $0 sort-by-artist <input.json> [-o out] Группировка по артисту" echo "" echo "Примеры:" echo " $0 analyze ~/Music -o music_library.json" echo " $0 sort-by-genre music_library.json" echo " $0 sort-by-artist music_library.json" exit 0 fi COMMAND="$1" shift case "$COMMAND" in analyze) echo "📂 Сканирование коллекции..." python3 -m dlna.analyzers.cli -v analyze "$@" -o "$OUTPUT_DIR/$(basename "${OUTPUT_DIR}")/library.json" 2>&1 ;; sort-by-genre) # Если второй аргумент -o не указан, генерируем автоматически INPUT_FILE="$1" if [ ! -f "$INPUT_FILE" ]; then # Пробуем найти в test_output if [ -f "$OUTPUT_DIR/$1" ]; then INPUT_FILE="$OUTPUT_DIR/$1" else echo "❌ Файл не найден: $1" exit 1 fi fi OUTPUT_FILE="${INPUT_FILE%.json}_by_genre.json" echo "🎵 Группировка по жанру: $INPUT_FILE → $OUTPUT_FILE" python3 -m dlna.analyzers.cli -v sort-by-genre "$INPUT_FILE" -o "$OUTPUT_DIR/$OUTPUT_FILE" 2>&1 ;; sort-by-artist) INPUT_FILE="$1" if [ ! -f "$INPUT_FILE" ]; then if [ -f "$OUTPUT_DIR/$1" ]; then INPUT_FILE="$OUTPUT_DIR/$1" else echo "❌ Файл не найден: $1" exit 1 fi fi OUTPUT_FILE="${INPUT_FILE%.json}_by_artist.json" echo "🎤 Группировка по артисту: $INPUT_FILE → $OUTPUT_FILE" python3 -m dlna.analyzers.cli -v sort-by-artist "$INPUT_FILE" -o "$OUTPUT_DIR/$OUTPUT_FILE" 2>&1 ;; *) echo "❌ Неизвестная команда: $COMMAND" echo "Доступные команды: analyze, sort-by-genre, sort-by-artist" exit 1 ;; esac