O2Sound_ver2_final/backend/app/services/mureka_service_fix.py

48 lines
1.5 KiB
Python

import requests
from app.shared.logger import setup_logger
from app.core.env_setting import EnvSetting
from pydantic import BaseModel
logger = setup_logger(__name__)
settings = EnvSetting()
class CreateMusic(BaseModel):
lyrics: str
class MurekaServiceFix:
def __init__(self):
self.api_key = settings.MUSREKA_API_KEYS
self.base_url = "https://api.mureka.ai"
self.headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {self.api_key}"
}
# mureka 연동 확인
# 실제 connect 확인 api가 없으므로, billing 확인 api로 대체
def connect_mureka(self):
url = f"{self.base_url}/v1/account/billing"
response = requests.get(url, headers=self.headers)
return response.json()
# 노래 생성
def generate_music(self, lyrics: str, prompt: str):
url = f"{self.base_url}/v1/song/generate"
body = {
"lyrics": lyrics,
"prompt": prompt
}
body = {k: v for k, v in body.items() if v is not None}
logger.info(f"create music body: {body}")
response = requests.post(
url,
headers=self.headers,
json=body
)
return response.json()
# 노래 확인
def get_music(self, task_id: str):
url = f"{self.base_url}/v1/song/query/{task_id}"
response = requests.get(url, headers=self.headers)
return response.json()