-
Notifications
You must be signed in to change notification settings - Fork 0
/
python.py
67 lines (58 loc) · 2.58 KB
/
python.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import vk_api
from PIL import Image, ImageOps, ImageDraw
from additional_api_methods import group_cover, get_last_subscriber, download_image
import config
import time
def easy_timer(func):
"""Простейший таймер будет ждать по 5 секунд и потом выполнять main() пока не остановишь ручками
:param func:
:return:
"""
def wrapper():
while True:
time.sleep(5)
func()
return wrapper
@easy_timer
def main():
# задаём логин и пароль для нашей сессии
login, password = config.login, config.password
vk_session = vk_api.VkApi(login, password)
#пробуем авторизоваться
try:
vk_session.auth()
except vk_api.AuthError as error_msg:
print(error_msg)
return
# готовим наш объект api_use чтобы передавать его в методы для использования api
api_use = vk_api.VkUpload(vk_session)
# получаем последнего подписчика группы
response = get_last_subscriber(api_use, 43018984)
# выдергиваем фото_100 из последнего субскрайбера
photo_of_last_subscriber = response['items'][0]['photo_100']
# имя и фамилия субскрайбера последнего
first_name_subscriber = response['items'][0]['first_name']
last_name_subscriber = response['items'][0]['last_name']
print(first_name_subscriber, last_name_subscriber)
download_image(photo_of_last_subscriber)
# готовим картинку компонуем полученную картинку и заготовленную
image_processor(500, 50, 'cover_image.jpg', 'avatar.jpg')
# загружаем готовую картинку в сообщество
cover = group_cover(api_use, 'output_cover.jpg', 43018984)
def image_processor(x, y, base_image, embedded_image):
size = (100, 100) #размер аватарки
bigsize = (900, 900)
mask = Image.new('L', bigsize, 0)
draw = ImageDraw.Draw(mask)
draw.ellipse((0, 0) + bigsize, fill=255)
mask = mask.resize(size, Image.ANTIALIAS)
image1 = Image.open(base_image)
image2 = Image.open(embedded_image)
image2 = ImageOps.fit(image2, mask.size, centering=(0.5, 0.5))
result_image = image1.copy()
result_image.paste(image2, (x, y), mask=mask)
# result_image.show()
result_image.save('output_cover.jpg')
return result_image
if __name__ == '__main__':
main()