Онлайн-каталоги в ZXTune для Android.
Всем привет!
В связи с тем, что вышедший вчера новый релиз ZXTune для Android пополнился поддержкой еще одного онлайн-каталога, мне захотелось немного рассказать об истории возникновения и развития этой, не побоюсь этого слова, killer feature приложения.
Август 2012. В ZXTune была добавлена экспериментальная поддержка сетевых источников данных. В частности, в zxtune-qt можно было вставить ссылку на файл в интернете и он автоматически скачивался, анализировался, найденные треки добавлялись в плейлист и их даже можно было послушать. Сделано это было, скорее, для галочки — проверить правильность некоторых идей. Там даже кеширования не было!
Тем не менее, кое-кто обратил на это внимание:
Разумеется, интеграция с онлайн-библиотеками (типа упомянутого zxtunes.com) — это первое, что приходило на ум. Но отпугивал большой объем работ и небольшой профит — на десктопе под рукой всегда есть нормальный браузер, делать кастрированный вариант оного как-то не очень тянуло. Да и других работ хватало выше крыши.
Прошло полгода. Вместе с изучением Java и тонкостей программирования для Androidтелега запрягается поперед лошади делаются успешные попытки собрать код ZXTune для ARM и оценить перспективность сего действия. В результате рождается бенчмарк, дающий четкий и однозначный ответ — «Да, это все может работать на андроиде!» Параллельно идет переписка с djdron , к тому времени уже успешно реализовавшему некоторые онлайн-каталоги в своем Unreal Speccy Portable. Как пользователь, я оценил эту нереально классную фишку.
Февраль-Апрель 2013. Ко мне в аську стучится Newart с предложением по поводу интеграции будущего плеера с сайтом zxtunes.com. Обещаю набросать спецификацию протокола, в начале апреля рождается документ. Newart соглашается и… пропадает:)
Июнь 2013. В результате полугода разработки на свет появилсябастард прототип плеера для Android. Несмотря на наличие одного-единственного каталога модели «карта памяти», в архитектуру была заложена возможность расширения, ибо надежда умирает последней.
Октябрь 2013. Из небытия возвращается Newart и сообщает, что все готово. На волне энтузиазма за два дня была добавлена поддержка этого каталога, а также устаканена модель расширений, практически без изменений дожившая до текущего времени. Серверное API выдает информацию в формате xml, на клиенте используется база данных для кеширования структуры и внутренняя память для кеширования треков. Группировка треков только по авторам, до сих пор не исправленные баги на сервере, но начало положено! Стало доступно около 22 тысяч треков.
Декабрь 2013. Чисто случайно натыкаюсь на удобную веб-морду для знаменитой коллекции чиптюнов Modland. Также находятся следы некоего плагина для плеера xbmc, добавляющего навигацию по этому каталогу. Небольшая переписка с автором на предмет расширения API на серверной стороне ничем не закончилась — у автора нет времени, а у меня нет знаний по программированию на php — он мне предложил дать доступ к mysql серверу и самому написать гейт. Рассудив, что этот доступ мне ни к чему, да и может закрыться со временем, принял решение сделать самый кондовый и квадратно-гнездовой метод — парсить странички сайта. Для кеширования структуры на помощь опять приходит база данных (лучи добра создателям sqlite и решившим ее использовать в Android). Группировка треков уже гораздо сложнее — по авторам, по форматам и по коллекциям. Все это — около 400 тысяч файлов, из которых поддерживается примерно 60%.
Апрель 2014. После трехмесячного внедрения поддержки формата SID с перерывами на полежать в больнице возник вопрос каталога треков этого формата. Разумеется, им стал High Voltage SID Collection. Повторять подвиг с разбором страничек веб-морды на exotica не было ну никакого желания. Посему источником данных стало зеркало коллекции на tld-crew.de, через три месяца благополучно сдохнувшее и замененное на следующее зеркало по списку. Разбирать листинг каталога от http сервера несколько проще, а кешировать можно прямо скачанные странички. Результат — почти 45 тысяч файлов, 55 тысяч треков (чтоб представить как работать с этой кучей одним списком, рекомендую воспользоваться конкурентом :) )
Август-Сентябрь 2014. На связь выходит moroz1999 с предложением об интеграции со своим каталогом новой музыки для ZX-Spectrum. Используя наработки протокола по zxtunes.comи парное программирование удалось очень быстро сделать каталог с расширенным функционалом. На этот раз были группировки по авторам, по мероприятиям и топ треков по оценке пользователей сайта. Получил двойной профит- удовольствие от работы и бесплатный пиар на чиптюновых ресурсах:) На тот момент объем каталога составлял чуть более тысячи треков, но с тех пор изрядно увеличился.
Июнь-Июль 2015. После поддержки кучки звуковых форматов с разных консолей, положил глаз на линейку каталогов от Josh W. «И лишь одна проблема портила настроение» — музыка в этих каталогах была исключительно в архивах. Пришлось изрядно почесать репу чтобы работа с архивами выглядела как навигация по папкам. Никакого API на сервере нет, поэтому опять пришлось парсить странички со списком файлов.
Август 2015. Во время лазания по интернетам натыкаюсь на прекраснейший каталог Amiga Music Preservation, всем своим видом так и говорящий «и меня тоже поддержи!». Пришлось поддаться искушению:) Тут группировок треков особой нет, зато есть аж две группировки авторов- по нику и по стране происхождения. Причем список стран пришлось вычислять самостоятельно (заодно узнал, что невеселая страна R.I.P. прячется за номером 79). Хотелось бы сделать еще список авторов по группам, но не нашел способа получить их (групп) список. Но даже и без этого результат неплохой — более 130 тысяч треков.
На этом пока все:)
P.S. Если кто знает еще какие-нибудь интересные каталоги в качестве кандидатов на интеграцию — пишите в комментах. Требования простые — возможность восстановить модель коллекции путем парсинга страничек (если нет специализированного API) и возможность скачать любой трек по прямому урлу с протоколом http/https. А еще чтоб ZXTune поддерживал большинство треков и адекватные размеры коллекции, конечно.
Из того что я знаю и, возможно, будет интегрировано:
— asma.atari.org/ — пока не нашел пофайлового зеркала, каталогом может быть та же exotica
— www.modules.pl/
— modarchive.org/
— demodulate.scene.org/ — очень маленький
— www.chiptune.com/ — хренпойми как его парсить:)
— sndh.atari.org/ — пока не сделана поддержка sndh
UPD. Методом научного тыка таки найден способ получения списка всех групп для Amiga Music Preservation
В связи с тем, что вышедший вчера новый релиз ZXTune для Android пополнился поддержкой еще одного онлайн-каталога, мне захотелось немного рассказать об истории возникновения и развития этой, не побоюсь этого слова, killer feature приложения.
Август 2012. В ZXTune была добавлена экспериментальная поддержка сетевых источников данных. В частности, в zxtune-qt можно было вставить ссылку на файл в интернете и он автоматически скачивался, анализировался, найденные треки добавлялись в плейлист и их даже можно было послушать. Сделано это было, скорее, для галочки — проверить правильность некоторых идей. Там даже кеширования не было!
Тем не менее, кое-кто обратил на это внимание:
moroz1999 :
Я тут задумался — если плэйер уже работает с http, можно ли это как-то дополнительно задействовать? Где это могло бы быть удобно? На zxtunes.com, например?
Фича очень любопытная, применение какое-то винрарное крутится в голове, но никак не оформится. Радио, что ли, так организовать можно?
Или выставить файловые ассоциации, чтобы прямо из браузера, не скачивая, trd парсить?
Требуется поразмыслить.
Разумеется, интеграция с онлайн-библиотеками (типа упомянутого zxtunes.com) — это первое, что приходило на ум. Но отпугивал большой объем работ и небольшой профит — на десктопе под рукой всегда есть нормальный браузер, делать кастрированный вариант оного как-то не очень тянуло. Да и других работ хватало выше крыши.
Прошло полгода. Вместе с изучением Java и тонкостей программирования для Android
Февраль-Апрель 2013. Ко мне в аську стучится Newart с предложением по поводу интеграции будущего плеера с сайтом zxtunes.com. Обещаю набросать спецификацию протокола, в начале апреля рождается документ. Newart соглашается и… пропадает:)
Июнь 2013. В результате полугода разработки на свет появился
Октябрь 2013. Из небытия возвращается Newart и сообщает, что все готово. На волне энтузиазма за два дня была добавлена поддержка этого каталога, а также устаканена модель расширений, практически без изменений дожившая до текущего времени. Серверное API выдает информацию в формате xml, на клиенте используется база данных для кеширования структуры и внутренняя память для кеширования треков. Группировка треков только по авторам, до сих пор не исправленные баги на сервере, но начало положено! Стало доступно около 22 тысяч треков.
Декабрь 2013. Чисто случайно натыкаюсь на удобную веб-морду для знаменитой коллекции чиптюнов Modland. Также находятся следы некоего плагина для плеера xbmc, добавляющего навигацию по этому каталогу. Небольшая переписка с автором на предмет расширения API на серверной стороне ничем не закончилась — у автора нет времени, а у меня нет знаний по программированию на php — он мне предложил дать доступ к mysql серверу и самому написать гейт. Рассудив, что этот доступ мне ни к чему, да и может закрыться со временем, принял решение сделать самый кондовый и квадратно-гнездовой метод — парсить странички сайта. Для кеширования структуры на помощь опять приходит база данных (лучи добра создателям sqlite и решившим ее использовать в Android). Группировка треков уже гораздо сложнее — по авторам, по форматам и по коллекциям. Все это — около 400 тысяч файлов, из которых поддерживается примерно 60%.
Апрель 2014. После трехмесячного внедрения поддержки формата SID с перерывами на полежать в больнице возник вопрос каталога треков этого формата. Разумеется, им стал High Voltage SID Collection. Повторять подвиг с разбором страничек веб-морды на exotica не было ну никакого желания. Посему источником данных стало зеркало коллекции на tld-crew.de, через три месяца благополучно сдохнувшее и замененное на следующее зеркало по списку. Разбирать листинг каталога от http сервера несколько проще, а кешировать можно прямо скачанные странички. Результат — почти 45 тысяч файлов, 55 тысяч треков (чтоб представить как работать с этой кучей одним списком, рекомендую воспользоваться конкурентом :) )
Август-Сентябрь 2014. На связь выходит moroz1999 с предложением об интеграции со своим каталогом новой музыки для ZX-Spectrum. Используя наработки протокола по zxtunes.com
Июнь-Июль 2015. После поддержки кучки звуковых форматов с разных консолей, положил глаз на линейку каталогов от Josh W. «И лишь одна проблема портила настроение» — музыка в этих каталогах была исключительно в архивах. Пришлось изрядно почесать репу чтобы работа с архивами выглядела как навигация по папкам. Никакого API на сервере нет, поэтому опять пришлось парсить странички со списком файлов.
Август 2015. Во время лазания по интернетам натыкаюсь на прекраснейший каталог Amiga Music Preservation, всем своим видом так и говорящий «и меня тоже поддержи!». Пришлось поддаться искушению:) Тут группировок треков особой нет, зато есть аж две группировки авторов- по нику и по стране происхождения. Причем список стран пришлось вычислять самостоятельно (заодно узнал, что невеселая страна R.I.P. прячется за номером 79). Хотелось бы сделать еще список авторов по группам, но не нашел способа получить их (групп) список. Но даже и без этого результат неплохой — более 130 тысяч треков.
На этом пока все:)
P.S. Если кто знает еще какие-нибудь интересные каталоги в качестве кандидатов на интеграцию — пишите в комментах. Требования простые — возможность восстановить модель коллекции путем парсинга страничек (если нет специализированного API) и возможность скачать любой трек по прямому урлу с протоколом http/https. А еще чтоб ZXTune поддерживал большинство треков и адекватные размеры коллекции, конечно.
Из того что я знаю и, возможно, будет интегрировано:
— asma.atari.org/ — пока не нашел пофайлового зеркала, каталогом может быть та же exotica
— www.modules.pl/
— modarchive.org/
— demodulate.scene.org/ — очень маленький
— www.chiptune.com/ — хренпойми как его парсить:)
— sndh.atari.org/ — пока не сделана поддержка sndh
UPD. Методом научного тыка таки найден способ получения списка всех групп для Amiga Music Preservation
15 комментариев
Vitamin , буквально вчера очередное обновление, и я думаю — почему ты молчишь об изменениях :)
спасибо за ZXTune!
Пожалуйста!:)
Если вы захотите данные из ZX-Art экспортнуть разово/наладить постоянное общение в свой эмулятор/проигрыватель/просмотрщик/мобильное приложение/онлайн коллекцию/вебсайт — дайте мне знать, помогу наладить, допишу недостающее, пофиксю неработающее.
Классная софтинка
Чтобы оценить как они сказываются на качестве, нужно слушать треки на хороших наушниках и во время прослушивания переключать настройку, соответствующую типу звучащего в данный момент чипа (иными словами, бесполезно менять интерполяцию для SID при прослушивании AY/YM трека и наоборот).