vid-url-dl-mod / app.py
Omnibus's picture
Update app.py
e90bb7a
raw
history blame
2.11 kB
import gradio as gr
import yt_dlp
import os
import json
import backgroundremover
load_js = """
function(text_input, url_params) {
console.log(text_input, url_params);
const params = new URLSearchParams(window.location.search);
url_params = Object.fromEntries(params);
return [text_input, url_params]
}
"""
def rem_bg(inp):
#transparent .mov
os.system(f'backgroundremover -i "{inp}" -tv -o "{inp}.mov"')
return f'{inp}.mov'
def predict(text, url_params):
mod_url=""
mod=gr.HTML("")
out = None
valid=gr.update(visible=False)
mod_url = url_params.get('url')
print (mod_url)
return ["" + text + "", mod_url]
def dl(inp):
out = None
out_file=[]
try:
inp_out=inp.replace("https://","")
inp_out=inp_out.replace("/","_").replace(".","_")
os.system(f'yt-dlp "{inp}" --trim-filenames 100 -o "{inp_out}.mp4"')
out = f"{inp_out}.mp4"
try:
with open(f"{inp_out}.info.json", "r") as f:
f_out = f.read()
json_object = json.loads(f_out)
out_json = json.dumps(json_object, indent=4)
except Exception as e:
print (e)
except Exception as e:
print (e)
out = None
return out,out,out
with gr.Blocks() as app:
with gr.Tab("Load"):
inp_url = gr.Textbox()
go_btn = gr.Button("Run")
with gr.Row():
with gr.Column():
outp_vid=gr.Video()
with gr.Column():
outp_file=gr.Textbox()
with gr.Tab("Rem BG"):
with gr.Row():
with gr.Column():
rem_btn=gr.Button()
in_vid=gr.Video()
with gr.Column():
rem_vid=gr.Video()
with gr.Row(visible=False):
text_input=gr.Textbox()
text_output=gr.Textbox()
url_params=gr.JSON()
rem_btn.click(rem_bg,in_vid,rem_vid)
go_btn.click(dl,inp_url,[outp_vid,in_vid,outp_file])
app.load(fn=predict, inputs=[text_input,url_params], outputs=[text_output,text_input],_js=load_js)
app.launch()