diff --git a/bots/README.md b/bots/README.md new file mode 100644 index 0000000..45f2105 --- /dev/null +++ b/bots/README.md @@ -0,0 +1,2 @@ +# Telegram bot scrips +my small collection of bots(mainly as a mvp) diff --git a/bots/photo_handler.py b/bots/photo_handler.py new file mode 100644 index 0000000..b13b1ff --- /dev/null +++ b/bots/photo_handler.py @@ -0,0 +1,40 @@ +import time + +import telebot + +bot = telebot.TeleBot("132:TOKEN") + + +@bot.message_handler(content_types=["photo"]) +def send_text(message): + try: + file_name = message.document.file_name + file_id = message.document.file_name + file_id_info = bot.get_file(message.document.file_id) + downloaded_file = bot.download_file(file_id_info.file_path) + src = file_name + print(src) + with open(src, "wb") as new_file: + new_file.write(downloaded_file) + bot.send_message( + message.chat.id, + "[*] File added:\nFile name - {}".format( + str(file_name), + ), + ) + except Exception as ex: + bot.send_message(message.chat.id, "[!] error - {}".format(str(ex))) + + +while True: + try: + print("[*] bot starting..") + print("[*] bot started!") + bot.polling(none_stop=True, interval=2) + break + except Exception as ex: + print("[*] error - {}".format(str(ex))) + print("[*] rebooting..") + bot.stop_polling() + time.sleep(15) + print("[*] restarted!") diff --git a/images/README.md b/images/README.md new file mode 100644 index 0000000..1e862b3 --- /dev/null +++ b/images/README.md @@ -0,0 +1,39 @@ +# Image scripts +several scripts for sorting and managing images + +Note: highly depended on python's tkinter and pillow +### Install +```shell +# Debian +$ sudo apt-get install python3-tk +# Fedora +$ sudo dnf install python3-tkinter +# Arch +$ yay -S tk + +$ pip install Pillow tk +``` + +## Clear +Find files with the same hash and deletes them + +### Run +```shell +$ python3 clear.py +``` + +## Manage +Show images and moves them to folders on key press + +### Run +```shell +$ python3 manage.py +``` + +## Classifier +Sort images into real/not real photos + +### Run +```shell +$ python3 classifier.py +``` diff --git a/other/elevator/README.md b/other/elevator/README.md new file mode 100644 index 0000000..07419b7 --- /dev/null +++ b/other/elevator/README.md @@ -0,0 +1,14 @@ +# Elevator +mini script to simulate elevator, moving between floors, has a fancy output to shell + +can be used as task for technical interview(write custom sorting algorithm to boost elevator speed, etc) + +### Run +```shell +$ python3 elevator.py +``` + +### TODO: + +- add passenger via class(for such properties like time) +- make time step more ideal diff --git a/other/elevator/elevator.py b/other/elevator/elevator.py new file mode 100644 index 0000000..84e223c --- /dev/null +++ b/other/elevator/elevator.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + +""" +Elevator simulator +""" +import os +import random + +from time import sleep + + +class Passenger(object): + __slots__ = ["frm", "to", "time", "on_elevator"] + + def __init__(self, frm, to): + self.frm = frm + self.to = to + self.time = 0 + self.on_elevator = False + + +def clear(): + os.system("clear") + + +def add_random(): + to = random.randint(1, 100) + if to < 90: + return + flr = random.randint(1, MAX_FLOORS) + flr2 = random.randint(1, MAX_FLOORS) + while flr2 == flr: + flr2 = random.randint(1, MAX_FLOORS) + next_command.append(flr) + next_command.append(flr2) + + +def print_elevator(): + msx = len(str(MAX_FLOORS)) + r = "" + mx_n = 0 + for i in range(MAX_FLOORS, 0, -1): + s = f"{i}{' ' * (msx - len(str(i)))}|" + if i == current_floor: + s += "e" + else: + s += " " + s += "|" + if i in next_command: + n = next_command.count(i) + if n + 1 > mx_n: + mx_n = n + 1 + s += " " + "i" * n + s += "\n" + r += s + r += "_" * len(next_command) + clear() + print(r) + + +# config +MOVE_SPEED = 2 +TURN_TIME = 2 +MAX_FLOORS = 30 + +next_command = [10, 6, 8, 30, 1] +passengers = [] +current_floor = 1 +stop = True + +while True: + next_command = sorted(next_command, key=lambda x: abs(current_floor - x)) + status = f"idling on floor {current_floor}" + if next_command: + if not stop: + if MOVE_SPEED >= abs(current_floor - next_command[0]): + stop = True + current_floor = next_command[0] + del next_command[0] + status = f"arrived to floor {current_floor}" + else: + if current_floor > next_command[0]: + current_floor -= MOVE_SPEED + else: + current_floor += MOVE_SPEED + status = f"moving to floor {next_command[0]}, current floor - {current_floor}" + else: + stop = False + status = f"stated moving to floor {next_command[0]}, current floor - {current_floor}" + print(status) + print_elevator() + add_random() + sleep(TURN_TIME)