53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from app.presentation.schemas.mureka_schema import CreateMusic
|
|
import requests
|
|
from app.shared.logger import setup_logger
|
|
from app.core.env_setting import EnvSetting
|
|
|
|
|
|
logger = setup_logger(__name__)
|
|
settings = EnvSetting()
|
|
|
|
|
|
# mureka 서비스
|
|
class MurekaService:
|
|
def __init__(self):
|
|
self.useapi_token = settings.USEAPINET_API_TOKEN
|
|
self.session_token = settings.MUREAKA_SESSION_TOKEN
|
|
self.user_id = settings.MUREAKA_USER_ID
|
|
self.base_url = "https://api.useapi.net/v1/mureka"
|
|
|
|
self.headers = {
|
|
"Content-Type": "application/json",
|
|
"Authorization": f"Bearer {self.useapi_token}"
|
|
}
|
|
|
|
# mureka 연동 확인
|
|
def connect_useapi(self):
|
|
url = f"{self.base_url}/accounts/{self.user_id}"
|
|
body = {
|
|
"account": self.user_id,
|
|
"token": self.session_token
|
|
}
|
|
logger.info(f"mureka connect useapi body: {url}")
|
|
response = requests.post(
|
|
url,
|
|
headers=self.headers,
|
|
json=body
|
|
)
|
|
logger.info(f"mureka connect useapi response: {response}")
|
|
return response
|
|
|
|
# 노래 생성
|
|
def generate_music(self, req: CreateMusic):
|
|
url = f"{self.base_url}/music/create-advanced"
|
|
body = {
|
|
"lyrics": req.lyrics,
|
|
}
|
|
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() |