rishi9440's picture
Duplicate from AnnasBlackHat/Image-Downloader
703e13b
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)