[2026-05-10] music-download-practices: NAS structure, upload method, ffmpeg validation
This commit is contained in:
@@ -162,6 +162,11 @@ done | sort | uniq -c
|
||||
```
|
||||
Music/
|
||||
├── !A Not sorted/
|
||||
│ └── SD-card-2026-05/ ← новые треки (май 2026, ~160 mp3)
|
||||
│ ├── Агата Кристи/
|
||||
│ ├── Аквариум/
|
||||
│ ├── ... (Artist/Track.mp3)
|
||||
│ └── Юрий Визбор/
|
||||
├── !Pop, Club, Любэ/
|
||||
├── !Retro/
|
||||
├── !Rock&Folk/ ← основная рок-коллекция
|
||||
@@ -170,8 +175,45 @@ Music/
|
||||
└── z Другое, Enigma, Ленинград/
|
||||
```
|
||||
|
||||
### Соглашение по именованию (SD-card-2026-05)
|
||||
|
||||
- Структура: `Исполнитель/Название трека.mp3`
|
||||
- Один исполнитель — одна папка (даже для 1 трека)
|
||||
- Папки дублей на латинице (Andervud, OtavaYo) — артефакт, можно слить с кириллическими
|
||||
- Класика хранится в папке `Классика/` (Бах, Орф, Пахмутова и др.)
|
||||
- Саундтреки — в `Саундтреки/`
|
||||
- Исполнитель с одним треком (Елена Камбурова, Тамара Миансарова) — отдельная папка
|
||||
|
||||
### Загрузка файлов на NAS
|
||||
|
||||
**Рабочий метод** — python3 скрипт через ssh+scp (май 2026):
|
||||
- rsync с `!` в пути назначения ломается (bash history expansion)
|
||||
- scp напрямую из bash тоже ломается на кавычках с пробелами
|
||||
- **Решение:** python subprocess с отдельными аргументами, ssh mkdir + scp per-file
|
||||
|
||||
```python
|
||||
# Шаблон: /tmp/upload_nas.py
|
||||
subprocess.run(["ssh", "-i", KEY, f"user@host", f"mkdir -p '{nas_dir}'"])
|
||||
subprocess.run(["scp", "-i", KEY, local_path, f"user@host:{nas_path}"])
|
||||
```
|
||||
|
||||
**WMA на NAS:** 565 файлов (в основном The Prodigy, Дискотека Авария, старые радиозаписи). Конвертация не делалась — отдельная задача при необходимости.
|
||||
|
||||
### Валидация перед загрузкой
|
||||
|
||||
```bash
|
||||
# Проверить все mp3 через ffmpeg (только ошибки)
|
||||
find ~/Downloads/music -name "*.mp3" | while read f; do
|
||||
r=$(ffmpeg -v error -i "$f" -f null - 2>&1)
|
||||
[ -n "$r" ] && echo "ERR: $f | $(echo "$r" | head -1)"
|
||||
done
|
||||
|
||||
# Частые проблемы:
|
||||
# "invalid RIFF header" — файл обёрнут в WAV-контейнер → найти RIFF offset и перекодировать
|
||||
# "Failed to find two consecutive MPEG frames" — нулевой или битый файл → перекачать
|
||||
# "Header missing" — частичная порча → перекодировать через libmp3lame
|
||||
```
|
||||
|
||||
### HTML-ссылки на треки
|
||||
|
||||
TrueNAS без дополнительных сервисов HTTP не отдаёт. Варианты:
|
||||
|
||||
Reference in New Issue
Block a user