Страница 1 из 3

Сортировка по части имени

Добавлено: Вс янв 24, 2010 10:41
Вахмурка
Имеется много альбомов с музыкальными файлами. Все имена имеют один формат:

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

Первый альбом
01 Какая-то песня
02 Другая песня
...

Второй альбом
01 Еще одна песня
02 Какая-то песня
...
Задача: найти общие названия треков (в примере выше "Какая-то песня"), но без учета номера.

Есть очевидное, работающее, но очень неудобное решение:
1. Скопировать все куда-то;
2. Ctrl+B;
3. Переименовать все с маской [N4-].
4. Искать в исходной коллекции по каждому имени в отдельности.

Есть более изощренное решение:
1. Ctrl+B;
2. Вызвать переименование [N4-], но Start не нажимать;
3. Вызвать редактирование имен;
4. В тестовом редакторе отсортировать по алфавиту;
5. Искать в исходной коллекции по каждому имени в отдельности.

Оба решения имеют недостатки. В первом случае это копирование гектаров информации ради двух минут работы. Во втором - наличие редактора, умеющего сортировать строки. Например, навороченный EmEditor этого делать не умеет, а простенький Texter - пожалуйста. (Кстати, а ваш любимый тектовый редактор имеет такой инструмент?!).

Общий недостаток двух решений - необходимость обращаться к исходной коллекции для каждого имени в отдельности!

Третье решение:
Создать пользовательскую колонку [tc.name:4-] и отсортировать по ней. Просто, изящно, быстро, удобно. Но... не работает!

Сортировка получается не по [tc.name:4-], а по [tc.name]! То есть по полному имени, а не по его части.

Отсюда вопрос: это штатное поведение сортировки по пользовательским колонкам? Если да, то разве так должно быть? Может, кинуть в Гислера запросом?

Или кто-то предложит четвертый способ?

[Добавлено]
Кстати, предвосхищая предложение сортировать по тегу Title:
1. Иногда номер зашит в тег;
2. Иногда тег тупо отсутствует (пп. 1 и 2 - реальность для тех самых моих альбомов, честно скачанных с интернета).
3. В конце концов, хрен с ними, с песнями. Разве пользовательские колонки не должны обеспечивать сортировки по части поля?!

Добавлено: Вс янв 24, 2010 12:24
CaptainFlint
Вахмурка писал(а):5. Искать в исходной коллекции по каждому имени в отдельности.
Если редактор хороший, то искать можно не по отдельности, а чем-нибудь типа ^(.*)\n\1\n
Если надо оставить только дубликаты, а остальное убрать, чтоб глаза не мозолило, можно в три прохода: сначала таким поиском заменить на что-нибудь вида :\1\n (двоеточие выбрано как символ, не разрешённый в именах файлов), потом все строки, не начинающиеся с двоеточия, удалить, ну и третьим проходом само двоеточие грохнуть. Если это частая операция, можно сделать макрос.
Вахмурка писал(а):Например, навороченный EmEditor этого делать не умеет
Ну, вообще-то, плагины есть. Не говоря уж о том, что в девятой версии команды сортировки появилась и в самом EE (но плагин удобнее, т.к. позволяет работать с выделенными строками).
Вахмурка писал(а):Общий недостаток двух решений - необходимость обращаться к исходной коллекции для каждого имени в отдельности!
Вот этого предложения я не понял…
Вахмурка писал(а):Сортировка получается не по [tc.name:4-], а по [tc.name]! То есть по полному имени, а не по его части.

Отсюда вопрос: это штатное поведение сортировки по пользовательским колонкам? Если да, то разве так должно быть? Может, кинуть в Гислера запросом?
Штатное и документированное.
Вахмурка писал(а):Или кто-то предложит четвертый способ?
Использовать script_wdx, написать поле, которое выдаёт урезанное имя, и по нему сортировать.

