→コード: v4.3.6 魚拓からの取得の仕組み変更
>Fet-Fe (→コード: v4.3.5 TwitterのメインURLの変更に合わせて変更) |
>Fet-Fe (→コード: v4.3.6 魚拓からの取得の仕組み変更) |
||
11行目: | 11行目: | ||
"""Twitter自動収集スクリプト | """Twitter自動収集スクリプト | ||
ver4.3. | ver4.3.6 2024/6/1恒心 | ||
当コードは恒心停止してしまった https://rentry.co/7298g の降臨ショーツイート自動収集スクリプトの復刻改善版です。 | 当コードは恒心停止してしまった https://rentry.co/7298g の降臨ショーツイート自動収集スクリプトの復刻改善版です。 | ||
1,711行目: | 1,711行目: | ||
assert isinstance(content, Tag) | assert isinstance(content, Tag) | ||
content_a: Final[Tag | NavigableString | None] = ( | content_a: Final[Tag | NavigableString | None] = ( | ||
content.select_one('a')) | content.select_one('.TEXT-BLOCK > a')) | ||
assert isinstance(content_a, Tag) | assert isinstance(content_a, Tag) | ||
href: Final[str | list[str] | None] = content_a.get('href') | href: Final[str | list[str] | None] = content_a.get('href') | ||
2,411行目: | 2,411行目: | ||
try: | try: | ||
text_tag: Tag | None = article.select_one( | text_tag: Tag | None = article.select_one( | ||
'div[ | 'div[dir="auto"]') | ||
if text_tag is not None: | if text_tag is not None: | ||
text_tag = self._retrieve_emojis(text_tag) | text_tag = self._retrieve_emojis(text_tag) | ||
2,422行目: | 2,421行目: | ||
# YouTube等のリンク | # YouTube等のリンク | ||
card_tag: Final[Tag | None] = article.select_one( | card_tag: Final[Tag | None] = article.select_one( | ||
'div[ | 'div[aria-label="Play"]:not(div[role="link"] ' | ||
'div[aria-label="Play"])') | |||
'div[ | |||
if card_tag is not None: | if card_tag is not None: | ||
text = self._concat_texts( | text = self._concat_texts( | ||
2,432行目: | 2,430行目: | ||
# 画像に埋め込まれた外部サイトへのリンク | # 画像に埋め込まれた外部サイトへのリンク | ||
article_tag: Final[Tag | None] = article.select_one( | article_tag: Final[Tag | None] = article.select_one( | ||
' | 'a[role="link"][aria-label] img:not(div[role="link"] ' | ||
'a[role="link"][aria-label] img)') | |||
if article_tag is not None: | if article_tag is not None: | ||
text = self._concat_texts( | text = self._concat_texts( | ||
2,440行目: | 2,439行目: | ||
# 引用の有無のチェック | # 引用の有無のチェック | ||
retweet_tag: Final[Tag | None] = article.select_one( | retweet_tag: Final[Tag | None] = article.select_one( | ||
' | 'div[role="link"]') | ||
if retweet_tag is not None: | if retweet_tag is not None: | ||
account_name_tag: Final[Tag | None] = ( | account_name_tag: Final[Tag | None] = ( | ||
retweet_tag.select_one( | retweet_tag.select_one( | ||
'div | 'div > span:not(:has(> *))')) # noqa: E501 | ||
assert account_name_tag is not None | assert account_name_tag is not None | ||
text = self._concat_texts( | text = self._concat_texts( | ||
2,464行目: | 2,463行目: | ||
# バージョンの処理 | # バージョンの処理 | ||
possible_version_text_tags: Final[ResultSet[Tag]] = ( | |||
article.select( | |||
'div > span > ' | |||
'span:not(:has(> *)):not(div[role="link"] div > ' | |||
'span > span:not(:has(> *)))')) | |||
if len(list(filter( | |||
lambda x: x.text | |||
== 'There’s a new version of this post.', | |||
possible_version_text_tags))) > 0: | |||
tweet_callinshow_template += '([[新しいバージョンがあります|後の版→]])' | tweet_callinshow_template += '([[新しいバージョンがあります|後の版→]])' | ||