AIMP Forum
AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started 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, опять же).
Если найдёте какие-то проблемы, пожалуйста отпишитесь... :)
При разработке столкнулся со следующей проблемой:
Для того, чтобы AIMP подхватил файл, вручную добавленный в его БД, требуется правильно рассчитать хеш имени (поле iNameHash). Если этот хеш рассчитать неправильно, то AIMP просто проигнонирует добавленную запись с создаст свою заново (с потерей рейтингов и статистики, разумеется).
Поэтому пока что нет возможности сохранить результаты поиска.
В связи с этим у меня просьба к Артёму: подскажи пожалуйста, как рассчитать этот самый iNameHash. Буду очень благодарен! :-[
Пока что сейчас можно только скачать утилитку и посмотреть, как она ищет замены файлам.... :)
-
Быстрее доделай. Мне понравилось.
-
Собственно меня держит только незнание того, как рассчитать хеш для поля iNameHash. Здесь бы совет нашего любимого гуру. :)
Скорее всего этот хеш является CRC32 кодом.
Но, видимо, то ли с нестантарными значениями полинома, то ли с каким-то преобразованием данных попутным что-ли.
Я вооружился калькулятором CRC32 кода здесь: http://www.zorc.breitbandkatze.de/crc.html
Но так и не смог подобрать параметры, дающие такие же значения хеша, как и в БД AIMP'а.
Если для расчёта хеша использовалась какая-то стандартная функция из модулей Delphi, то знать бы какая... :)
В принципе конечно можно пойти очень извратными путями: запускать AIMP и как-то провоцировать его (через API что ли) добавлять новые записи в БД, затем выключать AIMP и устанавливать "старую" статистику на новые добавленные AIMP'ом файлы...
Но хочется проще. :)
-
Собственно меня держит только незнание того, как рассчитать хеш для поля iNameHash. Здесь бы совет нашего любимого гуру. :)
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;
-
Огромное тебе спасибо, Артём! (http://www.kolobok.us/smiles/artists/laie/LaieA_044.gif) (http://www.kolobok.us/smiles/artists/laie/Laie_94.gif)
В ближайшее время должна родиться бетка... :)
-
Итак : )
Родилась бетка.
* Интерфейс был переработан
* Теперь прога выполняет свои прямые обязанности - ищет потерянные файлы и обновляет на них ссылки как в базе данных AIMP, так и во всех плейлистах. :)
* Программа делает автоматические резервные копии профиля AIMP (одновременно до 5 копий) и, соответственно, даёт возможность восстановить профиль.
* Ручное редактирование пока что ещё не особо развито. Можно редактировать только по одной записи. Максимум - есть кнопка "применить к папке", которая позводит замену старого пути к файлу на новый для всех потерянных файлов из одной папки...
Пока что как-то так :-[
-
что-то не могу выбрать папку профиля АИМП. Что именно нужно указывать?
-
Вот примеры папки профиля:
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. Если у тебя вторая версия, то это тоже может быть причиной.
Сообщи пожалуйста, если у тебя один из этих случаев.
Если есть возможность, то укажи какой у тебя получается путь к папке профиля, или где именно ты нажимаешь кнопку "Выбрать папку" (при поиске папки профиля)
-
У меня портативный АИМП3.10
папка соответственно c:\AIMP3\Profile
но она почему-то не выбирается
WinXPSP3
-
Если есть возможность, отправь пожалуйста на почту или через личку эту папку в виде архива, я попробую разобраться, в чём причина.
Моя почта: chemmalion[собака]гмайл[тчк]ком
-
Если есть возможность, отправь пожалуйста на почту
ничего необычного в папке нет
установил АИМП3.1build1072 в любую папку в портативном режиме и всё
папка профиля не выбирается
заполнил немного базу данных, создал плейлист
всё-равно не выбирается
-
Нашёл и исправил багу. :)
Спасибо огромное за сообщенную информацию. :)
-
а где сам плагин?
прошу прощения, нашел
-
XP,версия плеера 2.61 не выбирается папка..
-
XP,версия плеера 2.61 не выбирается папка..
2.61 морально устарела, мы ее не поддерживаем
-
К сожалению, старые версии пока что не рассматривал вообще.
Примерно в январе 2014 года планирую причесать данную программку, сделать её более дружелюбной и понятной. Также ввести поддержку автоматических замен между "один файл + cue <-> куча файлов <-> куча файлов + cue".
В связи с чем прошу, если довелось работать с данной прогой, написать, что в ней неудобно/плохо/хотелось бы лучше.
Также если кто открыл данную прогу, посмотрел и тут же вышвырнул её подальше :), то прошу написать что именно оттолкнуло в ней. Это также может помочь сделать её более дружелюбной. :)