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

→‎コード: v2.1.8 archive.phにリクエストするとき、魚拓対象のurlに含まれる"="にはURIエンコードすべきものとしないものとがあるので、判定ロジックを追加
>Fet-Fe
(→‎コード: v2.1.7 急に画像が取れなくなったので仮の対応策)
>Fet-Fe
(→‎コード: v2.1.8 archive.phにリクエストするとき、魚拓対象のurlに含まれる"="にはURIエンコードすべきものとしないものとがあるので、判定ロジックを追加)
6行目: 6行目:


'''
'''
ver2.1.7 2022/10/28恒心
ver2.1.8 2022/11/17恒心


当コードは恒心停止してしまった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://a5xyidyppowvblric6k6nixgf2eqwnb7zzeaarj7slqbv7tb6ip5t3ad.onion/'
   NITTER_INSTANCE: Final[str] = 'http://nitter7bryz3jv7e3uekphigvmoyoem4al3fynerxkj22dmoxoq553qd.onion/'


   ##archive.todayの魚拓
   ##archive.todayの魚拓
542行目: 542行目:
   ##URLから魚拓返す
   ##URLから魚拓返す
   def _archive(self, url: Final[str]) -> str:
   def _archive(self, url: Final[str]) -> str:
     archive_url: str = urljoin(self.ARCHIVE_TODAY_STANDARD, quote(unquote(url), safe='&=+?%')) ##wikiに載せるとき用URLで失敗するとこのままhttps://archive.ph/https%3A%2F%2Fxxxxxxxxの形で返される
    def encode_query_value_equals(url: str) -> str:
     res: Final[Response | None] = self._request(urljoin(self.ARCHIVE_TODAY, quote(unquote(url), safe='&=+?%'))) ##アクセス用URL使って結果を取得
      query_found = False
      in_query_value = False
      i = 0
      for c in url:
        if c == '?':
          query_found = True
        elif query_found and (not in_query_value) and c == '=':
          in_query_value = True
        elif query_found and in_query_value and c == '=':
          url = url[:i] + '%3D' + url[i+1:]
          i += 2
        elif query_found and in_query_value and c == '&':
          in_query_value = False
        i += 1
      return url
 
     archive_url: str = urljoin(self.ARCHIVE_TODAY_STANDARD, encode_query_value_equals(quote(unquote(url), safe='&=+?%'))) ##wikiに載せるとき用URLで失敗するとこのままhttps://archive.ph/https%3A%2F%2Fxxxxxxxxの形で返される
     res: Final[Response | None] = self._request(urljoin(self.ARCHIVE_TODAY, encode_query_value_equals(quote(unquote(url), safe='&=+?%')))) ##アクセス用URL使って結果を取得
     if res is None : ##魚拓接続失敗時処理
     if res is None : ##魚拓接続失敗時処理
       print(archive_url + 'にアクセス失敗ナリ。出力されるテキストにはそのまま記載されるナリ。')
       print(archive_url + 'にアクセス失敗ナリ。出力されるテキストにはそのまま記載されるナリ。')
匿名利用者