Skip to main content

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.

События

Класс Player генерирует несколько событий через event_emitter. Эти события можно использовать для выполнения пользовательских действий в ответ на различные состояния воспроизведения. Ниже приведен список событий и когда они генерируются:

  1. on_connect

    • Описание: Генерируется, когда бот успешно подключается к голосовому каналу.
    • Метод: connect
  2. on_disconnect

    • Описание: Генерируется, когда бот отключается от голосового канала.
    • Метод: disconnect
  3. on_play

    • Описание: Генерируется, когда начинается воспроизведение трека.
    • Метод: play_next
  4. on_add_to_queue

    • Описание: Генерируется, когда трек добавляется в очередь.
    • Метод: add_and_play
  5. on_stop

    • Описание: Генерируется, когда воспроизведение останавливается и очередь очищается.
    • Метод: stop
  6. on_pause

    • Описание: Генерируется, когда воспроизведение приостанавливается.
    • Метод: pause
  7. on_resume

    • Описание: Генерируется, когда воспроизведение возобновляется после паузы.
    • Метод: resume
  8. on_skip

    • Описание: Генерируется, когда текущий трек пропускается.
    • Метод: skip
  9. on_update_plugin_settings

    • Описание: Генерируется, когда настройки плагинов обновляются.
    • Метод: update_plugin_settings

Для разработчиков библиотеки и плагинов

Структура проекта

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

  • more events

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dsplayer-1.4.0.tar.gz (42.1 kB view hashes)

Uploaded Source

Built Distribution

dsplayer-1.4.0-py3-none-any.whl (62.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page