MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Здесь можно обсудить ваш любимый плагин.
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

Latest post of the previous page:

2useven10 wrote: Sat 19 Dec, 2020 09:59 Если непонятно спрашивайте, тестирование желательно.
1. С кодировкой - замечательно. Ещё бы сбрасывать Changed для созданного файла в редакторе, но это - капризы.
2. Что удивило: последний параметр в Plugin.Call (true/false) по умолчанию - true. Это противоречит общепринятой в lua логике и практике, надо указывать явно…
3. На самом деле я не понял смысла этого последнего булевского параметра. Может, имеется в виду что либо список {id,…}, либо true/false. Во всяком случае следующий вызов:

Code: Select all

ok,n,keys,vals = Plugin.Call("919C1FC6-A571-4642-99DF-BDACE840ED18",[[file]],"{Album,Track name}",false)
возвращает всё пустое.
P/S. Хотя нет, вызов

Code: Select all

ok,n,keys,vals = Plugin.Call("919C1FC6-A571-4642-99DF-BDACE840ED18",[[file]],false)
тоже возвращает всё пустое… Может в моём файле нет Exiv2? Я незнаком со структурой медиафайлов (только на практике, используя всякие редакторы). Могу путаться в терминологии, извините.
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

Аргументы (кроме первого) можно указывать (или не указывать) в любом порядке.
Плагин может получать параметры через библитеки Mediainfo и Exifv2.
Для каждого случая исходный файл открывается заново (как минимум 1 раз).
Параметры из Exifv2 это про картинки, вряд ли вы их будете использовать для автоматизации переименования файлов.
Для оптимизации они в умолчательном режиме не читаются. но если нужны получить их можно.
Last edited by 2useven10 on Sat 19 Dec, 2020 14:20, edited 1 time in total.
User avatar
John Doe
Бюрократ
Posts: 13000
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by John Doe »

2useven10 wrote: Sat 19 Dec, 2020 10:13 ok, n, ids, values = Plugin.Call(MediaInfo, file, ids); -- указанный файл, MediaInfo только заданные параметры
Что-то тут лишнее. Например подозреваю можно обойтись без ok, в случае ошибки n будет nil или false.
Собственно и n не очень требуется, поскольку его легко получить из самих таблиц.

Т.е. можно было бы:

Code: Select all

local values, ids, n = Plugin.Call(MediaInfo, file, ids)
А пожалуй ещё лучше возвращать одну таблицу:

Code: Select all

local params = Plugin.Call(MediaInfo, file, ids)
-- {["Album"] ="album",["Track name"]="track",...}

https://t.me/FarManager — Telegram чат
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

John Doe wrote: Sat 19 Dec, 2020 15:06 А пожалуй ещё лучше возвращать одну таблицу:
Согласен. Сейчас есть ещё странность: в таблицах ids и vals кроме регулярных данных (массива) имеются по два именованных поля: n и type. С n понятно (хотя и лишняя). А вот что такое type? По идее - тип результата. Но там array; в lua такого нет…
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

Может быть многое.
Мне удобнее отдавать так как есть.
Одна таблица была бы удобнее, да. Но, насколько я понимаю, вернуть такую таблицу плагин не может.
Максимум что есть в возврате от плагина - это массив, который на выходе превращается в таблицу
с 2-мя дополнительными элементами ["n'] и ["type"], всё остальное на вызывающей стороне.
Если Shmuel, здесь появляется - может поправит, при случае (вдруг я что-то не так понял).
Last edited by 2useven10 on Sat 19 Dec, 2020 16:07, edited 1 time in total.
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

type - это тип элемента массива значения, которое сформировал плагин.
и плагином это НЕ контролируется.
также у меня не получилось передать массив на вход Plugin.Call, пришлось делать парсинг строки.
Last edited by 2useven10 on Sat 19 Dec, 2020 16:10, edited 2 times in total.
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10 wrote: Sat 19 Dec, 2020 15:56 Но, насколько я понимаю, вернуть такую таблицу плагин не может.
Когда я формулировал пожелания к FarColorer-у, я предполагал, что с передачей ключевой таблицы могут быть преблемы. Потому предложил возвращать строку вида либо key=value\n,…, либо {[key]="value"; …}. Второй вариант легко командой lua loadstring превращается в таблицу; к тому же есть возможность возвращать значения любых типов. Даже вложенные таблицы.
User avatar
Wave
Posts: 1792
Joined: Thu 04 Aug, 2005 18:47
Has thanked: 5 times
Been thanked: 17 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by Wave »

За правку сбитой кодировки спасибо!
Пользуюсь ФАРом больше 20 лет © собирательный.
Shmuel
Posts: 6194
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 31 times
Been thanked: 337 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by Shmuel »

2useven10 wrote: Sat 19 Dec, 2020 15:56 Если Shmuel, здесь появляется - может поправит, при случае (вдруг я что-то не так понял).
Появляется :) но вы всё так поняли.
2useven10 wrote: Sat 19 Dec, 2020 15:57 также у меня не получилось передать массив на вход Plugin.Call, пришлось делать парсинг строки.
Это не реализовано (что видно из статьи Plugin.Call в мануале).
User avatar
John Doe
Бюрократ
Posts: 13000
Joined: Wed 27 Apr, 2005 20:42
Has thanked: 40 times
Been thanked: 310 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by John Doe »

