Ivan Kudryakov commited on
Commit
323553e
·
1 Parent(s): 80e5c7b
.idea/.gitignore ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ # Default ignored files
2
+ /shelf/
3
+ /workspace.xml
4
+ # Editor-based HTTP Client requests
5
+ /httpRequests/
6
+ # Datasource local storage ignored files
7
+ /dataSources/
8
+ /dataSources.local.xml
.idea/VKGraph.iml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <module type="PYTHON_MODULE" version="4">
3
+ <component name="NewModuleRootManager">
4
+ <content url="file://$MODULE_DIR$" />
5
+ <orderEntry type="inheritedJdk" />
6
+ <orderEntry type="sourceFolder" forTests="false" />
7
+ </component>
8
+ </module>
.idea/inspectionProfiles/profiles_settings.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <component name="InspectionProjectProfileManager">
2
+ <settings>
3
+ <option name="USE_PROJECT_PROFILE" value="false" />
4
+ <version value="1.0" />
5
+ </settings>
6
+ </component>
.idea/misc.xml ADDED
@@ -0,0 +1,4 @@
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
4
+ </project>
.idea/modules.xml ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="ProjectModuleManager">
4
+ <modules>
5
+ <module fileurl="file://$PROJECT_DIR$/.idea/VKGraph.iml" filepath="$PROJECT_DIR$/.idea/VKGraph.iml" />
6
+ </modules>
7
+ </component>
8
+ </project>
.idea/vcs.xml ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
 
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <project version="4">
3
+ <component name="VcsDirectoryMappings">
4
+ <mapping directory="$PROJECT_DIR$" vcs="Git" />
5
+ </component>
6
+ </project>
app.py CHANGED
@@ -1,4 +1,98 @@
1
  import streamlit as st
 
 
 
 
 
 
 
 
2
 
3
  x = st.slider('Select a value')
4
- st.write(x, 'squared is', x * x)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  import streamlit as st
2
+ import requests
3
+ import plotly.graph_objects as go
4
+ import networkx as nx
5
+ import time
6
+ import matplotlib.pyplot as plt
7
+
8
+ access_token = '24001214633baa923e4caf1fba8da62847aa8df94b3b041d40b54186eabd6a16a81962c9bbbd02f52082a'
9
+
10
 
11
  x = st.slider('Select a value')
12
+ st.write(x, 'squared is', x * x)
13
+
14
+
15
+ api_version = '5.131'
16
+ my_id = '167196653'
17
+ read_id = input("Type interested vk id or write \"0\" to use default: ")
18
+ if read_id != '0':
19
+ my_id = read_id
20
+ print("my_id changed", my_id)
21
+ friend_num = int(input("Type how many friends you want to show or write \"0\" show all: "))
22
+
23
+
24
+ params_for_users_get = {'user_ids': my_id,
25
+ 'access_token': access_token,
26
+ 'v': api_version}
27
+
28
+ myFirstAndLastName = requests.get('https://api.vk.com/method/users.get', params=params_for_users_get)
29
+ #print(myFirstAndLastName.text)
30
+
31
+ params_for_friends_get = {'user_id': my_id,
32
+ 'order': 'hints',
33
+ 'fields': 'sex',
34
+ 'access_token': access_token,
35
+ 'v': api_version}
36
+
37
+ r = requests.get('https://api.vk.com/method/friends.get', params=params_for_friends_get)
38
+ if 'error' in r.json() and r.json()['error']['error_code'] == 30:
39
+ print('This is private profile, sorry')
40
+ exit()
41
+ print(r.text)
42
+ AllMyFriends = r.json()['response']['items']
43
+ #print(AllMyFriends[0]['id'])
44
+ #print(AllMyFriends[0]['is_closed'])
45
+ #print(AllMyFriends)
46
+ AllMyFriendsWithoutClosed = [i for i in AllMyFriends if 'is_closed' in i and i['is_closed'] == False]
47
+ if friend_num == 0:
48
+ friend_num = len(AllMyFriendsWithoutClosed)
49
+
50
+ G = nx.Graph()
51
+
52
+
53
+ def GetFriendListById(friend_id):
54
+ while True:
55
+ params_for_another_friends_get = {'user_id': friend_id,
56
+ 'order': 'random',
57
+ 'access_token': access_token,
58
+ 'v': api_version}
59
+ res = requests.get('https://api.vk.com/method/friends.get', params=params_for_another_friends_get)
60
+ print(res.text)
61
+ res_json = res.json();
62
+ if 'error' in res_json:
63
+ if res_json['error']['error_code'] == 6:
64
+ time.sleep(0.8)
65
+ continue
66
+ if res_json['error']['error_code'] == 30:
67
+ return [], False
68
+ return [], False
69
+ if 'response' in res_json:
70
+ return res_json['response']['items'], True
71
+ return [], False
72
+
73
+
74
+ MyFriends = AllMyFriendsWithoutClosed[:friend_num-1]
75
+ #MyFriends.append(myFirstAndLastName.json()['response'][0])
76
+ MyFriendsSet = set([i['id'] for i in MyFriends])
77
+ MyFriendsDict = dict([(i['id'], i) for i in MyFriends])
78
+ MyFriendsDict[int(my_id)] = myFirstAndLastName.json()['response'][0]
79
+ #print(MyFriends)
80
+ #print(G.nodes())
81
+ for friend_id in MyFriends:
82
+ friendFriendList, Flag = GetFriendListById(friend_id['id'])
83
+ if not Flag:
84
+ continue
85
+ G.add_edge(friend_id['id'], int(my_id))
86
+ for friendFriend_id in friendFriendList:
87
+ if friendFriend_id in MyFriendsSet:
88
+ G.add_edge(friend_id['id'], friendFriend_id)
89
+
90
+ G_nodes_list = list(G.nodes)
91
+ #print(G_nodes_list)
92
+
93
+ pos = nx.spring_layout(G)
94
+ #print(pos)
95
+
96
+ nx.draw_networkx_nodes(G, pos, node_size=50)
97
+ nx.draw_networkx_edges(G, pos, edge_color='b')
98
+ plt.show()
requirements.txt CHANGED
@@ -1 +1,6 @@
1
- streamlit
 
 
 
 
 
 
1
+ streamlit
2
+ requests
3
+ plotly
4
+ networkx
5
+ time
6
+ matplotlib