Я написал код, который, используя vk long poll, собирает данные (кто когда зашел и вышел, кто что написал и т.д.).
import requests
from constants import token
import csv
import threading
LOCK = threading.RLock()
def auth(token):
data = requests.get('https://api.vk.com/method/messages.getLongPollServer',
params={'access_token': token, 'v':5.85}).json()['response']
server = data['server']
ts = data['ts']
key = data['key']
return [server, key, ts]
def write2csv(file_name, data):
global LOCK
LOCK.acquire()
with open(file_name, 'a', newline='') as f:
writer = csv.writer(f, delimiter=',')
writer.writerow(data)
LOCK.release()
def main():
data = auth(token)
while 1:
response = requests.get('https://{0}?act=a_check&key={1}&ts={2}&wait=20&mode=2&version=2'.format(*data)).json()
try:
updates = response['updates']
except KeyError:
data = auth(token)
continue
if updates:
for element in updates:
thread1 = threading.Thread(target=write2csv, args=("log.csv", element))
thread1.start()
data[2] = response['ts']
if __name__ == '__main__':
main()
Пока я реализовал это так. Но я не знаю, правильно ли я это делаю? Нормально ли представление в csv?