リンク・カードちょっと修正

このコミットが含まれているのは:
2024-09-07 06:51:57 +09:00
コミット c8cff9a3dd
+35 -3
ファイルの表示
@@ -4,6 +4,7 @@ import time
import sys
from atproto import Client, models
from bs4 import BeautifulSoup
import requests
from ai.talk import Talk
@@ -91,11 +92,14 @@ def main (
if e['contentId'] not in watched_videos]:
watched_videos += [datum['contentId']]
uri = f"https://www.nicovideo.jp/watch/{ datum['contentId'] }"
(title, description, thumb) = get_embed_info (uri)
embed_external = models.AppBskyEmbedExternal.Main (
external = models.AppBskyEmbedExternal.External (
title = datum['title'],
description = datum['description'],
uri = f"https://www.nicovideo.jp/watch/{ datum['contentId'] }"))
title = title,
description = description,
thumb = thumb,
uri = uri))
client.post (Talk.main (f"""
ニコニコに『{ datum['title'] }』という動画がアップされました。
つけられたタグは「{ '」、「'.join (datum['tags']) }」です。
@@ -175,5 +179,33 @@ def get_nico_deerjika ():
return data
def get_embed_info (
url: str
) -> (str, str, str):
try:
res = requests.get (url, timeout = 60)
except Exception:
return ('', '', '')
if res.status_code != 200:
return ('', '', '')
soup = BeautifulSoup (res.text, 'html.parser')
tmp = soup.find ('title')
if tmp is not None:
title = tmp.text
tmp = soup.find ('meta', attrs = { 'name': 'description' })
if tmp is not None:
description = tmp.get ('content')
tmp = soup.find ('meta', attrs = { 'name': 'thumbnail' })
if tmp is not None:
thumbnail = tmp.get (' content')
return (title, description, thumbnail)
if __name__ == '__main__':
main (*sys.argv[1:])