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 for playing music on telegram voice chat group.

Somali X Music 🎵 Music bot for playing music on telegram voice chat group. Requirements FFmpeg NodeJS nodesource.com Python 3.8+ or Higher PyTgCalls

Abdisamad Omar Mohamed 4 Dec 01, 2021
A Telegram Repo For Devs To Controll The Bots Under Maintenance.This Bot Is For Developers, If Your Bot Is Down, Use This Repo To Give Your Dear Subscribers Some Support By Providing Them Response.

Maintenance Bot A Telegram Repo For Devs To Controll The Bots Under Maintenance About This Bot This Bot Is For Developers, If Your Bot Is Down, Use Th

Vɪᴠᴇᴋ 47 Dec 29, 2022
This code will guide you on how you can make your own Twitter Bot.

This code will guide you on how you can make your own Twitter Bot. This bot retweets, and likes to tweet with a particular word, here Python3.

Kunal Diwan 1 Oct 14, 2022
A Telegram Bot to Extract Various Types Of Archives

IDN Unzip Bot A Telegram Bot to Extract Various Types Of Archives Features Extract various types of archives like rar, zip, tar, 7z, tar.xz etc. Passw

IDNCoderX 8 Jul 25, 2022
A Fork of Gitlab's Permifrost tool for managing Snowflake Permissions

permifrost-fork This is a fork of the GitLab permifrost project. As the GitLab team is not currently maintaining the project, we've taken on maintenac

Hightouch 7 Oct 13, 2021
A discord bot that utilizes Google's Rest API for Calendar, Drive, and Sheets

Bott This is a discord bot that utilizes Google's Rest API for Calendar, Drive, and Sheets. The bot first takes the sheet from the schedule manager in

1 Dec 04, 2021
Python Package For MTN Zambia Momo API. This package can also be used by MTN momo in other countries.

MTN MoMo API Lite Python Client Power your apps with Lite-Python MTN MoMo API Usage Installation Add the latest version of the library to your project

Mathews Musukuma 7 Jan 01, 2023
Telegram bot to clip youtube videos

youtube-clipper-bot Telegram bot to clip youtube videos How to deploy? Create a file called config.env BOT_TOKEN: Provide your bot token generated by

Shivam Jha 11 Dec 10, 2022
Python API Client for Twitter API v2

🐍 Python Client For Twitter API v2 🚀 Why Twitter Stream ? Twitter-Stream.py a python API client for Twitter API v2 now supports FilteredStream, Samp

Twitivity 31 Nov 19, 2022
Telegram bot to check availability of vaccination slots in India.

cowincheckbot Telegram bot to check availability of vaccination slots in India. Setup Install requirements using pip3 install -r requirements.txt Crea

Muhammed Shameem 10 Jun 11, 2022
A simple Python library to integrate with the Heron Data API

Heron Python This library provides easy access to the Heron Data API from applications written in Python. Documentation No language-specific docs are

Heron Data 11 Nov 11, 2022
Template to create a telegram bot in python

Template for Telegram Bot Template to create a telegram bot in python. How to Run Set your telegram bot token as environment variable TELEGRAM_BOT_TOK

PyTopia 12 Aug 14, 2022
Pincer-bot-template - A template for a Discord bot created using the Pincer library

Pincer Discord Bot Template (Python) WARNING: Pincer is still in its alpha/plann

binds 2 Mar 17, 2022
A pypi package that helps in generating discord bots.

A pypi package that helps in generating discord bots.

KlevrHQ 3 Nov 17, 2021
Python interface to the LinkedIn API

Python LinkedIn Python interface to the LinkedIn API This library provides a pure Python interface to the LinkedIn Profile, Group, Company, Jobs, Sear

ozgur 844 Dec 27, 2022
livestream-chat: Overlay para chats de livestreams

livestream-chat Overlay para chats de livestreams. Inicialmente para rodar dentro do browser do obs-studio. TODO: Issues iniciais Suporte a API do You

Eduardo Mendes 10 Dec 16, 2022
A multipurpose, semi-modular Discord bot written in Python with the new discord.py module.

Discord.py Reaction Bot MIRAI KURIYAMA A multipurpose, semi-modular Discord bot written in Python with the new discord.py module. Installing dependenc

1 Dec 02, 2021
Python script to replace BTC adresses in the clipboard with similar looking ones, whose private key can be retrieved by a netcat listener or similar.

BTCStealer Python script to replace BTC adresses in the clipboard with similar looking ones, whose private key can be retrieved by a netcat listener o

Some Person 6 Jun 07, 2022
PepeSniper is an open-source Discord Nitro auto claimer/redeemer made in python.

PepeSniper is an open-source Discord Nitro auto claimer made in python. It sure as hell is not the fastest sniper out there but it gets the job done in a timely and stable manner. It also supports ho

Unknown User 1 Dec 22, 2021