o2o-castad-backend/app/social/services/sns_metadata.py
김성경 e47a97476d feat(ssulbox): SNS 제목·설명·태그를 ssul_content에 저장
영상과 같이 업로드·SEO 결과를 행에 남기고, 다음 요청부터는 DB 값을 쓴다.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-19 15:31:44 +09:00

46 lines
1.2 KiB
Python

"""SNS 업로드용 메타데이터 비교/반영 헬퍼.
`video` 와 `ssul_content` 모두 `title` / `description` / `hashtags` 를 갖는다.
"""
from typing import Protocol
class SnsMetadataTarget(Protocol):
title: str | None
description: str | None
hashtags: list | None
def has_stored_sns_metadata(row: SnsMetadataTarget) -> bool:
"""행에 SNS 제목이 이미 저장되어 있는지 확인합니다."""
return bool(row.title)
def sns_metadata_changed(
row: SnsMetadataTarget,
title: str,
description: str | None,
tags: list[str] | None,
) -> bool:
"""게시 폼 값이 저장된 SNS 메타데이터와 다른지 비교합니다."""
stored_tags = list(row.hashtags or [])
incoming_tags = list(tags or [])
return (
(row.title or "") != title
or (row.description or "") != (description or "")
or stored_tags != incoming_tags
)
def apply_sns_metadata(
row: SnsMetadataTarget,
title: str,
description: str | None,
hashtags: list[str] | None,
) -> None:
"""행에 SNS 메타데이터를 반영합니다."""
row.title = title
row.description = description
row.hashtags = list(hashtags or [])