-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathvk_functions.py
109 lines (95 loc) · 3.49 KB
/
vk_functions.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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
import vk_api
import json
import datetime
from vk_api.longpoll import VkLongPoll, VkEventType
from vk_config import group_token, user_token, V
from vk_api.exceptions import ApiError
from models import engine, Base, Session, User, DatingUser, Photos, BlackList
from sqlalchemy.exc import IntegrityError, InvalidRequestError
# Для работы с ВК
vk = vk_api.VkApi(token=group_token)
longpoll = VkLongPoll(vk)
# Для работы с БД
session = Session()
connection = engine.connect()
"""
ФУНКЦИИ ПОИСКА
"""
# Ищет людей по критериям
def search_users(sex, age_at, age_to, city):
all_persons = []
link_profile = 'https://vk.com/id'
vk_ = vk_api.VkApi(token=user_token)
response = vk_.method('users.search',
{'sort': 1,
'sex': sex,
'status': 1,
'age_from': age_at,
'age_to': age_to,
'has_photo': 1,
'count': 25,
'online': 1,
'hometown': city
})
for element in response['items']:
person = [
element['first_name'],
element['last_name'],
link_profile + str(element['id']),
element['id']
]
all_persons.append(person)
return all_persons
# return True
# Находит фото людей
def get_photo(user_owner_id):
vk_ = vk_api.VkApi(token=user_token)
try:
response = vk_.method('photos.get',
{
'access_token': user_token,
'v': V,
'owner_id': user_owner_id,
'album_id': 'profile',
'count': 10,
'extended': 1,
'photo_sizes': 1,
})
except ApiError:
return 'нет доступа к фото'
users_photos = []
for i in range(10):
try:
users_photos.append(
[response['items'][i]['likes']['count'],
'photo' + str(response['items'][i]['owner_id']) + '_' + str(response['items'][i]['id'])])
except IndexError:
users_photos.append(['нет фото.'])
return users_photos
# return True
"""
ФУНКЦИИ СОРТИРОВКИ, ОТВЕТА, JSON
"""
# Сортируем фото по лайкам, удаляем лишние элементы
def sort_likes(photos):
result = []
for element in photos:
if element != ['нет фото.'] and photos != 'нет доступа к фото':
result.append(element)
return sorted(result)
# JSON file create with result of programm
def json_create(lst):
today = datetime.date.today()
today_str = f'{today.day}.{today.month}.{today.year}'
res = {}
res_list = []
for num, info in enumerate(lst):
res['data'] = today_str
res['first_name'] = info[0]
res['second_name'] = info[1]
res['link'] = info[2]
res['id'] = info[3]
res_list.append(res.copy())
with open("result.json", "a", encoding='UTF-8') as write_file:
json.dump(res_list, write_file, ensure_ascii=False)
print(f'Информация о загруженных файлах успешно записана в json файл.')