import gradio as gr import yt_dlp import os import binascii import json def dl_user(inp): out_json={} os.system(f'yt-dlp "{inp}" --write-info-json --skip-download --cookies-from-browser chrome -o "{inp_out}"') try: with open(f"{inp_out}.info.json", "r") as f: f_out = f.read() print(f_out) json_object = json.loads(f_out) out_json = json.dumps(json_object, indent=4) print (out_json) except Exception as e: print (e) return out_json def dl(inp): out = None out_file=[] out_json={} try: inp_out=inp.replace("https://","") inp_out=inp_out.replace("/","_").replace(".","_") os.system(f'yt-dlp "{inp}" --write-description --skip-download -o "{inp_out}"') os.system(f'yt-dlp "{inp}" --write-info-json --skip-download -o "{inp_out}"') os.system(f'yt-dlp "{inp}" --trim-filenames 100 -o "{inp_out}.mp4"') out = f"{inp_out}.mp4" out_file.append(out) out_file.append(f"{inp_out}.description") out_file.append(f"{inp_out}.info.json") out_json=f'{inp_out}.info.json' try: with open(f"{inp_out}.info.json", "r") as f: f_out = f.read() print(f_out) #for line in f_out: # print (line) # json_line.append(line) #dec_line = line.decode('utf-8', 'backslashreplace') #out_line = binascii.hexlify(eval(dec_line)) #print (out_line) json_object = json.loads(f_out) out_json = json.dumps(json_object, indent=4) print (out_json) except Exception as e: print (e) except Exception as e: print (e) out = None return out,out_file,out_json with gr.Blocks() as app: inp_url = gr.Textbox() with gr.Row(): #btn=gr.Button("Search") go_btn = gr.Button("Run") with gr.Row(): with gr.Column(): outp_vid=gr.Video() with gr.Column(): outp_files=gr.Files() out_json = gr.JSON() #btn.click(dl,inp_url,out_json) go_btn.click(dl,inp_url,[outp_vid,outp_files,out_json]) app.launch()