LINUX.ORG.RU
ФорумTalks

Чем организовать музыкальную коллекцию исходя из тегов

 , ,


0

2

Раньше я организовывал свою муз. коллекцию через Amarok по такому шаблону:

%albumartist%/{{%year% - }%album%/}{CD%discnumber%/}{%track% - }%title%

где между % заключено имя поля тега, а то, что заключено в {} добавляется к пути только если фигурирующий внутри {} тег существует.

Амароком уже давно не пользуюсь. Есть ли какие-нибудь готовые программы, смысл работы которых - именно в организации коллекции? Я примерно представляю себе, как накатать скрипт такого же функционала, но будет хорошо, если этого делать не придётся

★★

Ответ на: комментарий от aidan

Может, я как-то не так ищу, но в picard, puddletag, easytag я не заметил сортировки. Может, я не так выразился: теги я и сам проставить могу, с этим проблем не возникает и я использую для этого как раз Puddletag. Задача - распределить музло по каталогам/подкаталогам и выдать файлам имена, основываясь на тегах. Массово (3к треков).

Valdor ★★
() автор топика
Ответ на: комментарий от Valdor

picard так и работает (ну и beets) — закинуть много-много музыки, он заполнит теги из MB и перенесёт файлы в библиотеку.

aidan ★★★★
()
Ответ на: комментарий от Valdor

Попробуй, не помню.

С другой стороны, в любом из редакторов (qoobar/easytag/...) можно включить выбор вложенных файлов, выбрать всю библиотеку и переименовать.

aidan ★★★★
()
Ответ на: комментарий от aidan

beets в любом случае в MusicBrainz полезет, равно как и picard T_T

Valdor ★★
() автор топика
Ответ на: комментарий от Valdor

Он так и работает, если не распознавать музыку. Просто импортируй и сохрани, он просто переименует.

Lordwind ★★★★★
()

Banshee при сохранении тегов переименовывает и раскладывает.

Хотя, непонятно, зачем нужно следить за папочками, когда все плееры, целью которых не является ретроградство, предоставляют необходимые инструменты для управления и прослушивания.

Jayrome ★★★★★
()
Ответ на: комментарий от Jayrome

Перфекционизм и шило в жопе требуют.

Valdor ★★
() автор топика
Ответ на: комментарий от Falcon-peregrinus

Спасибо. Я уже успел что-то дикое навелосипедить для решения этой задачи на баше xD

Valdor ★★
() автор топика

Я когда столкнулся с вопросом сортировки своей аудиотеки сначала пробовал использовать easytag. Но так как массовое изменение тегов там работало жутко медленно, пришлось напитонить себе велосипед. Только заточен он был исключительно под решение моей задчи - нужно было привести существующие теги FLAC'ов к определенному стилю (стиль захардкожен), а потом из получившегося слепить имена файлов и директорий.

Так что пиши смело скрипт под твою задачу. С учетом того, что с этого началось мое знакомство с питоном, я потратил на свой не больше часа, а решил им проблему сортировки, которую вручную пришлось бы делать очень долго.

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от m0rph

Я тут сейчас пошаманил немного. Результат:

#!/bin/bash
file="$1"
tags=$(exiftool -artist -album -date -discnumber -tracknumber -title "$file" -s3 -f)
artist_tag=$(echo "$tags" | sed -n '1p')
album_tag=$(echo "$tags" | sed -n '2p')
date_tag=$(echo "$tags" | sed -n '3p')
discnumber_tag=$(echo "$tags" | sed -n '4p')
tracknumber_tag=$(echo "$tags" | sed -n '5p')
title_tag=$(echo "$tags" | sed -n '6p')
if [[ $file == *.* ]]; then
    extension_path=".${file##*.}"
fi
if [ "$artist_tag" != "-" ]; then
	artist_path="$artist_tag/"
fi
if [ "$date_tag" != "-" ]; then
	date_path="$date_tag - "
fi
if [ "$album_tag" != "-" ]; then
	album_path="$date_path$album_tag/"
fi
if [ "$discnumber_tag" != "-" ]; then
	discnumber_path="CD$discnumber_tag/"
fi
if [ "$tracknumber_tag" != "-" ]; then
	tracknumber_path="$tracknumber_tag - "
fi
if [ "$title_tag" != "-" ]; then
	title_path="$title_tag"
else
	title_path="Untitled"
fi
file_path="$artist_path$album_path$discnumber_path$tracknumber_path$title_path$extension_path"
echo $file_path
Считывает нужны теги из файла с помощью exiftool (довольно быстрая утилитка, сама приоритетным выбирает второй тег, но если какой-то нужной инфы нет - берёт из первого), после чего складывает в переменные то, как (по моему мнению) тот или иной тег должен входить в конечный путь к файлу и собирает из них уже имя. Дальше дело за малым - с помощью dirname беру полный путь к каталогу, где должен лежать конечный файл, создаю с помощью mkdir -p, после чего mv файла туда.

Valdor ★★
() автор топика
Ответ на: комментарий от m0rph

Меня вот что тревожит: я там добавил обработку, что

if [[ "$file_path" == "$file" ]]; then
	exit 0;
fi
Нельзя ли как-нибудь сделать, чтобы ./ПУТЬ считался равным ПУТЬ?

Valdor ★★
() автор топика
Ответ на: комментарий от m0rph

Сцуко, у ID3V2 и Vorbis Tag разные названия полей! Где у Vorbis - tracknumber, там у id3 - track, а с датой - чёрт знает что. Ты чем теги извлекал?

Valdor ★★
() автор топика
Последнее исправление: Valdor (всего исправлений: 1)
Ответ на: комментарий от Valdor

Я работал только с vorbis tags (FLAC), использовал mutagen (библиотека для python)

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 1)
Ответ на: комментарий от Valdor

Нельзя ли как-нибудь сделать, чтобы ./ПУТЬ считался равным ПУТЬ?

Эммм... может basename/dirname/realpath помогут? Если нет, то убирать вручную.

m0rph ★★★★★
()
Последнее исправление: m0rph (всего исправлений: 3)
Ответ на: комментарий от m0rph

Спасибо, копну в этом направлении.

Valdor ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.