V
V
Vitalik2015-02-01 08:40:47
Python
Vitalik, 2015-02-01 08:40:47

How to download VKontakte chat?

Can you please tell me how to write a script to download a dialog from a contact?
Using requests.

Answer the question

In order to leave comments, you need to log in

1 answer(s)
D
Dmitry Kirichuk, 2015-02-01
@sonic_youth

We create a standalone application here: vk.com/editapp?act=create
Then, in the application settings, we look at the ID and the security key and paste them into the script below.

# coding: utf-8
from __future__ import print_function
from __future__ import unicode_literals

import os
import sys

from oauthlib.oauth2.rfc6749.clients import WebApplicationClient
from requests_oauthlib import OAuth2Session

# VK не присылает scope после получения токена. Чтобы oauthlib не
# выбрасывала исключение, нужно поставить этот флажок:
os.environ.setdefault('OAUTHLIB_RELAX_TOKEN_SCOPE', '1')

if sys.version_info.major < 3:
    # PY2
    input = raw_input

# Эти данные Вы должны получить после создания приложения
client_id = 'сюда подставляем ID'
client_secret = 'а сюда секретный ключ'

authorization_base_url = 'https://oauth.vk.com/authorize'
token_url = 'https://oauth.vk.com/access_token'

api_client = WebApplicationClient(
    client_id=client_id,
    default_token_placement='query'
)
vk = OAuth2Session(scope='messages', client=api_client)

# получаем адрес для авторизации приложения
authorization_url, state = vk.authorization_url(authorization_base_url)
print('Пройдите по указанному адресу и авторизуйтесь:', authorization_url)

auth_resp = input('Введите адрес, на который вы были перенаправлены после '
                  'прохождения авторизации:')
auth_resp = auth_resp.replace('#', '?')  # иначе код сам не найдется

vk.fetch_token(token_url, client_secret=client_secret,
               authorization_response=auth_resp)

# так можно получит список диалогов
response = vk.get('https://api.vk.com/method/messages.getDialogs', 
                  params={'v': '5.28'}).json()
print(response.json())

The script needs to be added to pick up messages from a specific dialog. Take a look at the messages.getHistory method .
A list of all Vkontakte API methods for working with messages is here: vk.com/dev/messages

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question