Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Сделать экспорт файлов и ссылок с указанием дат сообщений, в которых была найдена ссылка #23

Closed
Lemonbrush opened this issue Sep 29, 2023 · 21 comments

Comments

@Lemonbrush
Copy link

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

Как сейчас:

"134225462": {
	"name": "DELETED",
	"dialog_link": "https://vk.com/id134225462",
	"error": [
		"https://vk.com/doc134225462_296574017"
	]
}

Как хотелось бы:

"134225462": {
	"name": "DELETED",
	"dialog_link": "https://vk.com/id134225462",
	"error": [{
		"date": "2014-01-01T23:28:56.782Z",
		"link": "https://vk.com/doc134225462_296574017"
	}]
}

При таком решении, в каждом объекте со ссылкой будет лежать дата, которая указана в сообщении с вложением, на которое ведет эта ссылка. Тогда выходные данные будут структурированы, и работа с ними будет максимально понятной и удобной. Это особенно хорошо видно на экспорте данных из очень старых переписок, из которых получается около 20К+ фотографий

@DvaMishkiLapa
Copy link
Owner

DvaMishkiLapa commented Oct 9, 2023

@Lemonbrush, я добавил возможность разделения скачиваемых файлов на подпапки, имя которых будет основано на дате. Я посторался проверить все случаи, но у меня не такая внушительная коллекция данных, как у вас. Используйте изменения последнего коммита.

Проверьте, работает ли это у вас. Моя логика немного отличается от вашего.

@Lemonbrush
Copy link
Author

Спасибо большое за оперативность

Попробовал прогнать скрипт, однако у меня все еще появляются ошибки SSL сертификата на каждую ссылку. Я потратил какое-то время на то, чтобы разобраться как это пофиксить, но, к сожалению, моей экспертизы недостаточно для этого. Поэтому, в итоге я просто сделал мелкий скрипт, который проходится по содержимому info_links.json и скачивает данные по всем ссылкам из error проперти этого файла

Если включить куки, то скрипт выдаст ошибку доступа. Хотя я уже и пароль вводил, и через sudo вызывал

Вижу, что разделение по датам есть, так как в папках появились папки с датами, однако файл info_links.json, куда сливаются все ссылки, которые не удалось скачать, больше не появляется, так что мне не удалось посмотреть результаты скрипта. Если только косвенно, по пустым папкам

Ошибки:
| ERROR | Ошибка 🔗 https://psv4.userapi.com/c628601//u323327289/audiomsg/d2/fa81a0f747.ogg: Cannot connect to host psv4.userapi.com:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:992)')]

image
image

@DvaMishkiLapa
Copy link
Owner

DvaMishkiLapa commented Oct 10, 2023

@Lemonbrush

Если включить куки, то скрипт выдаст ошибку доступа. Хотя я уже и пароль вводил, и через sudo вызывал

Пользователи bs4 сталкиваются с этой проблемой, особенно с Google Chrome. В послдних версиях этот браузер блокирует доступ к своим куки, если он открыт. Я закрываю его перед началом крипта, после прочтения куки браузер можно снова открыть. Подробнее можно посмотреть тут: #21.

Попробовал прогнать скрипт, однако у меня все еще появляются ошибки SSL сертификата на каждую ссылку

Можете описать свое окружение? OS, версия Python и т.д.
Так же был бы рад, если вы пришлете лог файл, который создается в папке ./logs.

@Lemonbrush
Copy link
Author

Окей, без проблем. Сегодня вечером отпишу подробнее и приложу файл с логами

Пока могу только сказать, что у скрипт прогоняю на macOS последней версии и гугл хром у меня не запущен

@Lemonbrush
Copy link
Author

Лог файлы выслал на почту. Один лог файл с запуска с куки, и онин без кук
Python 3.11.1
macOS 14.0 Sonoma

@Lemonbrush
Copy link
Author

Есть еще вот такая ошибка при обработке профиля
image

@DvaMishkiLapa
Copy link
Owner

DvaMishkiLapa commented Oct 11, 2023

Есть еще вот такая ошибка при обработке профиля

Да, я совсем забыл про документы. Они пока без разделения по папкам, релизую позже, проблему исправил.
Пока разбираюсь с проблемой SSL.

@Lemonbrush
Copy link
Author

Спасибо. Я всегда на связи. Если нужна какая-то помощь, то по мере своих возможностей могу помочь

@DvaMishkiLapa
Copy link
Owner

@Lemonbrush
Я наткнулся на два решения по поводу SSL. Они не совсем новые, но могут помочь. Кажется, проблема заключается в работе OpenSSL Python на MacOS. У меня нет этой системы и мне не на чем проверить данную теорию. Если будете решать проблему данными путями, используйте это с осторожностю. Учитывая нормальное поведение на Windows и Linux, кажется, проблема и правда в MacOS или конфигурации Python на ней.

https://stackoverflow.com/questions/42098126/mac-osx-python-ssl-sslerror-ssl-certificate-verify-failed-certificate-verify
https://stackoverflow.com/questions/40684543/how-to-make-python-use-ca-certificates-from-mac-os-truststore

@Lemonbrush
Copy link
Author

Хмм, теперь появилась вот такая ошибка

image

@DvaMishkiLapa
Copy link
Owner

Последний коммит?

@Lemonbrush
Copy link
Author

Убрал обработку профиля, и кажется заработало. Проверяю

@DvaMishkiLapa
Copy link
Owner

@Lemonbrush
Я внес довольно много изменение, которые так же относится и к вашему вопросу.

  • Есть разделение по дате для документов и фотографий из сообщений;
  • Теперь есть поддержка понравившихся фото, но без даты, т.к. ее в архиве нет.

Проверьте, как у вас будет время, не забыв вытянуть последние изиенения.

@Lemonbrush
Copy link
Author

Все прекрасно работает. Спасибо большое. Этот скрипт сохранил мне как минимум пару лет жизни

@DvaMishkiLapa
Copy link
Owner

@Lemonbrush
Если вам не трудно, проверье у себя проблему старых фотографий.
Я так понимаю, у вас есть фотографии, старше 2012 года. Хотелось бы знать, на сколько это проблема выражена.
Если у вас есть такая же проблема с качеством фотографий, опишите их в топик по ссылке.

Был рад вам помочь :)

@Lemonbrush
Copy link
Author

Без проблем. Ещё раз прогоню скрипт, уже с последними изменениями, и отпишу по результатам

@Lemonbrush
Copy link
Author

Это не критично, но было бы удобно если бы папки еще и по годам разбивались, а то сейчас в папках с большими диалогами мешанина. В идеале, чтобы в папках с годом все папки еще и по меcяцам разбивались. Тогда будет более конкретный архив, с которым будет на много удобней работать

image

@Lemonbrush
Copy link
Author

Наверное проще всего будет просто поменять формат даты на такой - 2023.10.15
Тогда все папки с вложениями будут сами рассортированы по году, месяцу и числу

@Lemonbrush
Copy link
Author

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

sudo find .../Desktop/VKArchiveDownloader/output/profile/documents -type d -empty -delete

@DvaMishkiLapa DvaMishkiLapa reopened this Oct 15, 2023
@DvaMishkiLapa
Copy link
Owner

DvaMishkiLapa commented May 12, 2024

@Lemonbrush
Если это для вас еще актуально, было выпущено обновление, где исправлена проблема создания пустых папок.

@Lemonbrush
Copy link
Author

Всегда актуально. Спасибо большое

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants