リンク・カードちょっと修正
このコミットが含まれているのは:
@@ -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:])
|
||||||
|
|||||||
新しい課題から参照
ユーザをブロックする