→コード: v4.1.15 魚拓から未掲載ツイートを収集するモードで、URLを収集する時点でリツイートを除外する
>Fet-Fe (→コード: 詳細なログをファイルにも出力するように変更) |
>Fet-Fe (→コード: v4.1.15 魚拓から未掲載ツイートを収集するモードで、URLを収集する時点でリツイートを除外する) |
||
11行目: | 11行目: | ||
"""Twitter自動収集スクリプト | """Twitter自動収集スクリプト | ||
ver4.1. | 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] = ' | tweet_url_prefix_default: Final[str] = '1754' | ||
"""Final[str]: ツイートURLの数字部分のうち、予め固定しておく部分。 | """Final[str]: ツイートURLの数字部分のうち、予め固定しておく部分。 | ||
156行目: | 156行目: | ||
""" | """ | ||
incremented_num_default: Final[int] = | 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_pairs (list[UrlTuple]): URLとその魚拓URLのペアのリスト。 | ||
accessor (AccessorHandler): アクセスハンドラ。 | accessor (AccessorHandler): アクセスハンドラ。 | ||
2,388行目: | 2,398行目: | ||
) | ) | ||
else: | else: | ||
logger. | logger.warn(url_pair.url + 'はリツイートなので飛ばすナリ。' | ||
'URLリスト収集の時点でフィルタできなかった、これはいけない。') | |||
table_builder.dump_file() | table_builder.dump_file() |