четверг, 25 февраля 2021 г.

Дискретная математика и ML

 Недавно пришлось снова поглазеть на нейросети по долгу службы. Сказано сделано - запилил датасет, почистил, сделал входы и выходы. Чтобы не сильно заморачиваться сделал их бинарными, т.е. наборами нулей и единиц, само собой большими. В итоге поймал себя на мысли, что можно в лоб добиться неплохого результата (но с оверфитом), если не делать никаких градиентных спусков, а тупо запилить набор логических функций через СДНФ и СКНФ. Думаю, что дело всё же в синтетичности проблемы - вряд ли с пикселами и сложными структурами такое прокатит.

понедельник, 1 февраля 2021 г.

History export from Skype and Discord

Я как-то писал про историю сообщений в Skype, но как-то руки не доходили до скриптов, которые бы позволили нормально собрать историю в HTML-файлы, разбитые по дням. Зачем это нужно? В первую очередь, иногда интересны именно старые диалоги, которые непонятно как искать. Иногда просто хочется полной внятной истории переписок, так как по умолчанию показываются последние сообщения, а скроллить вверх миллион раз неудобно. К этому присовокупилось желание иметь подобное для Discord.

Справедливости ради, умнее всего поступили разработчики Telegram - там адекватная кнопка экспорта есть по умолчанию и она даже разбивает по какой-то своей логике сообщения на файлы, что довольно удобно.

Для Discord нашёл DiscordChatExporter, но он экспортирует всё одним файлом, а хотелось разбиения по дням. 

В результате сделал пару скриптов на PHP для облегчения жизни и экспорта истории из Discord и Skype. Скрипты набросал на скорую руку, так что там, конечно, говнокод. Само собой, выложил их на GitHub и скачать их можно отсюда.  

Процесс такой.

1. Перед началом в каждой из папок "skype" и "discord" выполнить  composer install.

Для Discord

2. Использовать DiscordChatExporter, и экспортировать в нём историю в HTML

3. Создать структуру папок, где результат будет расположен (что-то типа папки "outdiscord" и папки "data" в ней, рядом со скриптами в папке "discord)". Скачать иконки гильдии и аватарки и положить их в папку "data".

4. Отредактировать и запустить discord/split.php, используя переменные в начале скрипта, чтобы разбить историю по дням.

5. Отредактировать и запустить discord/downloadpreview.php, используя переменные в начале скрипта, чтобы скачать превью картинок и расположить их в папке outdiscord/data.

6. Использовать скрипт "template/stringstomenu.php" и файлы HTML в папке "template", чтобы сформировать индексные файлы и меню на основе index.html и menu.html. Индексные файлы скопировать в выходную папку ("outdiscord")

Для Skype

2. Найти и скопировать main.db, вытащив оттуда id нужного разговора.

3. Создать структуру папок, где результат будет расположен (что-то типа папки "outskype" и папки "data" в ней, рядом со скриптами в папке "discord)". Скачать иконки гильдии и аватарки и положить их в папку "data". Последние можно сделать самому - например на основе дискордовских.

4. Отредактировать и запустить "skype/parser.php", используя переменные в начале скрипта

6. Использовать скрипт "template/stringstomenu.php" и файлы HTML в папке "template", чтобы сформировать индексные файлы и меню на основе index.html и menu.html. Индексные файлы скопировать в выходную папку ("outskype")

Тестировал их на новом PHP 8.0 - всё работает, за исключением превью для Youtube. Надо будет покопаться, что там не так, но пока на это нет времени. Процессы получились довольно громоздкими, но это из-за того, что это разовое действие, которое пока потребовалось только один раз.