Требует Python 3.x, под вторым не взлетит, так как некоторые модули в 3.0 были переименованы.
Сохраняет ваш диалог с пользователем, id
которого указывается при запуске.
Для начала работы с приложением необходимо:
- создать standalone-приложение ВКонтакте и включить его;
- предоставить этому приложению доступ к общей информации, информации о друзьях пользователя и сообщениям (если доступ ещё не предоставлялся, можно попробовать использовать параметр
-authurl
для показа URL, переход по которому вызовет диалог авторизации); - на странице настроек приложения узнать ID приложения;
- использовать при запуске параметр
appid
c ID приложения (напримерappid 456789
).
-
возможность сохранения диалогов с пользователем (параметр
-uid
), или многопользовательского диалога (параметр-chatid
) -
вывод списка вашего списка друзей с их
id
(параметр-f
) -
сохранение ваших диалогов с пользователями в файлы
dialogs.txt
иdialogs.json
(на случай, если беседа велась с пользователем, которого нет у вас в друзьях), содержащий имена,id
, дату и время последнего сообщения и начало беседы - этого должно хватить, чтобы вспомнить (параметр-d
). Чтобы полученный JSON был сохранен как ASCII, следует указать параметр-ascii
Замечание относительно использования параметра-d
: В теории скрипт написан так, чтобы вытащить все диалоги, но так как у меня менее 200 диалогов, то возможности проверить, корректно ли обрабатывается случай, если диалогов более 200, не было. -
при указании параметра
-s
по окончании работы будет выведено количество сохраненных сообщений.Диалоги отсортированы по дате от более ранних к более поздним.
Диалог сохраняется в XML-файл с именем conversation_<имя_собеседника>.xml
Структура XML-файла (отступы и переносы строк только для удобочитаемости, реальный XML будет в минифицированном виде):
<conversation friend="заголовок">
<!-- 0 – полученное сообщение, 1 – отправленное сообщение, 2 - переслано -->
<message datetime="дата и время сообщения"
direction="0|1|2"
author="Переслано|Вы|<имя_собеседника">текст сообщения
<attachment type="photo"
url="URL_изображения"/>
<attachment type="video"
duration="продолжительность, сек"
preview="URL_изображения_предпросмотра"/>заголовок_видео
<description>описание видео</description></attachment>
<attachment type="audio"
performer="исполнитель"
title="название"
url="URL_файла"/>
<attachment type="doc"
size="размер, Кб"
url="URL_файла"
ext="расширение">заголовок_документа</attachment>
<attachment type="wall"
owner="автор_записи"
from="кто_отправил" <!-- если запись со стены другого участника -->
date="дата и время сообщения"/>текст_записи_на_стене
<attachments type="тип_вложения"/></attachment>
</message>
<conversation>
Подразумевается, что в системе установлен Python 3, который вызывается командой python
в терминале.
Пользователи Microsoft Windows вместо команды python
могут использовать py -3
, как описано тут.
py -3 vk.py -uid 12345
- сохранить диалог с пользователем,id
которого12345
py -3 vk.py -f
- показать список своих друзей и ихid
py -3 vk.py -d
- сохранит список диалогов в файлыdialogs.txt
иdialogs.json
Поскольку XML пригоден для дальнейшей обработки, но для чтения человеком не очень подходит, после генерации XML-файла можно воспользоваться прилагаемым примерным файлом XSLT vk.xsl
и с помощью любого XSLT-парсера (например Saxon) сгенерировать HTML-файл.
Пример:
java -jar saxon9he.jar -xsl:vk.xsl conversation_%USERNAME%.xml -o:output.html
-
не во всех местах реализована обработка ошибок. :)
-
если пользователем в сообщение было вложено несколько фото, в файл попадает ссылка только на первое из них.
-
адреса URL в тескте не конвертируются в ссылки.
-
при использовании Microsoft Windows возможен некорректный вывод строк в терминале. Возможный способ её устранения — установка в терминале кодировки Windows-1251 командой
chcp 1251
однако это вызовет ошибку при попытке вывода символов Unicode, аналогов которых нет в Windows-1251