mirror of
https://github.com/believethehype/nostrdvm.git
synced 2025-03-17 21:31:52 +01:00
95 lines
2.5 KiB
Python
95 lines
2.5 KiB
Python
import asyncio
|
|
|
|
import requests
|
|
|
|
# replace your vercel domain
|
|
base_url = 'http://localhost:3000'
|
|
|
|
|
|
def custom_generate_audio(payload):
|
|
url = f"{base_url}/api/custom_generate"
|
|
response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
|
|
return response.json()
|
|
|
|
|
|
def extend_audio(payload):
|
|
url = f"{base_url}/api/extend_audio"
|
|
response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
|
|
return response.json()
|
|
|
|
def generate_audio_by_prompt(payload):
|
|
url = f"{base_url}/api/generate"
|
|
response = requests.post(url, json=payload, headers={'Content-Type': 'application/json'})
|
|
return response.json()
|
|
|
|
|
|
def get_audio_information(audio_ids):
|
|
url = f"{base_url}/api/get?ids={audio_ids}"
|
|
response = requests.get(url)
|
|
return response.json()
|
|
|
|
|
|
def get_quota_information():
|
|
url = f"{base_url}/api/get_limit"
|
|
response = requests.get(url)
|
|
return response.json()
|
|
|
|
def get_clip(clip_id):
|
|
url = f"{base_url}/api/clip?id={clip_id}"
|
|
response = requests.get(url)
|
|
return response.json()
|
|
|
|
def generate_whole_song(clip_id):
|
|
payload = {"clip_id": clip_id}
|
|
url = f"{base_url}/api/concat"
|
|
response = requests.post(url, json=payload)
|
|
return response.json()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
prompt = "A popular heavy metal song about a purple Ostrich, Nostr, sung by a deep-voiced male singer, slowly and melodiously. The lyrics depict hope for a better future."
|
|
|
|
|
|
has_quota = False
|
|
quota_info = get_quota_information()
|
|
if int(quota_info['credits_left']) >= 20:
|
|
has_quota = True
|
|
else:
|
|
print("No quota left, exiting.")
|
|
|
|
|
|
if has_quota:
|
|
|
|
data = generate_audio_by_prompt({
|
|
"prompt": prompt,
|
|
"make_instrumental": False,
|
|
"wait_audio": False
|
|
})
|
|
if len(data) == 0:
|
|
print("Couldn't create song")
|
|
pass
|
|
|
|
ids = f"{data[0]['id']},{data[1]['id']}"
|
|
print(f"ids: {ids}")
|
|
|
|
for _ in range(60):
|
|
data = get_audio_information(ids)
|
|
if data[0]["status"] == 'streaming':
|
|
print(f"{data[0]['id']} ==> {data[0]['video_url']}")
|
|
print(f"{data[1]['id']} ==> {data[1]['video_url']}")
|
|
break
|
|
# sleep 5s
|
|
asyncio.sleep(1.0)
|
|
|
|
response1 = get_clip(data[0]['id'])
|
|
print(response1['video_url'])
|
|
print(response1['prompt'])
|
|
|
|
response2 = get_clip(data[1]['id'])
|
|
print(response2['video_url'])
|
|
print(response2['prompt'])
|
|
|
|
|
|
|
|
|