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
Gets instagram public username and returns usefull informations like profilepic(b64), video_urls etc.

InstaSucker Gets instagram public username and returns usefull informations like profilepic(b64), video_urls etc. Information this project contains a

Armin Amiri 5 Apr 30, 2022
You can connect with Sanila Ranatunga using this bot😉😉

Sanila-Ranatunga-s-Assistant-Bot You can connect with Sanila Ranatunga using this bot 😉 😉 Reach me on Telegram Sanila's Assistant Bot What is Telegr

Sanila Ranatunga 5 Feb 01, 2022
A simple API Wrapper for Guilded.

Guildr A simple API Wrapper for Guilded. Frequently updated! I am not a user of Guilded, meaning I do not keep track of new Guilded updates or patches

2 Mar 07, 2022
Satoshi is a discord bot template in python using discord.py that allow you to track some live crypto prices with your own discord bot.

Satoshi ~ DiscordCryptoBot Satoshi is a simple python discord bot using discord.py that allow you to track your favorites cryptos prices with your own

Théo 2 Sep 15, 2022
Proxy-Bot - Python proxy bot for telegram

Proxy-Bot 🤖 Proxy bot between the main chat and a newcomer, allows all particip

Anton Shumakov 3 Apr 01, 2022
Security Monkey monitors AWS, GCP, OpenStack, and GitHub orgs for assets and their changes over time.

NOTE: Security Monkey is in maintenance mode and will be end-of-life in 2020. For AWS users, please make use of AWS Config. For GCP users, please make

Netflix, Inc. 4.3k Jan 09, 2023
A Python Instagram Scraper for Downloading Profile's Posts, stories, ProfilePic and See the Details of Particular Instagram Profile.

✔ ✔ InstAstra ⚡ ⚡ ⁜ Description ~ A Python Instagram Scraper for Downloading Profile's Posts, stories, ProfilePic and See the Details of Particular In

12 Jun 23, 2022
A minimalistic, modern Discord bot for roles and polls using dropdowns

DropBot A minimalistic, modern Discord bot for roles and polls using dropdowns Made by ThatOneCalculator Technologies used Instructions Type /, and na

ModernBots 1 Jun 27, 2022
A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also follows the user.

GirlScript Winter of Contributing Twitter Bot A Twitter Bot that retweets and likes tweets with the hashtag #girlscriptwoc and #girlscript, and also f

Pranay Gupta 9 Dec 15, 2022
A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha.

Emoji-Captcha-Bot A Telegram Bot which will ask new Group Members to verify them by solving an emoji captcha. About API: Using api.abirhasan.wtf/captc

Abir Hasan 52 Dec 11, 2022
Cdk-python-crud-app - CDK Python CRUD App

Welcome to your CDK Python project! You should explore the contents of this proj

Shapon Sheikh 1 Jan 12, 2022
Framework to collect and process weather data from wttr.in.

Weathercrawler Automatic extraction and processing framework for weather data from wttr.in Installation tested with: Python 3.7.3 Python 3.9.4 git clo

Maurice Günder 0 Jul 26, 2021
Python Client Library to interface with the Phoenix Realtime Server

supabase-realtime-client Python Client Library to interface with the Phoenix Realtime Server This is a fork of the supabase community realtime client

Anand 2 May 24, 2022
Basic-Discord-Response-Bot, in Python

Response bot for Discord. EG: User: Hello! Bot: Hello there! About Very customizable, no credits needed. Edit the bot.py to what you want, basic Pytho

rhys 1 Nov 20, 2021
Roblox-Account-Gen - A simple account generator not using paid solving services

Roblox Account Generator Star this if it helped to spread awareness! No 2captcha

x 1 Feb 17, 2022
How to add reaction on message discord.py

BA / HR / RS: Python (discord.py) skripta pomocu koje dodajete reakciju na vasu poruku putem komande !v ili da se dodaje samo u nekoj odredjenoj sobi.

Seekii 3 Dec 23, 2021
Yes, it's true :revolving_hearts: This repository has 301 stars.

Yes, it's true! Inspired by a similar repository from @RealPeha, but implemented using a webhook on AWS Lambda and API Gateway, so it's serv

511 Dec 30, 2022
WakeNote is a tool that hides notifications from you until you confirm you want to read them, with technology to help prevent the reading of depressing messages first thing in the morning.

By: Seanpm2001, Et; Al. Top README.md Read this article in a different language Sorted by: A-Z Sorting options unavailable ( af Afrikaans Afrikaans |

Sean P. Myrick V19.1.7.2 3 Oct 21, 2022
A course on getting started with the Twitter API v2 for academic research

Getting started with the Twitter API v2 for academic research Welcome to this '101 course' on getting started with academic research using the Twitter

@TwitterDev 426 Jan 04, 2023
WhatsApp Api Python - This documentation aims to exemplify the use of Moorse Whatsapp API in Python

WhatsApp API Python ChatBot Este repositório contém uma aplicação que se utiliza

Moorse.io 3 Jan 08, 2022