Music effects library with 3 built-in effects + developer tools
Project description
🎵 Goh Music Beta v0.2
Библиотека для обработки музыки с встроенными эффектами и инструментами для разработчиков
Установка • Быстрый старт • Эффекты • Документация • Примеры
✨ Возможности
| 🎸 | 🔒 | 📦 | 🎧 | ⚡ | 🛠️ |
|---|---|---|---|---|---|
| 3 эффекта | Лимит | Интеграция | MP3 | FFmpeg | Dev Tools |
| Встроенные | Только 3 | В ботов | Поддержка | Включен | 3 функции |
📥 Установка
# Быстрая установка через Git
pip install git+https://github.com/devdox-del/Goh-Music.git
Или вручную:
git clone https://github.com/devdox-del/Goh-Music.git
cd Goh-Music
pip install -r requirements.txt
pip install -e .
💡 FFmpeg устанавливается автоматически — не нужно ничего дополнительно настраивать!
🚀 Быстрый старт
from goh_music import MusicProcessor
processor = MusicProcessor()
# Обрабатываем музыку
processor.process_audio(
input_path="music.mp3",
output_path="music_reverb.mp3",
effect_name="reverb"
)
🎛️ Эффекты
| Иконка | Эффект | Описание | Код |
|---|---|---|---|
| 🌊 | Reverb | Реверберация (эхо эффект) | "reverb" |
| ⚡ | Speed Up | Ускорение (nightcore стиль) | "speed_up" |
| 🔊 | Bass Boost | Усиление басов | "bass_boost" |
# Показать все эффекты
effects = processor.get_available_effects()
for key, desc in effects.items():
print(f"🎵 {key} — {desc}")
🛠️ Инструменты для разработчиков
1️⃣ get_audio_info() — Информация об аудио
╔═══════════════════════════════════════════════════════════╗ ║ 📊 Получает подробные данные о файле: длительность, ║ ║ каналы, битрейт, размер и многое другое ║ ╚═══════════════════════════════════════════════════════════╝
Пример использования:
from goh_music import MusicProcessor
processor = MusicProcessor()
# Получаем информацию о файле
info = processor.get_audio_info("song.mp3")
if info:
print(f"""
╔════════════════════════════════════════╗
║ 📊 ИНФОРМАЦИЯ О ФАЙЛЕ ║
╠════════════════════════════════════════╣
║ ⏱ Длительность: {info['duration_formatted']:>20} ║
║ 🔊 Каналов: {info['channels']:>20} ║
║ 📈 Битрейт: {info['bitrate']:>20} kbps║
║ 💾 Размер: {info['file_size_bytes'] / 1024:>18.2f} KB ║
╚════════════════════════════════════════╝
""")
Возвращаемые данные:
{
"duration_seconds": 180.5, # Длительность в секундах
"duration_formatted": "03:00", # Формат MM:SS
"channels": 2, # Количество каналов
"sample_rate": 44100, # Частота дискретизации
"frame_rate": 44100, # Частота кадров
"bitrate": 128, # Битрейт в kbps
"file_size_bytes": 2890000 # Размер в байтах
}
2️⃣ batch_process() — Пакетная обработка
╔═══════════════════════════════════════════════════════════╗ ║ 📦 Обрабатывает несколько файлов одним вызовом ║ ║ с красивым прогрессом и статистикой ║ ╚═══════════════════════════════════════════════════════════╝
Пример использования:
from goh_music import MusicProcessor
processor = MusicProcessor()
# Список файлов для обработки
files = ["song1.mp3", "song2.mp3", "song3.mp3"]
# Обрабатываем все файлы с эффектом
results = processor.batch_process(
input_files=files,
output_dir="output/",
effect_name="reverb",
prefix="my_"
)
# Статистика
print(f"\n✅ Успешно: {sum(results.values())}/{len(results)}")
Вывод в консоль:
╔═══════════════════════════════════════════════════════════╗
║ ПАКЕТНАЯ ОБРАБОТКА: 3 файлов ║
╠═══════════════════════════════════════════════════════════╣
║ Эффект: reverb ║
║ Директория: output/ ║
╚═══════════════════════════════════════════════════════════╝
[1/3] Обработка: song1.mp3...
✅ song1.mp3 → my_song1_reverb.mp3
[2/3] Обработка: song2.mp3...
✅ song2.mp3 → my_song2_reverb.mp3
[3/3] Обработка: song3.mp3...
❌ song3.mp3
╔═══════════════════════════════════════════════════════════╗
║ ГОТОВО: 2/3 файлов успешно обработано ║
╚═══════════════════════════════════════════════════════════╝
3️⃣ preview_effect() — Быстрое превью
╔═══════════════════════════════════════════════════════════╗ ║ ⚡ Создаёт короткий фрагмент (10 сек) с эффектом ║ ║ для быстрого прослушивания перед обработкой ║ ╚═══════════════════════════════════════════════════════════╝
Пример использования:
from goh_music import MusicProcessor
processor = MusicProcessor()
# Создаём превью (15 секунд)
preview_file = processor.preview_effect(
input_path="long_song.mp3",
effect_name="reverb",
duration=15
)
if preview_file:
print(f"🎧 Превью готово: {preview_file}")
Идеально для:
| 🤖 | 📱 | ⏱️ | 💾 |
|---|---|---|---|
| Ботов | Мессенджеров | Экономии | Выбора |
| Telegram | Discord | Времени | Эффекта |
🤖 Пример для Telegram бота
from aiogram import Bot, Dispatcher, types
from goh_music import MusicProcessor
bot = Bot(token="YOUR_TOKEN")
dp = Dispatcher(bot)
processor = MusicProcessor()
@dp.message_handler(content_types=['audio', 'document'])
async def handle_music(message: types.Message):
# Скачиваем файл
file = await message.audio.get_file()
file_path = f"downloads/{file.file_id}.mp3"
await file.download(file_path)
# Получаем информацию
info = processor.get_audio_info(file_path)
# Показываем пользователю
await message.reply(
f"🎵 **Трек загружен!**\n\n"
f"⏱ Длительность: `{info['duration_formatted']}`\n"
f"📊 Битрейт: `{info['bitrate']}` kbps\n"
f"💾 Размер: `{info['file_size_bytes'] / 1024:.2f}` KB\n\n"
f"Выберите эффект:",
reply_markup=effects_keyboard()
)
def effects_keyboard():
"""Клавиатура с эффектами"""
keyboard = types.ReplyKeyboardMarkup(resize_keyboard=True)
keyboard.add(
types.KeyboardButton("🌊 Reverb"),
types.KeyboardButton("⚡ Speed Up"),
types.KeyboardButton("🔊 Bass Boost")
)
return keyboard
@dp.message_handler(lambda msg: msg.text in ["🌊 Reverb", "⚡ Speed Up", "🔊 Bass Boost"])
async def apply_effect(message: types.Message):
effect_map = {
"🌊 Reverb": "reverb",
"⚡ Speed Up": "speed_up",
"🔊 Bass Boost": "bass_boost"
}
effect = effect_map[message.text]
# Создаём превью
preview = processor.preview_effect(
input_path=file_path,
effect_name=effect,
duration=15
)
if preview:
await message.reply_audio(
audio=types.InputFile(preview),
caption=f"🎧 Превью: {effect}\n\nОбработать полностью?"
)
📊 Сравнение функций
| Функция | Назначение | Возвращает | Пример |
|---|---|---|---|
process_audio() |
Обработка 1 файла | bool |
True / False |
get_audio_info() |
Информация о файле | dict |
{duration, bitrate...} |
batch_process() |
Обработка N файлов | dict |
{file: True/False...} |
preview_effect() |
Превью 10 сек | str |
"path/to/preview.mp3" |
⚠️ Важно
╔═══════════════════════════════════════════════════════════╗
║ 🔒 Библиотека поддерживает ТОЛЬКО 3 эффекта ║
║ ║
║ ❌ Попытка добавить свои эффекты вызовет ошибку: ║
║ NotImplementedError ║
╚═══════════════════════════════════════════════════════════╝
📝 Требования
| Библиотека | Версия | Описание |
|---|---|---|
| Python | >= 3.7 | 🐍 Язык программирования |
| pydub | >= 0.25.1 | 🎵 Обработка аудио |
| numpy | >= 1.21.0 | 🔢 Математические операции |
| imageio-ffmpeg | >= 0.4.8 | ⚡ FFmpeg (автоматически) |
📄 Лицензия
MIT License — свободное использование с указанием автора
👤 Автор
devdox-del
📧 warek2508@gmail.com
🐙 @devdox-del
🐛 Баги и предложения
Создать Issue • Форк • Звезда
📦 Goh Music v0.2.0-beta
Сделано с ❤️ для разработчиков
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.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file goh_music-0.2.0.tar.gz.
File metadata
- Download URL: goh_music-0.2.0.tar.gz
- Upload date:
- Size: 12.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
131301c983499f4a148a591b8530af19b4bf401215136ba9e05505caca9f273c
|
|
| MD5 |
bb02c428bb8d4e4c82775e0587737302
|
|
| BLAKE2b-256 |
f5d278ca1bbeaf745b8e93370849ed35c951c6bea984b35f8d5cde714a08738d
|
File details
Details for the file goh_music-0.2.0-py3-none-any.whl.
File metadata
- Download URL: goh_music-0.2.0-py3-none-any.whl
- Upload date:
- Size: 10.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64930bc205da75e51e1b866c84e317820fd252e64a61e5de45dd3759a36a4785
|
|
| MD5 |
13400bada1271143191c3425c4666a78
|
|
| BLAKE2b-256 |
aa5e4ef6fe33d92beb1b6166eaa4ede300c082c80474e50a137ed07cfb28834f
|