Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

[wlx/wdx] TCMediaInfo
Goto page Previous  1, 2, 3 ... 60, 61, 62, 63, 64  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
Orion9



Joined: 01 Jan 2024
Posts: 762

Post (Separately) Posted: Fri May 23, 2025 20:12    Post subject: Reply with quote

AkulaBig wrote:
В файлах, где корректно записана дата:время все работало. Но большинство в эту колонку записывает строку.

Вот я и говорю, что сначала хорошо было бы разобраться с форматами, чтобы уметь, в первую очередь для себя самого, лучше понимать, что является стандартом, а что не является. Это, конечно, личное дело каждого, плагин этого не требует, но такие знания точно бы не помешали.
AkulaBig wrote:
Фифти-фифти.

Это много ) Но, наверное, только глубокие и объемные тесты смогут сказать точнее.
AkulaBig wrote:
Раз я разобрался с организацией файла настройки, решил сам переделать его под себя.

Конечно, и это правильно. Стандартный файл конфигурации позволяет всё настроить под себя. Поэтому и плагин топовый. Редко можно встретить такую гибкость.
AkulaBig wrote:
У меня вроде неплохая коллекция для тестов.

Файлы безусловно можно собрать. Но проводя серьёзные тесты хотелось бы лучше понимать все поддерживаемые форматы, стандарты, способы хранения и структуру мета-информации в файлах. А это уже совсем другой уровень знаний и понимания, из-за чего плуг, лично для меня, так и остался в подвешенном состоянии. По большому счёту, я юзаю его поля типа "All video as string" и "All audio as string" в подсказке на панелях, ну и листерная часть безусловно крута. Правда хотелось бы побольше режимов просмотра, таких вещей никогда много не бывает.
AkulaBig wrote:
Поэтому и хотелось, чтобы Loopback с этим разобрался.

Я только "за" ) Но как уже написал выше, форматы - личное дело каждого. Хотя, конечно, хотелось бы, чтобы конфиг по умолчанию работал и отображал всё правильно.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1511

Post (Separately) Posted: Fri May 23, 2025 21:49    Post subject: Reply with quote

Orion9 wrote:
Могу подтвердить, что проблема есть.

Тут, оказывается, столько всего написали Shocked

Но чтобы всё это оттестировать времени нужно очень много, а его нет, и пока в приоритете Autorun. Если только что критическое. А так MediaInfo меняется, какие-то решения становятся несовместимыми, какие-то баги всплывают. Тут ничего не поделаешь.

Orion9 wrote:
Как часто он планируется обновляться?

Видимо, в момент выхода новой версии. Надо бы там еще писать, для какой версии MediaInfo сформирован список.

Orion9 wrote:
А что насчет скрипта тогда, не нужен?

Как-то забылось, выложу.

Orion9 wrote:
А этот файл как получается, кто следит за обновлениями?

Обновляется при выходе новой версии.

AkulaBig wrote:
Можно-ли в стандартном выводе Inform добавить функцию FixCodepage?

Нет, в теме Autorun это обсуждали. Это не будет работать на тексте, где смешаны корректные и некорректные куски. Единственный способ - задать определенные поля в шаблоне просмотра.

AkulaBig wrote:
Можно-ли сделать, чтобы вместо MediaInfo.lng использовались стандартные языковые файлы MediaInfo?

Не знаю. Надо смотреть, как они соотносятся между собой, в любом случае это не скоро. В todo как идею закинул.

AkulaBig wrote:
Выявил еще одну ошибку. При отсутствии конфигурационного файла плагин валит ТС х64.

Не могу подтвердить. Если есть TCMediaInfo.sample.xml - то плагин его копирует в TCMediaInfo.xml, если нет, то естественно не работает, но не падает.

AkulaBig wrote:
А в дефолтном режиме вот эта строка ломает правильный вывод:

Да, мой косяк, и еще какой. Можно попробовать заменить эту строку на
Code:
if StrPos(id, '/String') > 0 then Continue;

Тогда Track/Position не должны пострадать.

AkulaBig wrote:
Ошибочку нашел. В английской справке режим просмотра называется Raw data. В файле конфигурации Raw info.

Действительно, поправил.

AkulaBig wrote:
В файлах, где корректно записана дата:время все работало. Но большинство в эту колонку записывает строку.

MediaInfo всегда возвращает строки, другое дело - в каком формате. Предполагаю, что проблемы с ft_datetime связаны с форматом таких строк, но это надо проверять.

