0 Members and 1 Guest are viewing this topic.
Еще раз всем привет.Продолжаю разбираться что к чему.Для начала хочу разобраться в каждом нужном мне куске логики, чтобы потом всё собрать до кучи.Недели 3 назад разбирался с sqlite на C++, вроде всё получилось, запросы выполнялись без проблем.Потом я был занят работой, и вот сегодня снова сел поковыряться, и теперь у меня конект срабатывает нормально, но когда выполняю запрос получаю "database is locked".В коде ничего поменять не успел.вот теперь не знаю, как быть если плеер лочит по своему желанию базу, и из плагина к ней никак не подключится, то всё пропало (Версия 4.02, 1725
Да. Во время работы плеера база заблокирована.Что вы хотите делать с базой? Распишите подробно
для начала нужно получать информацию о расположении файлов в библиотеке и посчитать им уникальный хеш,
затем буду пытаться добиться что бы на разных устройствах одни и те же файлы узнавались по посчитанному хешу, ведь он должен совпадать, тогда останeтся только синхронизировать изменения связанные со статистикой прослушивания
Это плохая идея. Время от времени структура базы меняется, иногда даже кардинально.Хеш будет совпадать только в том случае, если человек скопировал конкретно этот файл на свое устройство. Если в файле были поправлены теги, или он с более высоким битрейтом - хеш будет другим.
Не проще ли на всех устройствах использовать одинаковую структуру каталогов для музыки?Никаких плагинов не надо тогда, достаточно синхронизировать файл базы (это элементарно, хоть через облако).Всё прозрачно работает и никаких костылей.
у меня дома музыки около терабайта, а на рабочем ноуте гиг 50 ...если я домашнюю базу вставлю в ноут, что произойдёт когда аимп не найдёт файлы ?и что будет если, на ноуте появится новая музыка, а дома еще нет ?не думаю что это стабильное решениев идеале конечно иметь общее хранилище музыки, но аимп всё равно на каждом устройстве свой
Да ничего не произойдёт. Снимите галку "удалять несуществующие" и всё.Ну появится на ноуте новая музыка, Вы хотите её в базу добавить или нет? Если хотите, то рано или поздно всё равно же принесёте музыкальные файлы с ноута на комп. А если не хотите, зачем вообще тогда что-то синхронизировать, если у Вас априори разные библиотеки.Вы же то же самое решение предлагаете, только закостыленное
Ну вот смотрите, Вы хотите по уникальному признаку найти файл в домашней базе и подкрутить статистику.Ваш признак - хэш, которому доверять нельзя, как уже здесь выяснили. Я предлагаю в качестве уникального признака путь до файла - даже если теги поменяются, ничего страшного не произойдёт.Далее. Не нужно помнить/каждый раз копировать базу, это-то как раз должно быть автоматически, в первом же моём сообщении специально указано. Положил базу в облако - и забыл. Послушал дома, пришёл на работу - БД уже синхронизирована, послушал на работе, пришёл домой - все новые прослушивания на месте. Ни надо ни о чём думать.Короче, считаю спор непродуктивным, если Вам кажется плагинный вариант проще - пожалуйста, надеюсь что-то выйдет.Я не говорю, что Ваша идея плоха. Нет, цель Вы преследуте благую. Я толкую о том, что в текущих реалиях плагин писать не имеет смысла, можно решить проблему подручными средствами.Пока AIMP не научится сам делать что-то такое - все решения будут костыльными (Вы же всё равно доступ к БД в плагине не получите).Верно заметили, что универсального решения нет. Нужна поддержка от раззработчиков AIMP'а.Удачи.
я объяснил что хеш делается по аудио дате файла, игнорируя всё остальное, никакая метадата не участвует, и хеш получается стабильным, это распространённая практика
Простой хеш тут не подходит - допустим, вы заменили файл более качественным или переизданием. Есть специальные алгоритмы расчета слепка аудиоданных, которые не берут во внимание громкость и отклонения в пределах шумов.Что же касается синхронизацииПрямой доступ к базе - это плохо: 1. Структура базы может меняться от версии к версии. 2. Фонотека предусматривает не только локальные файлы, но и совершенно другие источники данных. К ним вы напрямую доступ уже не получите. На сколько я понял, то на текущий момент вам нужно лишь получить список полных путей для всех файлов, что проиндексированы фонотекой, так?