mirror of
https://github.com/bellingcat/snscrape.git
synced 2026-06-08 02:28:29 +03:00
Add _type attribute on all JSON objects, remove separate attribute on Twitter media
This commit is contained in:
@@ -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)):
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user