AIMP Forum

AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started by: chemmalion on July 28, 2012, 15:12:44

Title: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on July 28, 2012, 15:12:44
Представляю вниманию программу для поиска потерянных/перемещённых/заменённых/переименнованных файлов.

Актуальная версия: 0.1.2 Beta
Скачать можно здесь:
AIMPSeeker on sourceforge (http://sourceforge.net/projects/aimpseeker/).

Утилитка ориентируется практически полностью только на названия файлов. На размер смотрит изредка, на остальные признаки не смотрит вообще (так как задачу извлечения информации из файлов разных форматов я пока что не ставил).
Предложив замены найденным файлам программа сохраняет результаты как в БД AIMP'а, так и во все плейлисты.

Возможности программы:
* Поиск перемещённых файлов (с определением перемещённых папок);
* Поиск несущественно переименованных файлов (добавили/удалили дату/артиста/трек и т.п., переформатировали);
* Поиск наилучшей замены удалённым файлам (например, при замене музыкальных треков на более качественные версии);
* Частичная поддержка формата cue (пока что утилита не справится с задачей автоматической замены: один cue <-> много mp3/flac/* ).
* Автоматическое резервирование профиля AIMP с возможностью восстановления.
* Возможность корректировать не только базу данных AIMP + его плейлисты, а также и свой список плейлистов, т.е. вручную указанный (но пока что поддерживается только формат AIMP, опять же).

Если найдёте какие-то проблемы, пожалуйста отпишитесь... :)


Quote from: Старая часть сообщения
При разработке столкнулся со следующей проблемой:

Для того, чтобы AIMP подхватил файл, вручную добавленный в его БД, требуется правильно рассчитать хеш имени (поле iNameHash). Если этот хеш рассчитать неправильно, то AIMP просто проигнонирует добавленную запись с создаст свою заново (с потерей рейтингов и статистики, разумеется).
Поэтому пока что нет возможности сохранить результаты поиска.

В связи с этим у меня просьба к Артёму: подскажи пожалуйста, как рассчитать этот самый iNameHash. Буду очень благодарен! :-[

Пока что сейчас можно только скачать утилитку и посмотреть, как она ищет замены файлам.... :)
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Hayo Tee on July 28, 2012, 19:34:16
Быстрее доделай. Мне понравилось.
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on July 28, 2012, 20:18:03
Собственно меня держит только незнание того, как рассчитать хеш для поля iNameHash. Здесь бы совет нашего любимого гуру. :)

Скорее всего этот хеш является CRC32 кодом.
Но, видимо, то ли с нестантарными значениями полинома, то ли с каким-то преобразованием данных попутным что-ли.
Я вооружился калькулятором CRC32 кода здесь: http://www.zorc.breitbandkatze.de/crc.html
Но так и не смог подобрать параметры, дающие такие же значения хеша, как и в БД AIMP'а.
Если для расчёта хеша использовалась какая-то стандартная функция из модулей Delphi, то знать бы какая... :)

В принципе конечно можно пойти очень извратными путями: запускать AIMP и как-то провоцировать его (через API что ли) добавлять новые записи в БД, затем выключать AIMP и устанавливать "старую" статистику на новые добавленные AIMP'ом файлы...
Но хочется проще. :)
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Artem on July 28, 2012, 21:44:30
Собственно меня держит только незнание того, как рассчитать хеш для поля iNameHash. Здесь бы совет нашего любимого гуру. :)

Code: [Select]
function WideElfHash(const S: WideString): Integer;
var
  ABuffer: TWidePathArr;
  AIndex: Integer;
  AScan: PWideChar;
begin
  Result := 0;
  LCMapStringW(0, LCMAP_UPPERCASE, PWideChar(S), Length(S) + 1, @ABuffer, SizeOf(ABuffer) div 2);

  Pointer(AScan) := @ABuffer;
  while AScan^ <> #$00 do
  begin
    Result := Result shl 4 + Ord(AScan^);
    AIndex := Result and $F0000000;
    Result := Result xor (AIndex shr 24);
    Result := Result and (not AIndex);
    Inc(AScan);
  end;
end;
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on July 28, 2012, 22:13:56
Огромное тебе спасибо, Артём! (http://www.kolobok.us/smiles/artists/laie/LaieA_044.gif) (http://www.kolobok.us/smiles/artists/laie/Laie_94.gif)
В ближайшее время должна родиться бетка... :)
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on August 22, 2012, 23:44:03
Итак : )
Родилась бетка.

* Интерфейс был переработан
* Теперь прога выполняет свои прямые обязанности - ищет потерянные файлы и обновляет на них ссылки как в базе данных AIMP, так и во всех плейлистах. :)
* Программа делает автоматические резервные копии профиля AIMP (одновременно до 5 копий) и, соответственно, даёт возможность восстановить профиль.

* Ручное редактирование пока что ещё не особо развито. Можно редактировать только по одной записи. Максимум - есть кнопка "применить к папке", которая позводит замену старого пути к файлу на новый для всех потерянных файлов из одной папки...

Пока что как-то так :-[
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Soolo on August 23, 2012, 10:10:05
что-то не могу выбрать папку профиля АИМП. Что именно нужно указывать?
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on August 23, 2012, 11:40:25
Вот примеры папки профиля:
Win7: c:\Users\superuser\AppData\Roaming\AIMP3
WinXP: c:\Documents and Settings\superuser\Application Data\AIMP3
Ещё вариант: c:\Program Files\AIMP3\Profile

Соответственно нужно зайти в такую папку и нажать кнопку "Выбор папки".


Обычно в папке профиля можно найти такие файлы и папки:
AudioLibrary (папка)
PLS (папка)
AIMP3.ini (файл)
+ ещё есть файлы и папки...


Вообще программа при первом запуске сама пытается обнаружить папку профиля.
Если этого не происходит, и при этом AIMP у тебя установлен как обычно (по-умолчанию), то это похоже баг.
Тоже самое, если выбираешь папку профиля сам, но профиль не читается, то тогда тоже имеется баг.
Ещё один момент: я совсем не тестировал работу проги на AIMP версии 2. Если у тебя вторая версия, то это тоже может быть причиной.

Сообщи пожалуйста, если у тебя один из этих случаев.
Если есть возможность, то укажи какой у тебя получается путь к папке профиля, или где именно ты нажимаешь кнопку "Выбрать папку" (при поиске папки профиля)
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Soolo on August 23, 2012, 11:44:59
У меня портативный АИМП3.10
папка соответственно c:\AIMP3\Profile
но она почему-то не выбирается

WinXPSP3
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on August 23, 2012, 15:27:06
Если есть возможность, отправь пожалуйста на почту или через личку эту папку в виде архива, я попробую разобраться, в чём причина.
Моя почта: chemmalion[собака]гмайл[тчк]ком
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Soolo on August 23, 2012, 15:36:05
Если есть возможность, отправь пожалуйста на почту
ничего необычного в папке нет
установил АИМП3.1build1072 в любую папку в портативном режиме и всё
папка профиля не выбирается
заполнил немного базу данных, создал плейлист
всё-равно не выбирается
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on August 23, 2012, 18:03:00
Нашёл и исправил багу. :)
Спасибо огромное за сообщенную информацию. :)
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: LS on September 29, 2012, 15:55:56
а где сам плагин?
прошу прощения, нашел
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: fyodorg on July 07, 2013, 19:32:32
XP,версия плеера 2.61 не выбирается папка..
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: Artem on July 07, 2013, 23:16:41
XP,версия плеера 2.61 не выбирается папка..

2.61 морально устарела, мы ее не поддерживаем
Title: Re: AIMPSeeker - утилита для поиска перемещённых или потерянных музыкальных файлов
Post by: chemmalion on July 10, 2013, 18:51:52
К сожалению, старые версии пока что не рассматривал вообще.

Примерно в январе 2014 года планирую причесать данную программку, сделать её более дружелюбной и понятной. Также ввести поддержку автоматических замен между "один файл + cue <-> куча файлов <-> куча файлов + cue".

В связи с чем прошу, если довелось работать с данной прогой, написать, что в ней неудобно/плохо/хотелось бы лучше.

Также если кто открыл данную прогу, посмотрел и тут же вышвырнул её подальше :), то прошу написать что именно оттолкнуло в ней. Это также может помочь сделать её более дружелюбной. :)