|
@@ -1,4 +1,4 @@
|
|
|
-from datetime import datetime
|
|
|
|
|
|
|
+import logging
|
|
|
|
|
|
|
|
from bs4 import BeautifulSoup
|
|
from bs4 import BeautifulSoup
|
|
|
from dataclasses import dataclass, fields, InitVar, field
|
|
from dataclasses import dataclass, fields, InitVar, field
|
|
@@ -7,6 +7,9 @@ from typing import List, Optional
|
|
|
from .mixins import ExtractableMixin
|
|
from .mixins import ExtractableMixin
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+logger = logging.getLogger(__name__)
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
@dataclass
|
|
@dataclass
|
|
|
class MediaBase(ExtractableMixin):
|
|
class MediaBase(ExtractableMixin):
|
|
|
#: Links to images contained in the media
|
|
#: Links to images contained in the media
|
|
@@ -29,8 +32,6 @@ class MediaBase(ExtractableMixin):
|
|
|
#: The soup extracted from the raw HTML
|
|
#: The soup extracted from the raw HTML
|
|
|
soup: InitVar[BeautifulSoup] = None
|
|
soup: InitVar[BeautifulSoup] = None
|
|
|
|
|
|
|
|
- #https: // pbs.twimg.com / media / DxNof6AXQAAu2oU.jpg
|
|
|
|
|
-
|
|
|
|
|
|
|
|
|
|
class MediaImage(MediaBase):
|
|
class MediaImage(MediaBase):
|
|
|
@staticmethod
|
|
@staticmethod
|
|
@@ -51,7 +52,9 @@ def media_factory(soup: BeautifulSoup) -> Optional[MediaBase]:
|
|
|
for kls in MediaBase.__subclasses__():
|
|
for kls in MediaBase.__subclasses__():
|
|
|
try:
|
|
try:
|
|
|
if kls.condition(kwargs):
|
|
if kls.condition(kwargs):
|
|
|
- return kls(soup=soup, **kwargs)
|
|
|
|
|
|
|
+ m = kls(soup=soup, **kwargs)
|
|
|
|
|
+ logger.debug("Parsed media {}".format(m))
|
|
|
|
|
+ return m
|
|
|
except NotImplementedError:
|
|
except NotImplementedError:
|
|
|
continue
|
|
continue
|
|
|
|
|
|