Пытаюсь сделать, что бы в файл записывались данные из "вконтакте" в следующем виде: сначала пост, за ним первый комментарий, все ответы на этот первый комментарий, затем следующий комментарий и все ответы на второй комментарий , когда все комментарии закончатся, следующий пост и тд. Но что то не работает. Помогите пожалуйста понять, что не так и как надо.
import csv
import requests
token = 'token'
version = 5.131
owner_id = '-174228153'
post_id = 0
comment_id = 0
count = 10
i = 0
# функция записи данных в файл
def file_writer(all_post, all_comments, all_undercom, i):
with open('parsing.csv', 'a', encoding='utf-8') as file:
a_pen = csv.writer(file)
a_pen.writerow(['id', 'text', 'likes', 'reposts', 'type', 'parents_stak', 'owner_id'])
i = i
for m, k, z in zip(all_post, all_comments, all_undercom):
a_pen.writerow((all_post[i]['id'], all_post[i]['text'], all_post[i]['likes']['count'],
all_post[i]['reposts']['count'], 'post', '-', all_post[i]['owner_id']))
j = 0
for k in all_comments:
if j < len(all_comments):
a_pen.writerow([all_comments[j]['id'], all_comments[j]['text'], '-', '-', 'comment',
all_comments[j]['post_id'], all_comments[j]['owner_id']])
j += 1
t = 0
for z in all_undercom:
if t < len(all_undercom):
a_pen.writerow((all_undercom[t]['id'], all_undercom[t]['text'], '-', '-', 'subcomment',
all_undercom[t]['id'], all_undercom[t]['owner_id']))
t += 1
else:
pass
else:
pass
# получение всех постов
def get_posts(token, owner_id, count):
token = token
version = 5.131
owner_id = owner_id
count = count
offset = 0
all_posts = []
while offset < 100:
response = requests.get('https://api.vk.com/method/wall.get',
params={
'access_token': token,
'v': version,
'owner_id': owner_id,
'count': count,
'offset': offset
})
data = response.json()['response']['items']
offset += 100
all_posts.extend(data)
return all_posts
# Получение id текущего поста
def get_post_id(all_post, i):
for post in all_post:
post_id = all_post[i]['id']
return post_id
# получение всех коментариев под постом
def get_comments(token, owner_id, post_id, count):
token = token
version = 5.131
owner_id = owner_id
post_id = post_id
count = count
offset = 0
all_comments = []
while offset < 100:
response = requests.get('https://api.vk.com/method/wall.getComments',
params={
'access_token': token,
'v': version,
'owner_id': owner_id,
'post_id': post_id,
'count': count,
'offset': offset
})
data = response.json()['response']['items']
offset += 100
all_comments.extend(data)
return all_comments
# получение id текущего комментария
def get_comment_id(all_comments, i):
comment_id = None
for coment in all_comments:
if i < len(all_comments):
comment_id = all_comments[i]['id']
else:
pass
return comment_id
# получение ветки подкоментариев
def get_vetcom(token, owner_id, post_id, comment_id, count):
token = token
version = 5.131
owner_id = owner_id
post_id = post_id
comment_id = comment_id
count = count
offset = 0
all_comments_vet = []
while offset < 100:
response = requests.get('https://api.vk.com/method/wall.getComments',
params={
'access_token': token,
'v': version,
'owner_id': owner_id,
'post_id': post_id,
'comment_id': comment_id,
'count': count,
'offset': offset
})
data = response.json()['response']['items']
offset += 100
all_comments_vet.extend(data)
return all_comments_vet
all_post = get_posts(token, owner_id, 10) # получили список постов
while i < len(all_post):
post_id = get_post_id(all_post, i) # получили id текущего поста
all_comments = get_comments(token, owner_id, post_id, 10) # получили список коментариев под этим постом
comment_id = get_comment_id(all_comments, i) # получили id n-го комментария из списка комментариев
all_undercom = get_vetcom(token, owner_id, post_id, comment_id, 10) # получили список подкоментариев этого коментария
file_writer(all_post, all_comments, all_undercom, i)
i += 1
print(all_post,all_comments,all_undercom)
print(1)