diff --git a/snscrape/base.py b/snscrape/base.py index f3cce0b..829bb69 100644 --- a/snscrape/base.py +++ b/snscrape/base.py @@ -36,11 +36,14 @@ def _json_serialise_datetime(obj): def _json_dataclass_to_dict(obj): if isinstance(obj, _JSONDataclass) or dataclasses.is_dataclass(obj): out = {} + out['_type'] = f'{type(obj).__module__}.{type(obj).__name__}' for field in dataclasses.fields(obj): + assert field.name != '_type' out[field.name] = _json_dataclass_to_dict(getattr(obj, field.name)) # Add in (non-deprecated) properties for k in dir(obj): if isinstance(getattr(type(obj), k, None), property): + assert k != '_type' out[k] = _json_dataclass_to_dict(getattr(obj, k)) return out elif isinstance(obj, (tuple, list)): diff --git a/snscrape/modules/twitter.py b/snscrape/modules/twitter.py index 1955363..ca45be8 100644 --- a/snscrape/modules/twitter.py +++ b/snscrape/modules/twitter.py @@ -60,7 +60,6 @@ class Medium: class Photo(Medium): previewUrl: str fullUrl: str - type: str = 'photo' @dataclasses.dataclass @@ -75,14 +74,12 @@ class Video(Medium): thumbnailUrl: str variants: typing.List[VideoVariant] duration: float - type: str = 'video' @dataclasses.dataclass class Gif(Medium): thumbnailUrl: str variants: typing.List[VideoVariant] - type: str = 'gif' @dataclasses.dataclass