VKontakte python api

Сравнение python библиотек для защищенного взаимодействия приложения с API.

Библиотека для работы с API Вконакта серверной части приложения - это всего лишь хелпер, использующий urllib (или что-нибудь другое) и парсер xml/json. Изобретать свои велосипед не хочется, возьмем уже написанный код. Вот что сходу нагуглилось:
  1. vkontakte 0.9.5
  2. apivk-py r8
  3. vpython r26*
* - django модуль, который напрямую авторизируется логином/паролем пользователя, нам не подходит, но пример можно посмотреть ниже.

vkontakte
>>> import vkontakte
>>> vk = vkontakte.API('my_api_id', 'my_api_secret')
>>> print vk.getServerTime()
1282689362

>>> profiles = vk.getProfiles(uids='1,2', fields='education')
>>> pavel = profiles[0]
>>> print pavel['last_name'], pavel['university_name']
Дуров СПбГУ

>>> # alternative syntax
>>> profiles = vk.get('getProfiles', uids='1,2', fields='education')
>>> pavel = profiles[0]
>>> print pavel['last_name'], pavel['university_name']
Дуров СПбГУ

>>> # custom timeout example (default timeout = 1s)
>>> vk = vkontakte.API('my_api_id', 'my_api_secret', timeout=5)
>>> print vk.getServerTime()
1282689362

>>> # syntax sugar for 'secure.*' methods
>>> print vk.secure.getSMSHistory()
None

apivk-py
import apivk_secure as secure
from apivk import *

def on_success(obj):
    print 'on_success ', obj

def on_error(error_code, error_msg, request_params):
    print 'error  ', error_code, ': ', error_msg

q = VKQueue('1', 'apisecuresecret', 5, 1)
#async request
q.add(secure.saveAppStatus(uid='1', status='Hi, Pavel!'), on_success, on_error)

#sync request
event = q.add(secure.saveAppStatus(uid='1', status='Hello world!'))
try:
    response = event.wait()
    print 'response:', response
except VKError, e:
    print 'VKError %s: %s'%(e.code, e.msg)


vpython

def index(request):    
    leecher = VkontakteLeecher("ad3002@gmail.com", "toteato", "d:/vk/")
    pdata = leecher.person_dict
    news = leecher.news()     
    context = { 'page_title' : 'Мой вконтакте',
                'fullname' : str(pdata['name'] + " " + pdata['surname']),
                'nickname' : pdata['nickname'],
                'idnum' : news[1][3],
            }    
    return render_to_response('index.html',context_instance=\
                                        RequestContext(request,context))

Сразу хочется сказать, что библиотеки не сложные, даже судя по количеству кода, оба не превышают 300 строк. Оба передают данные с помощью json.
Apivk-py побольше, т.к. содержит вариант асинхронных запросов. Использует urllib2 и threading, так же есть тесты.
Преимущество vkontakte (urllib) - это то что его пакет есть на PyPI, что удобно для установки, хотя оба проекта содержат всего по два файла.

0 comments:

Post a Comment