vk.com API python wrapper

Overview

Python vk.com API wrapper

PyPI Travis Docs codecov

This is a vk.com (the largest Russian social network) python API wrapper. The goal is to support all API methods (current and future) that can be accessed from server.

Quickstart

Install

pip install vk

Usage

>>> import vk
>>> session = vk.Session()
>>> api = vk.API(session)
>>> api.users.get(user_ids=1)
[{'first_name': 'Pavel', 'last_name': 'Durov', 'id': 1}]

See https://vk.com/dev/methods for detailed API guide.

More info

Read full documentation https://vk.readthedocs.org

Comments
  • vk.exceptions.VkAuthError: OAuth2 authorization error

    vk.exceptions.VkAuthError: OAuth2 authorization error

    Решил завести отдельный акк для бота. Так на нём какая-то трабла с авторизацией, при этом никакой доп защиты типа двухфакторки не включено.

    В первый раз вызываю бота с корретными авторизационными данными

    farsh vkbrot # python2 ./vkbrot.py 2015-10-06 20:51:59,900 vk mixins:125 INFO: Getting permissions Traceback (most recent call last): File "./vkbrot.py", line 180, in get_token() File "./vkbrot.py", line 46, in get_token access_token, _ = auth_session.get_access_token() File "/usr/lib64/python2.7/site-packages/vk-2.0a4-py2.7.egg/vk/mixins.py", line 73, in get_access_token raise VkAuthError('OAuth2 authorization error') vk.exceptions.VkAuthError: OAuth2 authorization error

    Второй раз специально искажаю пароль и получаю закономерную ошибку.

    farsh vkbrot # python2 ./vkbrot.py 2015-10-06 20:57:36,927 vk mixins:105 ERROR: Authorization error (incorrect password) Traceback (most recent call last): File "./vkbrot.py", line 180, in get_token() File "./vkbrot.py", line 46, in get_token access_token, _ = auth_session.get_access_token() File "/usr/lib64/python2.7/site-packages/vk-2.0a4-py2.7.egg/vk/mixins.py", line 67, in get_access_token self.login() File "/usr/lib64/python2.7/site-packages/vk-2.0a4-py2.7.egg/vk/mixins.py", line 106, in login raise VkAuthError(message) vk.exceptions.VkAuthError: Authorization error (incorrect password)

    Внимание вопрос! А что за ошибка в первом случае? Если все авторизационные данные верны?

    opened by itJunky 21
  • asyncio-based api

    asyncio-based api

    What do you think about extending library with submodule (or something like this) with asyncio-compatible api? I've made some dirty changes https://github.com/pohmelie/aiovk and it looks like it works fine. But there is no stream api, asyncio tests and so on.

    wontfix 
    opened by pohmelie 15
  • Ошибка при авторизации

    Ошибка при авторизации

    Снова всплывает ошибка с авторизацией

    File "C:\Users\Никита\Desktop\Адресная книга\get_contacts_vk.py", line 92, in get_contacts_vk user_password=password) File "C:\Python34\lib\site-packages\vk-2.0.1-py3.4.egg\vk\mixins.py", line 32, in init self.access_token = self.get_access_token() File "C:\Python34\lib\site-packages\vk-2.0.1-py3.4.egg\vk\mixins.py", line 69, in get_access_token self.login() File "C:\Python34\lib\site-packages\vk-2.0.1-py3.4.egg\vk\mixins.py", line 108, in login raise VkAuthError(message) vk.exceptions.VkAuthError: Authorization error (incorrect password)

    expired 
    opened by nikitc 13
  • Проблемы с полученным токеном

    Проблемы с полученным токеном

    Программа на Django 1.6.10 развёрнута на американском сервере.

    После получения токена от vk при попытке обращения к vk.api получаю следующую ошибку

    VkAPIMethodError at /func/1/ 17. Validation required: please open redirect_uri in browser 234307691. params = [{u'value': u'1', u'key': u'oauth'}, {u'value': u'getServerTime', u'key': u'method'}, {u'value': u'fa15ce1f2442b1076cf29c3a3e2493cd59b57de060b5b9a1a0ca5732f919b89e30d5ae9aa1b2174bb8123', u'key': u'access_token'}, {u'value': u'1426017730', u'key': u'timestamp'}, {u'value': u'5.20', u'key': u'v'}]

    В чём может быть проблема?

    opened by Radren 13
  • Got new access token и авторизация по логину и паролю

    Got new access token и авторизация по логину и паролю

    Ничего не понимаю. Почему один метод работает, а второй нет? Насколько я понимаю, для второго метода нужны самые минимальные права, так же как и для первого.

    In [33]: api.users.get(user_ids=137215875) 2015-10-04 21:06:31,174 vk api:42 INFO: Got new access token Out[33]: [{u'first_name': u'Roman', u'last_name': u'Kotov', u'uid': 137215875}]

    In [34]: api.users.isAppUser(user_id=137215875) 2015-10-04 21:06:37,991 vk api:42 INFO: Got new access token 2015-10-04 21:06:38,091 vk api:94 INFO: Authorization failed. Access token will be dropped 2015-10-04 21:06:38,091 vk api:42 INFO: Got new access token 2015-10-04 21:06:38,184 vk api:94 INFO: Authorization failed. Access token will be dropped 2015-10-04 21:06:38,184 vk api:42 INFO: Got new access token 2015-10-04 21:06:38,276 vk api:94 INFO: Authorization failed. Access token will be dropped 2015-10-04 21:06:38,276 vk api:42 INFO: Got new access token 2015-10-04 21:06:38,368 vk api:94 INFO: Authorization failed. Access token will be dropped 2015-10-04 21:06:38,368 vk api:42 INFO: Got new access token 2015-10-04 21:06:38,465 vk api:94 INFO: Authorization failed. Access token will be dropped 2015-10-04 21:06:38,465 vk api:42 INFO: Got new access token ^C--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last)

    opened by itJunky 12
  • Лицензия

    Лицензия

    Доброго времени суток. В первую очередь, хочу поблагодарить вас за проделанную работу. Очень понравился ваш модуль.

    Под какой лицензией распространяется данный модуль? Неплохо бы поместить текст лицензии в COPYING или LICENSE и добавить в репозиторий.

    К чему спрашиваю, хочу, например, собрать rpm-пакет с модулем. Мало того, что не знаю какое значение поместить в макрос с лицензией при написании спек-файла для пакета, так и банально не знаю, а можно ли вообще опакечивать данный модуль =) Да и другим полезно было бы, мало ли кто захочет использовать модуль в своих проектах.

    Олег.

    opened by xxblx 9
  • Проблема с Python3

    Проблема с Python3

    Добрый день!

    Решил воспользоваться Вашим решением, но столкнулся с проблемами, их можно увидеть ниже. Создал чистый облачный сервер на Debian, установил python3, модуль requests встал без проблем, при установке pip3 install vk вывод такой:

    Downloading/unpacking vk Downloading vk-1.5.tar.gz Running setup.py (path:/tmp/pip_build_root/vk/setup.py) egg_info for package vk

    Downloading/unpacking requests (from vk) Downloading requests-2.3.0-py2.py3-none-any.whl (452kB): 452kB downloaded Installing collected packages: vk, requests Running setup.py install for vk File "/usr/local/lib/python3.2/dist-packages/vk/api.py", line 101 form_action = re.findall(u'

    ', response.text) ^ SyntaxError: invalid syntax

     File "/usr/local/lib/python3.2/dist-packages/vk/tests.py", line 43
       self.assertEqual(profiles.first.last_name, u'Дуров')
                                                          ^
    

    SyntaxError: invalid syntax

    Successfully installed vk requests Cleaning up... [email protected]:/home/myself/python# pip3 install vkontakte Downloading/unpacking vkontakte Downloading vkontakte-1.3.2.tar.gz Running setup.py (path:/tmp/pip_build_root/vkontakte/setup.py) egg_info for package vkontakte

    Installing collected packages: vkontakte Running setup.py install for vkontakte File "/usr/local/lib/python3.2/dist-packages/vkontakte/tests.py", line 27 params = {'foo': u'клен'} ^ SyntaxError: invalid syntax

    Successfully installed vkontakte Cleaning up...

    После введения import vk в интерактиве Python3 вывод такой:

    Traceback (most recent call last): File "", line 1, in File "/usr/local/lib/python3.2/dist-packages/vkontakte/init.py", line 1, in from vkontakte.api import API, VKError, signature File "/usr/local/lib/python3.2/dist-packages/vkontakte/api.py", line 12, in from vkontakte import http File "/usr/local/lib/python3.2/dist-packages/vkontakte/http.py", line 4, in import httplib ImportError: No module named httplib

    Скажите, пожалуйста, что мне делать в таком случае? Не очень понимаю в чем проблема..

    Спасибо, с уважением, Иван.

    question 
    opened by suroegin 9
  • Загрузка изображения для отправки на стену

    Загрузка изображения для отправки на стену

    Возможно кто-то сможет помочь, воспроизведя у себя то, что я делаю. А то уткнулся в то, что через js api (iframe приложение) всё хорошо работает, а с помощью Python API - нет.

    import os
    
    import vk
    import requests
    
    APP_ID = ''  # id standalone приложения
    VK_LOGIN = ''  # логин
    VK_PWD = ''  # пароль
    VK_GROUP_ID = ''  # группа, в которую есть доступ, чтобы отправлять фото
    
    
    def get_vk_api_class():
        scopes = ['wall', 'offline', 'photos']
        vk_api = vk.API(APP_ID, VK_LOGIN, VK_PWD, scope=scopes)
        return vk_api
    
    
    def download_photo_and_save_in_tempfile(photo_url):
        img_resp = requests.get(photo_url)
        img_name = os.tmpnam()
        img_file = open(img_name, 'wb')
        img_file.write(img_resp.content)
        img_file.close()
        return img_name
    
    
    def upload_photo_in_vk(vk_api, group_id, photo_file):
        positive_group_id = abs(int(group_id))
        upload_data = vk_api.photos.getWallUploadServer(group_id=positive_group_id)
        files = {'photo': open(photo_file, 'rb')}
        upload_resp = requests.post(upload_data['upload_url'], files=files)
        json_data = upload_resp.json()
        return json_data
    
    
    vk_api = get_vk_api_class()
    ph = download_photo_and_save_in_tempfile('https://pp.vk.me/c7002/c620729/v620729777/3818/W-gXi7lQmVw.jpg')
    print upload_photo_in_vk(vk_api, VK_GROUP_ID, ph)
    

    У меня последняя функция принтит:

    {u'photo': u'[]', u'hash': u'5e51ae51a811ed35f671e9933f54fe', u'server': 628131}
    

    Но (!) в 'photo' должны быть какие-то данные. Не понимаю почему их там нет, хотя если выполнять похожие действия через js api - всё ок.

    opened by saippuakauppias 8
  • [СТАТУС ОБСЛУЖИВАНИЯ]

    [СТАТУС ОБСЛУЖИВАНИЯ]

    Последний коммит был совершен 4 года назад, а последний релиз был выпущен 7 лет назад. За все это время накопилось множество Issue и PR, на которые автор не отвечает. Судя по этим фактам, можно сделать только один вывод - к сожалению, данная библиотека больше не обслуживается. Однако она до сих пор пользуется популярностью (~19k скачиваний в месяц), и поэтому я решил создать ~дружелюбный форк (репо)~, чтобы продолжить обслуживание данной библиотеки.

    Пока что была добавлена поддержка Python 3.10 и обновлена оболочка проекта PR приветствуется больше всего

    ~Форк: https://github.com/vk-paw/vk-paw~ Неаткульно: библиотека продолжает обслуживаться в данном репозитории (мною)

    opened by YariKartoshe4ka 7
  • Совместимость с Python 3.10

    Совместимость с Python 3.10

    При попытке импорта в 3.10 получаю следующее:

    >>> import vk
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "C:\Program Files\Python310\lib\site-packages\vk\__init__.py", line 2, in <module>
        from vk.api import logger
      File "C:\Program Files\Python310\lib\site-packages\vk\api.py", line 7, in <module>
        from vk.utils import stringify_values, json_iter_parse, LoggingSession, str_type
      File "C:\Program Files\Python310\lib\site-packages\vk\utils.py", line 4, in <module>
        from collections import Iterable
    ImportError: cannot import name 'Iterable' from 'collections' (C:\Program Files\Python310\lib\collections\__init__.py)
    

    Решение: в vk/utils.py в заменить строку 4 from collections import Iterable на конструкцию:

    try:
        from collections.abc import Iterable
    except ImportError:
        from collections import Iterable
    
    opened by AleksejEgorov 7
  • Ошибка при обращении к friends.get

    Ошибка при обращении к friends.get

    Когда, пытаюсь обратиться к users.get, то все нормально, при обращении к friends.get, ошибка 113: File "C:\Users\Никита\Desktop\Адресная книга\Get_contacts_VK.py", line 91, in get_contacts_vk print(vkapi.friends.get(user_ids=айди, fields=['sex', 'site'])) File "C:\Python34\lib\site-packages\vk-2.0a4-py3.4.egg\vk\api.py", line 165, in call return self._api._session.make_request(self) File "C:\Python34\lib\site-packages\vk-2.0a4-py3.4.egg\vk\api.py", line 98, in make_request raise VkAPIMethodError(errors[0]) vk.exceptions.VkAPIMethodError: 113. Invalid user id. request_params = [{'value': '1', 'key': 'oauth'}, {'value': 'friends.get', 'key': 'method'}, {'value': 'sex,site', 'key': 'fields'}, {'value': 'айди', 'key': 'user_ids'}]

    opened by nikitc 7
  • Add dumping for keyboard key value.

    Add dumping for keyboard key value.

    Сейчас вк-разработчики добавили апи кнопок для ботов. Там такой формат ключа keyboard - словарь с листами (листами) словарей.

    При вызове message.send с ключом keyboard ломалось его значение - условие if isinstance(value, Iterable) and not isinstance(value, STRING_TYPES) выполнялось и для значения keyboard ключа, следовательно, value = u','.join(map(str_type, value)) меняло всю вложенную структуру на ключи словаря keyboard через запятую. Ну а дальше возникала ошибка API - неправильный формат аргументов метода.

    Добавил условие в цикл - для таких сложных структур делаем json.dumps(value).

    Тестил fix только на send.message, поэтому было бы хорошо посмотреть\потестить как фикс повлияет на другие методы API. Вроде, только в кейборд такой формат данных и всё должно быть :ok_hand: :ok_hand: :ok_hand:

    opened by Beastrock 1
Releases(3.0)
  • 3.0(Jul 4, 2022)

    🎉 finally, a seven-year release 🎉

    Changes

    Major

    • Dropped support for end-of-life Pythons (older than 3.7)
    • Fixed incompatibility with Python 3.10
    • Large refactoring done by @voronind: no more session classes, only API objects

    Minor

    • Implemented a new vk.DirectUserAPI class which using Direct authorization
    • Added support for proxy (#96)
    • Fixed expired authorization of vk.UserAPI
    • Documentation has been greatly expanded
    • Improved logging (#42 is a part of plan)
    • Fixed incompatibility with API method secure.checkToken (#119)

    Also

    It is a first stable release by new maintainer @YariKartoshe4ka Thanks to @voronind for his trust and fast support in organizational matters (#123)

    Source code(tar.gz)
    Source code(zip)
  • 3.0.dev2(Jun 20, 2022)

  • 3.0.dev1(Jun 2, 2022)

  • 2.0(Oct 25, 2015)

Owner
Dmitry Voronin
Dmitry Voronin
Music bot because Octave is down and I can : )

Chords On a mission to build the best Discord Music Bot View Demo · Report Bug · Request Feature Table of Contents About The Project Built With Gettin

Aman Prakash Jha 53 Jan 07, 2023
A Bot that Forwards Tweets to Telegram using Airtable as a database.

Twitter Telegram Forward A Bot that Forwards Tweets to Telegram using Airtable as a Database. Features: Handles multiple twitter and telegram channels

George Bakev 3 Dec 21, 2022
A simple python script to send files into your telegram Bot form your PC, Server etc.

telegramSend A simple python script to send files into your telegram Bot form your PC, Server etc. How to Use Install requirements.txt pip3 install -r

Ajay Kumar Tekam 1 Jul 19, 2022
Example-bot-discord - Example bot discord xD

example-python-bot-discord Clone this repository Grab a token on Discord's devel

Amitminer 1 Mar 14, 2022
Cord Python API Client

Cord Python API Client The data programming platform for AI 💻 Features Minimal low-level Python client that allows you to interact with Cord's API Su

Cord 52 Nov 25, 2022
🕵️‍♂️ Investigate Google Accounts with emails.

Description GHunt is an OSINT tool to extract information from any Google Account using an email. It can currently extract: Owner's name Last time the

mxrch 13.1k Jan 01, 2023
Telegram hack bot [ For Dev ]

Telegram hack bot [ For Dev ]

Alison Parker 1 Jul 04, 2022
Built for streamlining development of Google Assistant Actions

Apprentice Apprentice is a framework built for developing Google Actions via Dialogflow and Google Cloud (serverless) Functions. Includes: plug-and-pl

Andrew Graham-Yooll 9 May 16, 2019
Chronocalc - Calculates the dates and times when the sun or moon is in a given position in the sky

Chronocalc I wrote this script after I was busy updating my article on chronoloc

16 Dec 13, 2022
Script for downloading Coursera.org videos and naming them.

Coursera Downloader Coursera Downloader Introduction Features Disclaimer Installation instructions Recommended installation method for all Operating S

Coursera Downloader 9k Jan 02, 2023
Easy way to use Telegram bot to hide your identity.

telegram-support-bot Easy way to use Telegram bot to hide your identity. Useful for support, anonymous channel management. Free clone of Livegram Bot.

Daniil Okhlopkov 197 Dec 23, 2022
Telegram Client and Bot that use Artificial Intelligence to auto-reply to scammers and waste their time

scamminator Blocking a scammer is not enough. It is time to fight back. Wouldn't be great if there was a tool that uses Artificial Intelligence to rep

Federico Galatolo 6 Nov 12, 2022
Translator based on Google API

Yakusu Toshiko Translator based on Google API. Instance of this bot is running as @yakusubot. Features Add a plus to a language's name to show an orig

Arisu W. 2 Sep 21, 2022
Telegram Auto Filter Bot

Pro Auto Filter Bot V2.o Hey Mo Tech, I'm an Autofilter bot v2.O and you can not Add Me to your Group. I was made for this one group. So don't waste y

14 Oct 20, 2021
Confirm that files have been uploaded to Backblaze Cloud Backup successfully

Backblaze Backup Checker This Python script compares metadata captured from files within source folders against data parsed from Backblaze Cloud Backu

18 Jul 29, 2022
An attempt to escape the horrible JIRA editor.

An attempt to escape the horrible JIRA editor. jira_filter.py is a pandoc filter that cleans up some of JIRA's html so that it can be converted to Mar

Stefan Matting 2 Feb 10, 2022
Mikasa is a 100% Spanish bot, a multifunctional bot, Mikasa is in beta.

Mikasa Miaksa, It is a multi-functional discord bot that is currently in development, this is not complete, there are still many things to fix and imp

Made in 2 Oct 05, 2021
A bot for the [email protected] Discord server.

KittyBot - a sentient Discord bot! Key Notes An open-source, community-powered bot for the [email 

Ollie 11 Dec 06, 2022
Repositorio dedicado a contener los archivos fuentes del bot de discord "Lector de Ejercicios".

Lector de Ejercicios Este bot de discord está pensado para usarse únicamente en el discord de la materia Algoritmos y Programación I, de la Facultad d

Franco Lighterman Reismann 3 Sep 17, 2022
TikTok 4L and 4C checker that doesn't count banned usernames as available

TikTok 4L and 4C checker that doesn't count banned usernames as available. Once a username is available, it will send it to your Discord Webhook.

cliphd 26 May 01, 2022