рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рд╣реЛрдмреЗ рдкрд░
рдПрдХ рд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛,
рдЬрд┐рд╕рдореЗрдВ рд╡реЛрдХреНрдЯреЛрд░рдо рдореИрдереЗрдореЗрдЯрд┐рдХрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ VKontakte рдкрд░ рдорд┐рддреНрд░рддрд╛ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЭреЗ рдпрд╣ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рдЖрдпрд╛, рдФрд░ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдореИрдВ рдкрд╛рдпрдерди рдФрд░
рдбреА 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдЧреНрд░рд╛рдл рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рдерд╛ред рдпрд╣рд╛рдБ рдХреНрдпрд╛ рдпрд╣ рдЖрдпрд╛ рд╣реИред
рдЪреЗрддрд╛рд╡рдиреА! рдХреЛрдб рдХреЗ рднрд╛рдЧ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реБрдП рд▓реЗрдЦ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЕрдкрдиреЗ рдХреЛрдб рдЖрдзрд╛рд░ рдореЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░рд┐рд╡рд░реНрддрди рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЬреЛ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ, рд╡реЗ
GitHub рдкрд░ рд╕реНрд░реЛрдд рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдо рдХрд╛рд░реНрдп рдХреЛ рддрддреНрд╡реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ:
- рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЖрд╡реЗрджрди рдХрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдгред
- рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
- рдЧреНрд░рд╛рдл рджреГрд╢реНрдпред
рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рд┐рдП:
- рдкрд╛рдпрдерди 3.4
- рдЕрдиреБрд░реЛрдз
- d3
- Mozilla FireFox, рдХреНрд░реЛрдо рдореЗрдВ рдЪреВрдВрдХрд┐ рдЖрдк XML рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдерд╛рдиреАрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХреЛрдИ рднреА рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реЗрд╢рд╛рди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ -m http.server 8000 )
рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЖрд╡реЗрджрди рдХрд╛ рдкреНрд░рд╛рдзрд┐рдХрд░рдг
VKontakte API рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЕрдкрдиреА рдЬрд╝рд░реВрд░рдд рдХреЗ рдПрдкреАрдЖрдИ рддрд░реАрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди
рдпрд╣рд╛рдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛
рд╣реИ -
рд╕реНрдЯреИрдВрдбрдЕрд▓реЛрди рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред рд╣рдореЗрдВ рдЖрдкрдХреЗ рдореЛрдмрд╛рдЗрд▓ рдкрд░ рднреЗрдЬрд╛ рдЧрдпрд╛ рдПрдХ рдкреБрд╖реНрдЯрд┐рдХрд░рдг рдХреЛрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдореЗрдВ рдЖрд╡реЗрджрди рдкреНрд░рдмрдВрдзрди рдкреГрд╖реНрда рдкрд░ рд▓реЗ рдЬрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рд╕реЗрдЯрд┐рдВрдЧ рдЯреИрдм рдкрд░,
access_token рдХреЗ рд▓рд┐рдП
рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЖрдИрдбреА рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
рд╣реИ ред
рдЕрдЧрд▓рд╛, рд╣рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХреЛ рдЕрдзрд┐рдХреГрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ 3 рдЪрд░рдг рд╣реЛрддреЗ рд╣реИрдВред
рд╡реАрдХреЗ рдкрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░рдорд╛рдгреАрдХрд░рдг
рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, url рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░реЗрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдиреАрдЪреЗ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ:
https://oauth.vk.com/authorize?client_id=ID&scope=friends,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&v=5.21&response_type=token
рдЙрджреНрдзрд░рдг:
vk.com/dev/auth_mobile :
APP_ID - рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛;
рдЕрдиреБрдорддрд┐рдпрд╛рдБ - рдЕрдиреБрд░реЛрдзрд┐рдд рдЖрд╡реЗрджрди рдХреА рдЕрдиреБрдорддрд┐;
рдкреНрд░рджрд░реНрд╢рди - рдкреНрд░рд╛рдзрд┐рдХрд░рдг рд╡рд┐рдВрдбреЛ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐, рд╕рдорд░реНрдерд┐рдд: рдкреГрд╖реНрда, рдкреЙрдкрдЕрдк рдФрд░ рдореЛрдмрд╛рдЗрд▓ред
REDIRECT_URI - рдЬрд┐рд╕ рдкрддреЗ рддрдХ access_token рдкреНрд░реЗрд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
API_VERSION рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ API рдХрд╛ рд╕рдВрд╕реНрдХрд░рдг рд╣реИред
рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, PERMISSIONS рдХрд┐рд╕реА рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕рд░реНрд╡рд░ (рд╕рджрд╛ рдЯреЛрдХрди) рд╕реЗ рдХрд┐рд╕реА рднреА рд╕рдордп рджреЛрд╕реНрддреЛрдВ рдФрд░ рдПрдкреАрдЖрдИ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддрд╛ рд╣реИред рдпрджрд┐ рдкрддрд╛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдмрдирддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд╛рдо рдФрд░ рдкрд╛рд╕рд╡рд░реНрдб рджрд░реНрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдкрдХреЗ рдбреЗрдЯрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐
рдЕрдЧрд▓рд╛, рд╣рдо рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ:
Access_token рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛
рдЖрд╡реЗрджрди рдХреЗ рдкреНрд░рд╛рдзрд┐рдХрд░рдг рдХреЗ рдмрд╛рдж, рдЧреНрд░рд╛рд╣рдХ рдХреЛ REDIRECT_URI рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдореЗрдВ рдЬреЛ рдЬрд╛рдирдХрд╛рд░реА рдЪрд╛рд╣рд┐рдП рд╡рд╣ рдПрдХ рд▓рд┐рдВрдХ рдореЗрдВ рд╕рдВрд▓рдЧреНрди рд╣реЛрдЧреАред
https://oauth.vk.com/blank.html
рд╣рдо рдкреНрд░рд╛рдкреНрдд рдХрд┐рдП рдЧрдП
access_token рдФрд░
user_id рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╣реБрдП
рд╕реЗрдЯрд┐рдВрдЧ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддреЗ
рд╣реИрдВ ред рдЕрдм рд╣рдо рд╡реАрдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдбреЗрдЯрд╛ рдкреБрдирд░реНрдкреНрд░рд╛рдкреНрддрд┐
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЙрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВрдЧреЗ рдЬреЛ рд╣рдо рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдЪреВрдВрдХрд┐ рд╣рдореЗрдВ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдЖрдИрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдХреБрдЫ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЧреНрд░рд╛рдл рдмрдирд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛,
users.get рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА
рд╣реИ ред рдпрд╣ рдПрдХ рдЖрдИрдбреА рдФрд░ рдХрдИ рджреЛрдиреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЦреЗрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА, рд╡рд╣ рдЬрд╛рдирдХрд╛рд░реА рдЬрд┐рд╕рд╕реЗ рд╣рдореЗрдВ рдЬрд╝рд░реВрд░рдд рд╣реИ, рд╕рд╛рде рд╣реА рдПрдХ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рдЬрд┐рд╕рдореЗрдВ рдЕрдВрддрд┐рдо рдирд╛рдо рдФрд░ рдкрд╣рд▓рд╛ рдирд╛рдо рд╣реЛрдЧрд╛ред рдореЗрд░рд╛
рдЖрдзрд╛рд░_рдЗрдирдлреЛ () рд╡рд┐рдзрд┐ рдЖрдИрдбреА рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлреЛрдЯреЛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рджреЗрддрд╛ рд╣реИред
def base_info(self, ids): """read https://vk.com/dev/users.get""" r = requests.get(self.request_url('users.get', 'user_ids=%s&fields=photo' % (','.join(map(str, ids))))).json() if 'error' in r.keys(): raise VkException('Error message: %s. Error code: %s' % (r['error']['error_msg'], r['error']['error_code'])) r = r['response']
рдпрд╣ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ
рдорд┐рддреНрд░реЛрдВ рд╕реЗ рдЖрдИрдбреА рднреЗрдЬрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛
рдХреЛ рдЬрдиреНрдо рджреЗрддреЗ рд╣реИрдВред рдЙрд╕ рдкрд░ рдФрд░ рдмрд╛рдж рдореЗрдВред
рдЕрдм рд╣рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рджреЛрд╕реНрддреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐
рдорд┐рддреНрд░ рд╣реИрдВред рд╡рд┐рдзрд┐
рд╣рдорд╛рд░реЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧреАред рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз рдЗрд╕рдХреЗ рд╕рднреА рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ, рд╣рдо
user_id рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╣рдорд╛рд░реЗ
рд╕реЗрдЯрд┐рдВрдЧ рдереНрд░реЗрдб рдФрд░
рдлрд╝реАрд▓реНрдбреНрд╕ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд╝реАрд▓реНрдб рджреЛрд╕реНрддреЛрдВ, рдЙрдирдХреЗ рдирд╛рдо, рдЙрдкрдирд╛рдо рдФрд░ рдлрд╝реЛрдЯреЛ рдХреА рдЖрдИрдбреА рд╣реЛрдЧреАред рдЖрдЦрд┐рд░рдХрд╛рд░, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдиреЛрдбреНрд╕ рдХреЗ рдкрд╛рд╕ рдЙрдирдХреА рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдердВрдмрдиреЗрд▓ рд╣реЛрдВред
def friends(self, id): """ read https://vk.com/dev/friends.get """ r = requests.get(self.request_url('friends.get', 'user_id=%s&fields=uid,first_name,last_name,photo' % id)).json()['response']
рдлрд┐рд░ рдЖрддрд╛ рд╣реИ рдордЬрд╝реЗрджрд╛рд░ рд╣рд┐рд╕реНрд╕рд╛ред
рджреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдЖрдо рджреЛрд╕реНрддреЛрдВ рдХреА рдЖрдИрдбреА рд╕реВрдЪреА
friends.getMutual рд╡рд┐рдзрд┐ рд▓реМрдЯрд╛рддреА рд╣реИред рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХреЗрд╡рд▓ рдЖрдИрдбреА рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдЕрдзрд┐рдХ рдЙрдиреНрдирдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИ,
рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рд▓реЗрдХрд┐рди рдХреЛрдИ рднреА рдЖрдкрдХреЛ
users.get рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реМ рдпрд╛ рджреЛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордирд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдпреЛрдЬрдирд╛рдПрдБ рдереЛрдбрд╝реА рдХрдо рд╕реНрдерд┐рдд рд╣реИрдВред
рдЕрдм рд╣рдо рддрдп рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╣рдо
рджреЛрд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ
редgetMutual рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрди-рдорд┐рддреНрд░ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЛ рдПрди-рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд┐рддреНрд░ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рджреЛрд╕реНрддреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓ рдЬрд╛рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдореЗрдВ рджреЗрд░реА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдПрдХ рд╡реИрдз рд╕рдВрдЦреНрдпрд╛ рд╣реЛред
рдорд╛рди рд▓реАрдЬрд┐рдП рдЬрд┐рд╕ рдЖрдИрдбреА рдХреЛ рд╣рдордиреЗ рд╕реНрдХреИрди рдХрд┐рдпрд╛ рд╣реИ рдЙрд╕рдореЗрдВ 25 рджреЛрд╕реНрдд рд╣реИрдВред
рдХреЗрд╡рд▓ 52 рдЕрдиреБрд░реЛрдз рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐
users.get рдПрдХ рдЖрдИрдбреА рд╕реВрдЪреА рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
25 рдорд┐рддреНрд░ - 28 рдЕрдиреБрд░реЛрдз, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рд╣реИ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ,
рджреЛрд╕реНрддреЛрдВ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рдФрд░ рдпрд╣рд╛рдВ
рдирд┐рд╖реНрдкрд╛рджрди рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рддрд░реАрдХреЛрдВ рдХрд╛ рдПрдХ рдХреНрд░рдо рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдЗрд╕рдореЗрдВ рдПрдХ рдПрдХрд▓
рдХреЛрдб рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИ, рдЗрд╕рдореЗрдВ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдореЗрдВ 25 рдХреЙрд▓ рддрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣реА рд╣реИ, рдЕрдВрдд рдореЗрдВ,
VKScript рдореЗрдВ рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
return { тАЬid": API.friends.getMutual({"source_uid":source, "target_uid":target}), // * 25 ... };
рдРрд╕реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рд╣рд░ рд╕рдордп
API.friends.getMutual рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рдЗрд╕ рдХреЛрдб рдХреЛ рдЫреЛрдЯрд╛ рдХрд░рдиреЗ рдХрд╛ рддрд░реАрдХрд╛ рд▓рд┐рдЦрддреЗ рд╣реИрдВред
рдЕрдм рд╣рдореЗрдВ рдмрд╕ 25 рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдорд┐рддреНрд░ рдЖрдИрдбреА рдХреЗ рдмреИрдЪ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд░реНрдХрд┐рдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
рд▓реЗрдХрд┐рди рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рджреЛрд╕реНрдд рдХреЛ
рджреЛрд╕реНрддреЛрдВ рдХреЗ рд▓рд┐рдП рднреЗрдЬрдиреЗ рдХреЗ
рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╕рд╛рдорд╛рдиреНрдп, рдФрд░ рдлрд┐рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рдЬрд╛рдирдХрд╛рд░реА
рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ ред
рдЗрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдПрдХ рдорд╛рдирд╡-рдкрдардиреАрдп рд╕рдВрд░рдЪрдирд╛ рдХреА
рд░рдЪрдирд╛ рдХрд░реЗрдВрдЧреЗ, рдЬрд╣рд╛рдБ рдПрдХ рдорд┐рддреНрд░ рдХреА рдЖрдИрдбреА рдФрд░ рдЖрдкрдХреЗ рдкрд╛рд░рд╕реНрдкрд░рд┐рдХ рдорд┐рддреНрд░реЛрдВ рдХреА рдЖрдИрдбреА рд╕реВрдЪреА рдХреЗ рдмрдЬрд╛рдп, рдорд┐рддреНрд░реЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреАред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдорд┐рд▓рддрд╛ рд╣реИ:
[({ }, [{ }, { }]),({ }, None)]
рд╢рдмреНрджрдХреЛрд╢реЛрдВ рдореЗрдВ рдЖрдИрдбреА, рдкрд╣рд▓рд╛ рдирд╛рдо, рдЕрдВрддрд┐рдо рдирд╛рдо, рдлреЛрдЯреЛ, рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ - рд╕рд╛рдорд╛рдиреНрдп рдорд┐рддреНрд░реЛрдВ рдХреЗ рд╢рдмреНрджрдХреЛрд╢ рд╣реИрдВ, рдЕрдЧрд░ рдХреЛрдИ рдЖрдо рджреЛрд╕реНрдд рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдХреЛрдИ рдирд╣реАрдВред рдЯреНрдпреВрдкрд▓ рд╕рднреА рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред
def common_friends(self): """ read https://vk.com/dev/friends.getMutual and read https://vk.com/dev/execute """ def parts(lst, n=25): """ - 25 """ return [lst[i:i + n] for i in iter(range(0, len(lst), n))] result = [] for i in parts(list(self.all_friends.keys())):
рдЗрд╕рд▓рд┐рдП, рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдорд┐рддреНрд░реЛрдВ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рд╕рд╛рдорд╛рдиреНрдп рдорд┐рддреНрд░реЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рджреМрдбрд╝реЗрдВ:
python main.py
рдЧреНрд░рд╛рдл рджреГрд╢реНрдп
рдЪреБрдирд╛рд╡
d3 рдкрд░ рдЧрд┐рд░ рдЧрдпрд╛, рдЕрд░реНрдерд╛рддреН
рдШреБрдорд╛рд╡рджрд╛рд░ рд▓рд┐рдВрдХ рдкрд░ ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
json рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ, рдЬреЛ рдХреБрдЫ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
{ "nodes": [ {"name":"Myriel","group":1, "photo": "path"}, {"name":"Napoleon","group":1, "photo": "path"}, {"name":"Mlle.Baptistine","group":1, "photo": "path"} ], "links":[ {"source":1,"target":0,"value":1}, {"source":2,"target":0,"value":8} ] }
Index.html рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рддреЗ рд╣реБрдП рджреЛрд╕реНрддреЛрдВ рдХреЗ рдлреЛрдЯреЛ рдиреЛрдб рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВред
рдпрджрд┐ рдЖрдк рдЧреНрд░рд╛рдлрд╝ рдХреА рддреБрд░рдВрдд рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ:
python 2d3.py
рд╡реЗрдм рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ
miserables.json рдлрд╝рд╛рдЗрд▓ рджрд┐рдЦрд╛рдИ рджреЗрддреА рд╣реИред Mozilla FireFox рдореЗрдВ
index.html рдЦреЛрд▓рдирд╛ рди рднреВрд▓реЗрдВ рдпрд╛
python -m http.server 8000 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ Chrome рдореЗрдВ рдЦреЛрд▓реЗрдВред
рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рджреЛрд╕реНрддреЛрдВ рдХреЗ рд╕рд╛рде рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рднрд╡рд┐рд╖реНрдп рдХреЗ рд▓рд┐рдП рдореИрдВ рд╡реЗрдмрдЬреАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВред
рдпрд╣ рдореЗрд░реЗ рдПрдХ рджреЛрд╕реНрдд рдХреА рджреЛрд╕реНрддреА рдХрд╛ рдЧреНрд░рд╛рдл рдХреИрд╕рд╛ рд╣реИред рдЬреБрдбрд╝рд╛рд╡ рд╣реА рд╕рдм рдХреБрдЫ рд╣реИред
рдмреЗрд╢рдХ, рдореИрдВ рд╕реЛрдЪ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдХреМрди рддреЗрдЬреА рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рд▓реЗрдЦ рдиреЗ рдореБрдЭреЗ рдкреНрд░реЗрд░рд┐рдд рдХрд┐рдпрд╛:
рдореЗрд░реЗ 333 рджреЛрд╕реНрддреЛрдВ рдкрд░, 119 рд╕реЗрдХрдВрдб рд▓рдЧреЗред
рдЗрд╕ рд▓реЗрдЦрди рдХреЗ рд╕рдордп,
рд╣рд┐рдореБрд░рд╛ рдХреЗ VKontakte рдкрд░ 321 рджреЛрд╕реНрдд рдереЗред рдЗрд╕рдореЗрдВ рдореБрдЭреЗ 9 рд╕реЗрдХрдВрдб рдХрд╛ рд╕рдордп рд▓рдЧрд╛ (рдкреВрд░рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо, рд╕рд┐рд░реНрдл
рджреЛрд╕реНрдд рдирд╣реАрдВ рдереЗред
рдирд┐рд╖реНрдХрд░реНрд╖ рдореЗрдВ
рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдЬрд╛рдирдХрд╛рд░реА VKontakte рдХреЗ рдЙрджрд╛рд░рддрд╛рдкреВрд░реНрд╡рдХ рд▓рд┐рдЦрд┐рдд рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореБрдЭреЗ рдХреБрдЫ рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдорд┐рд▓реАрдВ: рддреНрд░реБрдЯрд┐ рдХреЛрдб 15 рдХрд╛ рд╡рд░реНрдгрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (
'error_msg': 'рдкреНрд░рд╡реЗрд╢ рдирд┐рд╖реЗрдз: рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп', 'error_code': 15 ), рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВред , рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдФрд░ friends.get рдкрджреНрдзрддрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ
user_id рдХреЗ рдмрдЬрд╛рдп
uid ред 2 рджрд┐рди рдмрд╛рдж:
рдЬреИрд╕рд╛ рдХрд┐ рд╢реБрд░реБрдЖрдд рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ, рдкрд░рд┐рдпреЛрдЬрдирд╛
рдЧрд┐рдЯрд╣рдм рдкрд░ рдорд┐рд▓ рд╕рдХрддреА
рд╣реИ , рдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдЕрдЧрд░ рдХреЛрдИ рдФрд░ рдЗрд╕реЗ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдореБрдЭреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдорд┐рд▓рддреЗ рд╣реИрдВ ...
UPD (05/27/2014):рдЬреИрд╕рд╛ рдХрд┐
WTFRU7 рдиреЗ рдореБрдЭреЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ , рдореИрдВрдиреЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЬреЛрдбрд╝реАред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
рд▓рд┐рдВрдХ рдХрд╛ рдЕрдиреБрд╕рд░рдг
рдХрд░реЗрдВ ред
GetMutual рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд╛рд░реНрдпрд╡рд┐рдзрд┐ рдмрдирд╛рдПрдБред рдкреНрд░рдкрддреНрд░ рдФрд░ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП
execute_getMutual.js рдХреА рд╕рд╛рдордЧреНрд░реА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдПрдБред рдПрдХ рдирдпрд╛ рд╕рдВрд╕реНрдХрд░рдг рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордд рднреВрд▓рдирд╛ред рд╣рдорд╛рд░реА рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рд░реВрдк рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реЛрдЧрд╛:
UPD (06/16/2014):рд╣рдореЗрдВ рдПрдХ рдЕрд╕реАрдорд┐рдд рдЯреЛрдХрди рдорд┐рд▓рддрд╛ рд╣реИред
UPD (07/11/2014):рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдпреЛрдЬрдирд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ред
UPD (11/14/2014):рд╡рд┐рд╕реНрддрд╛рд░