Spaces:
Sleeping
Sleeping
from simbals_apis_public_clients.clients.services import SimbalsAPIClient | |
import time | |
import json | |
import os | |
import gradio as gr | |
SIMBALS_GLOBAL_DB = 1 | |
SIMBALS_MAIN_DATABASE = 2 | |
embed_html1 = '<iframe src="https://open.spotify.com/embed/track/' | |
embed_html2 = '" width="300" height="380" frameborder="0" allowtransparency="true" allow="encrypted-media"></iframe>' | |
def process(input_path): | |
# setup the client | |
client = SimbalsAPIClient(os.environ['TOKEN'], debug=True) | |
# init the base parameters with your audio id and an audio url (or a local audio file) | |
parameters = client.prepare_request("31415", audio_file=input_path) | |
# add scanmatch service with full_matches option activated, against a chosen and available database | |
#parameters = client.add_scanmatch_full_matches(parameters, SIMBALS_GLOBAL_DB) | |
# add scanmatch service with partial_matches option activated, against a chosen and available database | |
#parameters = client.add_scanmatch_partial_matches(parameters, SIMBALS_GLOBAL_DB) | |
parameters = client.add_scanmatch_partial_fast_matches(parameters, SIMBALS_GLOBAL_DB) | |
# launch the request and test for ok/code values | |
ok, code, job_id = client.launch_request(parameters) | |
# try to get the results with obtained job_id. If code is 4, job is not finished. In all other cases, job is finished | |
for i in range(1000): | |
results=client.get_results(job_id) | |
if results[0] != 4: | |
print(json.dumps(results[1], indent=1)) | |
#return json.dumps(results[1], indent=1) | |
output = json.dumps(results[1], indent=1) | |
try : | |
trackname = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['track']['title'] | |
artistname = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['artists'][0]['name'] | |
isrc = results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['track']['isrc'] | |
id_spotify = -1 | |
for x in results[1]["response"]["scanmatch"]['1']['partial_fast_matches'][0]['track']['other_ids'] : | |
if x['id_type_name'] == "spotify": | |
id_spotify = x['id'] | |
if id_spotify == -1: | |
id_spotify = "No Spotify ID found." | |
output_text = trackname+" by "+artistname + " - ISRC : " + isrc + " - spotify ID : " + id_spotify | |
output_html = embed_html1 + id_spotify + embed_html2 | |
return ouput_text, output_html | |
except IndexError: | |
return "Not found. Please try again." | |
time.sleep(1) | |
demo = gr.Interface(fn=process, | |
inputs=gr.Audio(type="filepath"), | |
outputs=[gr.outputs.Textbox(label="Generated Text"),"html"] | |
#examples=example_list, | |
#cache_examples=False | |
) | |
demo.queue(concurrency_count=10) | |
demo.launch(debug=False) | |