0 Members and 1 Guest are viewing this topic.
Добавь, пожалуйста, если возможно опцию "высокое качество", чтоб показывало только результаты с битрейтом 256 кбит/с и выше
Предлагаю сделать воспроизведение списка из ленты ( https://vk.com/feed ) и поиск по новостям, например:https://vk.com/search?c[q]=%23trance&c[section]=statusesОчень удобно искать по тегам. Но частенько идут повторы треков или в постах нет аудио (просто новости о исполнителе и т.п.)Если реализуете подобное, то будет весьма удобно. Есть еще баг. Если при поиске использовать во фразе # (решетку), то выкидывает ошибку "no access token passed". Собственно, это из-за того, что после решетки все остальные символы считаются комментарием, пример: vk.com/api?q=#trance&...&access_token=...Все остальные символы после решетки сервером отбрасываются, насколько мне известно. Поправьте.
Битрейт определяется элементарно (и никаких dos'ов):Делаем HEAD запрос к аудиофайлу, извлекаем заголовок Content-length (размер файла в байтах)Из массива ответа api vk берем длительность аудио (duration)Вычисляем битрейт по формуле: length / 128 / duration (сокращена от length * 8 / duration / 1024)Да, это вызовет некоторые задержки (до 10 секунд на 1000 файлов), но опция ведь необязательная и включается самим пользователем (а пользователь должен понимать, что определение битрейта займет некоторое время).
1. нужно обращаться к каждому файлу, причём много раз в секунду, иначе добавление файлов займёт часы, а это уже считайте ddos2. заголовки файлов VBR могут отсутствовать (это совсем не редкость), а значит метод вообще не сработаетОтсюда вывод - практически бесполезная (даже вредная) и полуработающая фича получится
Полагаю, вы не совсем понимаете о чем речь.1. Зачем несколько раз? 1 (один) HEAD запрос и на 1 файл.2. VK всегда отдает размер файла (Content-Length).
Не придирайтесь к словам. Много раз в секунду, но к разным файлам, естественно.Если длительность файлов забита в БД VK, то тогда да, функция будет работать всегда. Если же придётся обращаться к каждому файлу - то точно будут глюки.Ваш генератор составил плейлист, но не вижу в нём длительностей, битрейта и т.д., ведь мы про это сейчас разговариваем?
#EXTINF - дополнительная информация - длительность (в секундах), исполнитель '-' название композиции
http://localhost/vkAudio/playlist.m3u?query=[]trance&minDuration=60&maxDuration=1200&minBitrate=320&limit=250&useProxy=1
VK не ограничивает кол-во соединений в секунду на доступ к файлам (в разумных пределах). Т.е. до 1 тыс. запросов в секунду, думаю, можно делать. Ни меня, ни мой сервер не банили.
Длительность есть в плейлисте, откройте его текстовым редактором (notepad++ опционально), указана в секундах:
если так - то круто, просто я не в курсе о методах защиты VK от всякого рода атак (коих явно не мало происходит)да, чё-то я тупанул То есть определение битрейта сделать вполне реально. Что же оставляем эту дискуссию на прочтение разработчику, а он решит нужно оно или нет
protected function getBitrate($URL, $duration, $standardize = true) { $bitrate = null; if ( $URL != '' && $duration > 0 ) { $headers = myGetHeaders($URL); if ( isset($headers['Content-Length']) ) { $bitrate = $headers['Content-Length'] / 128 / $duration; if ( $standardize ) { $bStandards = $this->getBitrateStandards(); $tmp = []; foreach ( $bStandards as $bStandard ) { $tmp[$bStandard] = abs($bStandard - $bitrate); } natsort($tmp); $bitrate = key($tmp); } } } return $bitrate; } protected function getBitrateStandards() { $bitrates = []; $maxBitrate = 5120; for ( $bitrate = 32; $bitrate <= $maxBitrate; $bitrate += 32 ) { $bitrates[] = $bitrate; } return $bitrates; }
Вычисляем битрейт по формуле: length / 128 / duration (сокращена от length * 8 / duration / 1024)
Данная аппроксимация неприемлима, в mp3 содержатся не только аудиоданные, помимо них, в mp3 файле содержатся ID3 теги, размер которых явно не фиксированный, и может быть внушительных размеров.
Есть проблема: после того, как установил плагин и получил Access Token - ничего не происходит. Более того, в контектстном меню нет этих кнопок: