Passed
Push — master ( 6e2f68...969ff2 )
by Anas
02:00
created

modules.merch   A

Complexity

Total Complexity 8

Size/Duplication

Total Lines 94
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
eloc 84
dl 0
loc 94
rs 10
c 0
b 0
f 0
wmc 8

2 Functions

Rating   Name   Duplication   Size   Complexity  
A module_init() 0 9 2
B fap() 0 43 6
1
#!/usr/bin/python
2
# -*- coding: utf-8 -*-
3
from modules.utils import Caption_Filter, get_param, get_image, send_image, mp4_fix
4
from modules.logging import logging_decorator
5
from telegram.ext import PrefixHandler, MessageHandler
6
from telegram.ext.dispatcher import run_async
7
from telegram import ChatAction
8
from datetime import datetime
9
from wand.image import Image
10
from itertools import chain
11
import os
12
13
coords_by_frame = (
14
[(58, 28), (164, 24), (168, 106), (63, 114)],
15
[(59, 28), (165, 24), (169, 106), (64, 114)],
16
[(60, 28), (166, 24), (170, 106), (65, 114)],
17
[(60, 28), (166, 24), (170, 106), (65, 114)],
18
[(60, 27), (166, 23), (170, 105), (65, 113)],
19
[(61, 26), (167, 22), (171, 104), (66, 112)],
20
[(59, 25), (163, 21), (171, 100), (67, 107)],
21
[(57, 26), (155, 23), (171, 93), (68, 99)],
22
[(57, 26), (154, 26), (169, 87), (66, 88)],
23
[(55, 30), (149, 33), (165, 78), (67, 73)],
24
[(49, 40), (144, 52), (168, 76), (66, 63)],
25
[(57, 51), (143, 66), (162, 76), (67, 58)],
26
[(63, 51), (138, 67), (163, 75), (72, 55)],
27
[(63, 40), (150, 58), (168, 72), (68, 51)],
28
[(59, 36), (152, 54), (170, 73), (69, 52)],
29
[(57, 43), (148, 51), (170, 75), (72, 66)],
30
[(48, 47), (141, 59), (166, 83), (68, 69)],
31
[(37, 46), (133, 49), (140, 82), (36, 77)],
32
[(40, 40), (133, 50), (137, 79), (32, 65)],
33
[(43, 36), (137, 45), (144, 74), (40, 62)],
34
[(46, 32), (139, 42), (150, 70), (47, 58)],
35
[(45, 32), (141, 40), (157, 70), (51, 59)],
36
[(43, 32), (137, 41), (154, 71), (48, 58)]
37
)
38
39
40
def module_init(gd):
41
    global path, launchpad_gif
42
    path = gd.config["path"]
43
    launchpad_gif = gd.config["launchpad_path"]
44
    commands = gd.config["commands"]
45
    for command in commands:
46
        caption_filter = Caption_Filter("/"+command)
47
        gd.dp.add_handler(MessageHandler(caption_filter, fap))
48
        gd.dp.add_handler(PrefixHandler("/", command, fap))
49
50
51
@run_async
52
@logging_decorator("fap")
53
def fap(update, context):
54
    filename = datetime.now().strftime("%d%m%y-%H%M%S%f")
55
    try:
56
        extension = get_image(update, context, path, filename)
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable path does not seem to be defined.
Loading history...
57
    except:
58
        update.message.reply_text("I can't get the image! :(")
59
        return
60
    update.message.chat.send_action(ChatAction.UPLOAD_PHOTO)
61
62
    with Image(filename=path+filename+extension) as decal:
63
        decal.resize(320, 172)
64
        w, h = decal.size
65
        decal.virtual_pixel = 'transparent'
66
        source_points = (
67
            (0, 0),
68
            (w, 0),
69
            (w, h),
70
            (0, h)
71
        )
72
        with Image(filename=launchpad_gif) as template_gif:
0 ignored issues
show
Comprehensibility Best Practice introduced by
The variable launchpad_gif does not seem to be defined.
Loading history...
73
            new = Image()
74
            for i in range(len(template_gif.sequence)):
75
                with template_gif.sequence[i] as frame: 
76
                    img = Image(image=frame)
77
                    img.delay = 6
78
                destination_points = (coords_by_frame[i])
79
                order = chain.from_iterable(zip(source_points, destination_points))
80
                arguments = list(chain.from_iterable(order))
81
                decal_current = Image(image=decal)
82
                decal_current.matte_color = "rgba(255, 255, 255, 0)"
83
                decal_current.distort('perspective', arguments)
84
                img.composite(decal_current,left=0,top=0)
85
                new.sequence.append(img)
86
                decal_current.close()
87
                img.close()
88
            new.save(filename=path+"result.mp4")
89
            result_filename = mp4_fix(path, "result")
90
            send_image(update, path, result_filename, ".mp4")
91
            new.close()
92
            os.remove(path+result_filename+".mp4")
93
            os.remove(path+filename+extension)
94