Orion9 wrote:
Правда хотелось бы побольше режимов просмотра

Каких, например? У меня тут фантазия буксует Smile

Orion9 wrote:
Хотя, конечно, хотелось бы, чтобы конфиг по умолчанию работал и отображал всё правильно.

Естественно хотелось бы. Но учесть все нюансы при таком огромном количестве информации непросто.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 762

Post (Separately) Posted: Sat May 24, 2025 00:51    Post subject: Reply with quote

Loopback wrote:
Но чтобы всё это оттестировать времени нужно очень много, а его нет, и пока в приоритете Autorun.

Не берите в голову. По-моему, все это хорошо понимают. Постараемся помочь чем сможем. Тестами, имеется в виду.
Loopback wrote:
Надо бы там еще писать, для какой версии MediaInfo сформирован список.

Да, это важно. Нужно такое видеть.
Loopback wrote:
Обновляется при выходе новой версии.

Версии плагина, или версии DLL? Если первое, то что произойдет если обновить второе? А если плагин долго не будет обновляться, а библиотека далеко уйдет вперед?
Loopback wrote:
Каких, например? У меня тут фантазия буксует

Сложно сказать. В последней версии вы уже максимально выжали все, что нужно простому пользователю ПК, как тут не забуксуешь? От режима "Видео (компактный)" я просто балдею ) Но чтобы придумать новые режимы просмотра тут нужно глубже изучить техническую сторону и области различного, порой очень специфического применения. Например, в тегах иногда хранится информация о нормализации аудио, допустим мне нужно сосредоточится только на этом при быстром просмотре. Сейчас комфортно сделать это не получится, потому что придется мотать вертикальный ползунок, что тормозит весь процесс. Кроме этого, можно разнообразить шаблоны посмотрев примеры в самой MediaInfo. Например, что вроде режима "Кратко" в меню "Вид", там, где "Таблица", "Дерево" и др. У меня, например, в "Выборочно" сейчас вот так:
 Hidden text

Но далеко не оптимально, а просто экперимент. Можно отдельно сделать представления для аудио и титров. Сейчас при просмотре видео-файла, если переключиться на Аудио (компактный) дорожки теряются, остается только одна дорожка. В общем, как это можно разнообразить, можно думать и думать. В конечном счете, главное, чтобы удобно было.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1511

Post (Separately) Posted: Sat May 24, 2025 12:34    Post subject: Reply with quote

Orion9 wrote:
Версии плагина, или версии DLL? Если первое, то что произойдет если обновить второе? А если плагин долго не будет обновляться, а библиотека далеко уйдет вперед?

Плагина.

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

Orion9 wrote:
Например, что вроде режима "Кратко" в меню "Вид", там, где "Таблица", "Дерево" и др.

Так по-сути это аналогично "компактным" режимам просмотра.

Orion9 wrote:
В общем, как это можно разнообразить, можно думать и думать. В конечном счете, главное, чтобы удобно было.

Ну ок, когда что-то придумается, тогда можно будет думать дальше Smile
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 762

Post (Separately) Posted: Sat May 24, 2025 13:45    Post subject: Reply with quote

Loopback wrote:
Так по-сути это аналогично "компактным" режимам просмотра.

Аналогично, согласен. Разница может быть в нюансах и расположении полей в определенных местах строки. Иногда удобно, например, видеть название кодека в начале, а иногда в конце. Или нужно видеть полную информацию о воспроизведении - Duration/String1, Duration/String3, Duration/String5, другую специфическую информацию, например StreamSize/String5. Но самый главный критерий - чтобы вся релевантная информация для режима помещалась на экран в противоположной панели, чтобы не возникало необходимости крутить ползунок в сторону или вниз, прерывая тем самым быстрый просмотр по CTRL+Q. А для этого можно даже чем-то пожертвовать, оставить только простой текстовый вывод типа того, что я скинул выше.

Также можно сделать отдельный режим для тэгов. Сейчас вся информация смешивается в общем потоке, что не очень удобно, если нужно посмотреть только тэги без технической информации. По сути, к режимам Аудио (компактный) и Видео (компактный) можно добавить пункт "Только тэги" или что-то в этом роде. Я как раз недавно эксперементировал с шаблоном плагина anytag.wdx и обнаружил то ли баг, то ли это так задумано:
 Hidden text

Последняя строка динамически создаёт поля плагина с именами всех тэгов. На выходе получается очень интересно:
 Hidden text

