Add _type attribute on all JSON objects, remove separate attribute on Twitter media

This commit is contained in:
JustAnotherArchivist
2021-05-22 18:14:54 +00:00
parent 97c8caea48
commit 460be9d581
2 changed files with 3 additions and 3 deletions

View File

@@ -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)):

View File

@@ -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