Giter Site home page Giter Site logo

vk_dump's Introduction

VK Dump Tool

Внимание

Разработка этого скрипта прекращена. Ещё какое-то время он будет кое-как работать при всех своих багах, пока используемую версию API не прикроют (однако сохранение лайкнутых фото/видео/т.п. скоро перестанет работать)

На данный момент иногда пользователи определяются как {unknown user}. Решения проблемы пока нет (#24).

Установка

  • склонировать/скачать репозиторий
  • установить зависимости

Установка зависимостей

pip3 install -r requirements.txt

Для загрузки видео из некоторых сторонних источников (например, RuTube) youtube-dl использует ffmpeg, который необходимо установить отдельно.

Если Вы используете Windows ниже 10 версии, дополнительно установите пакет colorama:

pip3 install colorama

CLI

Все доступные аргументы можно посмотреть при запуске с --help.

Для сохранения нескольких типов данных за один вызов необходимо указывать каждый тип отдельным аргументом dump. Например, для сохранения фото и документов надо запускать dump.py --dump photo --dump docs.

Авторизация

Возможны два способа аутентификации - с помощью пары логин-пароль или токена. Авторизация по логину идёт с данными от Kate Mobile.

Для входа по токену необходимо передать аргумент token при запуске:

python3 dump.py --token your_token_here

Мультипоточная загрузка

Количество процессов, создаваемых для загрузки, по умолчанию равняется 4*потоки.

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

Поддерживаемые для сохранения данные

  • Фото
  • Видео
  • Аудио
  • Документы
  • Диалоги (txt) и вложения (фото, видео, документы, голосовые)
  • Вложения понравившихся постов (фото, видео, документы)
  • Понравившиеся фотографии
  • Понравившиеся видео
  • прочее, прочее, прочее ;)

Любые предложения и репорты о багах приветствуются :з

Настройка сохраняемых диалогов

Для сохранения или исключения определённых диалогов необходимо вручную подредактировать конфиг settings.ini.

ID диалогов перечисляются через запятую. Получить его можно, например, открыв диалог в разделе сообщений, тогда в URL вроде https://vk.com/im?sel=100 идентификатором будет являться кусок, идущий после sel=.

Пример исключения диалога с ID 100 и беседы c60:

[EXCLUDED_DIALOGS]
id = 100,c60

Сохранение только диалога с ID 100 и исключения всех остальных:

[DUMP_DIALOGS_ONLY]
id = 100

Дозапись новых сообщений вместо перезаписывания

Если включена, при кэшировании будут получены не все сообщения, а только с ID больше последнего записанного (последняя строка в файле).

F.A.Q

Q: Можно ли не вводить каждый раз логин и пароль (и код 2FA) при авторизации?
A: Просто передавайте логин аргументом (--login) или вводите пустой пароль на экране авторизации. В таком случае данные будут подтянуты из конфига vk_api.

Q: Ошибка vk_api.exceptions.AccessDenied: You don't have permissions to browse user's audio
A: К сожалению, vk_api не поддерживает сохранение аудио при входе по токену. Ну или же попробуйте удалить файл vk_config.v2.json и переавторизироваться, если это не Ваш случай ¯\_(ツ)_/¯

Q: Ошибка RegexNotFoundError('Unable to extract %s' % _name)
A: Обновите youtube_dl: pip3 install --upgrade youtube_dl.

vk_dump's People

Contributors

dependabot[bot] avatar hikiko4ern avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vk_dump's Issues

Как пользоваться?

Здравствуйте! А как пользоваться скриптом? Запускал по всякому..., но не пойму что происходит ;-).

З.Ы. По пути /var/mail/ у меня пусто. Использую Ubuntu 16.04.

Не работают настройки DUMP_DIALOGS_ONLY

Здравствуйте, не работает параметр DUMP_DIALOGS_ONLY. Ввожу к примеру
[DUMP_DIALOGS_ONLY]
id = 10340

Пишет в логе, что этот диалог пропущен и ничего не скачивает. Параметр EXCLUDED_DIALOGS я не трогаю, он по умолчанию:
[EXCLUDED_DIALOGS]
id =

В чем может быть проблема?

name 'logger' is not defined

[сохранение видео]

multiprocessing.pool.RemoteTraceback:
"""
Traceback (most recent call last):
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing
\pool.py", line 121, in worker
result = (True, func(*args, **kwds))
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing
\pool.py", line 47, in starmapstar
return list(itertools.starmap(args[0], args[1]))
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 299
, in download_video
return download_external(v['player'], folder)
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 328
, in download_external
'logger': logger,
NameError: name 'logger' is not defined
"""

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 143
6, in
menu()
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 125
3, in menu
choice()
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 138
3, in settings_screen
settings_screen()
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 135
6, in settings_screen
menu()
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 125
3, in menu
choice()
File "C:\Users\User\Downloads\vk_dump-master\vk_dump-master\dump.py", line 892
, in dump_messages
videos['items'], itertools.repeat(af)))
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing
\pool.py", line 276, in starmap
return self._map_async(func, iterable, starmapstar, chunksize).get()
File "C:\Users\User\AppData\Local\Programs\Python\Python37\lib\multiprocessing
\pool.py", line 657, in get
raise self._value
NameError: name 'logger' is not defined

Сохранение понравившихся фотографий (отдельно от понравившихся новостей)

Как я понимаю, на данный момент утилита может сохранять фотографии из понравившихся постов, в то время, как понравившиеся фотографии отдельно от постов (например, из альбомов или постов с несколькими фотографиями) не сохраняются.

Проверил это, полностью промотав на одной из страниц соответствующий блок (Новости -> Понравилось -> Понравившиеся фотографии -> Показать все, ранее это была секция "Фотографии" в "Закладках") и посчитав a href, ссылающиеся на фотографии, в исходном коде элемента. Вышло куда большее количество фотографий, чем сохранилось при выборе опции "Данные понравившихся постов" в утилите.

В связи с этим, я прошу добавить возможность сохранения понравившихся фотографий. Насколько я понял, сам список таких фотографий получается API-методом fave.getPhotos.

Заранее спасибо.

Локализация настроек

Настройки:

[1] Показывать объявления: Да
[2] Сохранять конфиг vk_api в памяти вместо записи в файл: Нет
[3] Заменять пробелы на символ "_": Нет
[4] Символ для замены запрещённых в имени файла: _
[5] Число создаваемых процессов при мультипоточной загрузке: 16
[6] Ограничивать число процессов при загрузке видео: Да
[7] Сохранять название диалога в случае его изменения: Да
[8] Сохранять вложения из диалогов: Да
[9] Канал обновлений (GitHub / GitLab): GitHub

[0] В меню

5

Введите новое значение для ←[31mPOOL_PROCESSES←[0m (←[33m<class 'int'>←[0m)

[msg handler] проверка на наличие используемых attachments

traceback

IndexError: list index out of range
  File "dump.py", line 707, in <module>
    if not fun(dmp) is False:
  File "messages.py", line 469, in dump_messages
    res = message_handler(dmp._vk, m)
  File "messages.py", line 228, in message_handler
    msg['attachments'][0]['photo']['sizes'].sort(key=itemgetter('width', 'height'))

msg

{
  "action": {
    "type": "chat_photo_update"
  },
  "attachments": [],
  ...
}

[chat_invite_user] user групп

traceback

KeyError: 'email'
  File "dump.py", line 707, in <module>
    if not fun(dmp) is False:
  File "messages.py", line 451, in dump_messages
    res = message_handler(dmp._vk, m)
  File "messages.py", line 252, in message_handler
    ]['name'] if act['member_id'] > 0 else act['email'],

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.