Правда поле комментария почему-то режется и с этим отдельно нужно разбираться, но сам вывод интересен. Здесь мне нравится то, что есть информация о кодировке тэга, а также информация о том, сколько байт занимают все тэги, в том числе и отдельно те, которые в начале и в конце файла (Prepended и Appended). Минус один. Информация о тэгах отображается только для считанного тэга, а в mp3-файле может быть, например, три тэга: ID3v1, ID3v2.3 и APE. В последнем, как правило, и сохраняется служебная информация сторонними приложениями, например о нормализации или выравнивании громкости. Но anytag читает только один тэг, что в результате отрезает другую информацию:
 Hidden text

MediaInfo читает все тэги, но информация о них перемешивается с другой, технической информацией. Например, данные от тэга APEv2 почему-то попадают в аудио-поток, где их вообще непросто вычленить взглядом:
 Hidden text

Loopback wrote:
Ну ок, когда что-то придумается, тогда можно будет думать дальше

Придумается со временем, куда оно денется. Если будут какие-то идеи, то обязательно поделюсь. Просто я не так активно юзал листерную часть плагина, но сейчас смотрю она очень сильно прибавила. Как я написал выше, вы уже сняли все сливки, возможно, тут и добавить то нечего. Поспешно было мое утверждение, что хотелось бы больше режимов просмотра )
Кстати, на мой взгляд, подменю "Режимы просмотра" замедляет выбор пунктов. Лучше сразу все пункты подменю вынести в основное контекстное меню или сделать в окне просмотра табы, как, например, в плагине decMetaExpert, там очень удобно табы сделаны, да и таблицы тоже удобно сделаны.

P.S.
Loopback wrote:
Нет, в теме Autorun это обсуждали. Это не будет работать на тексте, где смешаны корректные и некорректные куски. Единственный способ - задать определенные поля в шаблоне просмотра.

Знаю, что адресовано не мне, но в теме Autorun вопрос вроде порешали. Разве нельзя только вторую часть строки фиксить?
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 307

Post (Separately) Posted: Sat May 24, 2025 17:55    Post subject: Reply with quote

Loopback wrote:
Да, мой косяк, и еще какой.

Реально серьезнейший косяк.
Loopback wrote:
if StrPos(id, '/String') > 0 then Continue;

Так лучше. Но теперь все три поля называются "Трек". А должно быть "Трек", "Трек/Расположение", "Трек/Всего". То-есть "/" обязательно надо оставлять. Насколько я понимаю, это можно исправить только в коде.
Loopback wrote:
Единственный способ - задать определенные поля в шаблоне просмотра.

На ру-борде так и решают эту проблему. Я имею ввиду не проблему кодировки, а проблему отсутствующих полей. Но это очень кривое решение. Хотелось-бы, чтобы порядок полей соответствовал MediaInfo. А так прописывают в настройках листер-плагина после цикла:
Code:

            // FIXES: Show Track № and CD №
            TrPos := Get('Track/Position3', 'General');
            if TrPos <> '' then LineAddField('Track/Position', 'General');
            PrPos := Get('Part/Position', 'General');
            if PrPos <> '' then LineAddField('Part/Position', 'General');

И поле Track появляется в конце. Но это-же неправильно. Насколько я понимаю, в коде надо добавить возможность создания конфигурации на основе режима Complete. По другому эту проблему не решить.
Loopback wrote:
В todo как идею закинул.

Да, вдруг найдете когда-нибудь время реализовать эту опцию. Мне кажется вам-же проще будет. Я поля, которые переделываю, обзываю как в MediaInfo. Не знаю, что лучше. Но если помните, я считаю что даже если это не правильно, пусть будет как в оригинале. Раскрою небольшой секрет. Мне не понравился ваш перевод "дорожка". Исправил его на трек. Сижу довольный и листаю оригинальный файл перевода. И волосы встают дыбом. Несколько слов переведено как "трек", несколько как "дорожка". Я выкрутился так. Раз я использую поля, которые в оригинале называются трек, заменил дорожку на трек. А поля, которые в оригинале переведены как дорожка, я не использую. Вроде все честно.
Loopback wrote:
естественно не работает, но не падает.

