Взять ширину/высоту из имени файла при правке атрибутов

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

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

Ответить
Segmentum
Сообщения: 21
Зарегистрирован: Вт окт 13, 2020 12:59

Взять ширину/высоту из имени файла при правке атрибутов

Сообщение Segmentum »

Мне нужно заполнить теги "Ширина" и "Высота" wdx-плагина "jpg-comment" на основе имени файла. Но я не могу этого сделать - мне доступны не все значения, и имя файла к ним не относится.
Как я понял, это из-за типов значений. Значения могут быть строкой, числом, логическим, или каким-то ещё типом. Возможно это явление именуется не "типом данных значения", а другим термином. Если это так, извините за безграмотность.
Как можно решить мою проблему?
Искал, и не нашёл. Создал эту тему.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Segmentum
Если речь идёт о диалоге изменения атрибутов (о плагинах в котором котором вам уже было сказано). то что как называется, несложно выяснить хотя бы из русской справки TC. Маловразумительный заголовок "Конвертация типов данных значений атрибутов", усугубляемый нанизыванием четырёх родительных падежей, явно имеет к ней слабое отношение. Желание "заполнить теги "Ширина" и "Высота" wdx-плагина "jpg-comment" на основе имени файла" лично мне элементарно непонятно. Скажем, про считывание значений одного плагина в поля другого плагина в справке сказано (и пример приведён), но что общего между именем и шириной/высотой? Таким образом, прежде обсуждения проблемы надо понять суть самой проблемы. Пока с этим сложно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Segmentum
Сообщения: 21
Зарегистрирован: Вт окт 13, 2020 12:59

Сообщение Segmentum »

Avada писал(а):то что как называется, несложно выяснить хотя бы из русской справки TC.
Но там ведь не сказано про различия полей данных, про невозможность заполнить числовое поле цифрами из поля-строки.
Avada писал(а):но что общего между именем и шириной/высотой?
Имя файла может содержать в себе цифры. Эти цифры можно извлечь с помощью диапазона, и использовать, как значение для ширины/высоты.
Avada писал(а):Желание "заполнить теги "Ширина" и "Высота" wdx-плагина "jpg-comment" на основе имени файла" лично мне элементарно непонятно
У меня есть несколько тысяч изображений, рабочих, то есть имеющих конкретное разрешение. Но, при этом, jpg comment видит в них полностью пустые поля ширины и высоты. Зато другая программа может читать эти данные, и у меня получилось вывести информацию об их разрешении в имена файлов. Дальше я бы мог работать через выделение по регулярным выражениям и изменение атрибутов, но диалог изменения атрибутов не даёт мне использовать имена файлов, как источник для ширины и высоты.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Segmentum писал(а):про невозможность заполнить числовое поле цифрами из поля-строки.
Из каких плагинов пробовали получить информацию? Первым приходит в голову ImgSize, по идее ещё TCMediaInfo должен, только детект-строку подпилить, - оба возвращают строку?
Segmentum писал(а):Имя файла может содержать в себе цифры. Эти цифры можно извлечь с помощью диапазона, и использовать, как значение для ширины/высоты.
С помощью PCREsearch можно вытаскивать часть имени файла, но что на выходе или можно ли явно указать тип данных не подскажу, надо смотреть.
Segmentum писал(а):...другая программа может читать эти данные, и у меня получилось вывести информацию об их разрешении в имена файлов. Дальше я бы мог...
Если память не изменяет, ExifTool может записать.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Segmentum
Пояснения приняты. Со своей стороны ограничиваюсь пока тем, что меняю заголовок на более пристойный и при этом конкретный.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Segmentum
Сообщения: 21
Зарегистрирован: Вт окт 13, 2020 12:59

Сообщение Segmentum »

Skif_off писал(а):ImgSize
Работает. Спасибо

Ещё один вопрос: Знаете ли вы способ суммировать числа нескольких числовых полей метаданных, и выводить результат, как значение в столбце пользовательского режима просмотра? А так же проводить прочие математические операции, хотя бы самые простые (суммирование, вычитание, умножение, деление).
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Segmentum
Математика - это несложно, что угодно, в принципе, можно, только необходимо получить данные, а это посложнее.

Если super_wdx такого не умеет, то придётся делать самостоятельно:
1) WinScript Advanced со знакомым вам языком и утилитой от Loopback, способной вызывать wdx-плагины напрямую и писать результат в консоль - нужно прочитать и использовать (ссылка тут);
2) WinScript Advanced + только AutoIt: упомянутая выше утилита написана на AutoIt, но давно и не будет дружить с юникодом, поэтому можно попробовать использовать UDF, использовавшуюся для её написания, только позже доработанную. См. пост на Ru-Board, там пример с плагином xPDFSearch, собственно UDF - это глобальные константы (Global Const) в начале скрипта и три функции
_PHWDXPluginOpen()
_PHWDXPluginClose()
__PHWDXGetFieldValue()

после строки ";PluginHelpers.au3 (Loopback)".
3) Может сработать вариант посложнее: WinScript Advanced + winapiexec.

P.S. Не уверен, давно дело было, но вроде выкладывалась и утилита с поддержкой юникода.
Segmentum
Сообщения: 21
Зарегистрирован: Вт окт 13, 2020 12:59

Сообщение Segmentum »

Skif_off
В http://forum.ru-board.com/topic.cgi?for ... it=1&m=1#1 ничего не понятно. Много элементов кода, назначение которых мне неизвестно. Где о них можно почитать?
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Segmentum
Если не знакомы с AutoIt, то попробуйте VBScript и утилиту uwdx.exe от Loopback (свежая версия тут, в архиве есть и актуальная версия PluginHelpers.au3), VBScript не требует чего-то дополнительного и работает на любой Windows, примеры запуска консольных утилит и чтения вывода находятся несложно. Имейте в виду, нумерация полей плагинов и units начинается с нуля (посчитать можно, например, в окне создания набора колонок).

Конкретные вопросы лучше, наверное, в теме WinScript Advanced задавать.
Segmentum
Сообщения: 21
Зарегистрирован: Вт окт 13, 2020 12:59

Сообщение Segmentum »

Skif_off
Все эти утилиты обращаются к wdx плагинам. Но встроенные в Total Commander данные (комментарий, случайное число, имя, расширение, и прочие) не принадлежат ни к одному из wdx-файлов (в папке с wdx плагинами нет такого файла). Без использования комментария с правкой отображаемого значения все эти скрипты бесполезны для меня.
Skif_off
Сообщения: 1255
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

Segmentum писал(а):Но встроенные в Total Commander данные (комментарий, случайное число, имя, расширение, и прочие) не принадлежат ни к одному из wdx-файлов.
Начали-то вы с wdx-плагинов...:)
Всё перечисленное - не проблема на любом языке из числа поддерживаемых WinScript Advanced и, к слову, любой wdx-плагин получает лишь полное имя файла и индекс поля, всё остальное он делает самостоятельно.
- комментарий: получить из имени файла его каталог, найти в нём descript.ion, если есть - прочитать и искать нужное;
- случайное число: в любом языке программирования есть математические функции, получить случайное число из заданного диапазона не проблема;
- имя: всё после последнего разделителя каталогов (слэша) в полном имени файла (или готовые функции, делающие то же самое);
- расширение: всё после последней точки в имени файла (или готовые функции, делающие то же самое);
и прочее в том же духе (причём так же, как делает и сам ТС).

Ну да ладно, не уговаривкть же, рабочие варианты были озвучены (не считая очевидного - собственный, с самоваром и пряниками, плагин на компилируемых языках).
Ответить