1
|
|
|
#!/usr/bin/python |
2
|
|
|
# -*- coding: utf-8 -*- |
3
|
|
|
from modules.logging import logging_decorator |
4
|
|
|
from google_images_download import google_images_download |
5
|
|
|
from telegram.ext.dispatcher import run_async |
6
|
|
|
from telegram.ext import CommandHandler |
7
|
|
|
from telegram import ChatAction |
8
|
|
|
from random import randint |
9
|
|
|
import logging |
10
|
|
|
import sys |
11
|
|
|
import re |
12
|
|
|
import io |
13
|
|
|
|
14
|
|
|
|
15
|
|
|
def module_init(gd): |
16
|
|
|
commands_image = gd.config["commands_image"] |
17
|
|
|
commands_gif = gd.config["commands_gif"] |
18
|
|
|
for command in commands_image: |
19
|
|
|
gd.dp.add_handler(CommandHandler(command, image_search, pass_args=True)) |
20
|
|
|
for command in commands_gif: |
21
|
|
|
gd.dp.add_handler(CommandHandler(command, gif_search, pass_args=True)) |
22
|
|
|
|
23
|
|
|
|
24
|
|
|
@run_async |
25
|
|
|
@logging_decorator("img") |
26
|
|
|
def image_search(bot, update, args): |
27
|
|
|
query = " ".join(args) |
28
|
|
|
google_args = {"keywords":query, "limit":30, "no_download":True} |
29
|
|
|
query = search(bot, update, args, google_args) |
30
|
|
|
return query |
31
|
|
|
|
32
|
|
|
|
33
|
|
|
@run_async |
34
|
|
|
@logging_decorator("gif") |
35
|
|
|
def gif_search(bot, update, args): |
36
|
|
|
query = " ".join(args) |
37
|
|
|
google_args = {"keywords":query, "limit":30, "no_download":True, "format":"gif"} |
38
|
|
|
query = search(bot, update, args, google_args) |
39
|
|
|
return query |
40
|
|
|
|
41
|
|
|
|
42
|
|
|
def search(bot, update, args, google_args): |
43
|
|
|
if len(args) == 0: |
44
|
|
|
update.message.reply_text("You need a query to search!") |
45
|
|
|
return |
46
|
|
|
update.message.chat.send_action(ChatAction.UPLOAD_PHOTO) |
47
|
|
|
query = " ".join(args) |
48
|
|
|
try: |
49
|
|
|
final_img = get_image(query, google_args) |
50
|
|
|
except: |
51
|
|
|
update.message.reply_text("Sorry, something gone wrong!") |
52
|
|
|
return |
53
|
|
|
if final_img is None: |
54
|
|
|
update.message.reply_text("Nothing found!") |
55
|
|
|
return |
56
|
|
|
msg_text = "[link](%s)" % final_img |
57
|
|
|
update.message.reply_text(msg_text, parse_mode="Markdown", disable_web_page_preview=False) |
58
|
|
|
return query |
59
|
|
|
|
60
|
|
|
|
61
|
|
|
def get_image(query, google_args): |
62
|
|
|
sys.stdout = io.StringIO() |
63
|
|
|
response = google_images_download.googleimagesdownload() |
64
|
|
|
|
65
|
|
|
response.download(google_args) |
66
|
|
|
result = sys.stdout.getvalue() |
67
|
|
|
sys.stdout.close() |
68
|
|
|
sys.stdout = sys.__stdout__ |
69
|
|
|
urls = re.findall(r'(https?://\S+)', result) |
70
|
|
|
image_to_send = urls[randint(0, 29)] |
71
|
|
|
return image_to_send |
72
|
|
|
|