From 9edd68cccccc3b01622caba5d51b3d8b22596b96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=BE=D0=BB=D0=B8=D0=BD=D0=B8=D0=BC=D1=87=D0=B5?= =?UTF-8?q?=D0=BA?= Date: Sun, 26 Nov 2023 22:00:10 +0300 Subject: [PATCH] =?UTF-8?q?=D0=97=D0=B0=D0=B3=D1=80=D1=83=D0=B7=D0=B8?= =?UTF-8?q?=D0=BB(=D0=B0)=20=D1=84=D0=B0=D0=B9=D0=BB=D1=8B=20=D0=B2=20''?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bot.py | 91 +++++++++++++++++++++++++++++++++++++++++++++++++++ bot_extras.py | 23 +++++++++++++ gpt_blob.py | 42 ++++++++++++++++++++++++ im_convert.py | 52 +++++++++++++++++++++++++++++ listwork.py | 24 ++++++++++++++ 5 files changed, 232 insertions(+) create mode 100644 bot.py create mode 100644 bot_extras.py create mode 100644 gpt_blob.py create mode 100644 im_convert.py create mode 100644 listwork.py diff --git a/bot.py b/bot.py new file mode 100644 index 0000000..d84770a --- /dev/null +++ b/bot.py @@ -0,0 +1,91 @@ +import requests +from time import sleep +# Progress-bar +from tqdm import tqdm +# Work with list-like objects +from listwork import * + +from os import system +print("Поместите файл картинки в папку с этим файлом.") +coordbyx = input("Введите координату по X (по умолчанию - 0)\n> ") +coordbyy = input("Введите координату по Y (по умолчанию - 0)\n> ") +if coordbyx=="": + coordbyx=0 +if coordbyy=="": + coordbyy=0 +try: + coordbyx=int(coordbyx) + coordbyy=int(coordbyy) +except: + print("Цифрами, балбес.") + system("pause") + system("exit") +# Easy debug +from icecream import ic +ic.disable() # Disable debug + +global server +#server = 'http://127.0.0.1:3333' +server = 'http://pb.gulyaipole.fun' + +# fill(0,0, 10,10, [0,0,0]) +def fill(x1,y1, x2,y2, color): + pxls = [] + r = color[0] ; g = color[1] ; b = color[2] + for x in range(x1, x2+1): + for y in range(y1, y2+1): + pxls.append([x, y, r, g, b]) + return pxls + +# draw( fill(...) ) +def draw(pxls): + global server + ic(pxls) + + push = [] # Push %limit% items + limit = 300 + while len(pxls) > limit: + packs = [] # Merge elements to %limit% size list + for i in range(limit): + # Take first element + packs.append(pxls[0]) + pxls.pop(0) + push.append({"main": pack(packs)}) + push.append({"main": pack(pxls)}) # Pack last + + ic(push) + for i in tqdm(push): + response = requests.post(server, i) + while not response.status_code == 200: + print("Error, retrying...") + response = requests.post(server, i) + sleep(0.1) + +# cfill(0,0, 10,10) // Limit - 34x34 +def cfill(x1,y1, x2,y2): + pxls = [] + for x in range(x1, x2+1): + for y in range(y1, y2+1): + pxls.append([x, y]) + packed = pack(pxls) + return packed + +# ccheck( packed([[0,0]]) ) or ccheck(cfill(...)) +def ccheck(packed): + global server + response = requests.get(f'{server}/get_color={packed}') + ic(response.text) + out = unpack(response.text) + return out + + +# Draw image (flipped (BUG) ) +from im_convert import * +try: + image = convert("image.png", [coordbyx,coordbyy]) +except: + print('Файл картинки отсутствует, или назван не "image.png"') + system('pause') + system('exit') +from remove_back import * +draw(optimize(image, [255,255,255]) ) # Remove white background and draw diff --git a/bot_extras.py b/bot_extras.py new file mode 100644 index 0000000..7c56ff2 --- /dev/null +++ b/bot_extras.py @@ -0,0 +1,23 @@ +from listwork import * +from random import randint as ri + +# pas2( fill(...) ) -> 1/2 +def pas2(pxls): + new_pxls = [] + + pas = False + for i in pxls: + if not pas: + new_pxls.append(i) + pas = True + else: + pas = False + return new_pxls + +# rand(x1,y1, x2,y2) -> draw() or pas2() +def rand(x1,y1, x2,y2): + pxls = [] + for x in range(x1, x2 +1): + for y in range(y1, y2 +1): + pxls.append([x,y, ri(0,255), ri(0,255), ri(0,255)]) + return pxls diff --git a/gpt_blob.py b/gpt_blob.py new file mode 100644 index 0000000..7c90730 --- /dev/null +++ b/gpt_blob.py @@ -0,0 +1,42 @@ +import tkinter as tk +from time import sleep + +def start_drag(event): + global current_coords + global dragged_item + dragged_item = label + current_coords = label.winfo_pointerx(), label.winfo_pointery() + +def stop_drag(event): + dragged_item = None + +def drag(event): + global current_coords + xc, yc = label.winfo_pointerx(), label.winfo_pointery() + dx, dy = xc - current_coords[0], yc - current_coords[1] + current_coords = xc, yc + label.place(x=label.winfo_x() + dx, y=label.winfo_y() + dy) + +def nn(root,im): + global label + + image = tk.PhotoImage(file=im) # Use self.image + label = tk.Label(root, image=image) + label.image = image # Keep a reference to the image + label.pack() + + dragged_item = None + current_coords = 0, 0 + + label.bind('', start_drag) + label.bind('', stop_drag) + label.bind('', drag) +# globals().update(locals()) + + while True: + tk.Misc.lift(label) + sleep(0.05) + + print("Image cords: ", label.winfo_x(), 670 - label.winfo_y()) + #x1, y1 = image.coords(image) + # print(f'Image cords: {}') diff --git a/im_convert.py b/im_convert.py new file mode 100644 index 0000000..1917bc5 --- /dev/null +++ b/im_convert.py @@ -0,0 +1,52 @@ +from PIL import Image, ImageOps + +# [[0,0, rgb1],... [1,1, rgb2]] -> [[1,1, rgb1],...[0,0, rgb2]] +def flip(cords): + fliped = [] + flips = len(cords)//2 + + # El from start and el from end + fl0 = 0 ; fl1 = len(cords)-1 + + for i in range(flips): + # Copy element and change cords to cords of end element + new_st = list(cords[fl0]) + new_st[0] = cords[fl1][0] + new_st[1] = cords[fl1][1] + fliped.append(new_st) + + # Copy and change cords to cords of start element + new_end = list(cords[fl1]) + new_end[0] = cords[fl0][0] + new_end[1] = cords[fl0][1] + fliped.append(new_end) + + fl0 += 1 ; fl1 -= 1 + + return fliped + +# convert("example.png") // png/jpg/gif +def convert(filename, move = [0,0]): + im = Image.open(filename).convert('RGB') + # Fix mirror + im = ImageOps.mirror(im) + pxls=im.load() + w=im.size[0] + h=im.size[1] + + ll = [] + for x in range(w): + for y in range(h): + # [x,y, [r, g, b]] + rgb = pxls[x,y] + ll.append( [x,y, rgb[0], rgb[1], rgb[2] ] ) + + # Fix flip + fliped = flip(ll) + + # Move [x,y] + move + moved = [] + for i in fliped: + moved.append([i[0] + move[0], i[1] + move[1], i[2],i[3],i[4]]) + + return moved diff --git a/listwork.py b/listwork.py new file mode 100644 index 0000000..89125d5 --- /dev/null +++ b/listwork.py @@ -0,0 +1,24 @@ +def unpack(string): + ll = string.split('-_') + ll.remove("") # Remove empty line + el_col = ll[0].count('-') + + post_ll = [] + for i in ll: + temp = i.split("-") + # Multi-add (2, 3 or 5 elements) + if el_col == 1: + post_ll.append([int(temp[0]), int(temp[1])]) + elif el_col == 2: + post_ll.append([int(temp[0]), int(temp[1]), int(temp[2])]) + elif el_col == 4: + post_ll.append([int(temp[0]), int(temp[1]), int(temp[2]), int(temp[3]), int(temp[4]) ]) + return post_ll + +def pack(ll): + string = '' + for el in ll: + for i in el: + string += str(i) + '-' + string += '_' + return string