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')