Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from bs4 import BeautifulSoup
- import json
- import base64
- from PIL import Image
- from io import BytesIO
- #REPLACE .HAR !!!
- with open('ripanimalfull.har', 'r') as archivo:
- contenido = archivo.read()
- datos = json.loads(contenido)
- #Extraemos cada registro del logger
- entries = datos['log']['entries']
- #Lugar donde guardamos el scramble de cada imagen
- scrambleReg = []
- imgReg = []
- #Recorremos las transacciones
- for entry in entries:
- response = entry['response']
- #Para cada transaccion de la network buscamos las responses de tipo "application/octet-stream"
- #Entramos a la request correspondiente a esa response y buscamos el nombre de la imagen los queryString
- #Tomamos el campo "text" de la respuesta y lo convertimos en una imagen. La guardamos usando el nombre recuperado
- if response['content']["mimeType"] == "application/octet-stream":
- for qs in entry["request"]["queryString"]:
- if qs["name"] == "file":
- imgName = qs["value"].split(".")[0].split("_")[0]
- imgReg.append({
- "img": imgName,
- "data": response['content']["text"]
- })
- #image_bytes = base64.b64decode(response['content']["text"])
- #with open(imgName+'.jpg', 'wb') as archivo:
- # archivo.write(image_bytes)
- #Para cada transaccion de la network buscamos las responses de tipo "text/xml"
- #Buscamos si la respuesta contiene datos dentro de una tag llamada "scramble" (usamos html.parser para recorrer el string)
- #En caso de encontrarlo buscamos en la request correspondiente el nombre del archivo al cual corresponde el "scramble" (esta en los queryString)
- #Guardamos ambos valores
- if response['content']["mimeType"] == "text/xml":
- if "text" in response["content"]:
- soup = BeautifulSoup(response["content"]["text"], 'html.parser')
- scramble = soup.find('scramble')
- if scramble is not None:
- scramble = scramble.string
- if scramble is not None:
- for qs in entry["request"]["queryString"]:
- if qs["name"] == "file":
- scrambleReg.append({
- "img": qs["value"].split(".")[0],
- "scramble": scramble.split(',')
- })
- #frameW = 352
- #frameH = 496
- #SET SEGMENT DIMENSIONS
- frameW = 336
- frameH = 480
- for imgR in imgReg:
- for sR in scrambleReg:
- if imgR["img"] == sR["img"]:
- bytes_imagen = base64.b64decode(imgR["data"])
- objeto_bytes = BytesIO(bytes_imagen)
- imagen = Image.open(objeto_bytes)
- W, H = imagen.size
- #TODO: Averiguar como calcular el tamaño del cuadrante de forma automaitca (Depende del tamaño de la imagen original)
- #frameW = W // 4
- #frameH = H // 4
- #print(W)
- #print(frameW)
- numberOfWFrames = W // frameW
- numberOfHFrames = H // frameH
- WpixelExtras = W - (numberOfWFrames * frameW)
- HpixelExtras = H - (numberOfHFrames * frameH)
- sections = []
- for j in range(numberOfHFrames):
- for i in range(numberOfWFrames):
- seccion_imagen = imagen.crop((i*frameW,j*frameH,i*frameW+frameW,j*frameH+frameH))
- sections.append(seccion_imagen)
- count = 0
- for j in range(numberOfHFrames):
- for i in range(numberOfWFrames):
- realSectionHere = int(sR["scramble"][count])
- imagen.paste(sections[realSectionHere], (i*frameW,j*frameH))
- count += 1
- imagen.save(imgR["img"]+'.jpg', format='JPEG', quality=100, compress_level=0)
Add Comment
Please, Sign In to add comment