Source code for ploneintranet.microblog.urlpreview
import requests
import lxml.html
from requests.exceptions import Timeout
from zope.interface import implements
from zope.component import adapts
from .interfaces import IStatusUpdate
from .interfaces import IURLPreview
[docs]class URLPreview(object):
adapts(IStatusUpdate)
implements(IURLPreview)
def __init__(self, context):
self.context = context
[docs] def generate_preview(self, url):
try:
resp = requests.get(url, timeout=2)
except Timeout:
return []
doc = lxml.html.fromstring(resp.content)
links = doc.xpath("//img/@src")
ogs = doc.xpath('//meta[@property="og:image"]/@content')
return ogs + links