Как вытащить человека из архива в ВК

Вчера мне понадобилось скачать все фотографии из диалога с одним человеком в vk.com. Фотографий было больше 1000 штук. Понятное дело, что ручками это все делать было бы утомительно и… Стыдно. Не для того программированием занимаюсь, чтобы такую грязную работу делать не автоматизированно. Поэтому было решено написать скрипт.

В качестве языка был выбран Python. Его удобно использовать для консоли, он довольно быстрый, есть модуль urllib, позволяющий «одним движением» скачивать картинки по ссылке. Но главная причина — это то, что я начал изучать его недавно. Решил дополнительно попрактиковаться.

Сам скрипт получился небольшой, но было бы интересно описать процесс создания. Буду стараться писать побольше комментариев в коде, чтобы те, кто не знает python, тоже смогли понять процесс. А от знатоков очень приветствуются советы и указания. Итак, приступим.

«Вконтакте» не предоставляет API конкретно для скачивания материалов из беседы, поэтому самое долгое время заняло изучение того, как устроена система подгрузки картинок из диалога в vk.com. Все картинки лежат у них, понятное дело, на сервере, и доступ к ним имеет любой, у кого есть ссылка на эту картинку. Таким образом, чтобы скачать все фотографии из диалога, нам надо получить все ссылки на картинки. Тыкаясь туда-сюда, было выяснено, что при нажатии на «Действия -> показать материалы из беседы» отправляется POST запрос на vk.com/wkview.php. Запрос содержит параметры:

Как распаковать архив, разархивировать файл

  • act:show
  • al:1
  • loc:im
  • w:history_photo

16515wkview.js,wkview.css,page.js,page.css,page_help.css065900

Фотографии в переписке с ЮЗЕР_НЭЙМ Фотографии

Видеозаписи

Аудиозаписи

Документы

,queue: 1>, event);» style=»width: 193px; height: 127px;» > . (и еще много ссылок с картинками)Список пуст. Показать еще

_photo»,»canEdit»:false,»lang»:[]>WkView.historyInit();

Здесь я заменил ссылки на , так как уже говорил, что картинки vk лежат в открытом доступе и получить их может любой, кто знает ссылку.

Из всего этого нам интересны только ссылки, которые находятся внутри , а так же json на конце. Я был не до конца честен, говоря, что POST запрос принимает 4 параметра. Точнее, он принимает, но если его выполнить нам выдадутся только первые несколько фотографий. Так как vk.com имеет подгрузку контента по мере прокручивания страницы, то существует параметр offset, который отвечает за то, какую часть из всего множества фотографий нам подгрузить. В итоге параметры запроса выглядят вот так:

  • act:show
  • al:1
  • loc:im
  • w:history_photo
  • offset: offset
  • part: 1
Еще по теме:  Руководство по эксплуатации vaillant vk

Кстати, а что насчет выполнения запросов? Как нам получить доступ к своей странице? Было выяснено, что доступ к странице может получить тот, у кого есть 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 =

Создадим отдельную папку для фотографий:

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=, params=RequestData).text # Этой командой мы выполняем post запрос с параметрами params и передавая куки. .text возвращает ответ запроса в виде текста. Все просто.

Теперь начинаем парсинг ответа. Извлекаем все через регулярные выражения. Сначала извлекаем json и устанавливаем следующий offset:

#ищем первое совпадение по регулярному выражению json_data_offset = re.compile(»).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=»https://habr.com/ru/articles/244647/» 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()

Еще по теме:  Сколько в vk в литрах это

Готово! Но, так как использовать это мы будем из командной строки, давайте еще напишем небольшую документацию (—help), а так же вывод об ошибке, если аргументов командной строки меньше, чем нужно. Добавим в начало:

if( sys.argv[1] == ‘—help’ ): print «»» Usage: python main.py 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 не ставит, хотя могу предположить, что на такой маленький для него трафик он даже не реагирует.

Весь рабочий код целиком лежит на Гитхабе.

  • python
  • социальные сети
  • регулярные выражения
  • парсинг
  • Python
  • Программирование

Источник: habr.com

Как вытащить чат из архива в ВК?

У нас есть 17 ответов на вопрос Как вытащить чат из архива в ВК? Скорее всего, этого будет достаточно, чтобы вы получили ответ на ваш вопрос.

Содержание

  • Как вытащить человека из архива в ВК?
  • Как архивировать переписку в ВК?
  • Как вытащить чат из архива в ВК? Ответы пользователей
  • Как вытащить чат из архива в ВК? Видео-ответы

Отвечает Макс Ковалев

Свайп влево по чату отправляет его в папку «Архив чатов». Когда из чата в архиве приходит уведомление, он уберется из папки и вернется в ваш список чатов.May 9, 2019

Как вытащить человека из архива в ВК?

Если вы спрятали пост, но тут же передумали, то исправить ситуацию проще простого. Просто нажмите синюю надпись «Восстановить», чтобы вернуть архивированную запись в ВК. Эта надпись появляется сразу же на месте поста и остается там до перезагрузки страницы или перехода в другие разделы.

