diff --git a/opengraph/opengraph.py b/opengraph/opengraph.py index 9cedb97..6594a49 100644 --- a/opengraph/opengraph.py +++ b/opengraph/opengraph.py @@ -1,7 +1,12 @@ # encoding: utf-8 import re -import urllib2 + +try: + import urllib2 +except ImportError: + from urllib import request as urllib2 + try: from bs4 import BeautifulSoup except ImportError: @@ -59,7 +64,7 @@ def parser(self, html): else: doc = html ogs = doc.html.head.findAll(property=re.compile(r'^og')) - for og in ogs: + for og in ogs: if og.has_attr(u'content'): self[og[u'property'][3:]]=og[u'content'] # Couldn't fetch all attrs from og tags, try scraping body @@ -72,7 +77,13 @@ def parser(self, html): pass def valid_attr(self, attr): - return hasattr(self, attr) and len(self[attr]) > 0 + has_attr_result = False + try: + has_attr_result = hasattr(self, attr) + except Exception as e: + has_attr_result = False + + return has_attr_result and len(self[attr]) > 0 def is_valid(self): return all([self.valid_attr(attr) for attr in self.required_attrs]) diff --git a/opengraph/test.py b/opengraph/test.py index 3835b8f..47cf289 100644 --- a/opengraph/test.py +++ b/opengraph/test.py @@ -19,8 +19,8 @@ class test(unittest.TestCase): def test_url(self): - data = opengraph.OpenGraph(url='http://vimeo.com/896837') - self.assertEqual(data['url'], 'http://vimeo.com/896837') + data = opengraph.OpenGraph(url='https://vimeo.com/896837') + self.assertEqual(data['url'], 'https://vimeo.com/896837') def test_isinstace(self): data = opengraph.OpenGraph() @@ -31,17 +31,17 @@ def test_to_html(self): self.assertTrue(og.to_html()) def test_to_json(self): - og = opengraph.OpenGraph(url='http://www.youtube.com/watch?v=XAyNT2bTFuI') + og = opengraph.OpenGraph(url='https://www.youtube.com/watch?v=XAyNT2bTFuI') self.assertTrue(og.to_json()) self.assertTrue(isinstance(og.to_json(),str)) def test_no_json(self): opengraph.import_json = False - og = opengraph.OpenGraph(url='http://grooveshark.com') + og = opengraph.OpenGraph(url='http://ogp.me') self.assertEqual(og.to_json(),"{'error':'there isn't json module'}") def test_is_valid(self): - og = opengraph.OpenGraph(url='http://grooveshark.com') + og = opengraph.OpenGraph(url='http://ogp.me') self.assertTrue(og.is_valid())