refactor: extract common embed checking logic

This commit is contained in:
2025-12-20 20:51:45 +01:00
parent a818df4a6c
commit 0e91c95e9b

View File

@@ -19,27 +19,34 @@ class PostAnalyzer:
'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
def has_media(post_record):
embed = getattr(post_record, 'embed', None)
embed = PostAnalyzer._get_embed(post_record)
if not embed:
return False
embed_type = getattr(embed, 'py_type', None)
if embed_type:
embed_type_base = embed_type.split('#')[0]
embed_type_base = PostAnalyzer._get_embed_type_base(embed)
if embed_type_base:
if embed_type_base in PostAnalyzer.MEDIA_TYPES:
return True
if embed_type_base in PostAnalyzer.QUOTE_WITH_MEDIA_TYPES:
media = getattr(embed, 'media', None)
if media:
media_type = getattr(media, 'py_type', None)
if media_type:
media_type_base = media_type.split('#')[0]
if media_type_base in PostAnalyzer.MEDIA_TYPES:
return True
media_type_base = PostAnalyzer._get_embed_type_base(media)
if media_type_base and media_type_base in PostAnalyzer.MEDIA_TYPES:
return True
for attr in ('images', 'video', 'external'):
if hasattr(embed, attr):
@@ -51,15 +58,13 @@ class PostAnalyzer:
@staticmethod
def has_quote(post_record):
embed = getattr(post_record, 'embed', None)
embed = PostAnalyzer._get_embed(post_record)
if not embed:
return False
embed_type = getattr(embed, 'py_type', None)
if embed_type:
embed_type_base = embed_type.split('#')[0]
if embed_type_base in PostAnalyzer.QUOTE_TYPES:
return True
embed_type_base = PostAnalyzer._get_embed_type_base(embed)
if embed_type_base and embed_type_base in PostAnalyzer.QUOTE_TYPES:
return True
return (hasattr(embed, 'record') or
(isinstance(embed, dict) and embed.get('record')))