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

→‎コード: v2.1.6: archive.todayのtorインスタンスが生きているかのチェックとinvidiousのインスタンスリストに抜けがないよう修正
>Fet-Fe
編集の要約なし
>Fet-Fe
(→‎コード: v2.1.6: archive.todayのtorインスタンスが生きているかのチェックとinvidiousのインスタンスリストに抜けがないよう修正)
6行目: 6行目:


'''
'''
ver2.1.5 2022/9/24恒心
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://26oq3gioiwcmfojub37nz5gzbkdiqp7fue5kvye7d4txv4ny6fb4wwid.onion/'
   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._check_instance() ##インスタンスが死んでないかチェック
     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 _check_instance(self) -> None | NoReturn:
   def _check_nitter_instance(self) -> None | NoReturn:
     print("nitterのインスタンスチェック中ですを")
     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)


匿名利用者