Быстрый поисковик музыки
Project description
MSOC - Библиотека для быстрого и асинхронного поиска музыки
MSOC - это библиотека на Python для быстрого и асинхронного поиска музыки в Интернете. Она позволяет искать треки на различных музыкальных сайтах и возвращает информацию о найденных треках, включая их названия и ссылки на скачивание.
Установка
Для установки библиотеки можно использовать pip:
pip install msoc
Так же можно установить из исходников:
git clone https://github.com/paranoik1/msoc.git
cd MSOC
pip install .
Использование
В консоле
Можно протестировать пакет обычным скриптом, который был установлен после установки самой библиотеки:
msoc <query or empty>
# or
python -m msoc <query or empy>
В коде
Импортируйте модуль msoc и используйте функцию search() для поиска музыки:
from msoc import search
import asyncio
async def main():
query = input("Запрос: ")
async for sound in search(query):
print(f"Name: {sound.title}\nArtist: {sound.artist}\nURL: {sound.url}")
print("================================================")
asyncio.run(main())
Функция search()
принимает поисковый запрос в качестве аргумента и возвращает асинхронный генератор, который генерирует объекты Sound
с информацией о найденных треках.
Класс Sound
Класс Sound
содержит информацию о песне.
Атрибуты:
title (str)
: Название песни.url (str | None)
: Ссылка на скачивание песни. Может быть None, если ссылка недоступна (Необязательный атрибут).artist (str | None)
: Исполнитель песни. Может быть None, если информация об исполнителе недоступна (Необязательный атрибут).
Реализованные движки поиска
В настоящее время библиотека MSOC поддерживает следующие движки поиска:
- mp3uk: Поиск на сайте mp3uks.ru
- zaycev_net: Поиск на сайте zaycev.net
- trekson: Поиск на сайте trekson.net
- hitmo: Поиск на сайт rus.hitmotop.com - реализован на основе данного кода
Вы можете добавлять новые движки поиска, создавая модули и загружая их с помощью функций load_search_engine()
и unload_search_engine()
.
Exceptions
Библиотека MSOC определяет следующие исключения:
LoadedEngineNotFoundError
: Выбрасывается, когда движок поиска не был найден в загруженных движках.
Создание своих поисковых движков
Для создания собственных поисковых движков на Python вы можете использовать следующий подход:
-
Создайте новый Python-файл для вашего поискового движка:
- Например, создайте файл
my_search_engine.py
.
- Например, создайте файл
-
Определите асинхронную функцию
search(query)
, которая будет реализовывать поисковый алгоритм:- Реализуйте логику поиска, взаимодействуя с API или веб-страницами источников, которые вы хотите использовать.
- Можете использовать библиотеки, такие как
aiohttp
,beautifulsoup4
и другие, для выполнения HTTP-запросов и парсинга HTML-страниц.
Функция search
внутри движка должна возвращать генератор объектов Sound
.
Пример реализации функции search(query)
в my_search_engine.py
:
import aiohttp
from bs4 import BeautifulSoup
from msoc.sound import Sound
async def search(query: str):
async with aiohttp.ClientSession() as session:
async with session.get(f"https://example.com/search?q={query}") as response:
html = await response.text()
soup = BeautifulSoup(html, "html.parser")
for item in soup.find_all("div", class_="search-result"):
name = item.find("h3").get_text(strip=True)
artist = item.find("span", class_="artist").get_text(strip=True)
url = item.find("a").get("href")
yield Sound(name, url, artist)
- Подключите ваш поисковый движок к системе:
from msoc import load_search_engine, engines
import my_search_engine
load_search_engine("my_search_engine", my_search_engine)
print(engines())
- Замените
my_search_engine
на название вашего python файла. - Далее вызываем
engines()
, чтобы удостовериться, что движок был успешно загружен
- Теперь при запуске основной
search
функции, ваш движок будет автоматически загружен и использован для поиска песен
P.S 1
Если вам нужно подключить поисковой движок, файл которого находится не в текущей папке проекта, можете воспользоваться встроенным python пакетом importlib
from msoc import load_search_engine
from importlib import util
spec = util.spec_from_file_location("my_search_engine", "/path/to/python/file/my_search_engine.py")
module = util.module_from_spec(spec)
spec.loader.exec_module(module)
load_search_engine("my_search_engine", module)
P.S 2
Если вам не нужен какой либо поисковой движок, используй unload_search_engine
для его удаления из загруженных:
from msoc import unload_search_engine, engines
unload_search_engine("my_search_engine")
print(engines())
Contribution
Если вы хотите внести свой вклад в развитие библиотеки MSOC, вы можете:
- Сообщить об ошибках или предложить новые функции
- Разработать и добавить новые движки поиска
- Улучшить документацию
- Исправить существующие проблемы
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
Built Distribution
File details
Details for the file msoc-0.1.0.tar.gz
.
File metadata
- Download URL: msoc-0.1.0.tar.gz
- Upload date:
- Size: 11.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
950cfc69b5c78a074770cd42064b33ca7b9b8884a4590f3ef7211040bb64d408
|
|
MD5 |
972dd0682b574bb80fdacf8d152e5117
|
|
BLAKE2b-256 |
0e6a35270420cb78b64b2b89f52a4681e3f7938091f73178987e00e2dd943db4
|
File details
Details for the file msoc-0.1.0-py3-none-any.whl
.
File metadata
- Download URL: msoc-0.1.0-py3-none-any.whl
- Upload date:
- Size: 12.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 |
ae007add92cb65660c65f170d20503ab0eb74a059203b62c237584eb6ee9a9d4
|
|
MD5 |
7ba5d469e3fa90644c42f4dec1439475
|
|
BLAKE2b-256 |
3a4b7a18fc7a51bdc923b8918b1fb5b928f69d94ac88845c898ae2a137a2defd
|