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

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