Savefrom.net
Самое известное, многофункциональное расширение Savefrom.net, которое позоляет не только скачивать музыку из ВК, но и сохранять целые альбомы. И самое главное, что данное дополнение поддерживается такими известными браузерами как Google Chrome, Mozilla Firefox, Oprea и т.д. Но я буду показывать на примере гугл хром, потому что там есть один нюанс.
Sitecopy
От первого ресурса он отличается тем, что позволяет выгружать картинки с любых сайтов, даже защищенных от копирования. Для работы с ним достаточно указать ссылку на страницу, где есть нужная картинка, и выбрать ее в меню. Доступные форматы файлов: JPEG, PDF и т.д.
Vk photo mngr
Также неплохо зарекомендовал себя аддон длябраузера VK photo mngr. Найти его вы можете в магазине расширений гугл хром, если вы используйте данный браузер. После чего установите его как обычное расширение.
После установки, нажмите на значок, который появится у вас в области расширений, после чего нажмите на кнопку «Войти». Вход осуществится автоматически под той учетной записью вконтакте, под которой вы находитесь в данный момент. Есть вероятность, что ваш вход не отобразится, но это всего лишь глюк. Обновите страницу (F5) и вы увидите свои имя и фамилию.
Vkpic
Он позволяет быстро получить все картинки из альбомов на своей или чужой странице. Однако профиль должен быть открыт для всех пользователей. Изменить доступ можно в настройках приватности. Главным недостатком инструмента является то, что он включается только внутри браузера.
Vookie
Он позволяет:
- Загружать фото. Вы выбираете все подходящие альбомы и нажимаете на кнопку. Они попадают в архив и отправляются на персональный компьютер. Единственным недостатком является то, что файлы нумеруются, а не сохраняют изначальное название.
- Переносить картинки. Эта функция позволяет быстро загрузить изображения со страницы пользователя в паблик. Достаточно ввести ссылку на источник, выбрать получателя.
Это софт, который устанавливается на компьютер и позволяет быстро загружать любые фото. У него простой и понятный интерфейс, состоящий из небольшого меню и окна для ввода ссылки на вкладку с картинками. Присутствует раздел с альбомами.
Преимущества сервиса:
- Скачивание неограниченного количества файлов.
- Отсутствие рекламы.
Приложение распространяется бесплатно. Работая с ним, необходимо принять пользовательское соглашение.
Делаем дамп фотографий из диалога
Всем привет!
Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.
В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина — это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.
Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.
«Вконтакте» не предоставляет API конкретно для скачивания материалов из беседы, поэтому самое долгое время заняло изучение того, как устроена система подгрузки картинок из диалога в vk.com. Все картинки лежат у них, понятное дело, на сервере, и доступ к ним имеет любой, у кого есть ссылка на эту картинку. Таким образом, чтобы скачать все фотографии из диалога, нам надо получить все ссылки на картинки. Тыкаясь туда-сюда, было выяснено, что при нажатии на «Действия -> показать материалы из беседы» отправляется POST запрос на vk.com/wkview.php. Запрос содержит параметры:
В этом запросе dialog_id — это значение параметра «sel» в адресной строке, когда мы заходим в диалог.
Выполнив такой запрос, мы получим в ответ что-то вроде вот этого:
16515<!>wkview.js,wkview.css,page.js,page.css,page_help.css<!>0<!>6590<!>0<!><!bool><!><div id="wk_history_wrap">
<div class="wk_history_title tb_title" id="wk_history_title">Фотографии в переписке с ЮЗЕР_НЭЙМ</div>
<div class="wk_history_tabs tb_tabs_wrap">
<div class="tb_tabs clear_fix" id="wk_history_tabs"><div class="progress tb_prg fl_r" id="wk_history_tabs_prg"></div><div class="fl_l summary_tab_sel">
<a class="summary_tab2" onclick="showWiki({w: 'history<dialog_id>_photo'})" >
<div class="summary_tab3">
<nobr>Фотографии</nobr>
</div>
</a>
</div><div class="fl_l summary_tab">
<a class="summary_tab2" onclick="showWiki({w: 'history<dialog_id>_video'})" >
<div class="summary_tab3">
<nobr>Видеозаписи</nobr>
</div>
</a>
</div><div class="fl_l summary_tab">
<a class="summary_tab2" onclick="showWiki({w: 'history<dialog_id>_audio'})" >
<div class="summary_tab3">
<nobr>Аудиозаписи</nobr>
</div>
</a>
</div><div class="fl_l summary_tab">
<a class="summary_tab2" onclick="showWiki({w: 'history<dialog_id>_doc'})" >
<div class="summary_tab3">
<nobr>Документы</nobr>
</div>
</a>
</div></div>
<div class="tb_tabs_sh" id="wk_history_tabs_sh"></div>
</div>
<div class="wall_module wide_wall_module" id="wk_history_wall">
<div class="post_media" id="wk_history_rows"><div class="page_post_sized_thumbs clear_fix" style="width: 597px; height: 1722px;"><a onclick="return showPhoto('...', 'mail...', {"temp":{"base":"/","x_":["",500,331]},queue: 1}, event);" style="width: 193px; height: 127px;" class="page_post_thumb_wrap fl_l"><img src="" width="193" height="128" style="margin-top: 0px;" class="page_post_thumb_sized_photo" /></a> ... (и еще много ссылок с картинками)</div></div>
</div>
<div id="wk_history_empty" style="">Список пуст.</div>
<div id="wk_history_more" class="">
<div id="wk_history_more_link" onclick="return WkView.historyShowMore();" style="">Показать еще</div>
<div id="wk_history_more_progress" class="progress"></div>
</div>
</div><!><!json>{"count":"23318","offset":3330,"type":"history","commonClass":"wk_history_content wk_history_photo_content","wkRaw":"history<dialog_id>_photo","canEdit":false,"lang":[]}<!>WkView.historyInit();<!><!pageview_candidate>
Здесь я заменил ссылки на , так как уже говорил, что картинки vk лежат в открытом доступе и получить их может любой, кто знает ссылку.
Из всего этого нам интересны только ссылки, которые находятся внутри <img src=” “>, а так же json на конце. Я был не до конца честен, говоря, что POST запрос принимает 4 параметра. Точнее, он принимает, но если его выполнить нам выдадутся только первые несколько фотографий. Так как vk.com имеет подгрузку контента по мере прокручивания страницы, то существует параметр offset, который отвечает за то, какую часть из всего множества фотографий нам подгрузить. В итоге параметры запроса выглядят вот так:
Из всех параметров меняться будет меняться только offset. Его мы вытаскивает из того самого json’a на конце ответа. Каждый раз при выполнении запроса offset внутри json’а будет увеличиваться, показывая, какое «смещение» надо сделать в следующий раз. Таким образом, нам надо будет делать запросы до тех пор, пока у нас offset будет меньше count.
Кстати, а что насчет выполнения запросов? Как нам получить доступ к своей странице? Было выяснено, что доступ к странице может получить тот, у кого есть cookie под названием remixsid. Таким образом нам надо подставить эту куку в функцию, которая выполняет запрос и все получится. Безопасно? Не совсем, швыряться куками — это не есть хорошо, но я не нашел другого варианта. Если кто-то знает, напишите пожалуйста.
Общий алгоритм вроде понятен: сделать запрос, вытащить ссылки, записать их в файл, проверить-
новый offset>count?-, если нет, то присвоить offset новое значение и выполнить запрос с ним, если да, то выйти из цикла. Затем пройтись по всем ссылкам в файле и скачать картинки лежащие по их адресу. Начинаем писать код.
# coding=utf-8
import requests # для выполнения запросов
import re # для парсинга по регулярным выражениям
import sys # для обработки аргументов командной строки
import os # для создания папок с фотографиями
import urllib # для скачивания картинок
import json # для обработки json
# argv[1] = remixsid_cookie
# argv[2] = dialog_id
# argv[3] = person_name
Аргументы у нас будут передаваться через терминал (remixsid, dialog_id и название папки):
remixsid_cookie = sys.argv[1]
# Словарь запроса
RequestData = {
"act": "show",
"al": 1,
"loc":"im",
"w": "history" sys.argv[2] "_photo",
"offset" : 0,
"part" : 1
}
request_href = "http://vk.com/wkview.php"
# Установим первоначальные offset и count. Count изменится при первом запросе
bound = {"count" : 10000, "offset" : 0}
Создадим отдельную папку для фотографий:
try:
os.mkdir("drop_" sys.argv[3]) # Пытаемся создать папку
except OSError:
print "Проблемы с созданием папки 'drop_" sys.argv[3] "'"
if( os.path.exists("drop_" sys.argv[3]) ):
os.chdir("drop_" sys.argv[3]) # Переходим в эту папку
else:
print "Не удалось создать папкуn"
exit()
Отлично, начинаем выполнение запросов:
test = open("links", "w")
while( bound['offset'] < bound['count'] ):
RequestData['offset'] = bound['offset']
content = requests.post(request_href, cookies={"remixsid": remixsid_cookie}, params=RequestData).text
# Этой командой мы выполняем post запрос с параметрами params и передавая куки. .text возвращает ответ запроса в виде текста. Все просто.
Теперь начинаем парсинг ответа. Извлекаем все через регулярные выражения. Сначала извлекаем json и устанавливаем следующий offset:
#ищем первое совпадение по регулярному выражению
json_data_offset = re.compile('{"count":. ?,"offset":. ?}').search(content)
# .search возвращает специальный объект. У него есть метод span(), который возвращает кортеж с индексами начала и конца найденной подстроки
bound = json.loads(content[json_data_offset.span()[0]:json_data_offset.span()[1]]) # декодируем json
bound['count'] = int(bound['count']) #count отдается в виде строки
bound['offset'] = int(bound['offset']) # на случай, если в будущем тоже будет отдаваться в виде строки. В принципе это написано ради "на всякий случай"
Теперь надо извлечь все ссылки из тегов src. Действуем тем же способом, но используем метод findall, который возвращает массив всех строк, которые совпали с регуляркой:
links = re.compile('src="http://. ?"').findall(content)
Теперь запишем все в файл:
for st in links:
test.write(st[5:len(st)-1] 'n') # пишем то, что внутри src="..."
test.close()
С этим все. Осталось только пройтись по файлу и скачать все по ссылкам. Это делается с помощью модуля urllib, вот так:
urllib.urlretrieve(ссылка, имя файла)
А для нашего случая:
test = open("links", "r")
file_num = 0
for href in test: # берем строку из файла которая является ссылкой, и так до конца файла
urllib.urlretrieve(href, str(file_num)) # в качестве имени файла просто используем его порядковый номер
file_num = 1
print "Скачано " str(file_num) " файловn"
test.close()
Готово! Но, так как использовать это мы будем из командной строки, давайте еще напишем небольшую документацию (–help), а так же вывод об ошибке, если аргументов командной строки меньше, чем нужно. Добавим в начало:
if( sys.argv[1] == '--help' ):
print """
Usage: python main.py <remixsid_cookie> <dialog_id> <name_of_folder>
<dialog_id> is a string parameter "sel" in address line which you see when open a dialog
"""
exit()
else:
if( len(sys.argv) < 4 ):
print """
Invalid number of arguments. Use parameter --help to know more
"""
exit()
Вот и все, вроде. Конечно, можно еще многое добавить: проверку на выполнен запрос или нет, проверку на корректность входящих данных, автоматическое вытаскивание (например, первых 10), но мне просто хотелось описать основные моменты. В итоге те самые 1000 фотографий, которые мне были нужны, были скачаны. Заняло это где-то 2 минуты. Никаких ограничений на запросы, как так понял, vk.com не ставит, хотя могу предположить, что на такой маленький для него трафик он даже не реагирует.
Весь рабочий код целиком лежит на Гитхабе.
Всем спасибо.
Есть ли способ сохранить сразу все фото
Если вы не хотите давать доступа к аккаунту сторонним ресурсам, скачивать программы на компьютер, то стоит воспользоваться специальными сервисами – парсерами фото из «ВКонтакте» на «Андроид» и персональный компьютер. Они автоматически загружают все выбранные снимки со стены и из «Галереи». На обработку запроса требуется не больше 2 минут в зависимости от объема данных.
В настройках сервиса нужно вписать, например:
Если все сделано правильно, то откроется дополнительное меню, а затем картинки скачаются в 1 папку. В противном случае стоит проверить введенный адрес. Возможно, ошибка возникла из-за неправильного названия вкладки.
Есть ли способ сохранить сразу все фото?
Я хочу показать Вам один вариант, который частично помогает реализовать эту задачу. Мы уже затрагивали его в статье: как создать альбом ВКонтакте?
Невозможно одновременно закачать все фотки. Просто потому, что они хранятся в разных местах – альбомы, стена, сообщества и группы. Но можно сразу сохранить весь альбом с фотографиями.
Как сохранить альбом из вк через яндекс диск
Наверняка, у вас есть есть своя электронная почта на яндексе. Ну а если ее и нет, то зарегистрировать ее можно за пару минут, причем не обязательно вводить телефон. В любом случае Яндекс дает бесплатно 10 ГБ на своем облачном диске, которое вы можете использоваться, чтобы сохранить альбом с фотографиями из вк не только на компьютер, но и на телефон.
На компьютер
Получить фотографии бесплатно в десктопной версии можно по следующей инструкции:
- Авторизоваться в аккаунте.
- Найти блок с фотографиями.
- Выбрать альбом.
- Открыть любое фото.
- Кликнуть по нему правой клавишей мыши.
- В меню указать пункт «Сохранить как».
- Выбрать место расположения файла и его название.
- Кликнуть по кнопке «Сохранить».
На телефон
Руководство:
Онлайн сервис vkpic
Несомненная польза онлайн сервисов состоит в том, что вам не нужно ничего никуда устанавливать. Все обрабатывается на сторонних серверах. Поэтому я не могу не рассказать про этот способ скачивания альбомов из вк.
Я бы хотел рассмотреть потрясающий сервис [urlspan]Vkpic[/urlspan], который как раз создан для того, чтобы загружать и переносить фотоальбомы вконтакте целиком. Правда здесь придется авторизироваться через свой аккаунт. Для этого нужно нажать на кнопку «Войти».
Не волнуйтесь за сохранность данных и за то, что ваши учетные данные кто-то захватит. Вся авторизация проходит через сам вк, так что сервис к этому отношений не имеет. Ему просто нужен доступ к некоторым данным, чтобы функционировать. Это обычная процедура. Поэтому разрешайте и не стесняйтесь. Но еси вы переживайте, то смените пароль, как только закончите использовать сервис.
Когда авторизация пройдет, вы увидите свою аватарку с надписью 10 кр. Про кредиты расскажу чуть позже. Но сейчас вам нужно выбрать, откуда скачивать альбомы с фотографиями на ваш компьютер. Это могут быть изображения из вашего аккаунта или из каких-либо сообществ.
Либо вы можете скачивать альбомы по отдельности. Для этого войдите в любой из ваших фотоальбомов в вк и скопируйте полный адрес из строки. Теперь, вставьте скопированную ссылку в строчку на сайте vkpic и нажмите «Далее».
Пробуем сохранить фото с вк на телефон
Попробуем картинку из примера выше, теперь загрузить к нам на телефон. Переходим в группу, находим изображение и открываем его для просмотра.
Расширения в браузере
Куда уж мы без расширений? Они всегда могут прийти к нам на помощь, в том числе и сегодня. Рассмотрим парочку из них, которое показались мне наиболее интересными.
Расширения для браузера для загрузки картинок из социальной сети «вконтакте»
Расширение SaveFrom устанавливают прямо в браузере. Его можно найти в магазине приложений. После скачивания программы остается открыть страницу с нужным фотоальбомом. Сразу же появится ссылка для получения альбома. Если ее нет, то нужно разрешить доступ к компьютеру.
VK Helper адаптирован для работы со всеми востребованными браузерами, такими как «Гугл Хром», «Опера», «Мозилла ФайрФокс», «Яндекс.Браузер».
Инструкция:
Специальные онлайн-сервисы для скачивания
Самые популярные сервисы для скачивания картинок в «Галерею» представлены ниже.
Способ 1: сохраняем полную версию фото
Данный метод заключается в использовании базовых средств социальной сети ВКонтакте и возможностей, предоставляемых совершенно любым интернет-обозревателем. Более подробно обо всех аспектах касательно этого способа вы можете узнать при помощи соответствующей статьи на нашем сайте.
Способ 2: скачиваем альбомы с фотографиями
Скорее дополнительным, нежели полноценным методом является возможность сохранения множества изображений из ВКонтакте на компьютер. При этом сама по себе данная социальная сеть не ставит ограничений перед пользователями в плане скачивания картинок, отчего вариативность множественной загрузки существенно расширяется.
Переходя к инструкции, вам стоит уделить все свое внимание статье, затрагивающей скачивание картинок целыми альбомами наиболее доступными средствами. Во многих случаях такой подход может существенно облегчить изначальную задачу, касающуюся сохранения нужных или просто понравившихся изображений на ПК с сайта ВКонтакте.
Шаг №1
После авторизации в системе Контакта нам необходимо найти и открыть нужную фотографию, которую мы и будем сохранять. Для этого кликните мышкой по фотоснимку со стены, из ленты новостей, из альбома с фото – он увеличится – откроется в режиме просмотра.
Шаг №2
Далее, чтобы сохранить оригинал фото в Контакте, обратите внимание на пункты меню под фотографией. Нас интересует опция «Еще», при нажатии на нее открываются дополнительные опции, связанные с фотографией.
Нам нужно выбрать пункт «Открыть оригинал».
Когда картинка откроется в новом окне браузера в высоком качестве, нам придется кликнуть по ней правой кнопкой мышки и выбрать опцию «Сохранить картинку как… ». В этом случае у нас даже есть возможность указать путь и папку для сохранения файла на компьютере. Например, будем сохранять фотоснимок на рабочий стол.
Оригинал фото – «Сохранить картинку как… »
Выбираем путь сохранения, указываем название файла, сохраняем
Заключение
В качестве завершения статьи стоит отметить то, что лучшим вариантом, как бы то ни было, является именно первый рассмотренный метод сохранения фотографий из Контакта. Вспомогательные же способы, нацеленные на загрузку целых альбомов, не обладают такими же высокими показателями надежности.
Надеемся, что вы все-таки смогли достичь желаемого результата в скачивании картинок независимо от выбранной инструкции.