import time import json import os import pickle import gradio as gr import numpy as np import yt_dlp import sys import csv from huggingface_hub import hf_hub_download embed_html1 = '' # NO GPU os.environ['CUDA_VISIBLE_DEVICES'] = '-1' os.environ['TF_CPP_MIN_LOG_LEVEL'] = '3' import tensorflow tensorflow.config.threading.set_intra_op_parallelism_threads(2) tensorflow.config.threading.set_inter_op_parallelism_threads(2) # python_path = hf_hub_download(repo_id=os.environ['REPO_ID'], repo_type="space", filename=os.environ['MODEL_FILE'], use_auth_token=os.environ['TOKEN']) print("PATH : ", python_path) sys.path.append(os.environ['PRIVATE_DIR']) from models import * ind = get_index() ind_filenames = get_audio_names() catalog = get_catalog() url_dict = get_durl_myma() ###dict_catalog = get_dict_catalog() # dict containing track infos : key = track name (without ".mp3") def download_audio_(link): with yt_dlp.YoutubeDL({'extract_audio': True, 'format': 'bestaudio', 'outtmpl': '%(title)s.mp3'}) as video: #with yt_dlp.YoutubeDL({'extract_audio': True, 'format': 'bestaudio', 'outtmpl': '%(id).mp3'}) as video: info_dict = video.extract_info(link, download = True) video_title = info_dict['title'] #video_title = info_dict['id'] # KeyError !!!!! video.download(link) return video_title #"tmp" def download_audio(id_video): id = id_video.split("?v=")[-1][:11] audio_file = download_audio_(id_video) audio_file = audio_file+'.mp3' embed_html_all = embed_html1 + id +embed_html2 return audio_file, audio_file, embed_html_all def process_url(input_path): # setup the client #try : audio_file, audio_file, embed_html_all = download_audio(input_path) return process(audio_file, embed_html_all) #except: # return "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "" def process_file(input_path): return process(input_path, '')[1:] def process(audio_file, embed_html_all): #try : timestart = time.time() emb, ts = get_embed(audio_file) print("Embed time :", time.time()-timestart) D, I = do_search(emb, ind) print("Search + embed time :", time.time()-timestart) prin("DEBUG DISTANCES : ", D) #top1, top2, top3, top4, top5, top6, top7, top8, top9, top10 = get_top(I, ind_filenames, url_dict, catalog) top1, top2, top3, top4, top5, top6, top7, top8, top9, top10 = get_topN(I, ind_filenames, url_dict, catalog, 10) print("Total time :", time.time()-timestart) return embed_html_all, ind_filenames[I[0][0]].split('.')[0], top1, ind_filenames[I[0][1]].split('.')[0], top2, ind_filenames[I[0][2]].split('.')[0], top3, ind_filenames[I[0][3]].split('.')[0], top4, ind_filenames[I[0][4]].split('.')[0], top5, ind_filenames[I[0][5]].split('.')[0], top6, ind_filenames[I[0][6]].split('.')[0], top7, ind_filenames[I[0][7]].split('.')[0], top8, ind_filenames[I[0][8]].split('.')[0], top9, ind_filenames[I[0][9]].split('.')[0], top10 #except: # return embed_html_all, "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "", "Erreur Input", "" topname=[] with gr.Blocks() as demo: with gr.Row(): with gr.Column(): with gr.Row(): #gr.HTML(embed_html) html = gr.HTML() with gr.Row(): with gr.Column(): audio_url_input = gr.Textbox(placeholder='YouTube video URL', label='YouTube video URL') analyze_url_btn = gr.Button('Search from URL') with gr.Row(): with gr.Column(): audio_input_file = gr.Audio(type="filepath", label='Audio Input') analyze_file_btn = gr.Button('Search from file') with gr.Row(): with gr.Column(): ''' gr.HTML("

Top 1

") top1 = gr.Textbox(label="top1", show_label=False) gr.HTML("

Top 2

") top2 = gr.Textbox(label="top2", show_label=False) gr.HTML("

Top 3

") top3 = gr.Textbox(label="top3", show_label=False) gr.HTML("

Top 4

") top4 = gr.Textbox(label="top4", show_label=False) gr.HTML("

Top 5

") top5 = gr.Textbox(label="top5", show_label=False) ''' topname.append(gr.Textbox(label="top"+str(1)+"track name", show_label=True)) topname.append(gr.Audio(label="top"+str(1), show_label=False)) #top1_name = gr.Textbox(label="top1 track name", show_label=True) #top1 = gr.Audio(label="top1", show_label=False) top2_name = gr.Textbox(label="top2 track name", show_label=True) top2 = gr.Audio(label="top2", show_label=False) top3_name = gr.Textbox(label="top3 track name", show_label=True) top3 = gr.Audio(label="top3", show_label=False) top4_name = gr.Textbox(label="top4 track name", show_label=True) top4 = gr.Audio(label="top4", show_label=False) top5_name = gr.Textbox(label="top5 track name", show_label=True) top5 = gr.Audio(label="top5", show_label=False) top6_name = gr.Textbox(label="top6 track name", show_label=True) top6 = gr.Audio(label="top6", show_label=False) top7_name = gr.Textbox(label="top7 track name", show_label=True) top7 = gr.Audio(label="top7", show_label=False) top8_name = gr.Textbox(label="top8 track name", show_label=True) top8 = gr.Audio(label="top8", show_label=False) top9_name = gr.Textbox(label="top9 track name", show_label=True) top9 = gr.Audio(label="top9", show_label=False) top10_name = gr.Textbox(label="top10 track name", show_label=True) top10 = gr.Audio(label="top10", show_label=False) analyze_url_btn.click(process_url, inputs=[audio_url_input], outputs=[html]+topname+[top2_name, top2, top3_name, top3, top4_name, top4, top5_name, top5, top6_name, top6, top7_name, top7, top8_name, top8, top9_name, top9, top10_name, top10]) gr.Examples( examples = [ "https://www.youtube.com/watch?v=aNzCDt2eidg", "https://www.youtube.com/watch?v=NBE-uBgtINg", "https://www.youtube.com/watch?v=5NV6Rdv1a3I", "https://www.youtube.com/watch?v=OiC1rgCPmUQ",# "https://www.youtube.com/watch?v=dRX0wDNK6S4",# "https://www.youtube.com/watch?v=Guzu9aAeDIc"], inputs = [audio_url_input], outputs = [html]+topname+[top2_name, top2, top3_name, top3, top4_name, top4, top5_name, top5, top6_name, top6, top7_name, top7, top8_name, top8, top9_name, top9, top10_name, top10], fn = process_url, cache_examples=False, ) analyze_file_btn.click(process_file, inputs=[audio_input_file], outputs=topname+[top2_name, top2, top3_name, top3, top4_name, top4, top5_name, top5, top6_name, top6, top7_name, top7, top8_name, top8, top9_name, top9, top10_name, top10]) demo.launch(debug=False)