Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Неофициальная Python библиотека для работы с API сервиса Яндекс.Музыка

License

NotificationsYou must be signed in to change notification settings

MarshalX/yandex-music-api

Делаю то, что по определённым причинам не сделала компания Yandex.

⚠️ Это неофициальная библиотека.

Сообщество разработчиков общаются и помогают друг другу вTelegram чате, присоединяйтесь!

Поддерживаемые Python версииПокрытие кода тестамиКачество кодаСтатус тестовСтатус документацииЛицензия LGPLv3

Содержание

Введение

Эта библиотека предоставляет Python интерфейс для никем незадокументированного и сделанного только для себя API Яндекс Музыки.

Она совместима с версиями Python 3.8+ и поддерживает работу как с синхронным, так и с асинхронным (asyncio) кодом.

В дополнение к реализации чистого API данная библиотека имеет ряд классов-обёрток — объектов высокого уровня, дабы сделать разработку клиентов и скриптов простой и понятной. Вся документация была написана с нуля исходя из логического анализа в ходе обратной разработки (reverse engineering) API.

Доступ к вашим данным Яндекс.Музыка

Задача по получению токена для доступа к данным лежит на плечах разработчиков, использующих данную библиотеку. О том как получить токен читайте вдокументации.

Установка

Вы можете установить или обновить Yandex Music API с помощью команды:

pip install -U yandex-music

Или вы можете установить из исходного кода с помощью команды:

git clone https://github.com/MarshalX/yandex-music-apicd yandex-music-apipython setup.py install

Начало работы

Приступив к работе, первым делом необходимо создать экземпляр клиента.

Инициализация синхронного клиента:

fromyandex_musicimportClientclient=Client()client.init()# илиclient=Client().init()

Инициализация асинхронного клиента:

fromyandex_musicimportClientAsyncclient=ClientAsync()awaitclient.init()# илиclient=awaitClient().init()

Вызовinit() необходим для получения информации — упрощения будущих запросов.

Работа без авторизации ограничена. Так, например, для загрузки будут доступны только первые 30 секунд аудиофайла. Для понимания всех ограничений зайдите на сайт Яндекс.Музыка в режиме инкогнито и воспользуйтесь сервисом.

Для доступа к личным данным следует авторизоваться. Это осуществляется через токен аккаунта Яндекс.Музыка.

Авторизация:

fromyandex_musicimportClientclient=Client('token').init()

После успешного создания клиента вы вольны в выборе необходимого метода из API. Все они доступны у объекта классаClient. Подробнее в методах клиента вдокументации.

Пример получения первого трека из плейлиста "Мне нравится" и его загрузки:

fromyandex_musicimportClientclient=Client('token').init()client.users_likes_tracks()[0].fetch_track().download('example.mp3')

В примере выше клиент получает список треков, которые были отмечены как понравившиеся. API возвращает объектTracksList, в котором содержится список с треками классаTrackShort. Данный класс содержит наиважнейшую информацию о треке и никаких подробностей, поэтому для получения полной версии трека со всей информацией необходимо обратиться к методуfetch_track(). Затем можно скачать трек методомdownload().

Пример получения треков по ID:

fromyandex_musicimportClientclient=Client().init()client.tracks(['10994777:1193829','40133452:5206873','48966383:6693286','51385674:7163467'])

В качестве ID трека выступает его уникальный номер и номер альбома. Первым треком из примера является следующий трек:music.yandex.ru/album/1193829/track/10994777

Выполнение запросов с использованием прокси в синхронной версии:

fromyandex_music.utils.requestimportRequestfromyandex_musicimportClientrequest=Request(proxy_url='socks5://user:password@host:port')client=Client(request=request).init()

Примеры Proxy URL:

Больше примеров тут:proxies - advanced usage - requests

Выполнение запросов с использованием прокси в асинхронной версии:

fromyandex_music.utils.request_asyncimportRequestfromyandex_musicimportClientAsyncrequest=Request(proxy_url='http://user:pass@some.proxy.com')client=awaitClientAsync(request=request).init()

Socks прокси не поддерживаются в асинхронной версии.

Про поддерживаемые прокси тут:proxy support - advanced usage - aiohttp

Изучение по примерам

Вот несколько примеров для обзора. Даже если это не ваш подход к обучению, пожалуйста, возьмите и бегло просмотрите их.

Код примеров опубликован в открытом доступе, поэтому вы можете взять его и начать писать вокруг него свой.

Посетитеэту страницу, чтобы изучить официальные примеры.

Особенности использования асинхронного клиента

При работе с асинхронной версией библиотеке стоит всегда помнитьследующие особенности:

  • Клиент следует импортировать с названиемClientAsync, а не простоClient.
  • При использовании методов-сокращений нужно выбирать метод с суффиксом_async.

Пояснение ко второму пункту:

fromyandex_musicimportClientAsyncclient=awaitClientAsync('token').init()liked_short_track= (awaitclient.users_likes_tracks())[0]# правильноfull_track=awaitliked_short_track.fetch_track_async()awaitfull_track.download_async()# НЕПРАВИЛЬНОfull_track=awaitliked_short_track.fetch_track()awaitfull_track.download()

Логирование

Данная библиотека использует модульlogging. Чтобы настроить логирование на стандартный вывод, поместите в начало вашего скрипта следующий код:

importlogginglogging.basicConfig(level=logging.DEBUG,format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

Вы также можете использовать логирование в вашем приложении, вызвавlogging.getLogger() и установить уровень какой вы хотите:

logger=logging.getLogger()logger.setLevel(logging.INFO)

Если вы хотитеDEBUG логирование:

logger.setLevel(logging.DEBUG)

Документация

Документацияyandex-music-api расположена наreadthedocs.io. Вашей отправной точкой должен быть классClient, а точнее его методы. Именно они выполняют все запросы на API и возвращают вам готовые объекты.Класс Client на readthedocs.io.

Получение помощи

Получить помощь можно несколькими путями:

Список изменений

Весь список изменений ведётся в файлеCHANGES.md.

Реализации на других языках

Внесение своего вклада в проект

Внесение своего вклада максимально приветствуется! Есть перечень пунктов, который стоит соблюдать. Каждый пункт перечня расписан вCONTRIBUTING.md.

Вы можете помочь и сообщив обаге или оновом поле пришедшем от API.

Спонсоры

JetBrains

JetBrains Logo (Main) logo.

JetBrains предоставляет бесплатный набор инструментов для разработки активным контрибьюторам некоммерческих проектов с открытым исходным кодом.

Лицензии для проектов с открытым исходным кодом — Программы поддержки

Лицензия

Вы можете копировать, распространять и модифицировать программное обеспечение при условии, что модификации описаны и лицензированы бесплатно в соответствии сLGPL-3. Произведения производных (включая модификации или что-либо статически связанное с библиотекой) могут распространяться только в соответствии с LGPL-3, но приложения, которые используют библиотеку, необязательно.

About

Неофициальная Python библиотека для работы с API сервиса Яндекс.Музыка

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Sponsor this project

 

Languages


[8]ページ先頭

©2009-2025 Movatter.jp