forked from stleon/vk_friends
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcall.py
43 lines (36 loc) · 1.54 KB
/
call.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
from tasks import mutual_friends, deep_friends
from celery import group
from settings import my_id, deep, m_friends_dct, d_friends_dct
from lib import request_url, friends, parts, save_or_load
def cleaner(dct):
"""
удаляем все заблокированные или удаленные анкеты
"""
return {k:v for k, v in dct.items() if v != None}
def getMutual():
all_friends = friends(my_id)
c_friends = group(mutual_friends.s(i) for i in parts(list(all_friends[0].keys()), 75))().get()
result = {k: v for d in c_friends for k, v in d.items()}
return cleaner(result)
def getDeep():
result = {}
for i in range(deep):
if result:
# те айди, которых нет в ключах + не берем id:None
lst = list(set([item for sublist in result.values() if sublist for item in sublist]) - set(result.keys()))
d_friends = group(deep_friends.s(i) for i in parts(list(lst), 75))().get()
result = {k: v for d in d_friends for k, v in d.items()}
result.update(result)
else:
all_friends = friends(my_id)
d_friends = group(deep_friends.s(i) for i in parts(list(all_friends[0].keys()), 75) )().get()
result = {k: v for d in d_friends for k, v in d.items()}
result.update(result)
return cleaner(result)
if __name__ == '__main__':
if int(input('1 - mutual friends, 2 - deep friends\n')) == 1:
save_or_load(m_friends_dct['file'], True, getMutual())
print(save_or_load(m_friends_dct['file'], False))
else:
save_or_load(d_friends_dct['file'], True, getDeep())
print(save_or_load(d_friends_dct['file'], False))