Spaces:
Runtime error
Runtime error
from cProfile import label | |
from distutils.log import debug | |
from random import choices | |
import gradio as gr | |
import re | |
import requests | |
import os | |
import shutil | |
import gofile | |
import json | |
import time | |
try: os.mkdir('images') | |
except: print('images dir might already exist...') | |
def download_local(url): | |
resp = requests.get(url, allow_redirects=True) | |
filename, file_extension = os.path.splitext(url) | |
filename = os.path.basename(url) | |
if file_extension == '': | |
filename = filename+'.jpg' | |
filename = 'images/{}_{}'.format(int(time.time()), filename) | |
with open(filename, 'wb') as handler: | |
handler.write(resp.content) | |
return filename | |
def download(text, is_upload): | |
pattern = '(?:(?:https?|ftp):\/\/)?[\w/\-?=%.]+\.[\w/\-&?=%.]+' | |
print(text) | |
print('upload?: ',is_upload) | |
urls = re.findall(pattern, text) | |
print(f'{len(urls)} urls') | |
if len(urls) == 0 : | |
return 'No Url Found' | |
err_msgs = [] | |
#downloading all files | |
print('downloading...') | |
for i, url in enumerate(urls): | |
try: | |
download_local(url) | |
if i % int(len(urls) * 0.1) == 0: | |
print(f'>>> {i} files downloaded') | |
except Exception as e : | |
err_msgs.append(f'error downloading: {url} - {str(e)}') | |
#zipping | |
print('zipping images...') | |
shutil.make_archive('images', 'zip', 'images') | |
result = '{} link found, {}'.format(len(urls), " ,\n ".join(err_msgs)) | |
if is_upload == 'yes': | |
print('uploading...') | |
download_links = gofile.Gofile().upload(["images.zip"]) | |
result += f'download link : {" ".join(download_links)}' | |
return "images.zip", result | |
iface = gr.Interface(fn=download, | |
inputs=["text",gr.Radio(choices=['yes','no'], label='Upload to Gofile? (slow process)')], | |
outputs=["file", "text"]) | |
iface.launch(debug=True) |