Completed
Branch preserve_file_extensions (ac989e)
by Anas
01:06
created

kek()   A

Complexity

Conditions 4

Size

Total Lines 17

Duplication

Lines 0
Ratio 0 %

Importance

Changes 6
Bugs 0 Features 1
Metric Value
cc 4
c 6
b 0
f 1
dl 0
loc 17
rs 9.2
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
from telegram.ext import CommandHandler, MessageHandler
4
from modules.custom_filters import caption_filter
5
from modules.send_image import send_image
6
from modules.get_image import get_image
7
from telegram import ChatAction
8
import subprocess
9
import datetime
10
import yaml
11
12
13
def handler(dp):
14
    dp.add_handler(MessageHandler(caption_filter("/kek"), kek))
15
    dp.add_handler(CommandHandler("kek", kek))
16
17
# import path
18
with open("config.yml", "r") as f:
19
    path = yaml.load(f)["path"]["kek"]
20
21
extensions = (".jpg", ".jpeg", ".png", ".bmp", ".webp")
22
23
24
# get image, pass parameter
25
def kek(bot, update):
26
    if update.message.reply_to_message is not None:
27
        kek_param = "".join(update.message.text[5:7])
28
    else:
29
        kek_param = "".join(update.message.caption[5:7])
30
    try:
31
        extension = get_image(bot, update, path)
32
    except:
33
        update.message.reply_text("Can't get the image! :(")
34
        return
35
    if extension not in extensions:
36
        update.message.reply_text("Unsupported file, onii-chan!")
37
        return False
38
    update.message.chat.send_action(ChatAction.UPLOAD_PHOTO)
39
    result = kekify(bot, update, kek_param, extension)
40
    send_image(bot, update, path, result, extension)
41
    print(datetime.datetime.now(), ">>>", "Done kek", ">>>", update.message.from_user.username)
42
43
44
# kek process + send
45
def kekify(bot, update, kek_param, extension):
46
    try:
47
        if kek_param == "-l" or kek_param == "":
48
            crop = "50%x100% "
49
            piece_one = "result-0" + extension
50
            piece_two = "result-1" + extension
51
            flip = "-flop "
52
            order = path + piece_one + " " + path + piece_two
53
            append = "+append "
54
            result = "kek-left"
55
        elif kek_param == "-r":
56
            crop = "50%x100% "
57
            piece_one = "result-1" + extension
58
            piece_two = "result-0" + extension
59
            flip = "-flop "
60
            order = path + piece_two + " " + path + piece_one
61
            append = "+append "
62
            result = "kek-right"
63
        elif kek_param == "-t":
64
            crop = "100%x50% "
65
            piece_one = "result-0" + extension
66
            piece_two = "result-1" + extension
67
            flip = "-flip "
68
            order = path + piece_one + " " + path + piece_two
69
            append = "-append "
70
            result = "kek-top"
71
        elif kek_param == "-b":
72
            crop = "100%x50% "
73
            piece_one = "result-1" + extension
74
            piece_two = "result-0" + extension
75
            flip = "-flip "
76
            order = path + piece_two + " " + path + piece_one
77
            append = "-append "
78
            result = "kek-bot"
79
        elif kek_param == "-m":
80
            kekify(bot, update, "-l", extension)
81
            kekify(bot, update, "-r", extension)
82
            kekify(bot, update, "-t", extension)
83
            kekify(bot, update, "-b", extension)
84
            append_lr = "convert " + path + "kek-left" + extension + " " + path + "kek-right" + extension + " +append " + path + "kek-lr-temp" + extension
85
            subprocess.run(append_lr, shell=True)
86
            append_tb = "convert " + path + "kek-top" + extension + " " + path + "kek-bot" + extension + " +append " + path + "kek-tb-temp" + extension
87
            subprocess.run(append_tb, shell=True)
88
            append_all = "convert " + path + "kek-lr-temp" + extension + " " + path + "kek-tb-temp" + extension + " -append " + path + "multikek" + extension
89
            subprocess.run(append_all, shell=True)
90
            result = "multikek"
91
            return result
92
        cut = "convert " + path + "original" + extension + " -crop " + crop + path + "result" + extension
93
        subprocess.run(cut, shell=True)
94
        mirror = "convert " + path + piece_one + " " + flip + " " + path + piece_two
95
        subprocess.run(mirror, shell=True)
96
        append = "convert " + order + " " + append + path + result + extension
97
        subprocess.run(append, shell=True)
98
        return result
99
    except:
100
        update.message.reply_text("Unknown kek parameter.\nUse -l, -r, -t, -b or -m")
101