2useven10 wrote: Sat 19 Dec, 2020 15:56 Одна таблица была бы удобнее, да. Но, насколько я понимаю, вернуть такую таблицу плагин не может.
Действительно. Но это можно сделать и в луа (превратить 2 таблицы в 1)
2useven10 wrote: Sat 19 Dec, 2020 15:57 также у меня не получилось передать массив на вход Plugin.Call, пришлось делать парсинг строки.
Но можно же представить массив в виде перечисление параметров?

Code: Select all

Plugin.Call(MediaInfo, file, id1, id2, id3, ...)
https://t.me/FarManager — Telegram чат
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

John Doe wrote: Sun 20 Dec, 2020 15:53 Но можно же представить массив в виде перечисление параметров?
Можно уже сейчас. Но только в фоме "{id1}", "{id2}", ... Иначе будет трактоваться как имя файла.
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10 wrote: Sun 20 Dec, 2020 16:25 Можно уже сейчас. Но только в форме "{id1}", "{id2}", ... Иначе будет трактоваться как имя файла.
Минус "свободного" порядка аргументов. Лучше бы фиксированный. А то сейчас, например, если не указать список полей совсем или указать пустую строку, то выдаются все поля. А если передать 3-м параметром nil, то ничего не вернёт. В данном случае свобода - это зло.
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

buniak_a_h wrote: Sun 20 Dec, 2020 16:32 В данном случае свобода - это зло.
Ну так держите себя в руках, не передавайте nil.
Плагин позволяет вам сделать то что вам нужно - пользуйтесь, про добро и зло это в раздел всего сущего.
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10!
1. Вам правда труднее было сделать фиксированный порядок аргументов, чем анализировать переданные параметры? Странно это. А макрописателям точно проще фиксированный порядок.
2. Есть традиции. В частности, отсутствующий параметр и nil - тождественны; nil и false для булевского параметра - синонимы. Нужны сильные аргументы, чтоб нарушать такие традиции.
3. Пример, когда Ваше
не передавайте nil
приводит к лишнему коду:

Code: Select all

local Fields = far.InputBox(…)
Plugins.Call(…, Fields)
Я прекрасно понимаю, что вопрос легко решается передачей Fields or '', но (а) это не документировано и (б)это, всё же, лишнее действие.
buniak_a_h
Posts: 2286
Joined: Sat 20 Apr, 2013 00:17
Location: Питер
Has thanked: 139 times
Been thanked: 245 times
Contact:

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by buniak_a_h »

2useven10, не, я не настаиваю. Если Вам неохота возвращаться к кодированию - привыкнуть можно ко всему. Просто я указал на нелогичности. Зачем сразу в штыки воспринимать? Сами же писали «тестировние приветствуется»!
А про возврат значений в виде строки - Вы, увы, не ответили... :-(
Last edited by buniak_a_h on Sun 20 Dec, 2020 17:57, edited 2 times in total.
2useven10
Posts: 4187
Joined: Mon 07 Sep, 2009 10:40
Has thanked: 5 times
Been thanked: 205 times

MediaInfo — информация о медиа-файле (кодек, битрейт, и пр.)

Post by 2useven10 »

buniak_a_h wrote: Sun 20 Dec, 2020 17:55 Вы, увы, не ответили
2useven10 wrote: Sun 20 Dec, 2020 17:25 Плагин позволяет вам сделать то что вам нужно - пользуйтесь
Это ответ. Не надо писать поэму в постах.
Напишите одну строку кода на lua. Это быстрее чем вносить микроскопически нужные изменения в плагин.
Last edited by 2useven10 on Sun 20 Dec, 2020 20:58, edited 1 time in total.
Post Reply

Return to “Обсуждение плагинов”