Как архивировать переписку в ВК?

Чтобы скрыть беседу в версии ВКонтакте для компьютера, нужно нажать три точки напротив названия чата и выбрать «Архивировать». Это можно сделать и внутри беседы.

Как вытащить чат из архива в ВК? Ответы пользователей

Отвечает Екатерина Светиков

В мессенджере теперь можно убирать старые или неактуальные чаты в архив. Чтобы скрыть беседу в версии ВКонтакте для компьютера, нужно нажать .

Отвечает Рауль Фролов

Архив записей в ВК – функция, с помощью которой можно спрятать пост на время и восстановить его в любой момент.

Отвечает Кир Богаутов

Выгрузить ваш персональный архив данных можно по ссылке. Предварительно внимательно прочитайте на той же странице всю информацию из раздела «Порядок .

Отвечает Татьяна Гагарина

Как архивировать чат или беседу ВКонтакте . Получите до 15% от расходов на контекстную и таргетированную рекламу! Рекомендуем: Click.ru – .

Еще по теме:  Как добавить видео с Youtube Вконтакте

Отвечает Наталья Александрова

Как восстановить переписку в ВК через техподдержку · Зайти на свою страничку ВКонтакте. · Около своего аватара открыть дополнительную вкладку.

Отвечает Руслан Зезюлько

Перейдите к себе на страницу, и найдите нужный материал. Теперь откройте меню в правом верхнем углу этого блока. И здесь выберите пункт » Архивировать «.

Отвечает Ильнур Рыбка

Как архивировать запись в ВК . и выбираем пункт «Архивировать запись». . Восстановить запись из архива в ВК можно в специальной вкладке на стене .

Отвечает Леон Кончев

Чтобы переписываться с другом необходимо зайти в закладку «Мои сообщения» в главном меню слева. Здесь находятся диалоги с пользователями. Откройте чат и увидите .

Отвечает Марат Новиков

Как разархивировать чат в Ватсапе. Можно ли разархивировать все заархивированные перед этим чаты сразу? Если да, то каким образом.

Как вытащить чат из архива в ВК? Видео-ответы

Где найти и как вернуть архивированные сообщения в ВК на телефоне #Shorts

ВКонтакте можно легко и случайно архивировать сообщения. Узнайте за одну минуту, где найти архивированные .

  • Где найти и как вернуть архивированные сообщения в ВК на телефоне #Shorts
  • Как с ТЕЛЕФОНА восстановить переписку в КОНТАКТЕ после удаления. Как смотреть удаленные сообщения ВК

    Как восстановить переписку в ВК Как прочитать удаленные сообщения в контакте Как восстановить удаленные сообщения .

  • Как с ТЕЛЕФОНА восстановить переписку в КОНТАКТЕ после удаления. Как смотреть удаленные сообщения ВК
  • Как с ТЕЛЕФОНА восстановить переписку в ВК после удаления. Как смотреть УДАЛЕННЫЕ сообщения ВК

    Случайно удалили переписку в ВК или комментарии? В данном видео показываю как запросить Архив от ВК который .

  • Как с ТЕЛЕФОНА восстановить переписку в ВК после удаления. Как смотреть УДАЛЕННЫЕ сообщения ВК
  • Как Достать Чат из АРХИВА в Telegram или как его туда добавить!

    Из данного видео вы узнаете, где находится архив чатов в телеграме, как достать чат из архива или как добавить чат в .

  • Как Достать Чат из АРХИВА в Telegram или как его туда добавить!
  • WhatsApp — Как вытащить чат из архива (OC Android) — Небольшой обзор

    Моё первое видео в таком формате. Возможно, эта информация может пригодиться (особенно если с IPhone перешли на .

    Источник: querybase.ru

    Как вытащить человека из архива в вк

    И теперь не жрёт архивы, если в них запаковано хоть что-то, что неугодно вк, или, по мнению его разработчиков, должно заливаться исключительно через соответствующие разделы вк, разумеется, с отслеживанием и передачей большому брату. Из вашего вопроса не совсем ясна суть вашей проблемы. Трудовая утеряна в архиве нет, организация распалась. Сколько человек нужно привести в суд для подтверждения стажа. Был выбор или сбросить его в архив или удалить.

    Архив загрузится автоматически в виде истории сообщений. Инструмент для каякинга помогает вытащить человека из байдарки во время 8-мильного путешествия, ривилль, штат южная каролина, года. Запустила вк рекламу записи, потом по ошибке архивировала это рекламное объявление. Из архива вытащить невозможно, запустить новое объявление на эту же запись тоже. Люди задохнулись, пытаясь его вытащить.

    Популярные запросы

    • Как вытащить человека из архива в вк
    • Как вытащить человека из архива в вк с телефона
    • Как достать человека из архива в вк
    • Как достать человека из архива в вк на телефоне
    • Как вынуть человека из архива в вк

    Источник: redactor-online.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...