Vkontakte
Меня давно беспокоила мысль, что в альбомах Vkontakte есть несколько фото, локальных копий которых у меня нет. Перебирать все альбомы и фото занятие, конечно, полезное, но очень скучное. По этому я решил как то автоматизировать этот процесс.

Ниже приведены несколько строк кода, что дают возможность производить експорт фотографий из Vkontakte на локальный диск. Иными словами – Вы можете скачать все альбомы Вконтакте себе на ПК.
Прежде всего установите замечательную библиотеку для работы с Vkontakte API, что написал Mikhail Korobov Именно её я использовал, как самый просто и интуитивно-понятный способ общаться с социальной сетью в Python.
Для работы скрипта Вам потребуется сперва создать приложение VKontakte. Делается это в 1 клик, по этому описывать процесс не буду.

На выходе Вы должны получить:

  • ID приложения (APP_ID в настройках скрипта)
  • Защищенный ключ (APP_KEY в настройках скрипта)

Теперь создайте скрипт со следующим кодом, указывая значения для двух переменных выше и свой VK ID в переменной UID.
Не забудьте указать путь к каталогу, куда будут загружаться альбомы (PHOTOS_DIR)

#!/bin/env python
# -*- coding: utf-8 -*-
import os
import urllib2
import vkontakte
from time import sleep

# Start config block
UID                  = YOUR_VK_ID
APP_ID           = 'YOUR_ID'
APP_KEY        = 'YOUR_KEY'
PHOTOS_DIR  = 'YOUR_PATH'
# End config block

vk = vkontakte.API(APP_ID, APP_KEY, timeout=5)

for album in vk.photos.getAlbums(uid=UID):
    sleep(0.3)

    album_path = PHOTOS_DIR + "/" + album['title'].replace(' ', '_').replace(',', '')

    try:
        os.mkdir(album_path)
    except:
        pass

    for photo in vk.photos.get(uid=UID, aid=album['aid']):
        if photo.has_key('src_xxbig'):
            image_src = photo['src_xxbig']
        elif photo.has_key('srx_xbig'):
            image_src = photo['srx_xbig']
        else:
            image_src = photo['src_big']

        photo_path = album_path + "/" + image_src.split('/')[-1]

        photo = urllib2.urlopen(image_src).read()

        photo_on_disk = open(photo_path, 'w+')
        photo_on_disk.write(photo)
        photo_on_disk.close()

        sleep(0.3)
        print "Photo '%s' downloaded" % photo_path
Теперь можете запускать скрипт и следить за загрузкой!
По умолчанию скрипт загружает фотографии наилучшего качества, если это возможно. Фото разбиваются по альбомам (на каждый альбом создаётся свой каталог).

Приятной работы!

Источник: PyDev.info - Загрузка фотографий из Vkontakte
15 Ноябрь 2012, 19:08 22 daniel
blog comments powered by Disqus