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
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
A file-based quote bot written in Python

Let's Write a Python Quote Bot! This repository will get you started with building a quote bot in Python. It's meant to be used along with the Learnin

1 Jan 15, 2022
checks anilist for available usernames (200rq/s)

Anilist checker Running the program Set a path to the extracted files Install the packages with pip install -r req.txt Run the script by typing python

gxzs 1 Oct 13, 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
A python script that changes our background based on current weather and time of the day.

Desktop background on Windows 10, based on current weather and time A python script that changes our background based on current weather and time of t

Maj Gaberšček 1 Nov 16, 2021
A small bot to interact with the reddit API. Get top viewers and update the sidebar widget.

LiveStream_Reddit_Bot Get top twitch and facebook stream viewers for a game and update the sidebar widget and old reddit sidebar to show your communit

Tristan Wise 1 Nov 21, 2021
💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline!

LocalStack - A fully functional local AWS cloud stack LocalStack provides an easy-to-use test/mocking framework for developing Cloud applications. Cur

LocalStack 45.3k Jan 02, 2023
Discord Bot that can translate your text, count and reply to your messages with a personalised text

Discord Bot that can translate your text, count and reply to your messages with a personalised text

Grizz 2 Jan 26, 2022
✨ Music&Video Userbot

🎶 Fizi - UserBot 🎶 🤖 Telegram UserBot Untuk Memutar Lagu Dan Video Di Obrolan Suara Telegram. ✨ Didukung Oleh PyTgCalls Pyrogram 📝 Persyaratan Pyt

F I Z I • Ɱeƙípres 4 Mar 29, 2022
SOLSEA-NFT-EXPLORE - Using Streamlit to build a simple UI on top of the Solana API

SOLSEA NFT Explorer Using Streamlit to build a simple UI on top of the Solana AP

Devin Capriola 3 Mar 19, 2022
This is Telegram Files Store Bot by @AbirHasan2005

PyroFilesStoreBot This is Telegram Parmanent Files Store Bot by @AbirHasan2005. Language: Python3 Library: Pyrogram Features: In PM Just Forward or Se

Abir Hasan 168 Dec 19, 2022
A wrapper for slurm especially on Taiwania2 (HPC CLI)A wrapper for slurm especially on Taiwania2 (HPC CLI)

TWCC-slurm-wrapper A wrapper for slurm especially on Taiwania2 (HPC CLI). For Taiwania2 (HPC CLI) usage, please refer to here. (中文) How to Install? gi

Chi-Liang, Liu 5 Oct 07, 2022
Телеграм бот решающий задания ЦДЗ, написанный на библиотеке libmesh.

MESHBot-Telegram Телеграм бот решающий задания ЦДЗ. Описание: Бот написан с использованием библиотеки libmesh. Для начала работы отправьте ему ссылку

2 Jun 19, 2022
Discord group chat spammer concept.

GC Spammer [Concept] GC-Spammer for https://discord.com/ Warning: This is purely a concept. In the past the script worked, however, Discord ratelimite

Roover 3 Feb 28, 2022
GitHub action to deploy serverless functions to YandexCloud

YandexCloud serverless function deploy action Deploy new serverless function version (including function creation if it does not exist). Inputs yc_acc

Много Лосося 4 Apr 10, 2022
A basic Ubisoft API wrapper created in python.

UbisoftAPI A basic Ubisoft API wrapper created in python. I will be updating this with more endpoints as time goes on. Please note that this is my fir

Ethan 2 Oct 31, 2021
An advanced Twitter scraping & OSINT tool written in Python that doesn't use Twitter's API, allowing you to scrape a user's followers, following, Tweets and more while evading most API limitations.

TWINT - Twitter Intelligence Tool No authentication. No API. No limits. Twint is an advanced Twitter scraping tool written in Python that allows for s

TWINT Project 14.2k Jan 03, 2023
ChairBot is designed to be reliable, easy to use, and lightweight for every user, and easliy to code add-ons for ChairBot.

ChairBot is designed to be reliable, easy to use, and lightweight for every user, and easliy to code add-ons for ChairBot. Ready to see whats possible with ChairBot?

1 Nov 08, 2021
This is a simple Telegram bot to Delete User Messages based on Groupmembers Votes. Heroku deployable

ibCleaner Bot This is a simple Telegram bot to Delete User Messages based on Groupmembers Votes. Deploy to Heroku Deploy locally Edit config.py and ad

8 Oct 21, 2022
inventory replenishment for a hospital.

Inventory-Replenishment Inventory-Replenishment for a hospital that would like to explore how advanced anlytics may help automate their decision proce

1 Jan 09, 2022