From 2a7ff48cb3e441fa8f448afe765fcce19cc98aae Mon Sep 17 00:00:00 2001 From: Osei Poku Date: Thu, 7 Jul 2016 20:37:45 -0700 Subject: [PATCH 1/3] Move attributes into instance scope This avoids data sharing between different instances of the `OpenGraph` class. --- opengraph/opengraph.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/opengraph/opengraph.py b/opengraph/opengraph.py index fe7fec0..b51b3cf 100644 --- a/opengraph/opengraph.py +++ b/opengraph/opengraph.py @@ -8,12 +8,9 @@ class OpenGraph(object): - useragent = None - __data__ = {} - def __init__(self, url=None, html=None, useragent=None): - if useragent: - self.useragent = useragent + self.useragent = useragent + self.__data__ = {} content = html or self._fetch(url) self._parse(content) From dc4a6f36289619056cc36f3c370ea6c7708e0daf Mon Sep 17 00:00:00 2001 From: Osei Poku Date: Thu, 7 Jul 2016 20:38:52 -0700 Subject: [PATCH 2/3] Invoke `BeautifulSoup` using updated parameters --- opengraph/opengraph.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/opengraph/opengraph.py b/opengraph/opengraph.py index b51b3cf..a699a91 100644 --- a/opengraph/opengraph.py +++ b/opengraph/opengraph.py @@ -39,7 +39,7 @@ def _fetch(self, url): return response.text def _parse(self, html): - doc = BeautifulSoup(html) + doc = BeautifulSoup(html, 'html.parser') ogs = doc.html.head.findAll(property=re.compile(r'^og')) for og in ogs: From cbeec80eee167bf42fbe22869205684cd85190a9 Mon Sep 17 00:00:00 2001 From: Osei Poku Date: Thu, 7 Jul 2016 21:04:53 -0700 Subject: [PATCH 3/3] Property to return the data dictionary --- opengraph/opengraph.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/opengraph/opengraph.py b/opengraph/opengraph.py index a699a91..e3b3f7f 100644 --- a/opengraph/opengraph.py +++ b/opengraph/opengraph.py @@ -45,3 +45,7 @@ def _parse(self, html): for og in ogs: if og.has_attr('content'): self.__data__[og['property'][3:]] = og['content'] + + @property + def data(self): + return self.__data__