AIMP Forum
AIMP for Windows => Дополнения / Addons => Разработка / Development => Topic started by: HardRock on June 10, 2016, 15:55:19
-
Всем привет, хочу сделать свой плагин.
СДК скачал, но там хелпы битые, все страницы пустые, но может это 10ая винда их так открывает.
У меня почти весь опыт это веб и мобильная разработка, для десктопа ничего не делал ни разу, разве что скрипты на яве.
По этому прошу помощи, расскажите пожалуйста с чего начать ?
какое ИДЕ поставить ?
какой язык выбрать ?
есть ли документация по API ?
что делать с пустыми хелпами ?
может я где-то пропустил "Hello, world!" туториал ?
хочу сделать плагин для работы с данными статистики, прослушивания, рейтинги и тд...
то есть в принципе работы с интерфейсом практически нет, разве что настройки какие-то потом придумаю, но то уже такое ...
-
хелпы битые, все страницы пустые, но может это 10ая винда их так открывает.
в свойствах файла нажмите "разблокировать"
какой язык выбрать ?
а на каком умеете?
SDK есть для Delphi и C++
может я где-то пропустил "Hello, world!" туториал ?
Демки есть
-
в свойствах файла нажмите "разблокировать"
спасибо :)
-
в свойствах файла нажмите "разблокировать"
а на каком умеете?
SDK есть для Delphi и C++
Демки есть
а есть проекты на C++ ?
в СДК демки только на делфи, а от C++ только *.h файлы, или этого должно быть достаточно ?
-
а есть проекты на C++ ?
в СДК демки только на делфи, а от C++ только *.h файлы, или этого должно быть достаточно ?
Демок на С++ нет. В принципе, дельфевских демок достаточно для понимания, как это работает
-
Демок на С++ нет. В принципе, дельфевских демок достаточно для понимания, как это работает
буду пытаться. раз больше ничего не остаётся, просто делфи вообще не использовал ниразу
-
Можете посмотреть в этой (https://www.aimp.ru/forum/index.php?topic=52150.0) теме. Там есть ссылки на исходники плагинов на С++.
-
Можете посмотреть в этой (https://www.aimp.ru/forum/index.php?topic=52150.0) теме. Там есть ссылки на исходники плагинов на С++.
Спасибо, один плагин всё таки получилось сбилдить и подключить к аимпу)
А теперь я смотрю в АПИ, и уже начинаю сомневаться что там есть то что мне нужно, через апи есть возможность получить доступ к статистике воспроизведения и вообще делать с нею какие-то манипуляции ?
-
через апи есть возможность получить доступ к статистике воспроизведения и вообще делать с нею какие-то манипуляции ?
Доступ есть. Манипуляции - нет (разве что оценку выставить). Какие манипуляции нужны?
-
Доступ есть. Манипуляции - нет (разве что оценку выставить). Какие манипуляции нужны?
на первых порах хотелось бы разобраться как получить/установить рейтинг, количество прослушиваний, оценку
и еще нужен путь к файлу на диске
идея плагина состоит в том, чтобы он занимался синхронизацией статистики между разными устройствами,
беда в том что я вебом и немного мобильной разработкой занимаюсь уже давно, а в десктопных делах на c++ опыта нету совсем
-
на первых порах хотелось бы разобраться как получить/установить рейтинг, количество прослушиваний, оценку
идея плагина состоит в том, чтобы он занимался синхронизацией статистики между разными устройствами,
Синхронизацию вы сделать не сможете. Поскольку рейтинг и количество прослушиваний доступны только для чтения. Рейтинг вообще рассчитывается динамически по истории воспроизведения.
беда в том что я вебом и немного мобильной разработкой занимаюсь уже давно, а в десктопных делах на c++ опыта нету совсем
Разве есть принципиальная разница?
-
Синхронизацию вы сделать не сможете. Поскольку рейтинг и количество прослушиваний доступны только для чтения. Рейтинг вообще рассчитывается динамически по истории воспроизведения.
Разве есть принципиальная разница?
плохо :(
мне всегда не хватало общей базы по своим любимым песням, нельзя же в голове удержать всё что ты когда-то любил слушать, очень хочется всё это централизовать, хотя бы для себя, но уверен это много кому интересно
читать C++ сложно, без подготовки :)
-
По найденным примерам кое как собрал до кучи код, скомпилось всё, но почему-то плагин не появляется в списке аимпа.
почти точно такой же плагин из другого примера сработал нормально и добавился в плеер, а этот мой вариант никак не хочет :(
Если не сложно, посмотрите пожалуйста в исходники, в чём может быть проблема ?
-
У вас не указан Module Definition File (см. картинку ниже). ПКМ на пункте проекта (а не солюшена), в появившемся окне в разделе "Linker/Input" укажите нужный файл (в данном случае exports.def). Только перед этим лучше сверху в поле "Configuration" задать как "All Configurations", чтобы дважды не указывать этот файл.
(http://i.imgur.com/SbK7dtL.png)
Можно экспортировать функции без всяких def файлов, но у меня не получалось. Если хотите - погуглите, такой способ будет проще.
-
У вас не указан Module Definition File (см. картинку ниже). ПКМ на пункте проекта (а не солюшена), в появившемся окне в разделе "Linker/Input" укажите нужный файл (в данном случае exports.def). Только перед этим лучше сверху в поле "Configuration" задать как "All Configurations", чтобы дважды не указывать этот файл.
(http://i.imgur.com/SbK7dtL.png)
Можно экспортировать функции без всяких def файлов, но у меня не получалось. Если хотите - погуглите, такой способ будет проще.
Зарботало !
спасибо огромное )
файл этот есть но я не шарил что его куда-то нужно прописать :)
-
Еще раз всем привет.
Продолжаю разбираться что к чему.
Для начала хочу разобраться в каждом нужном мне куске логики, чтобы потом всё собрать до кучи.
Недели 3 назад разбирался с sqlite на C++, вроде всё получилось, запросы выполнялись без проблем.
Потом я был занят работой, и вот сегодня снова сел поковыряться, и теперь у меня конект срабатывает нормально, но когда выполняю запрос получаю "database is locked".
В коде ничего поменять не успел.
вот теперь не знаю, как быть если плеер лочит по своему желанию базу, и из плагина к ней никак не подключится, то всё пропало (
Версия 4.02, 1725
-
Еще раз всем привет.
Продолжаю разбираться что к чему.
Для начала хочу разобраться в каждом нужном мне куске логики, чтобы потом всё собрать до кучи.
Недели 3 назад разбирался с sqlite на C++, вроде всё получилось, запросы выполнялись без проблем.
Потом я был занят работой, и вот сегодня снова сел поковыряться, и теперь у меня конект срабатывает нормально, но когда выполняю запрос получаю "database is locked".
В коде ничего поменять не успел.
вот теперь не знаю, как быть если плеер лочит по своему желанию базу, и из плагина к ней никак не подключится, то всё пропало (
Версия 4.02, 1725
Да. Во время работы плеера база заблокирована.
Что вы хотите делать с базой? Распишите подробно
-
Да. Во время работы плеера база заблокирована.
Что вы хотите делать с базой? Распишите подробно
для начала нужно получать информацию о расположении файлов в библиотеке и посчитать им уникальный хеш, потом всё это дело сохранить в таблицу и отравить на сервер
затем буду пытаться добиться что бы на разных устройствах одни и те же файлы узнавались по посчитанному хешу, ведь он должен совпадать, тогда останeтся только синхронизировать изменения связанные со статистикой прослушивания
-
для начала нужно получать информацию о расположении файлов в библиотеке и посчитать им уникальный хеш,
Это плохая идея. Время от времени структура базы меняется, иногда даже кардинально.
затем буду пытаться добиться что бы на разных устройствах одни и те же файлы узнавались по посчитанному хешу, ведь он должен совпадать, тогда останeтся только синхронизировать изменения связанные со статистикой прослушивания
Хеш будет совпадать только в том случае, если человек скопировал конкретно этот файл на свое устройство. Если в файле были поправлены теги, или он с более высоким битрейтом - хеш будет другим.
-
Это плохая идея. Время от времени структура базы меняется, иногда даже кардинально.
Хеш будет совпадать только в том случае, если человек скопировал конкретно этот файл на свое устройство. Если в файле были поправлены теги, или он с более высоким битрейтом - хеш будет другим.
я думал сделать свою таблицу, можно конечно сделать свою базу, но тогда нужен доступ хотя бы для чтения данных
как вариант скопировать файл базы целиком, и работать с ним, потом удалять его и копировать по новому по мере надобности, но это костыль
с хешом я уже всё продумал, для mp3 буду делать хеш аудио даты, игнорируя теги, а у flac есть метатег с хешом, главное хотя бы эти 2 основных формата сделать
в общем чтение из базы нужно, без него никак
-
Не проще ли на всех устройствах использовать одинаковую структуру каталогов для музыки?
Никаких плагинов не надо тогда, достаточно синхронизировать файл базы (это элементарно, хоть через облако).
Всё прозрачно работает и никаких костылей.
-
Не проще ли на всех устройствах использовать одинаковую структуру каталогов для музыки?
Никаких плагинов не надо тогда, достаточно синхронизировать файл базы (это элементарно, хоть через облако).
Всё прозрачно работает и никаких костылей.
у меня дома музыки около терабайта, а на рабочем ноуте гиг 50 ...
если я домашнюю базу вставлю в ноут, что произойдёт когда аимп не найдёт файлы ?
и что будет если, на ноуте появится новая музыка, а дома еще нет ?
не думаю что это стабильное решение
в идеале конечно иметь общее хранилище музыки, но аимп всё равно на каждом устройстве свой
-
у меня дома музыки около терабайта, а на рабочем ноуте гиг 50 ...
если я домашнюю базу вставлю в ноут, что произойдёт когда аимп не найдёт файлы ?
и что будет если, на ноуте появится новая музыка, а дома еще нет ?
не думаю что это стабильное решение
в идеале конечно иметь общее хранилище музыки, но аимп всё равно на каждом устройстве свой
Да ничего не произойдёт. Снимите галку "удалять несуществующие" и всё.
Ну появится на ноуте новая музыка, Вы хотите её в базу добавить или нет? Если хотите, то рано или поздно всё равно же принесёте музыкальные файлы с ноута на комп. А если не хотите, зачем вообще тогда что-то синхронизировать, если у Вас априори разные библиотеки.
Вы же то же самое решение предлагаете, только закостыленное
-
Да ничего не произойдёт. Снимите галку "удалять несуществующие" и всё.
Ну появится на ноуте новая музыка, Вы хотите её в базу добавить или нет? Если хотите, то рано или поздно всё равно же принесёте музыкальные файлы с ноута на комп. А если не хотите, зачем вообще тогда что-то синхронизировать, если у Вас априори разные библиотеки.
Вы же то же самое решение предлагаете, только закостыленное
они не совсем разные, просто на ноуте лежит то что слушаю в последнее время
дома структура аудиотеки может поменяться
копировать каждый раз базу - штука стрёмная, и больше похожа на костыль
об этом нужно помнить, и постоянно это делать. какая уже тут автоматизация ?
с плагином намного лучше, поставил, настроил и забыл
если идея не нравится, я никого не заставляю в ней участвовать
мне давно хотелось сделать такую штуку, и попыток было много разных. но универсального решения всё еще нет
-
Ну вот смотрите, Вы хотите по уникальному признаку найти файл в домашней базе и подкрутить статистику.
Ваш признак - хэш, которому доверять нельзя, как уже здесь выяснили. Я предлагаю в качестве уникального признака путь до файла - даже если теги поменяются, ничего страшного не произойдёт.
Далее. Не нужно помнить/каждый раз копировать базу, это-то как раз должно быть автоматически, в первом же моём сообщении специально указано. Положил базу в облако - и забыл. Послушал дома, пришёл на работу - БД уже синхронизирована, послушал на работе, пришёл домой - все новые прослушивания на месте. Ни надо ни о чём думать.
Короче, считаю спор непродуктивным, если Вам кажется плагинный вариант проще - пожалуйста, надеюсь что-то выйдет.
Я не говорю, что Ваша идея плоха. Нет, цель Вы преследуте благую. Я толкую о том, что в текущих реалиях плагин писать не имеет смысла, можно решить проблему подручными средствами.
Пока AIMP не научится сам делать что-то такое - все решения будут костыльными (Вы же всё равно доступ к БД в плагине не получите).
Верно заметили, что универсального решения нет. Нужна поддержка от раззработчиков AIMP'а.
Удачи.
-
Ну вот смотрите, Вы хотите по уникальному признаку найти файл в домашней базе и подкрутить статистику.
Ваш признак - хэш, которому доверять нельзя, как уже здесь выяснили. Я предлагаю в качестве уникального признака путь до файла - даже если теги поменяются, ничего страшного не произойдёт.
Далее. Не нужно помнить/каждый раз копировать базу, это-то как раз должно быть автоматически, в первом же моём сообщении специально указано. Положил базу в облако - и забыл. Послушал дома, пришёл на работу - БД уже синхронизирована, послушал на работе, пришёл домой - все новые прослушивания на месте. Ни надо ни о чём думать.
Короче, считаю спор непродуктивным, если Вам кажется плагинный вариант проще - пожалуйста, надеюсь что-то выйдет.
Я не говорю, что Ваша идея плоха. Нет, цель Вы преследуте благую. Я толкую о том, что в текущих реалиях плагин писать не имеет смысла, можно решить проблему подручными средствами.
Пока AIMP не научится сам делать что-то такое - все решения будут костыльными (Вы же всё равно доступ к БД в плагине не получите).
Верно заметили, что универсального решения нет. Нужна поддержка от раззработчиков AIMP'а.
Удачи.
я объяснил что хеш делается по аудио дате файла, игнорируя всё остальное, никакая метадата не участвует, и хеш получается стабильным, это распространённая практика
всё еще нужен доступ к базе, или альтернатива ему
-
я объяснил что хеш делается по аудио дате файла, игнорируя всё остальное, никакая метадата не участвует, и хеш получается стабильным, это распространённая практика
Простой хеш тут не подходит - допустим, вы заменили файл более качественным или переизданием. Есть специальные алгоритмы расчета слепка аудиоданных, которые не берут во внимание громкость и отклонения в пределах шумов.
Что же касается синхронизации
Прямой доступ к базе - это плохо:
1. Структура базы может меняться от версии к версии.
2. Фонотека предусматривает не только локальные файлы, но и совершенно другие источники данных. К ним вы напрямую доступ уже не получите.
На сколько я понял, то на текущий момент вам нужно лишь получить список полных путей для всех файлов, что проиндексированы фонотекой, так?
-
Простой хеш тут не подходит - допустим, вы заменили файл более качественным или переизданием. Есть специальные алгоритмы расчета слепка аудиоданных, которые не берут во внимание громкость и отклонения в пределах шумов.
Что же касается синхронизации
Прямой доступ к базе - это плохо:
1. Структура базы может меняться от версии к версии.
2. Фонотека предусматривает не только локальные файлы, но и совершенно другие источники данных. К ним вы напрямую доступ уже не получите.
На сколько я понял, то на текущий момент вам нужно лишь получить список полных путей для всех файлов, что проиндексированы фонотекой, так?
да, нужны пути к физическим файлам, еще нужна возможность обновлять количество прослушиваний и оцентку
по поводу хеша, я думал над таким вариантом, нашёл пару либ, на эту тему
но всё таки одинаковые песни с разным уровнем громкости, или разной датой релиза, тоже нужно отличать, помню часто сам выбирал из десятка вариантов, одной и той же песни, тот в котором громкость по больше + версия не урезанная, или лайв версия
хеш по аудио дате сделать легче, а сравнение по слепку можно будет добавить как опцию