refactor: extract common embed checking logic
This commit is contained in:
@@ -19,27 +19,34 @@ class PostAnalyzer:
|
|||||||
'app.bsky.embed.record_with_media'
|
'app.bsky.embed.record_with_media'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_embed(post_record):
|
||||||
|
return getattr(post_record, 'embed', None)
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _get_embed_type_base(embed):
|
||||||
|
embed_type = getattr(embed, 'py_type', None)
|
||||||
|
if embed_type:
|
||||||
|
return embed_type.split('#')[0]
|
||||||
|
return None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def has_media(post_record):
|
def has_media(post_record):
|
||||||
embed = getattr(post_record, 'embed', None)
|
embed = PostAnalyzer._get_embed(post_record)
|
||||||
if not embed:
|
if not embed:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
embed_type = getattr(embed, 'py_type', None)
|
embed_type_base = PostAnalyzer._get_embed_type_base(embed)
|
||||||
if embed_type:
|
if embed_type_base:
|
||||||
embed_type_base = embed_type.split('#')[0]
|
|
||||||
|
|
||||||
if embed_type_base in PostAnalyzer.MEDIA_TYPES:
|
if embed_type_base in PostAnalyzer.MEDIA_TYPES:
|
||||||
return True
|
return True
|
||||||
|
|
||||||
if embed_type_base in PostAnalyzer.QUOTE_WITH_MEDIA_TYPES:
|
if embed_type_base in PostAnalyzer.QUOTE_WITH_MEDIA_TYPES:
|
||||||
media = getattr(embed, 'media', None)
|
media = getattr(embed, 'media', None)
|
||||||
if media:
|
if media:
|
||||||
media_type = getattr(media, 'py_type', None)
|
media_type_base = PostAnalyzer._get_embed_type_base(media)
|
||||||
if media_type:
|
if media_type_base and media_type_base in PostAnalyzer.MEDIA_TYPES:
|
||||||
media_type_base = media_type.split('#')[0]
|
return True
|
||||||
if media_type_base in PostAnalyzer.MEDIA_TYPES:
|
|
||||||
return True
|
|
||||||
|
|
||||||
for attr in ('images', 'video', 'external'):
|
for attr in ('images', 'video', 'external'):
|
||||||
if hasattr(embed, attr):
|
if hasattr(embed, attr):
|
||||||
@@ -51,15 +58,13 @@ class PostAnalyzer:
|
|||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def has_quote(post_record):
|
def has_quote(post_record):
|
||||||
embed = getattr(post_record, 'embed', None)
|
embed = PostAnalyzer._get_embed(post_record)
|
||||||
if not embed:
|
if not embed:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
embed_type = getattr(embed, 'py_type', None)
|
embed_type_base = PostAnalyzer._get_embed_type_base(embed)
|
||||||
if embed_type:
|
if embed_type_base and embed_type_base in PostAnalyzer.QUOTE_TYPES:
|
||||||
embed_type_base = embed_type.split('#')[0]
|
return True
|
||||||
if embed_type_base in PostAnalyzer.QUOTE_TYPES:
|
|
||||||
return True
|
|
||||||
|
|
||||||
return (hasattr(embed, 'record') or
|
return (hasattr(embed, 'record') or
|
||||||
(isinstance(embed, dict) and embed.get('record')))
|
(isinstance(embed, dict) and embed.get('record')))
|
||||||
|
|||||||
Reference in New Issue
Block a user