AIMP Forum

AIMP for PC => Предложения / Suggestions => Topic started by: desir on May 06, 2024, 10:14:00

Title: Многострочные поля ввода и переменные
Post by: desir on May 06, 2024, 10:14:00
Можно ли попросить сделать поля ввода многострочными?
- в настройках группирования
- в настройках форматирования

К примеру, у меня есть условия с длиной 400-600 символов без пробелов, с вложенностью и ветвлениями. И чтобы в одной строке что-то сделать, не сломав то что работает, приходится изголяться - в том же фаре (любом текстовом редакторе) писать "скрипт" отдельными функциями с вложенностями, по строкам/операторам, потом собирать в одну строку, вставлять в плеер, проверять, чинить-дорабатывать, и так по кругу.
Title: Re: Многострочные поля ввода
Post by: Artem on May 06, 2024, 10:27:35
В любом случае придется все собирать в одну строку, т.к. переносы строк значимы для плеера
Title: Re: Многострочные поля ввода
Post by: desir on May 06, 2024, 10:37:27
В любом случае придется все собирать в одну строку, т.к. переносы строк значимы для плеера
Можно же сделать многострочное поле ввода и самим плеером тримить и удалять переносы. А переносы останутся доступны через Chr(13)/Chr (10). Нет?

К примеру, вот строка:
%IfEqual(%StrPos(%Char(40),%PrefixTrim(%Replace(%Title,_, ))),0,%IfEqual(%StrPos(%Char(91),%PrefixTrim(%Replace(%Title,_, ))),0,[%PrefixTrim(%Replace(%Title,_, ))],[%StrTrim(%StrLeft(%PrefixTrim(%Replace(%Title,_, )),%Dec(%StrPos(%Char(91),%PrefixTrim(%Replace(%Title,_, ))),1)))]),[%StrTrim(%StrLeft(%PrefixTrim(%Replace(%Title,_, )),%Dec(%StrPos(%Char(40),%PrefixTrim(%Replace(%Title,_, ))),1)))])

От того, что она будет в многострочном виде и потом тримом и склейкой автоматом преобразуется в нужный плееру формат, ничего не сломается. Будет только удобнее.
Но доработка этой строки (а мне нужно внести приличное количество правок, например, для учёта обнаруженных с момента её написания, новых обстоятельств) в текущем виде - мучение сродни инквизиционному
Title: Re: Многострочные поля ввода
Post by: Soolo on May 06, 2024, 12:48:19
%IfEqual(%StrPos(%Char(40),%PrefixTrim(%Replace(%Title,_, ))),0,%IfEqual(%StrPos(%Char(91),%PrefixTrim(%Replace(%Title,_, ))),0,[%PrefixTrim(%Replace(%Title,_, ))],[%StrTrim(%StrLeft(%PrefixTrim(%Replace(%Title,_, )),%Dec(%StrPos(%Char(91),%PrefixTrim(%Replace(%Title,_, ))),1)))]),[%StrTrim(%StrLeft(%PrefixTrim(%Replace(%Title,_, )),%Dec(%StrPos(%Char(40),%PrefixTrim(%Replace(%Title,_, ))),1)))])
Можно на размер А4 придумать скрипт, в настройках нет места для этого, и нужны такие сложности только вам и ещё 2,5 человекам
Title: Re: Многострочные поля ввода и переменные
Post by: desir on May 06, 2024, 15:02:43
Ладно. А использование переменных возможно ли добавить?
Title: Re: Многострочные поля ввода и переменные
Post by: desir on May 06, 2024, 18:17:20
Чуть дополню предыдущий пост.
К примеру, простейшая, вроде бы задача - найти в названии круглые и квадратные скобки, если присутствуют и те, и другие, то взять меньшеую позицию из двух, если присутствует только один вид скобок - взять эту позицию, в противном случае... например, 99 (или 500, или длину названия...) - не учитывая ситуацию, когда тег названия отсутствует и берётся из имени файла, код для выполнения этой простой задачи занимает около 550 символов, +/-, с множеством повторений одних и тех же операций
добавляем к этому заодмену подчёркиваний и точек на пробелы - это легко, но в целом уже "код" довольно огромен
добавляем к этому новое условие - найти вхождения " sXXeXX", заменить на " s99eXX" - при отсутствии возможности использовать регистронезависимое сравнение и даже учтя всего-лишь количество сезонов... 10 (а их бывает и больше), а эпизодов до 23 и более - код разрастается до безумных размеров и выглядит не просто дико, а очень дико, добавим другие регистры (именуют файлы как попало) - и вообще полный швах.
Зачем? Например, для более-менее адекватной группировки - если включать группировки просто по названию, то каждый ремикс, каждая версия будет иметь свою группу. В этом же случае одно название - а в ней все ремиксы и варианты.
В моём случае дополнительно (конкретно это - редкий случай) аудиодорожки разных сериалов в оригинале - с группировкой по названию без редактирования тегов получается на каждый файл своя группа, а если прописать хотя бы часть подмен sXXeYY, SXXeYY, SXXEXX, где XX и YY от 01 до 10 - то часть сериалов будет сгруппирована просто по названию. Будь регистронезависимое или вообще регекспы - всё свелось бы к очень короткой формуле.

