newsare.net
Привет Хабр, недавно я решил написать свой аудио плеер, используя разные платформы и фреймворки. Но, сегодня статья не совсем об этом. На этапSoundCloud Api или как пример «плохой» документации
Привет Хабр, недавно я решил написать свой аудио плеер, используя разные платформы и фреймворки. Но, сегодня статья не совсем об этом. На этапе требований к технической составляющей проекта я решил, что нужно какой-то место откуда можно «подтаскивать» мелодии. Пересмотрел я много api и остановился на SoundCloud из-за ряда преимуществ: 1. Бесплатно 2. Удобно(по крайне мере я так думал в начале)Выбор сделан, а значит пора почитать документацию и составить парочку get, post запросов. Для базового функционала в виде скачивания и поиска музыки требуется всего 3 запроса. Но если бы то по какому пути отправлять запрос, какие параметры должны присутствовать в запросе и.т.д было бы известно сразу то эта статья не вышла бы. Как я уже говорил документацию я прочитал и выяснил несколько вещей:1. Вот так выглядит запрос на поиск2. У SoundCloud api нельзя просто так взять и скачать трек(например в формате .mp3)Забегая наперёд(т.к эта статья не об этой теме) 2 проблему можно решить используя FFmpeg. Дело в том что, хоть SoundCloud Api не поддерживает скачивание, но за то он позволяет использовать потоковое вещание(то есть формат .m3u8). Соответственно мы можем скачать музыку в виде такого файла и конвертировать его с помощью FFmpeg.ffmpeg -i «ссылка полученная с 3 запроса» -c copy -f mp3 «путь к папке куда будете сохронять + имя.формат» Пока что всё идёт идеально до первого тестового запроса. Как видите сервер вернул 403. Я стал искать на различных форумах почему так происходит и выяснил что у api SoundCloud есть 2 версии. Отличаются они не многим, разве что во второй версии нет эндпоинтов, посвящённых получению oauth токенов. Но тот факт что 2 версия никак не задокументирована заставил:A) ,,злиться и ругаться’’B) Долго искать по разным форумам отрывки нужных мне эндпоинтов.В ходе поисков помимо того что я нашёл нужные мне эндпоинты, я смог выяснить что вторая версия api не задокументирована потому что до сих пор находится в разработке(с 2019 года) и может изменятся. Подробнее тут.После того как вы получите oauth токен на сайте, то смело можете составлять ниже приведённые запросы(p.s я использую Postman и все запросы get):Для поиска:https://api-v2.soundcloud.com/search?q=название трека&limit=количество ответовВ ответ вы получите json в котором вам нужен вот такой блок:«media»: { «transcodings»: [ { «url»: «тут будет нужный вам uri», «preset»: ««, »duration«: »«, »snipped«: false, »format«: { »protocol«: »hls«, »mime_type«: »audio/mpeg« }, »quality«: »» }, ] },Далее используйте полученный uri, чтобы получить ещё один uri:И вот уже этот Uri используйте для команды в ffmpeg Читать далее Read more