diff --git a/threads/threads_client.py b/threads/threads_client.py index 172e90f..9fc039e 100644 --- a/threads/threads_client.py +++ b/threads/threads_client.py @@ -97,6 +97,12 @@ REPLY_CONTROL_MENTIONED_ONLY = "mentioned_only" _PUBLISH_POLL_INTERVAL = 3 # seconds _PUBLISH_POLL_MAX_ATTEMPTS = 40 # ~2 phút +# Engagement scoring weights cho thread selection +_SCORE_WEIGHT_VIEWS = 1 +_SCORE_WEIGHT_LIKES = 5 +_SCORE_WEIGHT_REPLIES = 10 +_SCORE_WEIGHT_REPOSTS = 15 + # --------------------------------------------------------------------------- # Exceptions @@ -1255,12 +1261,11 @@ def _select_best_thread( score = reply_count # Base score = số replies try: engagement = client.get_thread_engagement(thread_id) - # Weighted score: views * 1 + likes * 5 + replies * 10 score = ( - engagement.get("views", 0) - + engagement.get("likes", 0) * 5 - + engagement.get("replies", 0) * 10 - + engagement.get("reposts", 0) * 15 + engagement.get("views", 0) * _SCORE_WEIGHT_VIEWS + + engagement.get("likes", 0) * _SCORE_WEIGHT_LIKES + + engagement.get("replies", 0) * _SCORE_WEIGHT_REPLIES + + engagement.get("reposts", 0) * _SCORE_WEIGHT_REPOSTS ) except (ThreadsAPIError, requests.RequestException): # Insights không khả dụng → dùng reply_count làm score