Хм. Последний TC 11.55 RC3 х64. Четко падает при отсутствии TCMediaInfo.xml. Удаляем TCMediaInfo.xml. Нажимаем Ф3. ТС падает. При следующем запуске все работает. Ведь TCMediaInfo.xml создан. Проверил на ТС 11.51. Тоже падает. На ТС х32 как-то мутно получилось. Сначала не упал. Но и TCMediaInfo.xml не создался. Потом огромная таблица с ошибкой появилась и упал. TCMediaInfo.xml создался.
Уж напишу тогда обо всем, что нашел. Поле Title присутствует только в режиме MediaInfo Full. Получается если мы добавляем Track name по нашему кривому алгоритму, то в выводе листер-плагина присутствуют оба поля. В в контекстном плагине у вас Track name отсутствует. Соответственно не на всех файлах показывает название. Там просто нет поля Title.

Добавлено спустя 14 минут:

Orion9 wrote:
такие знания точно бы не помешали.

Вы-же знаете мой принцип "и так сойдет" Cool
Orion9 wrote:
вы уже сняли все сливки, возможно, тут и добавить то нечего

Вот как-раз с листерной частью большие проблемы. Нет возможности выводить поля с "/".
Мне кажется надо код править, но может Loopback предложит решение через файл конфигурации.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1511

Post (Separately) Posted: Sun May 25, 2025 00:08    Post subject: Reply with quote

Orion9 wrote:
Но самый главный критерий - чтобы вся релевантная информация для режима помещалась на экран в противоположной панели

Это всё замечательно, но у каждого какие-то свои хотелки, для кого-то релевантно одно, для кого-то другое. Всем не угодишь. Написать свой шаблон не так уж и сложно, примеров много, но разумеется, какие-то усилия приложить придётся.

Orion9 wrote:
что не очень удобно, если нужно посмотреть только тэги без технической информации.

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

Orion9 wrote:
Здесь мне нравится то, что есть информация о кодировке тэга, а также информация о том, сколько байт занимают все тэги, в том числе и отдельно те, которые в начале и в конце файла (Prepended и Appended).

MediaInfo не предоставляет этой информации.

Orion9 wrote:
MediaInfo читает все тэги, но информация о них перемешивается с другой, технической информацией.

Если это так, то это проблема MediaInfo, увы. Конечно, скриптом её можно обойти, но придется писать дополнительный код-исключение для конкретных форматов, что, конечно, очень не радует.

Orion9 wrote:
Лучше сразу все пункты подменю вынести в основное контекстное меню или сделать в окне просмотра табы

Этих режимов может быть и десяток, и два, и всё это вываливать в главное меню? Для быстрого доступа есть горячие клавиши. Табы? Ну, не знаю.

Orion9 wrote:
. Разве нельзя только вторую часть строки фиксить?

Парсить еще и вывод Inform? Ну не знаю. Как-то не понял я его ценности, чтобы за него цепляться. Он же просто выводит все непустые поля, да ещё со спорным форматированием.

AkulaBig wrote:
Но теперь все три поля называются "Трек". А должно быть "Трек", "Трек/Расположение", "Трек/Всего". То-есть "/" обязательно надо оставлять. Насколько я понимаю, это можно исправить только в коде.

Разумеется. В коде поправил, теперь часть после "/" отбрасывается только в случае, если она начинается на String, поскольку такие комбинации - это точно вариации одного и того же поля, только с разным форматом. Вот исправленная версия. Но сразу это не поможет, поскольку в языковом файле для таких комбинаций нет перевода, его надо добавлять.

Возможно, потом сделаю опцию и /String* трактовать как раздельные поля.

AkulaBig wrote:
На ру-борде так и решают эту проблему ... проблему отсутствующих полей.

Вчерашнее исправление скрипта должно решить эту проблему.

AkulaBig wrote:
Хотелось-бы, чтобы порядок полей соответствовал MediaInfo.

А есть какой-то особый смысл в этом порядке расположения? Ну вот завтра MediaInfo добавит новое поле и порядок будет другой. Как по мне, правильнее было бы наоборот - иметь фиксированный порядок информации, хотя это сложнее простого цикла. Но дело хозяйское, конечно.

AkulaBig wrote:
Мне не понравился ваш перевод "дорожка". Исправил его на трек.

Ну, трек - это англицизм, а перевод именно "дорожка". Но это вкусовщина, и конечно, никто не запрещает менять перевод. Я вот, например, в переводе тотала всегда меняю <Папка> и <Ссылка> на более лаконичные <DIR> и <LNK>, мне так удобнее.

AkulaBig wrote:
Мне кажется вам-же проще будет.

Ох не факт. Учитывая "волосы дыбом" Smile Потом набросаю скрипт, чтобы понять, какие поля и как переведены в сравнении с моим языковым файлом.

