In [ ]:
import vk
import time
import re
#https://oauth.vk.com/authorize?client_id=6628745&display=page&redirect_uri=https://oauth.vk.com/blank.html &scope=offline&response_type=token&v=5.80&state=123456 
session = vk.Session(access_token='-----')
vkapi = vk.API(session)

SLEEP_TIME = 0.3
SELF_ID = ****

In [ ]:
friends = vkapi('friends.get',v='5.80')

In [ ]:
def get_dialogs(user_id):
	dialogs = vkapi('messages.getDialogs', user_id=user_id, v='5.12')
	return dialogs

In [ ]:
get_dialogs(170153452)['count']

In [ ]:
for friend in friends['items']:
    print(friend)

In [ ]:
msges = ''
for val in a['items']:
    if val['from_id'] == *****:
        print (val['body'])
        msges  += (val['body']) + ' \n '

In [ ]:
def get_history(friends, sleep_time=0.3):
    all_history = ''
    i = 0
    for friend in friends['items']:
        friend_dialog = get_dialogs(friend)
        time.sleep(sleep_time)
        dialog_len = friend_dialog['count']
        friend_history = []
        print(friend)
        if dialog_len > 200:
            resid = dialog_len
            offset = 0
            while resid > 0:
                friend_history = vkapi('messages.getHistory', 
                    user_id=friend, 
                    count=200, 
                    offset=offset, v='5.12')['items']
                for val in friend_history:
                    if val['from_id'] == SELF_ID:
                        all_history += val['body'] + ' \n '
                time.sleep(sleep_time)
                resid -= 200
                offset += 200
                #if resid > 0:
                    #print('--processing', friend, ':', resid, 'of', dialog_len, 'messages left')
            #all_history += friend_history
        i +=1
        print('processed', i, 'friends of', len(friends))
    return all_history

In [ ]:
def get_messages_for_user(data, user_id):
	self_messages = []
	for dialog in data:
		if type(dialog) == dict:
			if dialog['uid'] == user_id and dialog['from_id'] == user_id:
				m_text = re.sub("<br>", " ", dialog['body'])
				self_messages.append(m_text)
	print('Extracted', len(self_messages), 'messages in total')
	return self_messages

def save_to_file(data, file_name='output.txt'):
	with open(file_name, 'w', encoding='utf-8') as f:
	    print(data, file=f)

In [ ]:
all_history = get_history(friends, SLEEP_TIME)
#save_to_file(all_history, 'raw.txt')

text_file = open("Output.txt", "w")
text_file.write(all_history)
text_file.close()

In [ ]:
friend_dialoself_messages = get_messages_for_user(all_history, SELF_ID)
save_to_file(self_messages, 'sm_corpus.txt')