Answer the question
In order to leave comments, you need to log in
How to download all pictures from the list of Vkontakte users via vk api?
For this task, I have almost all the functions ready, I just need to connect them correctly (this is the problem).
import requests
#считывает id пользователей в список
def get_vkid():
file = open('vk_id_list.txt', 'r')
data_list = file.readlines()
id_list = []
for line in data_list:
id_list.append(line.strip())
return id_list
#Получаю все ссылки на фотографии пользователя, сохраняю ссылки в urllist
token = '......'
owner_id = ...
version = 5.101
offset = 20
count = 50
photo_sizes = 1
response = requests.get('https://api.vk.com/method/photos.getAll',
params={
'owner_id': owner_id,
'access_token': token,
'v': version,
'count': count
})
data = response.json()
ll = data['response']['items']
urllist = []
for l in ll:
urls = [ d['url'] for d in l['sizes'] if d['type'] == 'r' ]
urllist.append(urls)
#скачиваю картинки по ссылкам, сохраняю.(эту функцию надо переделать. Нужно, чтоб для каждого id создавалась папка, и в ней хранились все фото этого id)
for url in urllist:
url = url.strip()
file_name = url[url.rfind('/')+1:]
img = urllib.request.urlopen(url).read()
out = open(file_name, "wb")
out.write(img)
out.close()
Answer the question
In order to leave comments, you need to log in
I spent 15 minutes of my life for you)))
The example is given for python 2, using the vk_api library.
The code, of course, without error handling and, in general, in the forehead.
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
import sys
import vk_api
import urllib
LOGIN = 'ТВОЙ ЛОГИН'
PASSWORD = 'ТВОЙ ПАРОЛЬ'
def main():
# ======= Открываем сессию с VK =======
vk_session = vk_api.VkApi(LOGIN, PASSWORD)
try:
vk_session.auth()
except vk_api.AuthError as error_msg:
print(error_msg)
return
vk = vk_session.get_api()
# ======= считываем список пользователей =======
file_id = open(os.path.join(sys.path[0],'id_users.txt'), 'r')
data_list = file_id.readlines()
id_list = []
for line in data_list:
id_list.append(line.strip())
# ======= начинаем перебирать каждого пользователя =======
for id_user in id_list:
# создаем директорию с именем пользователя, если нет
newpath = os.path.join(sys.path[0], id_user)
if not os.path.exists(newpath):
os.makedirs(newpath)
# посылаем запрос к VK API, count свой, но не более 200
response = vk.photos.getAll(owner_id = int(id_user), count = 3)
# работаем с каждой полученной фотографией
for i in range(len(response["items"])):
# берём ссылку на максимальный размер фотографии
photo_url = str(response["items"][i]["sizes"][len(response["items"][i]["sizes"])-1]["url"])
# скачиваем фото в папку с ID пользователя
urllib.urlretrieve(photo_url, newpath + '/' + str(response["items"][i]['id']) + '.jpg')
if __name__ == "__main__":
main()
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question