AkulaBig wrote:
Четко падает при отсутствии TCMediaInfo.xml.

Тестировал на 11.51. Ладно, позже тогда, некритичная проблема.

AkulaBig wrote:
Поле Title присутствует только в режиме MediaInfo Full. Получается если мы добавляем Track name по нашему кривому алгоритму, то в выводе листер-плагина присутствуют оба поля. В в контекстном плагине у вас Track name отсутствует. Соответственно не на всех файлах показывает название. Там просто нет поля Title.

Не уверен, что понял.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 307

Post (Separately) Posted: Sun May 25, 2025 06:59    Post subject: Reply with quote

Loopback wrote:
Вот исправленная версия.

Даже не знаю, как вас благодарить. Теперь все работает как нужно! Огромное спасибо.
Loopback wrote:
поскольку в языковом файле для таких комбинаций нет перевода, его надо добавлять.

Все отлично:

Loopback wrote:
Возможно, потом сделаю опцию и /String* трактовать как раздельные поля.

Только, пожалуйста, опционально. Меня полностью устраивает нынешний вывод. который соответствует выводу MediaInfo.
Loopback wrote:
А есть какой-то особый смысл в этом порядке расположения?

Чистая вкусовщина. А для вас упрощение скриптов настройки.
Loopback wrote:
Ну, трек - это англицизм, а перевод именно "дорожка".

У меня со словом дорожка ассоциируется дорожки на ленте. Может я слишком старый, но прям режет слух. Но это ладно, забавно то, что в оригинальном файле русификации применяется и тот и тот перевод. Хотя может быть как раз в этом смысловая нагрузка.
Loopback wrote:
Не уверен, что понял.

Все, все, все. Не заморачивайтесь. Это уже не актуально. Просто выводились два одинаковых названия. Одно в поле Title, другое в поле Track number.
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 762

Post (Separately) Posted: Sun May 25, 2025 14:04    Post subject: Reply with quote

AkulaBig wrote:
Реально серьезнейший косяк.
...
Мне кажется надо код править, но может Loopback предложит решение через файл конфигурации.

Проблема действительно серьезная, однозначно надо было ее решать и заливать новую версию на сайт ради тех пользователей, которые никогда не полезут в конфиг, что Loopback отчасти и сделал. Но он забыл приложить в архив исправленнный файл конфигурации, потому что без замены строк на:
Code:
if StrPos(id, '/String') > 0 then Continue;

обновленные файлы плагина сами по себе ничего не дают.

А что касается сливок, то я имел в виду другое. Там речь шла о режимах вывода информации и об увеличения их числа. Сейчас листерная часть плагина предлагает несколько режимов просмотра, которых большинству пользователей будет просто за глаза, Loopback всё хорошо продумал в этом отношении и "снял", что называется, "все сливки" с режимов просмотра. Если какие-то вопросы и есть, то только в виде мелких нюансов и частных предподчений. Например, в режиме "По умолчанию" в самом верху зачем-то выводится информация об общем количестве аудиоканалов:
Code:
Всего аудиоканалов : 48

Что с этой информацией делать пользователю, не совсем понятно. На мой взгляд, важнее на этом месте видеть информацию о количестве аудиодорожек. Или в режиме "Полный" нет информации о миллисекундах в поле "Продолжительность", хотя не понятно почему, ведь режим называется Полный. В общем, если поковыряться, можно найти где и что улучшить. Но что касается добавления новых режимов просмотра, то придумать их будет теперь не так уж и просто. Кстати, вот еще одна идея для режимов: Режим "Продолжительность", который будет показывать только информацию о продолжительности всех потоков, которая практически всегда отличается в миллисекундах.
Loopback wrote:
Это всё замечательно, но у каждого какие-то свои хотелки, для кого-то релевантно одно, для кого-то другое. Всем не угодишь.

Справедливости ради, речь шла о быстром просмотре: уверен, никому не нравится, когда при быстром просмотре информацию на противоположной панели приходится крутить ползунками, это практически лишает всякого смысла саму операцию быстрого просмотра. И я с вами согласен - всем не угодишь. Но если вы ведёте плагин уже больше 15 лет, на кому ещё расчитывать простому пользователю, если не на вас?
Loopback wrote:
Написать свой шаблон не так уж и сложно, примеров много, но разумеется, какие-то усилия приложить придётся.

Кому? Простому пользователю, который никогда не полезет в конфиг, а если и полезет, то только чтобы ужаснуться от увиденного? )

