[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/
|
Music/
|
||||||
├── !A Not sorted/
|
├── !A Not sorted/
|
||||||
|
│ └── SD-card-2026-05/ ← новые треки (май 2026, ~160 mp3)
|
||||||
|
│ ├── Агата Кристи/
|
||||||
|
│ ├── Аквариум/
|
||||||
|
│ ├── ... (Artist/Track.mp3)
|
||||||
|
│ └── Юрий Визбор/
|
||||||
├── !Pop, Club, Любэ/
|
├── !Pop, Club, Любэ/
|
||||||
├── !Retro/
|
├── !Retro/
|
||||||
├── !Rock&Folk/ ← основная рок-коллекция
|
├── !Rock&Folk/ ← основная рок-коллекция
|
||||||
@@ -170,8 +175,45 @@ Music/
|
|||||||
└── z Другое, Enigma, Ленинград/
|
└── 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, Дискотека Авария, старые радиозаписи). Конвертация не делалась — отдельная задача при необходимости.
|
**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-ссылки на треки
|
### HTML-ссылки на треки
|
||||||
|
|
||||||
TrueNAS без дополнительных сервисов HTTP не отдаёт. Варианты:
|
TrueNAS без дополнительных сервисов HTTP не отдаёт. Варианты:
|
||||||
|
|||||||
Reference in New Issue
Block a user