「利用者:夜泣き/スクリプト」の版間の差分

→‎コード: v4.3.6 魚拓からの取得の仕組み変更
>Fet-Fe
(→‎コード: v4.3.5 TwitterのメインURLの変更に合わせて変更)
>Fet-Fe
(→‎コード: v4.3.6 魚拓からの取得の仕組み変更)
11行目: 11行目:
"""Twitter自動収集スクリプト
"""Twitter自動収集スクリプト


ver4.3.5 2024/5/19恒心
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[data-testid="tweetText"]:not('
                         'div[dir="auto"]')
                        'div[role="link"] div[data-testid="tweetText"])')
                     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[data-testid="card.layoutSmall.media"]:not('
                         'div[aria-label="Play"]:not(div[role="link"] '
                        'div[role="link"] '
                         'div[aria-label="Play"])')
                         'div[data-testid="card.layoutSmall.media"])')
                     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(
                         'article div[data-testid="card.layoutLarge.media"] a')
                         '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(
                         'article[data-testid="tweet"] div[role="link"]')
                         '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[data-testid="User-Name"] div[tabindex="-1"]'))  # noqa: E501
                                 '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行目:


                     # バージョンの処理
                     # バージョンの処理
                     if article.select_one(
                     possible_version_text_tags: Final[ResultSet[Tag]] = (
                        'svg[aria-label="There’s a new version of this post."]'
                        article.select(
                    ) is not None:
                            '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 += '([[新しいバージョンがあります|後の版→]])'


匿名利用者