Чтобы написать шаблон, его для начала надо придумать, что уже не просто, как выяснилось. Но и придуманный шаблон не просто реализовать, кто за это возьмётся? Не каждый прогер захочет этим замотрачиваться, о простых пользователях что говорить?
Loopback wrote:
не вижу, чем так уж может мешать раздел тех. информации.

Он мешает тем, что перемешивается с тэгами, и от этого становится непонятно, вшита ли эта информация в поток, или хранится отдельно в тэгах.
Loopback wrote:
MediaInfo не предоставляет этой информации.

Если это так, то это проблема MediaInfo, увы.

К сожалению, да.
Loopback wrote:
Конечно, скриптом её можно обойти, но придется писать дополнительный код-исключение для конкретных форматов, что, конечно, очень не радует.

На мой взгляд, режим "Только тэги" не помешал бы, но сделать его можно в данных условиях только фильтруя нужные поля. У автора Mp3Tag, конечно, найдутся свои алгоритмы для перечисления тэгов, которые именно на это и направленны, но нам-то от этого не легче.
Loopback wrote:
Этих режимов может быть и десяток, и два, и всё это вываливать в главное меню? Для быстрого доступа есть горячие клавиши. Табы? Ну, не знаю.

Сколько-сколько режимов может быть? Shocked Шутите, наверное ) Мне сначала тоже показалось, что режимов как-то маловато и что есть куда копнуть, поэтому и написал об этом. Но как выясняется, тут 2-3 режима новых придумать будет сложно, что уж о десятке говорить? )

Но мало еще придумать, их сделать нужно. Я, например, за долгое время так и не понял, что именно мне нужно, поэтому и не лез в конфиг. Без чёткого понимания, что нужно, делать в любом случае ничего не получится.

Ну, а на счет меню, не знаю, вы же сами писали, что больше мышист и переключение горячими клавишами добавили относительно недавно. Разве вам удобно было добираться до пунктов подменю?
Loopback wrote:
Парсить еще и вывод Inform? Ну не знаю. Как-то не понял я его ценности, чтобы за него цепляться. Он же просто выводит все непустые поля, да ещё со спорным форматированием.

Согласен. Меня тоже не напрягает вывод с кракозябрами в Infom, до тех пор, пока есть возможность переключения на другой режим, где эти кракозябры фиксятся. Но разве сейчас фиксятся не только отдельные поля? В тэгах могут попасться нестандартные записи, добавляемые пользователями, которые не обработаются функцией:
Code:
FixCodepage('Title', 'Performer', 'Album', 'Track');

AkulaBig приводил примеры таких тэгов.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 307

Post (Separately) Posted: Sun May 25, 2025 14:43    Post subject: Reply with quote

Orion9 wrote:
без замены строк на:
Code:

if StrPos(id, '/String') > 0 then Continue;

обновленные файлы плагина сами по себе ничего не дают.

Так и есть. Я специально проверил.
Orion9 wrote:
В тэгах могут попасться нестандартные записи, добавляемые пользователями, которые не обработаются функцией

Навряд-ли с этим можно что-то сделать:
Back to top
View user's profile Send private message
Orion9



Joined: 01 Jan 2024
Posts: 762

Post (Separately) Posted: Sun May 25, 2025 20:01    Post subject: Reply with quote

AkulaBig wrote:
Навряд-ли с этим можно что-то сделать:

Что-то не нашел я у себя таких файлов, пришлось сделать свой )
Code:
Формат                                   : MPEG Audio
Размер файла                             : 3,76 Мбайт
Продолжительность                        : 2 мин. 20 с.
Режим общего битрейта                    : Постоянный
Общий битрейт                            : 224 Кбит/сек
Имя трека                                : Òîòàë Êîììàíäåð
Исполнитель                              : Êðèñòèàí Ãèñëåð
Библиотека кодирования                   : LAME3.96.1
Ïëàãèí                 : ÒÑ ÌåäèàÈíôî

Полностью это проблемы не исправит, вы правы, но хотя бы вторая часть строки будет отображаться корректно:
Code:
Формат                                   : MPEG Audio
Размер файла                             : 3,76 Мбайт
Продолжительность                        : 2 мин. 20 с.
Режим общего битрейта                    : Постоянный
Общий битрейт                            : 224 Кбит/сек
Имя трека                                : Тотал Коммандер
Исполнитель                              : Кристиан Гислер
Библиотека кодирования                   : LAME3.96.1
Плагин                 : ТС МедиаИнфо

