Сортировка mp3 по каталогам с учётом id3 тегов

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Samwatas
Сообщения: 95
Зарегистрирован: Сб сен 12, 2009 20:26

Сообщение Samwatas »

Volniy писал(а):
Tol!k писал(а):WDX в батниках — это очень интересно
А вот эту штуку разве не замечали раньше? К тому же с исходниками.
Честно сказать, не замечал (обрыл весь интернет, нашел утиль для работы с WCX из ком. строки, а под носом лежащее на wincmd.ru не увидел). В любом случае, как сказали уже выше, я изначально задумал выводить только значение запрошенного поля, причём вывод в консоль происходит только если соответствующее значение из колонки получено (во всех остальных случаях не выводится ничего, чтобы ошибочно не принять сообщение об ошибке за значение колонки - теперь же достаточно проанализировать ответ от утилиты - если пустая строка, значит что-то не получилось (либо указали путь не к тому плугу, либо указали путь не к тому файлу, либо неправильно ввели имя колонки, либо просто банально значение в соответствующем поле пустое, как это бывает с некоторыми тегами) во всех остальных случаях какойто вывод означает результат, так что его можно брать и подставлять куда надо. Я сперва думал всё-таки выводить немного по другому: если всё гут, то вывести

Код: Выделить всё

done: тут_значение_колонки
а если ошибка, то вывести

Код: Выделить всё

error: какая_именно_ошибка
но в этом случае пришлось бы парсить строку вывода, чтобы понять всё гут или нет, сейчас же достаточно банального сравнения ответа с пустой строкой. С другой стороны, при таком выводе вам было бы понятно, в чём ошибка, и исправить ее было бы легче.

А исходники я гляну, может перепишу свою утиль с АвтоИТа на какой нить Дельфи или С++ (будет более компактная). Кроме того, как я уже писал выше, пока что моя утиль работает только с типом ft_string (плагописатели меня поймут) во всех других случаях пока что не работает как надо (впрочем с тегами она уже сейчас работает на отлично, см. пример выше).
Добавлено:
Глянул я исходники одним глазком - как я и предполагал, его утиль тоже не будет работать со всеми плагами (впрочем, как и моя): он вызывает ContentGetValue, хотя я уже видел плаг, который не экспортирует такую функу, вместо этого он экспортирует ContentGetValueW (то есть юникодную). А в общем, мне утиль понравилась, её можно доработать добавив ещё один ключ командной строки - имя колонки, и чтобы он вывел только соответствующее значение, тогда это была бы законченная утилита со всем необходимым функционалом.
Последний раз редактировалось Samwatas Сб окт 03, 2009 11:15, всего редактировалось 3 раза.
Samwatas
Сообщения: 95
Зарегистрирован: Сб сен 12, 2009 20:26

Сообщение Samwatas »

Языкам (программирования) не обучен :(
Почему же - раз батники пишете, значит уже один язык знаете :)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Samwatas писал(а):...утиль тоже не будет работать со всеми плагами (впрочем, как и моя): он вызывает ContentGetValue, хотя я уже видел плаг, который не экспортирует такую функу, вместо этого он экспортирует ContentGetValueW (то есть юникодную).
Так это как раз вполне логично:
Обновлен: 6.09.2007
Вряд ли тогда уже кто-либо работал с Юникодом в плагинах к ТС.
Samwatas
Сообщения: 95
Зарегистрирован: Сб сен 12, 2009 20:26

Сообщение Samwatas »

Ну что ж, это дополнительный повод доработать утилитку.
Я тут подумал, а ведь некоторые плаги могут не только читать, но и писать в соответствующие поля (экспортируя функу ContentSetValue), то есть можно из ком. строки не только читать но и заполнять нужные поля (написав батник или скрипт, который например парсит текстовый файл и заполняет теги у файлов). Как вы думаете, будет ли востребована такая возможность или нет? Стоит ли вообще этим заниматься, делая утилиту более мощной, добавляя дополнительные возможности?
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Как вы думаете, будет ли востребована такая возможность или нет?
Будет, однозначно. Жаль только, что пока плагины с возможностью записи можно пересчитать по пальцам одной руки.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

Samwatas писал(а):А исходники я гляну, может перепишу свою утиль с АвтоИТа
А можешь выложить исходники на AutoIt?
Здесь, кстати, хорошая подборка реализаций использования интерфейса плагинов Тотала сторонним софтом. Так что реализация на ещё одном ЯП будет там весьма кстати.
Samwatas
Сообщения: 95
Зарегистрирован: Сб сен 12, 2009 20:26

Сообщение Samwatas »

DrShark
Там в принципе ничего особенного нет (не на что смотреть даже), мне даже стыдно это показывать, но если так хочешь, то сейчас в личку скину файл.
DrShark
Сообщения: 911
Зарегистрирован: Сб окт 21, 2006 20:27
Откуда: Kyiv, Ukraine
Контактная информация:

Сообщение DrShark »

Samwatas
Кидай.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Samwatas писал(а):Я сперва думал всё-таки выводить немного по другому
Можно ввести ключ для возможности вывода в таком виде при поиске ошибки.
Нет, я не сплю. Я просто медленно моргаю.
Samwatas
Сообщения: 95
Зарегистрирован: Сб сен 12, 2009 20:26

Сообщение Samwatas »

Я сейчас обдумываю концепцию новой утилиты, которая будет и читать и писать и выводить отладочную информацию и т.д.. В общем есть у меня парочка интересных идей, осталось их реализовать в коде.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Батники/скрипты перемещения файлов с поддержкой контентных плагинов также можно писать с помощью wdxInfoPacker.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

Обновлённый батник:
- можно перемещать файлы на другую панель или в конкретную папку;
- обрабатываются файлы с "!" в тегах;

Код: Выделить всё

@echo off &chcp 1251 >nul
echo Перемещает выделенные муз.файлы в папки "Artist [Year] Album\"
rem Requirements: WDX columns extractor http://upload.com.ua/get/901076644/
rem Parameters: %L
rem          or %L "%T"
rem          or %L "D:\My Music\"
rem Autor: Tol!k
setlocal enableextensions

for /f "delims=" %%f in ('sort /r %1') do (echo %%f &call :f "%%f" %2)
exit

:f
for /f "delims=" %%A in ('wdx.exe %COMMANDER_PATH%\wdx\anytag\anytag.wdx "%~1" Artist') do set "Artist=%%~A"
for /f "delims=" %%B in ('wdx.exe %COMMANDER_PATH%\wdx\anytag\anytag.wdx "%~1" Year') do set "Year=%%~B"
for /f "delims=" %%C in ('wdx.exe %COMMANDER_PATH%\wdx\anytag\anytag.wdx "%~1" Album') do set "Album=%%~C"

set "Folder=%~2%Artist% [%Year%] %Album%"
if not exist "%Folder%" md "%Folder%"
if exist "%Folder%\" move "%~1" "%Folder%\"
goto :eof
Последний раз редактировалось Tol!k Чт окт 08, 2009 14:37, всего редактировалось 1 раз.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lev писал(а):Батники/скрипты перемещения файлов с поддержкой контентных плагинов также можно писать с помощью wdxInfoPacker.
Это как? Через буфер с помощью CopyInfo2Clip.exe?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Lev
Сообщения: 392
Зарегистрирован: Ср мар 02, 2005 16:34

Сообщение Lev »

Это как?
wdxInfoPacker может сгенерировать любой текстовый файл с использованием имён файлов и информации из контентных плагинов. Расширение файла может задаваться. Т.е. мы можем сгенерировать батник с кучей строк типа
move "путь\имя файла" "папка с именем из тегов файла"
или скрипт с подобным содержимым. А потом запустить его вручную. Мне это было без надобности, но если надо могу попробовать накидать пример.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Lev писал(а):wdxInfoPacker может сгенерировать любой текстовый файл с использованием имён файлов и информации из контентных плагинов.
Ааа... Ты об этом. Для меня-то вопросом является, как из скрипта заставить работать wdxInfoPacker.
Нет, я не сплю. Я просто медленно моргаю.
Ответить