VKontakte рд╕реЗ рдлрд╝реЛрдЯреЛ рдПрд▓реНрдмрдо рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ

рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛


рд╢рд╛рдо рд╣реЛ рдЪреБрдХреА рдереА, рдХреБрдЫ рдХрд░рдирд╛ рдирд╣реАрдВ рдерд╛ рдФрд░ рдлрд┐рд░ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛: "рдореИрдВ VKontakte рд╕реЗ рд╕рднреА рддрд╕реНрд╡реАрд░реЗрдВ рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рдХреИрд╕реЗ рдЕрдкрд▓реЛрдб рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ?" рджреЛ рдмрд╛рд░ рдмрд┐рдирд╛ рд╕реЛрдЪреЗ рд╕рдордЭреЗ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рд▓рд┐рдЦреА рдФрд░ рдЗрд╕реЗ рдЬрдирддрд╛ рдХреЗ рд╕рд╛рде рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рд╢рд╛рдпрдж рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ


рдПрдкреАрдЖрдИ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдЦреЛрдЬ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, vk_api рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХрд╛ рдЪрдпрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдиреЗрдЯрд╡рд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдЖрд╡рд╢реНрдпрдХ рд╣реИред

рд╕реНрдкрд░реНрд╢ рдХрд░рдирд╛


рдЧрд┐рдЯрд╣рдм рдкреЗрдЬ рдкреНрд░реЛрдЬреЗрдХреНрдЯ


рдЖрд╡реЗрджрди рд╣реА рдЕрддреНрдпрдВрдд рд╕рд░рд▓ рдФрд░ рдЫреЛрдЯрд╛ рдирд┐рдХрд▓рд╛, рд▓реЗрдХрд┐рди рдЕрдкрдиреЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рдореБрдХрд╛рдмрд▓рд╛ рдХрд░рддрд╛ рд╣реИред рд╕рднреА рдХреЛрдб рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рдлрд┐рдЯ рд╣реЛрддреЗ рд╣реИрдВред

рд╕реНрд░реЛрдд рдХреЛрдб
#!/usr/bin/env python """ :mod:`vkporter` ~~~~~~~~~~~~~~~ A micro tool for export photo albums from `vk.com <https://vk.com>`_. It's based on `VK_API <https://github.com/python273/vk_api>`_ by Kirill Python <mikeking568@gmail.com>, `Requests <python-requests.org>`_ and `ProgressBar <https://code.google.com/p/python-progressbar/>`_. :copyright: (c) 2013 by Andrey Maksimov. :license: BSD, see LICENSE for more details. """ __author__ = 'Andrey Maksimov <meamka@me.com>' __date__ = '09.03.13' __version__ = '0.1.1' import argparse import datetime from getpass import getpass import os import time import sys try: import requests except ImportError: print("Cannot find 'requests' module. Please install it and try again.") sys.exit(0) try: from vk_api import VkApi except ImportError: print("Cannot find 'vk_api' module. Please install it and try again.") sys.exit(0) def connect(login, password): """Initialize connection with `vk.com <https://vk.com>`_ and try to authorize user with given credentials. :param login: user login eg email, phone number :type login: str :param password: user password :type password: str :return: :mod:`vk_api.vk_api.VkApi` connection :rtype: :mod:`VkApi` """ return VkApi(login, password) def get_albums(connection): """Get albums list for currently authorized user. :param connection: :class:`vk_api.vk_api.VkApi` connection :type connection: :class:`vk_api.vk_api.VkApi` :return: list of photo albums or ``None`` :rtype: list """ try: return connection.method('photos.getAlbums') except Exception as e: print(e) return None def get_photos(connection, album_id): """Get photos list for selected album. :param connection: :class:`vk_api.vk_api.VkApi` connection :type connection: :class:`vk_api.vk_api.VkApi` :param album_id: album identifier returned by :func:`get_albums` :type album_id: int :return: list of photo albums or ``None`` :rtype: list """ try: return connection.method('photos.get', {'aid': album_id}) except Exception as e: print(e) return None def download(photo, output): """Download photo :param photo: """ url = photo.get('src_xxxbig') or photo.get('src_xxbig') or photo.get('src_xbig') or photo.get('src_big') r = requests.get(url) title = photo['pid'] with open(os.path.join(output, '%s.jpg' % title), 'wb') as f: for buf in r.iter_content(1024): if buf: f.write(buf) def sizeof_fmt(num): """Small function to format numbered size to human readable string :param num: bytes to format :type num: int :return: human readable size """ for x in ['bytes', 'KB', 'MB', 'GB', 'TB']: if num < 1024.0: return "%3.1f %s" % (num, x) num /= 1024.0 if __name__ == '__main__': parser = argparse.ArgumentParser(description='', version='%(prog)s ' + __version__) parser.add_argument('username', help='vk.com username') # parser.add_argument('password', help='vk.com username password') parser.add_argument('-o', '--output', help='output path to store photos', default=os.path.abspath(os.path.join(os.path.dirname(__file__), 'exported'))) args = parser.parse_args() # expand user path if necessary if args.output.startswith('~'): args.output = os.path.expanduser(args.output) start_time = datetime.datetime.now() try: password = getpass("Password: ") # Initialize vk.com connection connection = connect(args.username, password) # Request list of photo albums albums = get_albums(connection) print("Found %s album%s:" % (len(albums), 's' if len(albums) > 1 else '')) ix = 0 for album in albums: print('%3d. %-40s %4s item%s' % ( ix + 1, album['title'], album['size'], 's' if int(album['size']) > 1 else '')) ix += 1 # Sleep to prevent max request count time.sleep(1) if not os.path.exists(args.output): os.makedirs(args.output) for album in albums: response = get_photos(connection, album['aid']) output = os.path.join(args.output, album['title']) if not os.path.exists(output): os.makedirs(output) processed = 0 for photo in response: percent = round(float(processed) / float(len(response)) * 100, 2) sys.stdout.write( "\rExporting %s... %s of %s (%2d%%)" % (album['title'], processed, len(response), percent)) sys.stdout.flush() download(photo, output) processed += 1 except Exception as e: print(e) sys.exit(1) except KeyboardInterrupt: print('VKPorter exporting stopped by keyboard') sys.exit(0) finally: print("Done in %s" % (datetime.datetime.now() - start_time)) 



рдЙрджрд╛рд╣рд░рдг


рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, ./exported рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ
 $ ./vkporter.py username@vk.com 

рдирд┐рд░реНрдпрд╛рдд рдкрде рдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
 $ ./vkporter.py -o ~/Documents/Exported username@vk.com 


рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рдЫрд╡рд┐

рд╕рдВрдЪрд╛рд░


рдореИрдВ github.com/amka/VKPorter/issues рдкрд░ рдмрдЧ рд░рд┐рдкреЛрд░реНрдЯ рдХреЗ рд▓рд┐рдП рдЖрднрд╛рд░реА рд░рд╣реВрдВрдЧрд╛

Source: https://habr.com/ru/post/In172131/


All Articles