Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] умный поиск-сравнение и замена в списках

Ответить
Настройки темы
Любой язык - [решено] умный поиск-сравнение и замена в списках

Аватара для Baranius

Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Мои познания в программировании (78 год, вечерний факультет) ограничены словами "блок-схема", "Go to", "If" и "End". Поэтому с большим пиететом бродил по форуму, но понял, что из разных заготовок не смогу собрать решение для своей задачи. А задача, я думаю, актуальна для многих: как навести порядок среди музыкальных файлов и не потерять при этом плейлисты?, т.е. в первом приближении:
возможно ли в списке
старый плейлист
F:\_беспорядок\Гости\03Горовец_-_Ночным_Белградом.mp3
F:\_беспорядок\Гости\05-Gettin' In The Mood.mp3
F:\_беспорядок\Гости\06 - Маски Шоу - Догонялки (шляпки).mp3
F:\_беспорядок\Гости\012. Машина Времени - День Рождения.mp3
F:\_беспорядок\Гости\_ Катя Огонек - Воля - это жизнь.mp3
F:\_беспорядок\Гости\Bitch - Сука.mp3
F:\_беспорядок\Гости\Dan Balan&Брежнева - Лепестки Слез.mp3
F:\_беспорядок\Гости\Dj Slon feat Катя - Я Не Дам.mp3
F:\_беспорядок\Гости\Билан - Я Просто Люблю Тебя.mp3
F:\_беспорядок\Гости\Виктория - Винтаж.mp3
F:\_беспорядок\Гости\Елка - Прованс.mp3
F:\_беспорядок\Гости\Жанна Бичевская_-_Храни вас Бог!.mp3
F:\_беспорядок\Гости\ Катя Огонек - Белая тайга.mp3
F:\_беспорядок\Гости\Макаревич - Марионетки.mp3
F:\_беспорядок\Масленица\06 Весну звали (дети под народную).mp3
F:\_беспорядок\Масленица\07 Жавороночки, прилетите (нар).mp3
F:\_беспорядок\укр_ALL\+ХУРСЕНКО ВЯЧЕСЛАВ-ТАТО ТАТО(+).mp3
F:\_беспорядок\укр_ALL\04 - Гоп ца-ца (укр+) коса.mp3
F:\_беспорядок\укр_ALL\009 - ВЕСиЛЬНА ПОЛЬКА.mp3
F:\_беспорядок\укр_ALL\Горилку пью.mp3
F:\_беспорядок\укр_ALL\ДО СТОЛУ гей наливайте (обрезать).mp3
F:\_беспорядок\фирма\12 When The Hurt Is love.mp3
F:\_беспорядок\фирма\12-A change is gonna come.mp3
F:\_беспорядок\фирма\13 Give It Up To Love.mp3
F:\_беспорядок\фирма\_9,5 недель.mp3
F:\_беспорядок\фирма\Alexandra Stan - Mr Saxobeat.mp3
F:\_беспорядок\фирма\Alexandra Stan - Mr Saxobeat (RMX).mp3
F:\_беспорядок\фирма\Brian Setzer Orchestra - Don't Trust A Woman (In A Blac.mp3
F:\_беспорядок\фирма\Brian Setzer Orchestra - Don't Trust A Woman (RMX).mp3