Кстати, именно в таких случаях и может пригодится свойство плагина anytag.wdx корректно читать ANSI:
Readme.txt wrote:
If the field ansi is set to 1 (instead of 0) anytag.wdx uses the
system codepage for decoding non-unicode ID3v2 tags.

Если сделать, как я писал выше, и добавить к его шаблону "$list($char(10),: ,)", то anytag.wdx будет перечислять все записи в тэге:
Code:
Tag                             : ID3v1 ID3v2.3
Tag Read                        : ID3v2.3
Tag Size                        : 2250
Artist                          : Кристиан Гислер
Title                           : Тотал Коммандер
Bitrate                         : 224
Codec                           : MPEG 1 Layer III
Length                          : 02:21
Length (in seconds)             : 141
Mode                            : Joint Stereo
Samplerate                      : 44100
Extra information               : CBR
Appended                        : 128
Prepended                       : 2122
ID3v2 Encoding                  : ISO-8859-1
Tags                            :
ARTIST: Кристиан Гислер
TITLE: Тотал Коммандер
Плагин: ТС МедиаИнфо

Но правда нет гарантий, что считается именно тот тэг, который нужен. Как я понял, если в mp3-файле есть APE, то приоритет будет отдан именно этому тэгу, а не ID3v2. Можно ли управлять таким выбором, пока не ясно. Возможно и не получится. Тогда только строннее приложение придётся юзать, чтобы посмотреть, что скрывается за кракозябрами. Ну, или в HEX-редакторе напрямую открыть и глянуть.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 307

Post (Separately) Posted: Sun May 25, 2025 20:30    Post subject: Reply with quote

Orion9 wrote:
но хотя бы вторая часть строки будет отображаться корректно

Это понятно. Если я этот тег пропишу в настройках, то и у меня вторая часть будет корректно отображаться. Но зачем мне левый тэг, присутствующий только в одном файле?
Orion9 wrote:
именно в таких случаях и может пригодится свойство плагина anytag.wdx корректно читать ANSI

Если-бы это был листер-плагин, можно было-бы потестить. А какой смысл делать это в контекстном плагине?
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1511

Post (Separately) Posted: Sun May 25, 2025 21:08    Post subject: Reply with quote

AkulaBig wrote:
Все отлично:

Очень хорошо. Удивляюсь, как такой косяк вообще допустил. Ну и за столько лет никто не обращал внимания.

AkulaBig wrote:
в оригинальном файле русификации применяется и тот и тот перевод. Хотя может быть как раз в этом смысловая нагрузка.

Возможно, просто разные люди переводили. Мне не кажется, что у этих (кстати, идущих подряд) строк разная смысловая нагрузка:

Quote:
Track;Имя трека
Track_Count;Количество треков
TrackFormat;Формат дорожки
TrackIndex;Индекс дорожки


Orion9 wrote:
заливать новую версию на сайт ради тех пользователей, которые никогда не полезут в конфиг, что Loopback отчасти и сделал. Но он забыл приложить в архив исправленнный файл конфигурации

Такие версии чисто тестовые и не предназначаются для широкого круга. Это даже не бета. Проблема существовала годами, ничего страшного не произойдёт за еще какое-то время.

Orion9 wrote:
в самом верху зачем-то выводится информация об общем количестве аудиоканалов

Это да, странная информация, с какой стороны ни посмотри. Лучше отфильтровать.

Orion9 wrote:
На мой взгляд, важнее на этом месте видеть информацию о количестве аудиодорожек.

Шаблон полуавтоматический, выводящий все поля, кроме заданных в списке исключений. На это место принудительно ничего не впихнуть. Чтобы выводить в заданном порядке надо идти от обратного, т.е. делать явный список того, что надо вывести.

Orion9 wrote:
Или в режиме "Полный" нет информации о миллисекундах в поле "Продолжительность", хотя не понятно почему, ведь режим называется Полный.

"Полный" значит лишь то, что в нем не фильтруются "лишние" поля. Форматирование единиц все равно будет зависеть от предпочтений сделавшего шаблон.

Orion9 wrote:
Но если вы ведёте плагин уже больше 15 лет, на кому ещё расчитывать простому пользователю, если не на вас?

На какого-нибудь еще продвинутого пользователя? Smile

Впрочем, не вопрос. Но хотелось бы, чтобы вопрошающий имел уже некое оформленное понимание, чего он хочет. Техническое задание, если угодно.

