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

→‎コード: v4.1.15 魚拓から未掲載ツイートを収集するモードで、URLを収集する時点でリツイートを除外する
>Fet-Fe
(→‎コード: 詳細なログをファイルにも出力するように変更)
>Fet-Fe
(→‎コード: v4.1.15 魚拓から未掲載ツイートを収集するモードで、URLを収集する時点でリツイートを除外する)
11行目: 11行目:
"""Twitter自動収集スクリプト
"""Twitter自動収集スクリプト


ver4.1.14 2024/2/3恒心
ver4.1.15 2024/2/7恒心


当コードは恒心停止してしまった https://rentry.co/7298g の降臨ショーツイート自動収集スクリプトの復刻改善版です
当コードは恒心停止してしまった https://rentry.co/7298g の降臨ショーツイート自動収集スクリプトの復刻改善版です
126行目: 126行目:
         """
         """


         nitter_instance: Final[str] = 'https://nitter.unixfox.eu/'
         nitter_instance: Final[str] = 'https://nitter.unixfox.eu/' # noqa: E501
         """Final[str]: Nitterのインスタンス。
         """Final[str]: Nitterのインスタンス。


142行目: 142行目:
         """``--search-unarchived`` オプションを付けたときに使用する設定値。
         """``--search-unarchived`` オプションを付けたときに使用する設定値。
         """
         """
         tweet_url_prefix_default: Final[str] = '174'
         tweet_url_prefix_default: Final[str] = '1754'
         """Final[str]: ツイートURLの数字部分のうち、予め固定しておく部分。
         """Final[str]: ツイートURLの数字部分のうち、予め固定しておく部分。


156行目: 156行目:
         """
         """


         incremented_num_default: Final[int] = 6
         incremented_num_default: Final[int] = 0
         """Final[int]: ツイートURLの数字部分うち、インクリメントする桁のデフォルト値。
         """Final[int]: ツイートURLの数字部分うち、インクリメントする桁のデフォルト値。


1,984行目: 1,984行目:
         self._twitter_url_pattern: Pattern[str] = re.compile(
         self._twitter_url_pattern: Pattern[str] = re.compile(
             '^' + self.TWITTER_URL + self._name + r'/status/\d+')
             '^' + self.TWITTER_URL + self._name + r'/status/\d+')
        self._archive_rt_pattern: Pattern[str] = re.compile(
            r'on (?:Twitter|X): "RT @\w+:.+"(?:$| / Twitter$| / X$)')


         self._url_list_on_wiki: list[str] = []
         self._url_list_on_wiki: list[str] = []
2,042行目: 2,044行目:
     def _append_tweet_urls(self, soup: Tag) -> None:
     def _append_tweet_urls(self, soup: Tag) -> None:
         """ツイートのURLを保存する。
         """ツイートのURLを保存する。
        リツイートはここで除外する。


         Args:
         Args:
2,072行目: 2,076行目:
                 if url_matched[0] not in self._url_list_on_wiki:
                 if url_matched[0] not in self._url_list_on_wiki:
                     # ツイートのURLが未取得のものならばURLを保存する
                     # ツイートのURLが未取得のものならばURLを保存する
                    text_tag: Tag | None = tweet.select_one('a')
                    assert text_tag is not None
                    if (self._archive_rt_pattern.search(text_tag.text) is not
                            None):
                        logger.debug(url_matched[0] + 'はリツイートなのでポア')
                        continue
                     self._url_list.append(
                     self._url_list.append(
                         UrlTuple(url_matched[0], archive_url))
                         UrlTuple(url_matched[0], archive_url))
2,296行目: 2,306行目:
         """魚拓からツイート本文を取得する。
         """魚拓からツイート本文を取得する。


         リツイートは除く。
         リツイートが `url_pairs` に残っていたら除く。


         Args:
         Args:
             url_pairs (list[UrlTuple]): リツイートを除く前のURLのリスト。
             url_pairs (list[UrlTuple]): URLとその魚拓URLのペアのリスト。
             accessor (AccessorHandler): アクセスハンドラ。
             accessor (AccessorHandler): アクセスハンドラ。


2,388行目: 2,398行目:
                 )
                 )
             else:
             else:
                 logger.debug(url_pair.url + 'はリツイートなのでポア')
                 logger.warn(url_pair.url + 'はリツイートなので飛ばすナリ。'
                            'URLリスト収集の時点でフィルタできなかった、これはいけない。')


         table_builder.dump_file()
         table_builder.dump_file()
匿名利用者