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
Sample code helps get you started with a simple Python web service using AWS Lambda and Amazon API Gateway

Welcome to the AWS CodeStar sample web service This sample code helps get you started with a simple Python web service using AWS Lambda and Amazon API

0 Jan 20, 2022
Um simples bot público para todos usarem no discord!

Discord Bot - Código Público Características: Linguagem de Programação: Python Quantidade de comandos: 17 Comandos: Prefixo do bot: O prefixo desse bo

Kevin 3 Dec 31, 2021
Telegram bot which has truecaller and smsbomber features

Truecaller-telegram_bot Add your telegram bot api key in main.py and you are good to go To get a api key Goto telegram and search BotFather From the c

Rudranag 32 Dec 05, 2022
The Best Multipurpose Discord Bot!

Polsu The Best Multipurpose Discord Bot! • Introduction • Screenshots • Setup • License Introduction Polsu is a Multipurpose Discord Bot. Polsu has a

Polsulpicien 1 Nov 09, 2021
A frame to create discord bots (for myself) that uses cogs, JSON, activities, and more.

dpy-frame A frame to create discord bots (for myself) that uses cogs, JSON, activities, and more. NOTE: Documentation is incomplete, so please wait un

Apple Discord 1 Nov 06, 2021
Mushahid Ali 1 Dec 31, 2021
Due to changes to the discord API and discord.py being discontinued

Talia Due to changes to the discord API and discord.py being discontinued, Talia development has been halted permanently A customizable economy discor

2 Mar 08, 2022
Python API for working with RESQML models

resqpy: Python API for working with RESQML models Introduction resqpy is a pure python package which provides a programming interface (API) for readin

BP 44 Dec 14, 2022
Eva Maria Telegram Bot

Eva Maria Bot Features Auto Filter Manuel Filter IMDB Admin Commands Broadcast Index IMDB search Inline Search Random pics ids and User info Stats, Us

Eva Maria TG 477 Dec 31, 2022
ByDiego Token Grabber is a Discord Stealer

ByDiego Token Grabber is a Discord Stealer. This way you can get too much information from x person if you pass it on and open it

zByDiegoM.T 4 Mar 11, 2022
A telegram photos or videos background remover bot

Remove BG Bot A telegram photos or videos background remover bot Variables API_HASH Your API Hash from my.telegram.org API_ID Your API ID from my.tele

ALBY 7 Dec 13, 2022
Asynchronous Python Wrapper for the GoFile API

Asynchronous Python Wrapper for the GoFile API

Gautam Kumar 22 Aug 04, 2022
Track live sentiment for stocks from Reddit and Twitter and identify growing stocks

Market Sentiment About This repository can mainly be used for two things. a. Tracking the live sentiment of stocks from Reddit and Twitter b. Tracking

Market Sentiment 345 Dec 17, 2022
A pre-attack hacker tool which aims to find out sensitives comments in HTML comment tag and to help on reconnaissance process

Find Out in Comment Find sensetive comment out in HTML ⚈ About This is a pre-attack hacker tool that searches for sensitives words in HTML comments ta

Pablo Emídio S.S 8 Dec 31, 2022
My Advent of Code solutions. I also upload videos of my solves: https://www.youtube.com/channel/UCuWLIm0l4sDpEe28t41WITA

My solutions to adventofcode.com puzzles. I post videos of me solving the puzzles in real-time at https://www.youtube.com/channel/UCuWLIm0l4sDpEe28t41

195 Jan 04, 2023
Automatically commits and pushes changes from a specified directory to remote repository

autopush a simple python program that checks a directory for updates and automatically commits any updated files (and optionally pushes them) installa

carreb 1 Jan 16, 2022
A management system designed for the employees of MIRAS (Art Gallery). It is used to sell/cancel tickets, book/cancel events and keeps track of all upcoming events.

Art-Galleria-Management-System Its a management system designed for the employees of MIRAS (Art Gallery). Backend : Python Frontend : Django Database

Areesha Tahir 8 Nov 30, 2022
Bender: A Markov Babbler Slack Bot

See the Digital Ocean tutorial for instructions on how to get the basic bot structure in place. Once you have that, set the gunicorn command to run as

Andrew Howard 1 Dec 04, 2021
A modern Python client for controlling Wyze devices.

Python Wyze SDK A modern Python client for controlling Wyze devices. Whether you're building a custom app, or integrating into a third-party service l

Shaun Tarves 205 Jan 02, 2023
Portal Backend for Yuta management

Portal Backend for Yuta management Prerequisites Python 3.10 or above. pip, pdm installed. Quickstart Install the required packages: pdm install Runn

Loc Mai 1 Dec 20, 2021