отделить имя файла от пути (попутно очистив от шелухи в виде цифр, +, _,-, и т.д.), затем найти достаточно точное соответствие этому имени в списке
упорядочненные файлы на диске (Artist - Title)
E:\_порядок\work\Тамада\9,5 Недель - свад (ред).mp3
E:\_порядок\USA\abcdE\Alexandra Stan - Mr Saxobeat.mp3
E:\_порядок\USA\abcdE\Alexandra Stan - Mr Saxobeat (RMX).mp3
E:\_порядок\RU\# abc - xyz\Bitch - Сука.mp3
E:\_порядок\USA\abcdE\Brian Setzer - Don't Trust A Woman.mp3
E:\_порядок\USA\abcdE\Brian Setzer - Don't Trust A Woman (RMX).mp3
E:\_порядок\USA\abcdE\Brian Setzer - Gettin' In The Mood.mp3
E:\_порядок\RU\# abc - xyz\Dan Balan&Брежнева - Лепестки Слез.mp3
E:\_порядок\RU\# abc - xyz\Dj Slon&Катя - Я Не Дам.mp3
E:\_порядок\USA\klmnO\Lucky Peterson - A Change Is Gonna Come.mp3
E:\_порядок\USA\klmnO\Lucky Peterson - Compared To What.mp3
E:\_порядок\USA\klmnO\Mcclain Sam - When The Hurt Is Love.mp3
E:\_порядок\USA\pqrsT\Sam Mcclain - Give It Up To Love.mp3
E:\_порядок\USA\pqrsT\Stan - Mr Saxobeat.mp3
E:\_порядок\RU\абвгД\Билан - Я Просто Люблю Тебя.mp3
E:\_порядок\RU\абвгД\Билан - Я Так Люблю Тебя (М).mp3
E:\_порядок\RU\абвгД\Бичевская - Храни Вас Бог.mp3
E:\_порядок\RU\абвгД\Виктория - Винтаж.mp3
E:\_порядок\RU\абвгД\Гей Наливайте - До Столу.mp3
E:\_порядок\RU\абвгД\Горовец - Ночным Белградом.mp3
E:\_порядок\RU\ежзиК\Елка - Около Тебя.mp3
E:\_порядок\RU\ежзиК\Елка - Прованс.mp3
E:\_порядок\RU\лмноП\Макаревич - Марионетки.mp3
E:\_порядок\RU\лмноП\Маски Шоу - Догонялки.mp3
E:\_порядок\work\Национальные\Масленица\Масленица - Весну Звали.mp3
E:\_порядок\work\Национальные\Масленица\Масленица - Жавороночки.mp3
E:\_порядок\work\юбилей\Машина Времени - День Рождения.mp3
E:\_порядок\RU\лмноП\Огонек - Белая Тайга.mp3
E:\_порядок\RU\лмноП\Огонек - Воля-Это Жизнь.mp3
E:\_порядок\work\Национальные\UA\Укр - Весильна Полька.mp3
E:\_порядок\work\Национальные\UA\Укр - Гоп Ца-Ца.mp3
E:\_порядок\work\Национальные\UA\Укр - Горилку Пью.mp3
E:\_порядок\RU\хцчшщэюЯ\Хурсенко - Тато.mp3
E:\_порядок\RU\хцчшщэюЯ\Хурсенко - Ты простишь меня+.mp3

и выдать на гора свой список - "новый плейлист", в котором будут прописаны найденные соответствия уже с новыми путями?

Решаются ли такие задачи? Может для этих целей есть уже готовые решения, и я стучусь в открытые двери?

С уважением, Baranius.

Отправлено: 02:00, 25-05-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Baranius:
Решаются ли такие задачи? »
Без:
Цитата Baranius:
попутно очистив от шелухи в виде цифр, +, _,-, и т.д. »
— решаются. С ним — нет. Тем паче, что в реальности у Вас к «шелухе» относится много больше. И я слабо представляю себе, как можно автоматически сопоставить имя:
Код: Выделить весь код
+ХУРСЕНКО ВЯЧЕСЛАВ-ТАТО ТАТО(+).mp3
имени:
Код: Выделить весь код
Хурсенко - Тато.mp3
Или:
Код: Выделить весь код
04 - Гоп ца-ца (укр+) коса.mp3
и:
Код: Выделить весь код
Укр - Гоп Ца-Ца.mp3
2All…
SoundLike не предлагать, речь именно про автоматическое сопоставление.

Отправлено: 07:36, 25-05-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Мысли вслух - а что, если перед приведением файлов в порядок (переименование и сортировка), получить их хэши (MD5), соотнести с текущими именами файлов, построив этакий массив md5-имя, затем привести файлы в порядок, получить через For /R все отсортированные файлы, ещё раз получить md5 уже отсортированных файлов, и затем разбирать плейлисты, вытягивая из них старое имя, соотнося его с хэшем из массива, и затем подбирая нужный хэш из новых, отсортированных файлов, строя плейлист уже с новыми путями и именами?

Отправлено: 08:48, 25-05-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Anonymоus:
Мысли вслух - а что, если… »
Вполне гоже. Боюсь только, что мы уже имеем фактом, что «поезд уже уехал».

Отправлено: 10:16, 25-05-2012 | #4


Аватара для Baranius

Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Как я вижу этот "умный поиск-сравнение" (вот тебе и блок-схема)

