|
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) |
|
|
|
|
|
|
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: |
|
|
|
|
|
|
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
|
|
|
|