А сейчас... Вот примеры:
%StrLeft(%Title,%IfGreater(%StrPos(%Char(91),%Title),%StrPos(%Char(40),%Title),%IfEqual(%StrPos(%Char(40),%Title),0,%Dec(%IfEqual(%StrPos(%Char(91),%Title),0,99,%StrPos(%Char(91),%Title)),%IfEqual(%StrPos(%Char(91),%Title),0,0,1)),%Dec(%StrPos(%Char(40),%Title),%IfEqual(%StrPos(%Char(40),%Title),0,0,1))),%IfEqual(%StrPos(%Char(91),%Title),0,%Dec(%IfEqual(%StrPos(%Char(40),%Title),0,99,%StrPos(%Char(40),%Title)),%IfEqual(%StrPos(%Char(40),%Title),0,0,1)),%Dec(%StrPos(%Char(91),%Title),%IfEqual(%StrPos(%Char(91),%Title),0,0,1)))))
%StrTrim(%PrefixTrim(%ReplaceEx(%StrLeft(%Title,%IfGreater(%StrPos(%Char(91),%Title),%StrPos(%Char(40),%Title),%IfEqual(%StrPos(%Char(40),%Title),0,%Dec(%IfEqual(%StrPos(%Char(91),%Title),0,99,%StrPos(%Char(91),%Title)),%IfEqual(%StrPos(%Char(91),%Title),0,0,1)),%Dec(%StrPos(%Char(40),%Title),%IfEqual(%StrPos(%Char(40),%Title),0,0,1))),%IfEqual(%StrPos(%Char(91),%Title),0,%Dec(%IfEqual(%StrPos(%Char(40),%Title),0,99,%StrPos(%Char(40),%Title)),%IfEqual(%StrPos(%Char(40),%Title),0,0,1)),%Dec(%StrPos(%Char(91),%Title),%IfEqual(%StrPos(%Char(91),%Title),0,0,1))))),_, ,., , s01e, s99e, S01E, s99e, s02e, s99e, s03e, s99e, s04e, s99e, s05e, s99e, s06e, s99e, s07e, s99e, s08e, s99e, s09e, s99e, s10e, s99e,s99e01,,s99e02,,s99e03,,s99e04,,s99e05,,s99e06,,s99e07,,s99e08,,s99e09,,s99e10,,s99e11,,s99e12,,s99e13,,s99e14,,s99e15,,s99e16,,s99e17,,s99e18,,s99e19,,s99e20,,s99e21,,s99e22,,s99e23)))
Title: Re: Многострочные поля ввода и переменные
Post by: Artem on May 07, 2024, 00:14:52
Будь регистронезависимое или вообще регекспы - всё свелось бы к очень короткой формуле

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