Orion9 wrote:
Чтобы написать шаблон, его для начала надо придумать, что уже не просто, как выяснилось.

Вот именно, придумать - это самое сложное. А если польза будет больше, чем для пары человек - совсем отлично Very Happy

Orion9 wrote:
Но и придуманный шаблон не просто реализовать, кто за это возьмётся? Не каждый прогер захочет этим замотрачиваться, о простых пользователях что говорить?

При наличии нормального ТЗ это не так сложно, как может показаться. Сплошная копипаста.

Orion9 wrote:
Он мешает тем, что перемешивается с тэгами

Но я-то имел в виду компактные режимы, они с фиксированным набором полей. В них никакого смешивания не происходит.

Orion9 wrote:
На мой взгляд, режим "Только тэги" не помешал бы, но сделать его можно в данных условиях только фильтруя нужные поля.

Я все же не понимаю, чем это принципиально лучше "компактного аудио". Ну убрать из него строку LineAddHeader(GetName('Audio')); и всё что после нее - вот и будет "Только теги".

Orion9 wrote:
вы же сами писали, что больше мышист и переключение горячими клавишами добавили относительно недавно. Разве вам удобно было добираться до пунктов подменю?

Я пользуюсь стандартным и редко их переключаю.

Orion9 wrote:
Но разве сейчас фиксятся не только отдельные поля? В тэгах могут попасться нестандартные записи, добавляемые пользователями, которые не обработаются функцией:

Никто не мешает добавить в неё свои поля, которые надо исправлять. Хотя если будет такое, как в сообщении выше, когда искажено даже само имя поля, что тут сделаешь?

На самом деле, если уж очень надо, FixCodepage можно использовать и в цикле для всех полей, главное её вызвать перед выводом значения поля примерно в таком виде:

Code:
FixCodepage(GetID(i, 'Audio'))
LineAddField(GetID(i, 'Audio'))


Но это, разумеется, не лучшим образом скажется на производительности.
Back to top
View user's profile Send private message
AkulaBig



Joined: 03 Dec 2008
Posts: 307

Post (Separately) Posted: Sun May 25, 2025 22:17    Post subject: Reply with quote

Loopback wrote:
Ну и за столько лет никто не обращал внимания.

Скорей всего потому что для этого надо изучить MediaInfo более-менее. Ведь только после этого я смог разобраться в ваших скриптах хоть немножко. А до этого не получалось.
Loopback wrote:
Но это, разумеется, не лучшим образом скажется на производительности.

В хинтах вроде не тормозит. Хотя конечно это понятие относительное. На слабом железе может и будет заметно.

Добавлено спустя 52 минуты:

Loopback wrote:
FixCodepage можно использовать и в цикле для всех полей

А можете поконкретнее подсказать, куда что прописывать?
В дефолтном режиме у нас есть id:=GetID(i, 'General', 0); Пишу id:=FixCodepage(GetID(i, 'General', 0)); Значения показываются правильно, но исчезают сами названия полей. А строки LineAddField(GetID(i, 'General')) нет вообще. Если ее просто после id написать, названия полей не появляются.
Back to top
View user's profile Send private message
Loopback



Joined: 07 Sep 2009
Posts: 1511

Post (Separately) Posted: Mon May 26, 2025 00:01    Post subject: Reply with quote

AkulaBig wrote:
А можете поконкретнее подсказать, куда что прописывать?
В дефолтном режиме у нас есть id:=GetID(i, 'General', 0); Пишу id:=FixCodepage(GetID(i, 'General', 0));


FixCodepage не возвращает значение, она формирует список полей для "исправления". Если поле есть в этом списке, функции Get и LineAddField производят исправление сразу после чтения значения поля. Надо это в справке уточнить.

Каждый вызов FixCodepage формирует список полей заново. Так что если вызывать ее с одним параметром и следом получать значение поля, то оно будет проходить процедуру "исправления".

Вот кусок из стандартного режима.
Code:
// get field ID by index
id:=GetID(i, 'General', 0);
// skip formatted values (Value/String etc)
if StrPos(id, '/String') > 0 then Continue;
// skip values that we defined for skipping
if StrPos(SkipGeneral, id+',') > 0 then Continue;
// ---- вызываем где-то здесь ----
FixCodepage(id);
// get field value
v:=Get(i, 'General', 0);
// skip empty values
if (v = '') then Continue;
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3 ... 60, 61, 62, 63, 64  Next
Page 61 of 64

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group