Music player for Discord
Project description
Документация
Для пользователей библиотеки
Описание
dsplayer
- это библиотека для Discord ботов. Она позволяет подключаться к голосовым каналам, воспроизводить треки из различных источников и управлять очередью воспроизведения. Также она имеет плагины, которые способны расширить количество платформ.
Установка
Установите библиотеку с помощью pip:
pip install dsplayer
Подробный пример создания бота
В example.py вы найдете пример создания бота, использующего dsplayer
.
Плагины
В dsplayer
предусмотрены следующие плагины:
- Query - этот плагин позволяет производить поиск музыки по ее названию.
- Spotify - этот плагин позволяет искать треки, плейлисты и авторов из Spotify.
- YouTube - этот плагин позволяет искать треки из YouTube, YouTube Music, YouTube Shorts.
- SoundCloud - этот плагин позволяет искать треки, плейлисты и авторов из SoundCloud.
- Apple Music - этот плагин позволяет искать треки из Apple Music.
Поисковые движки
В dsplayer
предусмотрены следующие поисковые движки:
- SoundCloud - он имеет точность выше, чем
YouTube Music
, но поиск может занимать 2-3+ секунды вместо 1-2. - YouTube Music - он имеет более низкую точность, но он быстрее, чем
SoundCloud
. - Bandcamp - он имеет достаточно высокую точность и производительность как у
YouTube Music
События
Класс Player
генерирует несколько событий через event_emitter
. Эти события можно использовать для выполнения пользовательских действий в ответ на различные состояния воспроизведения. Ниже приведен список событий и когда они генерируются:
-
on_connect
- Описание: Генерируется, когда бот успешно подключается к голосовому каналу.
- Метод:
connect
-
on_disconnect
- Описание: Генерируется, когда бот отключается от голосового канала.
- Метод:
disconnect
-
on_play
- Описание: Генерируется, когда начинается воспроизведение трека.
- Метод:
play_next
-
on_add_to_queue
- Описание: Генерируется, когда трек добавляется в очередь.
- Метод:
add_and_play
-
on_stop
- Описание: Генерируется, когда воспроизведение останавливается и очередь очищается.
- Метод:
stop
-
on_pause
- Описание: Генерируется, когда воспроизведение приостанавливается.
- Метод:
pause
-
on_resume
- Описание: Генерируется, когда воспроизведение возобновляется после паузы.
- Метод:
resume
-
on_skip
- Описание: Генерируется, когда текущий трек пропускается.
- Метод:
skip
-
on_update_plugin_settings
- Описание: Генерируется, когда настройки плагинов обновляются.
- Метод:
update_plugin_settings
-
on_track_end
- Описание: Генерируется, когда трек заканчивает воспроизводиться.
- Метод:
play_next
-
on_volume_change
- Описание: Генерируется при изменении уровня громкости.
- Метод:
set_volume
-
on_error
- Описание: Генерируется при возникновении ошибки.
- Метод:
play_next
,find_track_info
-
on_track_search_start
- Описание: Генерируется при начале поиска трека.
- Метод:
find_track_info
-
on_track_search_end
- Описание: Генерируется при завершении поиска трека.
- Метод:
find_track_info
Для разработчиков библиотеки и плагинов
Структура проекта
dsplayer/
├───engines_system
│ ├───engine_interface.py
│ ├───soundcloud.py
│ └───ytmusic.py
├───player_system
│ ├───player.py
│ ├───queue.py
│ └───__init__.py
├───plugins
│ ├───query_plugin.py
│ ├───spotify_plugin.py
│ ├───youtube_plugin.py
│ └───soundcloud_plugin.py
├───plugin_system
│ ├───plugin_interface.py
│ ├───plugin_loader.py
│ └───__init__.py
└───utils
├───user_agent.py
└───__init__.py
Создание плагинов
Для создания плагинов необходимо реализовать интерфейс PluginInterface
.
from dsplayer.plugin_system.plugin_interface import PluginInterface
from dsplayer.engines_system.engine_interface import EngineInterface
from typing import List, Dict, Any
class YourPlugin(PluginInterface):
def __init__(self):
self.name = "YourPlugin"
self.url_patterns = []
def on_plugin_load(self) -> None:
pass
def on_plugin_unload(self) -> None:
pass
def search(self, data: str, engine: EngineInterface) -> Dict[str, Any]:
# Ваша реализация
pass
def get_url_patterns(self) -> list:
return self.url_patterns
Создание поисковых движков
from dsplayer.engines_system.engine_interface import EngineInterface
class YourEngine(EngineInterface):
def get_url_by_query(query: str):
# Ваша реализация
pass
Обработка исключений
Для обработки различных ошибок используйте исключения из dsplayer.utils.exceptions.lib_exceptions
.
from dsplayer.utils.exceptions.lib_exceptions import VoiceChaneNotConnected, TrackNotFound, TrackError
try:
# Ваш код
except VoiceChaneNotConnected as e:
print(e)
except TrackNotFound as e:
print(e)
except TrackError as e:
print(e)
TODO
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.