feat: add initial songbox API client library

This commit introduces the initial version of the songbox API client library, including:
- Core client implementation with authentication and HTTP handling
- Modular sub-clients for auth, user, and music operations
- Comprehensive exception hierarchy for error handling
- CLI interface with support for all API operations
- Setup configuration with dependencies and package metadata
- Documentation including README with usage examples
This commit is contained in:
2025-06-07 01:06:55 -07:00
commit 3eba8700cd
12 changed files with 1711 additions and 0 deletions

58
setup.py Normal file
View File

@ -0,0 +1,58 @@
"""Setup script for songbox API Client Library"""
from setuptools import setup, find_packages
with open("README.md", "r", encoding="utf-8") as fh:
long_description = fh.read()
with open("requirements.txt", "r", encoding="utf-8") as fh:
requirements = [line.strip() for line in fh if line.strip() and not line.startswith("#")]
setup(
name="songbox",
version="1.0.0",
author="CustomIcon",
author_email="custom.icon@vk.com",
description="A Python client library for a music streaming API",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://git.cubable.date/CustomIcon/songbox",
packages=find_packages(),
classifiers=[
"Development Status :: 4 - Beta",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
"Programming Language :: Python :: 3.9",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Topic :: Software Development :: Libraries :: Python Modules",
"Topic :: Multimedia :: Sound/Audio",
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",
],
python_requires=">=3.7",
install_requires=requirements,
extras_require={
"dev": [
"pytest>=6.0",
"pytest-asyncio",
"black",
"flake8",
"mypy",
],
},
entry_points={
"console_scripts": [
"songbox=songbox.__main__:main",
],
},
keywords="songbox music api client streaming maldives",
project_urls={
"Bug Reports": "https://github.com/yourusername/songbox/issues",
"Source": "https://github.com/yourusername/songbox",
"Documentation": "https://github.com/yourusername/songbox#readme",
},
)