- во-первых определиться, что список "старый плейлист" - это набор строк из "полных путей к файлам *.mp3";
- обратиться к первой строке;
- выделить имя файла из полного пути;
- исключить из этого имени все ненужное: цифры, +, _,-, и т.д.
- разделить имя на составляющие его слова (используя к примеру "пробел" как разделитель);
- сравнить полученные составляющие со списком "упорядочненные файлы на диске - (Artist - Title)" вот это, думаю, самое трудное - почти что Гугл получается;
- при совпадении всех слов (5-ти, 4-х, 3-х, 2-х - это будет степень точности) в одной строке списка "упорядочненные файлы на диске - (Artist - Title)", записать определенным способом (об этом позже) эту строку вместе с путем в список "новый плейлист";
- GoTo ко второй строке.
Эдак, лихо, по дилетански. Делов то!

Да! И насчет: ХУРСЕНКО ВЯЧЕСЛАВ-ТАТО ТАТО(+), а нельзя ли провести сначала поиск по одному слову - "ХУРСЕНКО", а затем в уже найденных совпадениях искать "ВЯЧЕСЛАВ", затем - "ТАТО", т.е. по очереди?

Последний раз редактировалось Baranius, 25-05-2012 в 13:07.


Отправлено: 13:00, 25-05-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Baranius:
- сравнить полученные составляющие со списком "упорядочненные файлы на диске - (Artist - Title)" вот это, думаю, самое трудное - почти что Гугл получается; »
Не трудное, а нереальное. Автоматизации точно не выйдет. Проще и быстрее создать плей-листы вручную заново.

Отправлено: 15:10, 25-05-2012 | #6


Аватара для Baranius

Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Не хочется сдаваться.
Anonymоus подсказал хорошую идею насчет контрольной суммы (MD5). Есть в плейлисте уникальное значение - (длительность в мсек), которое можно использовать как аналог MD5. Вот вид строки плейлиста:

1|полный путь|исполнитель|альбом|жанр|назв. песни|длительность мсек|размер байт)|№ трэка|год|44100|битрейт|каналы

Длительность в мсек получается как 6-ти значное число и совпадения будут очень редки. Задача сводится к поиску одинаковых значений поля "длительность в мсек" в двух списках: 1 - может содержать только |длительность мсек|, 2 - |длительность мсек|полный путь| Возможно ли это?

Отправлено: 11:24, 29-05-2012 | #7


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Baranius, имеющиеся утилиты (mp3info-win) не позволяют получить длительность в миллисекундах, только в секундах. Пример получения длительности:
Код: Выделить весь код
mp3info -p "%S" "QNTAL - Flamma.mp3"
Вот тут описан алгоритм рассчета длительности в миллисекундах, исходя из количества фреймов и битрейта, но как на мой взгляд, bat для реализации этого - не лучший выбор. Не забывайте, что подобный подсчет придется проводить для каждого файла.
Можно бы было попробовать организовать поиск, используя кроме старого имени из плейлиста, еще и информацию из IDv3 тегов (если они у вашей музыкальной коллекциии были прописаны), но лично я не хочу браться за эту задачу, успех её мне видится весьма сомнительным, учитывая затраченное время, проще будет пересоздать плейлисты вручную, а ведь автоматизация процесса призвана именно уменьшить затраченное время, а не увеличивать его.
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:51, 29-05-2012 | #8


Аватара для Baranius

Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Уважаемый Anonymоus!
Плеер AIMP сам генерирует плейлисты такого вида как я выложил выше и длительность там записана в виде 6-ти значного числа - сек+мсек, поэтому я и подумал, что этот параметр может послужить заменой MD5.
Вопрос не в том, как получить значение (длительности в данном случае), а как сравнить (соотнести) два списка с одинаковыми значениями в графе "длительность", но с разными значениями в графе "полный путь к файлу".

Отправлено: 16:00, 29-05-2012 | #9


Старожил


Сообщения: 415
Благодарности: 257

Профиль | Отправить PM | Цитировать


Baranius, хорошо, что вы уточнили, каким плеером был создан плейлист. AIMP сохраняет в .plc, кодировка файла UTF-16 LE. Сейчас посмотрю, как можно разобрать плейлист такого формата.
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:07, 29-05-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] умный поиск-сравнение и замена в списках

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файла на разных дисках Gawr33 Скриптовые языки администрирования Windows 11 23-04-2011 23:09
CMD/BAT - [решено] Поиск, остановка процесса, поиск и замена файлов на разных дисках 4zz Скриптовые языки администрирования Windows 2 21-02-2011 16:07
CMD/BAT - Сравнение и замена в файлах .txt Deep2007 Скриптовые языки администрирования Windows 4 19-11-2010 19:08
CMD/BAT - [решено] Поиск с условием и сравнение 63RW51 Скриптовые языки администрирования Windows 3 19-10-2010 07:25




 
Переход