「利用者:夜泣き/スクリプト」の版間の差分
ナビゲーションに移動
検索に移動
→コード: 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. | 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:// | 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 + 'にアクセス失敗ナリ。出力されるテキストにはそのまま記載されるナリ。') |