2024-06-07 23:45:26 +02:00
import asyncio
2024-11-28 08:39:48 +01:00
2024-06-05 23:52:42 +02:00
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
2024-06-07 23:45:26 +02:00
asyncio . sleep ( 1.0 )
2024-06-05 23:52:42 +02:00
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 ' ] )