uploaderbot / upload.py
rastroberto's picture
Update upload.py
158438b verified
#!/usr/bin/env python3
default_server='uq'
uq_url='https://uqload.is/embed-'
import requests, json, os
from sys import argv as argv
from glob import glob as glob
from requests_toolbelt.multipart import encoder
import subprocess
from bs4 import BeautifulSoup as bs4
import json
def upload_file(alias, server, key_name, key_value, file):
curl_command=['curl', '-k', '-s', '-X', 'POST', '-F', f"{key_name}={key_value}", '-F', f'file=@"{file}"', server]
process = subprocess.Popen(curl_command,stdout=subprocess.PIPE)
while True:
output = process.stdout.readline()
if process.poll() is not None and output == b'':
break
if output:
if alias=='uq':
url=uq_url+bs4(output.decode('UTF-8').strip(),'html.parser').find('textarea',{'name':"fn"}).text+'.html'
retval = process.poll()
return(retval,url)
servers={
'uq': {
'name':'uqload',
'key_name':'api_key',
'key_value':os.environ.get('UQ_KEY', None),
'alias':'uq'
}
}
servers['uq']['server_string']=f"https://uqload.is/api/upload/server?key={servers['uq']['key_value']}"
parametros=list(set(argv[1:]))
asubir=[]
videos=[]
nombres=parametros.copy()
for parametro in parametros:
if parametro.lower() in servers:
asubir.append(servers[parametro.lower()])
nombres.remove(parametro)
if not asubir:
asubir.append(servers[default_server])
else:
servidores_encontrados=''
for servidor_encontrado in asubir:
servidores_encontrados=servidores_encontrados+servidor_encontrado['name']+', '
if not nombres:
exit(1)
for nombre in nombres:
if os.path.isfile(nombre):
videos.append(nombre)
else:
archivos=glob(nombre)
for archivo in archivos:
if not archivo in videos:
videos.append(archivo)
videos.sort()
if not asubir:
exit(1)
if not videos:
exit(1)
for servidor in asubir:
for video in videos:
try:
server=''
response=requests.get(servidor['server_string'])
myjson=json.loads(response.text)
if myjson['status']==200:
server=myjson['result']
(retorno,url)=upload_file(servidor['alias'], server, servidor['key_name'], servidor['key_value'], video)
if retorno==0:
nombre='.'.join(video.split('.')[:-1]).split('/')[-1]
print(f"{url} | {nombre}")
except:
pass
exit(0)