Добавлено: Вс янв 24, 2010 12:57
Вахмурка
а чем-нибудь типа ^(.*)\n\1\n
Ты имеешь в виду регулярные выражения самого ЕЕ? Если да, то вопрос не в этом. Задача-то решаемая, просто хотелось ее решить средствами самого ТС, без стороннего софта.
Ну, вообще-то, плагины есть. Не говоря уж о том, что в девятой версии команды сортировки появилась и в самом EE (но плагин удобнее, т.к. позволяет работать с выделенными строками).
Ясно. У меня пятая. Как ты мне дал на него наводочку, так я и не обновлялся.
Вот этого предложения я не понял
Тем или иным способом я нашел, что "Какая-то песня" под разными номерами присутствует в нескольких альбомах. Теперь надо открывать в ТС поиск по имени, выводить на панель и далее работать уже с этими "почти одинаковыми" именами.
Штатное и документированное
А вот в этом месте, пожалуйста, подробнее. Нашел только главу справки "Tabstop header", но там нет указания на то, что двоеточие не влияет на сортировку.
Использовать script_wdx
Попробую.

Добавлено: Вс янв 24, 2010 13:02
Rodny
Вахмурка
Есть regexp_wdx
Контентный плагин действующий по подобию Multy Rename Tool, но без реального переименования файлов.
Может быть полезен для сортировки файлов в желаемом порядке

Добавлено: Вс янв 24, 2010 13:24
Вахмурка
Есть regexp_wdx
Спасибо, сработало.

Добавлено: Вс янв 24, 2010 13:49
CaptainFlint
Вахмурка писал(а):Тем или иным способом я нашел, что "Какая-то песня" под разными номерами присутствует в нескольких альбомах. Теперь надо открывать в ТС поиск по имени, выводить на панель и далее работать уже с этими "почти одинаковыми" именами.
Ясно. Но задача слишком специфична. Я сходу вообще не могу придумать, как это можно было бы улучшить, не считая добавления специальных команд и диалогов, единственное предназначение которых — разобраться с абсолютно такой ситуацией, как ты описал, и ни с какой другой.

Разве что расширить возможности Тотала по поиску дубликатов, но это уже давно предлагалось.
Вахмурка писал(а):А вот в этом месте, пожалуйста, подробнее. Нашел только главу справки "Tabstop header", но там нет указания на то, что двоеточие не влияет на сортировку.
Справка писал(а):Диалоговое окно: Настройка набора колонок
Содержимое поля данных
[=имя_плагина.имя_поля.единица_измерения:4-7]

То же, что и выше, но для подстрок (в данном примере будут вставлены символы с 4 по 7; допустимы те же выражения, что и для шаблона [N] в Инструменте группового переименования). Учтите, что эти выражения действуют только на отображение данных, сортировка будет производиться по полной строке, а не по указанной подстроке!

Добавлено: Вс янв 24, 2010 16:47
Вахмурка
Если файлы одинаковые, то вопросов нет. Но представим себе, что звук один и тот же, а теги (как правило, только название альбома) - разные. Тогда с точки зрения ТС это - разные файлы, и поиск дубликатов ничего не даст. То есть содержание "почти такое же", имя "почти такое же"...

Мне все же кажется, что подобная задача вставала перед другими пользователями. Или я что, один мр3 слушаю?
Учтите, что эти выражения действуют только на отображение данных, сортировка будет производиться по полной строке, а не по указанной подстроке!
Хитрый какой - в официальной справке нет того, что ты отметил синим! Так что, строго говоря, сам Гислер это свойство НЕ документировал.

Добавлено: Вс янв 24, 2010 16:52
CaptainFlint
Вахмурка писал(а):Но представим себе, что звук один и тот же, а теги (как правило, только название альбома) - разные. Тогда с точки зрения ТС это - разные файлы, и поиск дубликатов ничего не даст. То есть содержание "почти такое же", имя "почти такое же"...
Поэтому я и написал не об использовании поиска дубликатов, а о расширении оного.
Вахмурка писал(а):ак что, строго говоря, сам Гислер это свойство НЕ документировал.
Ну раз мы написали, значит, Гислер где-то об этом говорил: либо в истории, либо на форуме. Своевольно объявлять такие вещи фичами мы просто не имеем права.

