→コード: v2.1.6: archive.todayのtorインスタンスが生きているかのチェックとinvidiousのインスタンスリストに抜けがないよう修正
>Fet-Fe 編集の要約なし |
>Fet-Fe (→コード: v2.1.6: archive.todayのtorインスタンスが生きているかのチェックとinvidiousのインスタンスリストに抜けがないよう修正) |
||
6行目: | 6行目: | ||
''' | ''' | ||
ver2.1. | ver2.1.6 2022/10/9恒心 | ||
当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | 当コードは恒心停止してしまったhttps://rentry.co/7298gの降臨ショーツイート自動収集スクリプトの復刻改善版です | ||
65行目: | 65行目: | ||
##生きているのはhttps://github.com/zedeus/nitter/wiki/Instancesで確認 | ##生きているのはhttps://github.com/zedeus/nitter/wiki/Instancesで確認 | ||
##末尾にスラッシュ必須 | ##末尾にスラッシュ必須 | ||
NITTER_INSTANCE: Final[str] = 'http:// | NITTER_INSTANCE: Final[str] = 'http://a5xyidyppowvblric6k6nixgf2eqwnb7zzeaarj7slqbv7tb6ip5t3ad.onion/' | ||
##archive.todayの魚拓 | ##archive.todayの魚拓 | ||
145行目: | 145行目: | ||
self._check_slash() ##スラッシュが抜けてないかチェック | self._check_slash() ##スラッシュが抜けてないかチェック | ||
self._proxy_is_needed = self._check_tor_proxy_is_needed() ##Torが使えているかチェック | self._proxy_is_needed = self._check_tor_proxy_is_needed() ##Torが使えているかチェック | ||
self. | self._check_nitter_instance() ##インスタンスが死んでないかチェック | ||
self._check_archive_instance() | |||
##Invidiousのインスタンスリストの正規表現パターンを取得 | ##Invidiousのインスタンスリストの正規表現パターンを取得 | ||
invidious_url_tuple: Final[tuple[str]] = self._invidious_instances() | invidious_url_tuple: Final[tuple[str]] = self._invidious_instances() | ||
257行目: | 258行目: | ||
##接続を一回しか試さない_request_onceを使っているのは | ##接続を一回しか試さない_request_onceを使っているのは | ||
##激重インスタンスが指定されたとき試行回数増やして偶然成功してそのまま実行されるのを躱すため | ##激重インスタンスが指定されたとき試行回数増やして偶然成功してそのまま実行されるのを躱すため | ||
def | def _check_nitter_instance(self) -> None | NoReturn: | ||
print(" | print("Nitterのインスタンスチェック中ですを") | ||
try: | try: | ||
res: Final[Response] = self._request_once(self.NITTER_INSTANCE) ##リクエスト | res: Final[Response] = self._request_once(self.NITTER_INSTANCE) ##リクエスト | ||
266行目: | 267行目: | ||
print('インスタンスが死んでますを', file=sys.stderr) | print('インスタンスが死んでますを', file=sys.stderr) | ||
exit(1) | exit(1) | ||
print("Nitter OK") | |||
##archive.todayのTor用インスタンスが生きているかチェック | |||
def _check_archive_instance(self) -> None | NoReturn: | |||
print("archive.todayのTorインスタンスチェック中ですを") | |||
try: | |||
res: Final[Response] = self._request_once(self.ARCHIVE_TODAY) ##リクエスト | |||
res.raise_for_status() ##HTTPステータスコードが200番台以外でエラー発生 | |||
except requests.exceptions.RequestException as e: ##エラー発生時は終了 | |||
print(e, file=sys.stderr) | |||
print('インスタンスが死んでますを', file=sys.stderr) | |||
exit(1) | |||
print("archive.today OK") | |||
##Invidiousのインスタンスのタプルを取得 | ##Invidiousのインスタンスのタプルを取得 | ||
277行目: | 291行目: | ||
for instance_info in json.loads(invidious_json.text): | for instance_info in json.loads(invidious_json.text): | ||
instance_list.append(instance_info[0]) | instance_list.append(instance_info[0]) | ||
# よく使われているものはチェック | |||
if 'piped.kavin.rocks' not in instance_list: | |||
instance_list.append('piped.kavin.rocks') | |||
return tuple(instance_list) | return tuple(instance_list) | ||