Mi primer Script

Iniciado por Kreusser, Septiembre 28, 2019, 10:03:03 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Septiembre 28, 2019, 10:03:03 PM Ultima modificación: Septiembre 29, 2019, 02:59:54 PM por Kreusser
Saltando la autenticacion de la api de discord metiendo info en el header del request. (no estoy seguro del nombre tecnico) descarga fondos de escritorio sin parar.
Saludos.
paciencia por favor  ;D

Código: python
import requests
import json
import urllib.request
import os
offset = 0;
while(1) :
response = requests.get('https://hanime.tv/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset='+str(offset)+'&__order=created_at,DESC',headers={'accept':'application/json, text/plain, */*' , 'x-directive':'api' , 'authority':'hanime.tv' , 'Path':'/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset=0&__order=created_at,DESC' , 'scheme':'https'  , 'dnt':'1' , 'cookie':'__cfduid=d112d21a3d21a27eabcbb7f46f34f339f1569714658; _ga=GA1.2.834547166.1569714660; _gid=GA1.2.1822939034.1569714660; in_d4=1; _gat_gtag_UA_64196020_10=1' , 'sec-fetch-mode':'cors' , 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'})
meta = json.loads(response.text)
for img in meta["data"] :
if(os.path.isfile(img['filename'])) :
print(img["canonical_url"] + str(">> skip"))
else :
print(img["canonical_url"])
response =  urllib.request.urlopen(img["canonical_url"])
data = response.read()
with open(img['filename'], 'wb') as archivo:
archivo.write(data)
offset = offset + meta['meta']['count']
print (offset)


@No tienes permitido ver los links. Registrarse o Entrar a mi cuenta

Muy bueno el script, es un placer que la gente comente sus propios códigos a la comunidad.

No se que datos me mostrara la API, ya que nunca he interactuado con ella, sin embargo podrías colocar una suma de uno en uno, si existe el archivo para que no sobre-escriba el que se descargo anteriormente en caso de que exista; Fíjate también que en vez de colocar un controlador de flujo, coloco un bucle, ya que si haz ejecutado el script anteriormente sobre-escribirá el nombre, algo que no nos gustaría.

Scriptv1.1:

Código: python
import requests
import json
import urllib.request
import os

offset = 0;
while(1) :
        response = requests.get('https://hanime.tv/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset='+str(offset)+'&__order=created_at,DESC',headers={'accept':'application/json, text/plain, */*' , 'x-directive':'api' , 'authority':'hanime.tv' , 'Path':'/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset=0&__order=created_at,DESC' , 'scheme':'https'  , 'dnt':'1' , 'cookie':'__cfduid=d112d21a3d21a27eabcbb7f46f34f339f1569714658; _ga=GA1.2.834547166.1569714660; _gid=GA1.2.1822939034.1569714660; in_d4=1; _gat_gtag_UA_64196020_10=1' , 'sec-fetch-mode':'cors' , 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'})
        meta = json.loads(response.text)
        _file_id = 0
        for img in meta["data"] :
                print(img["canonical_url"])
                response =  urllib.request.urlopen(img["canonical_url"])
                data = response.read()
                _save = img['filename']
                while(os.path.isfile(_save)):
                        _file_id += 1
                        _save = '%s.%d' % (_save, _file_id)
                with open(_save, 'wb') as archivo:
                        archivo.write(data)
        offset = offset + meta['meta']['count']
        print (offset)



Solo te quise aportar mi ápice de código, espero que sigas publicando y aprediendo.

- DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF

No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Saltando la autenticacion de la api de discord metiendo info en el header del request. (no estoy seguro del nombre tecnico) descarga fondos de escritorio sin parar.
Saludos.
paciencia por favor  ;D

Código: python
import requests
import json
import urllib.request

offset = 0;
while(1) :
response = requests.get('https://hanime.tv/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset='+str(offset)+'&__order=created_at,DESC',headers={'accept':'application/json, text/plain, */*' , 'x-directive':'api' , 'authority':'hanime.tv' , 'Path':'/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset=0&__order=created_at,DESC' , 'scheme':'https'  , 'dnt':'1' , 'cookie':'__cfduid=d112d21a3d21a27eabcbb7f46f34f339f1569714658; _ga=GA1.2.834547166.1569714660; _gid=GA1.2.1822939034.1569714660; in_d4=1; _gat_gtag_UA_64196020_10=1' , 'sec-fetch-mode':'cors' , 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'})
meta = json.loads(response.text)
for img in meta["data"] :
print(img["canonical_url"])
response =  urllib.request.urlopen(img["canonical_url"])
data = response.read()
with open(img['filename'], 'wb') as archivo:
archivo.write(data)
offset = offset + meta['meta']['count']
print (offset)

te damos la bienvenida al portapapeles de gboard. aquí se guardarán los textos que copies.te damos la bienvenida al portapapeles de gboard. aquí se guardarán los textos que No tienes permitido ver los links. Registrarse o Entrar a mi cuenta al portapapeles de Gboard. Aquí se guardarán los textos que copies.Te damos la bienvenida al portapapeles de Gboard. Aquí se guardarán los textos que copies.

Enviado desde mi VTR-L09 mediante Tapatalk


No tienes permitido ver los links. Registrarse o Entrar a mi cuenta
Saltando la autenticacion de la api de discord metiendo info en el header del request. (no estoy seguro del nombre tecnico) descarga fondos de escritorio sin parar.
Saludos.
paciencia por favor  ;D

Código: python
import requests
import json
import urllib.request

offset = 0;
while(1) :
response = requests.get('https://hanime.tv/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset='+str(offset)+'&__order=created_at,DESC',headers={'accept':'application/json, text/plain, */*' , 'x-directive':'api' , 'authority':'hanime.tv' , 'Path':'/api/v3/community_uploads?channel_name__in[]=media&channel_name__in[]=nsfw_general&__offset=0&__order=created_at,DESC' , 'scheme':'https'  , 'dnt':'1' , 'cookie':'__cfduid=d112d21a3d21a27eabcbb7f46f34f339f1569714658; _ga=GA1.2.834547166.1569714660; _gid=GA1.2.1822939034.1569714660; in_d4=1; _gat_gtag_UA_64196020_10=1' , 'sec-fetch-mode':'cors' , 'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'})
meta = json.loads(response.text)
for img in meta["data"] :
print(img["canonical_url"])
response =  urllib.request.urlopen(img["canonical_url"])
data = response.read()
with open(img['filename'], 'wb') as archivo:
archivo.write(data)
offset = offset + meta['meta']['count']
print (offset)


Que pasada para ser tu primer script, felicitaciones ! :D
Como me gusta la simpleza de python que en menos de 20 lineas puedas conseguir una herramienta util.

Saludos !




Con la fuerza del mar, con la paz del rio


Gracias, ya programo hace tiempo nada mas que nunca toque python,  hice una modificacion para saltar las imagenes repetidas asumiendo que con el mismo nombre son las mismas asi que al ejecutarlo varias veces este no pierde tiempo en imagenes ya descargadas

Nuevamente comento, para indicarte que noté tu modificación respecto a tu código.

Pude ver que usas un controlador de flujo 'if' indicando que solo escriba un archivo si no existe, pero y ¿que pasá si el archivo tiene el mismo nombre pero diferente contenido?.

Por eso es el bucle, que no para hasta que el nuevo nombre dado no existe.

Espero ayudarte con mi comentario para que mejores ...

- DtxdF
PGP :: <D82F366940155CB043147178C4E075FC4403BDDC>

~ DtxdF