Добавлено: Вс янв 24, 2010 19:34
Tol!k
Вахмурка писал(а):Мне все же кажется, что подобная задача вставала перед другими пользователями
http://www.zldo.narod.ru/muzcatsd.html
http://pinterpeti.hu/html/emac.htm

Добавлено: Вс янв 24, 2010 20:11
Вахмурка
Они позволяют искать "почти совпадающие" имена? Вряд ли. И, кстати, сегодня же, при изучении тех альбомов, столкнулся с еще одной схожей проблемой. Разные (или одна и та же?) песни называются "Alleluiah", "Hallelujah", "Aleluya", и т.д. Вот бы еще научить ТС искать такие "почти одинаковые", "похожие" имена...

Добавлено: Вс янв 24, 2010 20:14
CaptainFlint
Вахмурка
Имена, похожие на нечто заранее заданное, искать можно:
http://wincmd.ru/plugring/similarity.html
А искать все возможные сочетания, где имена похожи между собой, — это, увы, пока никак. Опять-таки, кабы поиск дубликатов разрешал использовать плагины…

Добавлено: Вс янв 24, 2010 21:24
D1P
Оффтоп
CaptainFlint писал(а):А искать все возможные сочетания, где имена похожи между собой, — это, увы, пока никак
Ровно для тех же целей (поиск одинаковых альбомов с разным написанием имени) накатал программульку. Суть такова: в окошко копипастится список каталогов (один каталог - один альбом, у меня примерно так всё хранится), прога выдаёт релевантность для всех вхождений списка в виде:

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

99%: [2002] Pete Namlook & Klaus Schulze - Dark Side of the Moog IX\ <-> [2002] Pete Namlook & Klaus Schulze - The Dark Side of the Moog IX\
98%: [2006] The Pinker Tones - The Million Colour Revolution\ <-> [2006] The Pinkertones - The Million Colour Revolution\
98%: [2001] Juno Reactor - Master of the Universe\ <-> [2001] Juno Reactor - Masters of the Universe\
95%: [1996] VA - Les contes d'Hoffmann CD2\ <-> [1996] VA - Les contes d'Hoffmann CD3\
95%: [1996] Pete Namlook, Klaus Schulze & Bill Laswell - The Dark Side of the Moog IV\ <-> [1997] Pete Namlook, Klaus Schulze & Bill Laswell - The Dark Side of the Moog VI\
95%: [1996] Man With No Name - Earth Moving the Sun\ <-> [1998] Man With No Name - Earth Moving The Sun\
Единственный недостаток - тормозной алгоритм скопипащенный из какой-то базы знаний, пять тысяч строк сравнивались на Q6600 порядка 12 часов. Сначала хотел распараллелить алгоритм, чтобы задействовать все четыре ядра процессора, но, видимо, потупел с годами, не справился, плюнул и подождал, благо необходимость единоразовая.
Если кому такая утилитка нужна - могу выложить с исходниками.

Добавлено: Вс янв 24, 2010 22:10
Вахмурка
2D1P
Забавно будет пощупать.

А почему ты, написавший хренову гору утилит и плагинов, не хочешь сляпать страничку (хоть на том же Яндексе) и выложить туда свое свое добро?

Добавлено: Пн янв 25, 2010 08:34
D1P
2Вахмурка: Своё добро я на TCKB выкладываю. На общих основаниях.

Добавлено: Пн янв 25, 2010 11:35
Вахмурка
Ясно. Это я к тому, что обычно либо дают точное название утилитки (типа пусть сами ищут), либо выкладывают сцылу. Не сориентируешь на местности, как твою утилитку по поиску подобных имен попробовать?