Skip to content

Latest commit

 

History

History
88 lines (67 loc) · 7.23 KB

README.md

File metadata and controls

88 lines (67 loc) · 7.23 KB

Требования

Требует 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

Генерация HTML

Поскольку 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