Архив метки: python

Stanza IM: 25 дней спустя

То, что еще месяц назад казалось дикой идеей — было реализовано. На волне увлечения OpenCode — сделал свой jabber-клиент.

Да, базовые вещи были сделаны намного раньше, но у меня не было времени на заметки в блог для «неделю спустя», потом пилил более-менее крупные фичи и снова не было времени на блог, а сейчас ждать еще 3 дня для отсылки к одноименному фильму — нет желания 🙂

Так или иначе, теперь есть Stanza IM. Целиком и полностью написан в OpenCode под моим чутким руководством. Название — легкая модификация одного из вариантов, предложенного гуглоИИ. Кстати, как оказалось, «станза» — вполне популярное слово и не в контексте jabber’а. А еще существует полурабочий сайт-визитка https://stanza.im какого-то француза (и там даже есть какой-то старенький Prosody) — ну да пофиг.

Читать далее Stanza IM: 25 дней спустя →

Волшебный мир OpenCode

Примерно 3 недели назад меня познакомили с OpenCode. В итоге все эти 3 недели я практически нон-стоп переделывал все те jabber-проекты, что вел раньше, а также взялся за некоторые новые.

Основная проблема везде — проекты в основном старые, зачастую еще со времен активного использования джаббера массами. Основная масса написана на Python2 под какие-то старые библиотеки, которые либо python2-only, либо сильно поменялись и прямую замену py2->py3 сделать не выйдет. Разве что JabRSS мог похвастаться хоть какой-то работой с Python3. Незадолго до знакомства с OpenCode я даже подготовил docker-образ на базе Debian 11, где еще можно было поставить Python2 и сделать окружение для запуска старого софта.

Теперь все поменялось.

Читать далее Волшебный мир OpenCode →

Примеры кода для PyXMPP и XMPPpy

Пока писал различные транспорты / сервисы для jabber’а — часто приходилось выискивать примеры кода, чтобы понять, какие блоки для чего использовать, чтобы вырисовать нужный XML. С PyXMPP было проще — под рукой было 2 проекта с неплохим объемом кода, на котором можно было учиться — наверное, поэтому мне больше PyXMPP и полюбился. С XMPPpy было сложнее, но в итоге разобрался.

В данной заметке — куски кода из моих проектов, реализующие ту или иную функцию. Код, в основном, скопирован «как есть» — разве что с удалением часто повторяющихся одинаковых блоков. Основная задача — показать последовательность действий, которая нужна для «рисования» нужного XML’а.

Читать далее Примеры кода для PyXMPP и XMPPpy →

Google Translate Transport (service) for XMPP

Еще один проектик для jabber’а.

В конференции саппорта сервера jabbercity.ru с Lex’ом как-то зашла речь за перевод через гугл. Собственно, мне самому давно была интересна эта тема — боты переводчики, бывшие в таблице на JabberWorld, давно перестали работать, а новых не появлялось. Но я считал, что там надо будет активно изучать API гугла, создавать пары ключей и заниматься тому подобными вещами. Тут же Lex кинул пару функций, там все оказалось гораздо проще. Потом на stackoverflow нашел еще более интересный вариант (фактически — упрощенный и использующий меньше библиотек) — и завертелось.

Читать далее Google Translate Transport (service) for XMPP →

Архив сообщений в RSS-транспорте и веселый юникод-2

Да, я снова вляпался в utf8mb4.

Читать далее Архив сообщений в RSS-транспорте и веселый юникод-2 →

Нет, ну можно, конечно… Про favicon.ico в vCard для RSS

В коде RSS-транспорта была идея поначалу использовать favicon.ico с сайта, откуда берется лента и отдавать его в качестве фото в vCard. Вообще в XMPP есть возможность указывать в фото ссылку на внешний ресурс. Одна проблема — это нигде (ну, как минимум, в популярных клиентах, что я пробовал) не реализовано. В общем, забил и просто отдаю RSS-лого, которое сохранено напрямую в коде скрипта в base64.

Читать далее Нет, ну можно, конечно… Про favicon.ico в vCard для RSS →

RSS-транспорт: фильтры

С давних времен у меня висит в ростере оригинальный инстанс JabRSS, ну и с тех же времен висит там подписка на kernel.org. Постит мне новости о новых релизах и багфиксах, красота.

Читать далее RSS-транспорт: фильтры →

RSS-транспорт: диалоги

Да, я таки реализовал управление через отправку сообщений RSS-транспорту. Отметил это версией 1.5. Слать сообщения можно любой ленте либо транспорту напрямую (если добавить его в ростер).

Читать далее RSS-транспорт: диалоги →