В коде RSS-транспорта была идея поначалу использовать favicon.ico с сайта, откуда берется лента и отдавать его в качестве фото в vCard. Вообще в XMPP есть возможность указывать в фото ссылку на внешний ресурс. Одна проблема – это нигде (ну, как минимум, в популярных клиентах, что я пробовал) не реализовано. В общем, забил и просто отдаю RSS-лого, которое сохранено напрямую в коде скрипта в base64.
Только что ради смеха набросал код для обходного пути:
import urllib2 import urlparse from PIL import Image import io import base64 url='https://www.linux.org.ru/bla-bla-bla' imgtmp = io.BytesIO() favicon = urlparse.urlparse(url)[0]+"://"+urlparse.urlparse(url)[1]+"/favicon.ico" fp = urllib2.Request(favicon) mybytes = urllib2.urlopen(fp) png = Image.open(mybytes) png.save(imgtmp, format="PNG") mybaseimg = base64.b64encode(imgtmp.getvalue()) print(mybaseimg)
Нет, использовать не буду – сильно жирно тащить в код лишние несколько библиотек ради таких украшательств. Но потенциально – возможно :). Надо только добавить еще обработку ошибок при получении favicon.ico и фоллбэк на обычное лого.
https://stackoverflow.com/questions/4674460/how-to-get-favicon-by-using-beautiful-soup-and-python