msoc 0.0.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
msoc-0.0.1/PKG-INFO ADDED
@@ -0,0 +1,57 @@
1
+ Metadata-Version: 2.1
2
+ Name: msoc
3
+ Version: 0.0.1
4
+ Summary: Быстрый поисковик музыки
5
+ Author: Ktoto
6
+ Project-URL: Repository, https://codeberg.org/Ktoto/MSOC
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: bs4
13
+ Requires-Dist: aiohttp
14
+
15
+ # MSOC - Библиотека для быстрого и асинхронного поиска музыки
16
+
17
+ MSOC - это библиотека на Python для быстрого и асинхронного поиска музыки в Интернете. Она позволяет искать треки на различных музыкальных сайтах и возвращает информацию о найденных треках, включая их названия и ссылки на скачивание.
18
+
19
+ ## Использование
20
+
21
+ Импортируйте модуль msoc и используйте функцию search() для поиска музыки:
22
+
23
+ ```python
24
+ from msoc import search
25
+
26
+ async def main():
27
+ async for sound in search("my_query"):
28
+ print(f"Name: {sound.name}, URL: {sound.url}")
29
+
30
+ asyncio.run(main())
31
+ ```
32
+
33
+ Функция `search()` принимает поисковый запрос в качестве аргумента и возвращает асинхронный генератор, который генерирует объекты `Sound` с информацией о найденных треках.
34
+
35
+ ## Реализованные движки поиска
36
+
37
+ В настоящее время библиотека MSOC поддерживает следующие движки поиска:
38
+
39
+ - mp3uk: Поиск на сайте [mp3uks.ru](https://mp3uks.ru)
40
+
41
+ Вы можете добавлять новые движки поиска, создавая модули и загружая их с помощью функций `load_search_engine()` и `unload_search_engine()`.
42
+
43
+ ## Exceptions
44
+
45
+ Библиотека MSOC определяет следующие исключения:
46
+
47
+ - `LoadedEngineNotFoundError`: Выбрасывается, когда движок поиска не был найден в загруженных движках.
48
+ - `EnginePathNotFoundError`: Выбрасывается, когда не удается импортировать движок поиска по указанному пути.
49
+
50
+ ## Contribution
51
+
52
+ Если вы хотите внести свой вклад в развитие библиотеки MSOC, вы можете:
53
+
54
+ - Сообщить об ошибках или предложить новые функции
55
+ - Разработать и добавить новые движки поиска
56
+ - Улучшить документацию
57
+ - Исправить существующие проблемы
msoc-0.0.1/README.md ADDED
@@ -0,0 +1,43 @@
1
+ # MSOC - Библиотека для быстрого и асинхронного поиска музыки
2
+
3
+ MSOC - это библиотека на Python для быстрого и асинхронного поиска музыки в Интернете. Она позволяет искать треки на различных музыкальных сайтах и возвращает информацию о найденных треках, включая их названия и ссылки на скачивание.
4
+
5
+ ## Использование
6
+
7
+ Импортируйте модуль msoc и используйте функцию search() для поиска музыки:
8
+
9
+ ```python
10
+ from msoc import search
11
+
12
+ async def main():
13
+ async for sound in search("my_query"):
14
+ print(f"Name: {sound.name}, URL: {sound.url}")
15
+
16
+ asyncio.run(main())
17
+ ```
18
+
19
+ Функция `search()` принимает поисковый запрос в качестве аргумента и возвращает асинхронный генератор, который генерирует объекты `Sound` с информацией о найденных треках.
20
+
21
+ ## Реализованные движки поиска
22
+
23
+ В настоящее время библиотека MSOC поддерживает следующие движки поиска:
24
+
25
+ - mp3uk: Поиск на сайте [mp3uks.ru](https://mp3uks.ru)
26
+
27
+ Вы можете добавлять новые движки поиска, создавая модули и загружая их с помощью функций `load_search_engine()` и `unload_search_engine()`.
28
+
29
+ ## Exceptions
30
+
31
+ Библиотека MSOC определяет следующие исключения:
32
+
33
+ - `LoadedEngineNotFoundError`: Выбрасывается, когда движок поиска не был найден в загруженных движках.
34
+ - `EnginePathNotFoundError`: Выбрасывается, когда не удается импортировать движок поиска по указанному пути.
35
+
36
+ ## Contribution
37
+
38
+ Если вы хотите внести свой вклад в развитие библиотеки MSOC, вы можете:
39
+
40
+ - Сообщить об ошибках или предложить новые функции
41
+ - Разработать и добавить новые движки поиска
42
+ - Улучшить документацию
43
+ - Исправить существующие проблемы
@@ -0,0 +1,25 @@
1
+ [build-system]
2
+ requires = ["setuptools"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "msoc"
7
+ version = "0.0.1"
8
+ authors = [
9
+ { name="Ktoto" },
10
+ ]
11
+ description = "Быстрый поисковик музыки"
12
+ readme = "README.md"
13
+ requires-python = ">=3.8"
14
+ classifiers = [
15
+ "Programming Language :: Python :: 3",
16
+ "License :: OSI Approved :: MIT License",
17
+ "Operating System :: OS Independent",
18
+ ]
19
+ dependencies = [
20
+ "bs4",
21
+ "aiohttp"
22
+ ]
23
+
24
+ [project.urls]
25
+ Repository = "https://codeberg.org/Ktoto/MSOC"
msoc-0.0.1/setup.cfg ADDED
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1 @@
1
+ from .msoc import *
@@ -0,0 +1,58 @@
1
+ import aiohttp
2
+
3
+ from bs4 import BeautifulSoup
4
+
5
+
6
+ URL = "https://mp3uks.ru/index.php?do=search"
7
+ HEADERS = {
8
+ 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:126.0) Gecko/20100101 Firefox/126.0',
9
+ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
10
+ 'Accept-Language': 'ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
11
+ 'Referer': 'https://mp3uks.ru/',
12
+ 'Content-Type': 'application/x-www-form-urlencoded',
13
+ 'Origin': 'https://mp3uks.ru',
14
+ 'Connection': 'keep-alive',
15
+ 'Upgrade-Insecure-Requests': '1',
16
+ 'Sec-Fetch-Dest': 'document',
17
+ 'Sec-Fetch-Mode': 'navigate',
18
+ 'Sec-Fetch-Site': 'same-origin',
19
+ 'Sec-Fetch-User': '?1',
20
+ 'Priority': 'u=1',
21
+ }
22
+
23
+
24
+ def get_name(track):
25
+ track_title = track.find("div", {"class": "track-title"})
26
+ try:
27
+ return track_title.find("span").text
28
+ except:
29
+ return track_title.text
30
+
31
+
32
+ def get_url(track):
33
+ unclean_url = track.find("a", {"class": "track-dl"})["href"]
34
+
35
+ if "/dl.php?" in unclean_url:
36
+ url = "https://mp3uk.net" + unclean_url
37
+ else:
38
+ url = "https:" + unclean_url
39
+
40
+ return url
41
+
42
+
43
+
44
+ async def search(query):
45
+ print("Mp3uk engine")
46
+ data = f"do=search&subaction=search&search_start=0&full_search=0&result_from=1&story={query}"
47
+ async with aiohttp.ClientSession(headers=HEADERS) as session:
48
+ async with session.post(URL, data=data) as response:
49
+ print(response.status)
50
+ text = await response.text()
51
+
52
+ html = BeautifulSoup(text, "html.parser")
53
+
54
+ results = []
55
+ for track in html.find_all("div", {"class": "track-item"}):
56
+ results.append((get_name(track), get_url(track)))
57
+
58
+ return results
@@ -0,0 +1,8 @@
1
+ class LoadedEngineNotFoundError(KeyError):
2
+ def __init__(self, name):
3
+ super().__init__("Движок не был найден в загруженных: " + name)
4
+
5
+
6
+ class EnginePathNotFoundError(FileNotFoundError):
7
+ def __init__(self, path):
8
+ super().__init__("Не удалось импортировать движок: " + path)
@@ -0,0 +1,65 @@
1
+ import asyncio
2
+ from importlib import util
3
+ from os.path import dirname, join
4
+
5
+ from .exceptions import *
6
+ from .sound import Sound
7
+
8
+
9
+ __all__ = [
10
+ "search",
11
+ "engines",
12
+ "load_search_engine",
13
+ "unload_search_engine",
14
+ "Sound"
15
+ ]
16
+
17
+
18
+ ENGINES = dict()
19
+ DEFAULT_ENGINES_MAP = {
20
+ "mp3uk": join(dirname(__file__), "engines", "mp3uk.py")
21
+ }
22
+
23
+
24
+ def engines():
25
+ return ENGINES.copy()
26
+
27
+
28
+ def load_search_engine(name, path_python_file: str):
29
+ spec = util.spec_from_file_location(name, path_python_file)
30
+
31
+ module = util.module_from_spec(spec)
32
+
33
+ try:
34
+ spec.loader.exec_module(module)
35
+ except:
36
+ raise EnginePathNotFoundError(path_python_file)
37
+
38
+ ENGINES[name] = module
39
+
40
+
41
+ def unload_search_engine(name):
42
+ try:
43
+ del ENGINES[name]
44
+ except KeyError:
45
+ raise LoadedEngineNotFoundError(name)
46
+
47
+
48
+ def load_default_engines():
49
+ for name, python_file_path in DEFAULT_ENGINES_MAP.items():
50
+ load_search_engine(name, python_file_path)
51
+
52
+
53
+ async def search(query):
54
+ tasks = []
55
+
56
+ for engine in ENGINES.values():
57
+ tasks.append(engine.search(query))
58
+
59
+ for sound_future in asyncio.as_completed(tasks):
60
+ sounds = await sound_future
61
+ for sound in sounds:
62
+ yield Sound(sound[0], sound[1])
63
+
64
+
65
+ load_default_engines()
@@ -0,0 +1,7 @@
1
+ from dataclasses import dataclass
2
+
3
+
4
+ @dataclass
5
+ class Sound:
6
+ name: str
7
+ url: str
@@ -0,0 +1,57 @@
1
+ Metadata-Version: 2.1
2
+ Name: msoc
3
+ Version: 0.0.1
4
+ Summary: Быстрый поисковик музыки
5
+ Author: Ktoto
6
+ Project-URL: Repository, https://codeberg.org/Ktoto/MSOC
7
+ Classifier: Programming Language :: Python :: 3
8
+ Classifier: License :: OSI Approved :: MIT License
9
+ Classifier: Operating System :: OS Independent
10
+ Requires-Python: >=3.8
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: bs4
13
+ Requires-Dist: aiohttp
14
+
15
+ # MSOC - Библиотека для быстрого и асинхронного поиска музыки
16
+
17
+ MSOC - это библиотека на Python для быстрого и асинхронного поиска музыки в Интернете. Она позволяет искать треки на различных музыкальных сайтах и возвращает информацию о найденных треках, включая их названия и ссылки на скачивание.
18
+
19
+ ## Использование
20
+
21
+ Импортируйте модуль msoc и используйте функцию search() для поиска музыки:
22
+
23
+ ```python
24
+ from msoc import search
25
+
26
+ async def main():
27
+ async for sound in search("my_query"):
28
+ print(f"Name: {sound.name}, URL: {sound.url}")
29
+
30
+ asyncio.run(main())
31
+ ```
32
+
33
+ Функция `search()` принимает поисковый запрос в качестве аргумента и возвращает асинхронный генератор, который генерирует объекты `Sound` с информацией о найденных треках.
34
+
35
+ ## Реализованные движки поиска
36
+
37
+ В настоящее время библиотека MSOC поддерживает следующие движки поиска:
38
+
39
+ - mp3uk: Поиск на сайте [mp3uks.ru](https://mp3uks.ru)
40
+
41
+ Вы можете добавлять новые движки поиска, создавая модули и загружая их с помощью функций `load_search_engine()` и `unload_search_engine()`.
42
+
43
+ ## Exceptions
44
+
45
+ Библиотека MSOC определяет следующие исключения:
46
+
47
+ - `LoadedEngineNotFoundError`: Выбрасывается, когда движок поиска не был найден в загруженных движках.
48
+ - `EnginePathNotFoundError`: Выбрасывается, когда не удается импортировать движок поиска по указанному пути.
49
+
50
+ ## Contribution
51
+
52
+ Если вы хотите внести свой вклад в развитие библиотеки MSOC, вы можете:
53
+
54
+ - Сообщить об ошибках или предложить новые функции
55
+ - Разработать и добавить новые движки поиска
56
+ - Улучшить документацию
57
+ - Исправить существующие проблемы
@@ -0,0 +1,12 @@
1
+ README.md
2
+ pyproject.toml
3
+ src/msoc/__init__.py
4
+ src/msoc/exceptions.py
5
+ src/msoc/msoc.py
6
+ src/msoc/sound.py
7
+ src/msoc.egg-info/PKG-INFO
8
+ src/msoc.egg-info/SOURCES.txt
9
+ src/msoc.egg-info/dependency_links.txt
10
+ src/msoc.egg-info/requires.txt
11
+ src/msoc.egg-info/top_level.txt
12
+ src/msoc/engines/mp3uk.py
@@ -0,0 +1,2 @@
1
+ bs4
2
+ aiohttp
@@ -0,0 +1 @@
1
+ msoc