Passed
Push — master ( 9bfda5...dc2491 )
by Anas
02:12
created

modules.kek   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 106
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 90
dl 0
loc 106
rs 10
c 0
b 0
f 0
wmc 13

5 Functions

Rating   Name   Duplication   Size   Complexity  
A kekify() 0 21 4
A get_values() 0 11 1
A module_init() 0 8 2
A multikek() 0 19 1
B kek() 0 25 5
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
from modules.utils import caption_filter, get_image, send_image
4
from telegram.ext import CommandHandler, MessageHandler
5
from modules.logging import log_command
6
from telegram import ChatAction
7
from datetime import datetime
8
import subprocess
9
import os
10
11
12
def module_init(gd):
13
    global path, extensions
14
    path = gd.config["path"]
15
    extensions = gd.config["extensions"]
16
    commands = gd.config["commands"]
17
    for command in commands:
18
        gd.dp.add_handler(MessageHandler(caption_filter("/"+command), kek))
19
        gd.dp.add_handler(CommandHandler(command, kek))
20
21
22
# get image, pass parameter
23
def kek(bot, update):
24
    current_time = datetime.strftime(datetime.now(), "%d.%m.%Y %H:%M:%S")
25
    filename = datetime.now().strftime("%d%m%y-%H%M%S%f")
26
    if update.message.reply_to_message is not None:
27
        kek_param = "".join(update.message.text[5:7])
28
    elif update.message.caption is not None:
29
        kek_param = "".join(update.message.caption[5:7])
30
    else:
31
        update.message.reply_text("You need an image for that!")
32
        return
33
    try:
34
        extension = get_image(bot, update, path, filename)
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable path does not seem to be defined.
Loading history...
35
    except:
36
        update.message.reply_text("Can't get the image! :(")
37
        return
38
    if extension not in extensions:
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable extensions does not seem to be defined.
Loading history...
39
        update.message.reply_text("Unsupported file, onii-chan!")
40
        return False
41
    update.message.chat.send_action(ChatAction.UPLOAD_PHOTO)
42
    result = kekify(update, kek_param, filename, extension)
43
    send_image(update, path, result, extension)
44
    os.remove(path+result+extension)
45
    os.remove(path+filename+extension)
46
    print(current_time, ">", "/kek", ">", update.message.from_user.username)
47
    log_command(bot, update, current_time, "kek")
48
49
50
# kek process + send
51
def kekify(update, kek_param, filename, extension):
52
    if kek_param == "-m":
53
        result = multikek(update, filename, extension)
54
        return result
55
    try:
56
        kek_dict = get_values(kek_param, path, filename, extension)
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable path does not seem to be defined.
Loading history...
57
        cut = "convert " + path + filename + extension + " -crop " + kek_dict[0] + " " + path + "result" + extension
58
        subprocess.run(cut, shell=True)
59
        mirror = "convert " + kek_dict[1] + " " + kek_dict[4] + " " + kek_dict[2]
60
        subprocess.run(mirror, shell=True)
61
        if kek_dict[3] == "r":
62
            kek_dict[1], kek_dict[2] = kek_dict[2], kek_dict[1]
63
        append = "convert " + kek_dict[1] + " " + kek_dict[2] + " " + kek_dict[5] + " " + path + kek_dict[6] + extension
64
        subprocess.run(append, shell=True)
65
        result = kek_dict[6]
66
        os.remove(path+"result-0"+extension)
67
        os.remove(path+"result-1"+extension)
68
        return result
69
    except:
70
        update.message.reply_text("Unknown kek parameter.\nUse -l, -r, -t, -b or -m")
71
        return
72
73
74
def multikek(update, filename, extension):
75
    kekify(update, "-l", filename, extension)
76
    kekify(update, "-r", filename, extension)
77
    kekify(update, "-t", filename, extension)
78
    kekify(update, "-b", filename, extension)
79
    append_lr = "convert " + path + filename+ "-kek-left" + extension + " " + path + filename + "-kek-right" + extension + " +append " + path +  filename + "-kek-lr-temp" + extension
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable path does not seem to be defined.
Loading history...
80
    subprocess.run(append_lr, shell=True)
81
    append_tb = "convert " + path + filename + "-kek-top" + extension + " " + path + filename + "-kek-bot" + extension + " +append " + path + filename + "-kek-tb-temp" + extension
82
    subprocess.run(append_tb, shell=True)
83
    append_all = "convert " + path + filename + "-kek-lr-temp" + extension + " " + path + filename + "-kek-tb-temp" + extension + " -append " + path + filename + "-multikek" + extension
84
    subprocess.run(append_all, shell=True)
85
    result = filename + "-multikek"
86
    os.remove(path+filename+"-kek-left"+extension)
87
    os.remove(path+filename+"-kek-right"+extension)
88
    os.remove(path+filename+"-kek-top"+extension)
89
    os.remove(path+filename+"-kek-bot"+extension)
90
    os.remove(path+filename+"-kek-lr-temp"+extension)
91
    os.remove(path+filename+"-kek-tb-temp"+extension)
92
    return result
93
94
95
def get_values(kek_param, path, filename, extension):
96
    res1 = path + "result-0" + extension
97
    res2 = path + "result-1" + extension
98
    parameters = {
99
        "":   ["50%x100%", res1, res2, "s", "-flop", "+append", filename+"-kek-left"],
100
        "-l": ["50%x100%", res1, res2, "s", "-flop", "+append", filename+"-kek-left"],
101
        "-r": ["50%x100%", res2, res1, "r", "-flop", "+append", filename+"-kek-right"],
102
        "-t": ["100%x50%", res1, res2, "s", "-flip", "-append", filename+"-kek-top"],
103
        "-b": ["100%x50%", res2, res1, "r", "-flip", "-append", filename+"-kek-bot"]
104
        }
105
    return parameters[kek_param]
106