diff --git a/main.py b/main.py index b358f9c..df048f4 100644 --- a/main.py +++ b/main.py @@ -41,7 +41,47 @@ async def report_kiriban ( ) -> None: while True: # キリ番祝ひ - ... + (views_count, video_info, uploaded_at) = ( + kiriban_list.pop (random.randint (0, len (kiriban_list) - 1))) + since_posted = datetime.now () - uploaded_at + uri = f"https://www.nicovideo.jp/watch/{ video_info['contentId'] }" + (title, description, thumbnail) = fetch_embed_info (uri) + try: + upload = client.com.atproto.repo.upload_blob ( + io.BytesIO (requests.get (thumbnail, + timeout = 60).content)) + thumb = upload.blob + except Timeout: + thumb = None + comments = nico.get_comments (video_info['contentId']) + popular_comments = sorted (comments, + key = lambda c: c.nico_count, + reverse = True)[:10] + latest_comments = sorted (comments, + key = lambda c: c.posted_at, + reverse = True)[:10] + embed_external = models.AppBskyEmbedExternal.Main ( + external = models.AppBskyEmbedExternal.External ( + title = title, + description = description, + thumb = thumb, + uri = uri)) + prompt = f"{ since_posted.days }日と{ since_posted.seconds }秒前にニコニコに投稿された『{ video_info['title'] }』という動画が{ views_count }再生を突破しました。\n" + prompt += f"コメント数は{ len (comments) }件です。\n" + if video_info['tags']: + prompt += f"つけられたタグは「{ '」、「'.join (video_info['tags']) }」です。\n" + if comments: + prompt += f"人気のコメントは次の通りです:「{ '」、「'.join (c.content for c in popular_comments) }」\n" + prompt += f"最新のコメントは次の通りです:「{ '」、「'.join (c.content for c in latest_comments) }」\n" + prompt += f""" +概要には次のように書かれています: +```html +{ video_info['description'] } +``` +このことについて、ニジカちゃんからのお祝いメッセージを下さい。 +ただし、そのメッセージ内には再生数の数値とその多さに応じたリアクションを添えてください。 +また、ぜひ投稿からこの再生数に至るまでにかかった時間や、つけられたタグ、コメントに対して思いを馳せてください。 +好きなコメントがあったら教えてね。""" # 待ち時間計算 dt = datetime.now () d = dt.date ()