Merge pull request #1701 from mbachry/fix-preview-crash

Fix crash in url preview
pull/1702/head
Erik Johnston 2016-12-15 10:01:28 +00:00 committed by GitHub
commit 4da3fc0ea0
2 changed files with 54 additions and 1 deletions

View File

@ -381,7 +381,10 @@ def _calc_og(tree, media_uri):
if 'og:title' not in og:
# do some basic spidering of the HTML
title = tree.xpath("(//title)[1] | (//h1)[1] | (//h2)[1] | (//h3)[1]")
og['og:title'] = title[0].text.strip() if title else None
if title and title[0].text is not None:
og['og:title'] = title[0].text.strip()
else:
og['og:title'] = None
if 'og:image' not in og:
# TODO: extract a favicon failing all else

View File

@ -215,3 +215,53 @@ class PreviewUrlTestCase(unittest.TestCase):
u"og:title": u"Foo",
u"og:description": u"Some text."
})
def test_missing_title(self):
html = u"""
<html>
<body>
Some text.
</body>
</html>
"""
og = decode_and_calc_og(html, "http://example.com/test.html")
self.assertEquals(og, {
u"og:title": None,
u"og:description": u"Some text."
})
def test_h1_as_title(self):
html = u"""
<html>
<meta property="og:description" content="Some text."/>
<body>
<h1>Title</h1>
</body>
</html>
"""
og = decode_and_calc_og(html, "http://example.com/test.html")
self.assertEquals(og, {
u"og:title": u"Title",
u"og:description": u"Some text."
})
def test_missing_title_and_broken_h1(self):
html = u"""
<html>
<body>
<h1><a href="foo"/></h1>
Some text.
</body>
</html>
"""
og = decode_and_calc_og(html, "http://example.com/test.html")
self.assertEquals(og, {
u"og:title": None,
u"og:description": u"Some text."
})