48 lines
1.5 KiB
Python
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() |