現在マヨケーがダウンしています。避難所にはカクケーモリケーがあります。

利用者・トーク:夜泣き

提供:唐澤貴洋Wiki
2022年8月8日 (月) 16:42時点における>Fet-Feによる版 (→‎利用者:夜泣き/スクリプトについて)
ナビゲーションに移動 検索に移動

てすや

利用者:夜泣き/スクリプトについて

ファイル:Symbol opinion vote.svg 提案 - どうせrequestモジュールでpipが必要ならBeautifulSoupも入れてしまえば、HTMLから文字を抜き出す際にgrepやreを使うよりもすっきり書けると思います。貴職がどういうロジックにするつもりなのかまだわかりませんが--Fet-Fe (トーク) 2022年6月16日 (木) 23:26 (JST)

コメント - それは思ってました。標準のみか追加するかの2択しかないんで後者ならたぶん使うことになるでしょう。BeautifulSoupのほうは使ったこと無いってのがネックですがなんとかなるでしょう。--夜泣き (トーク) 2022年6月16日 (木) 23:31 (JST)
ファイル:Symbol rename vote.svg 返信 - 当職も利用者:Fet-Fe#恒心教徒の皆様へ:当Wikiのソースの魚拓取得をお手伝い下さいで少しだけ使ったので、よろしければ参考にして下さい。不慣れだったので効率の悪い書き方かもしれませんが--Fet-Fe (トーク) 2022年6月17日 (金) 00:33 (JST)
ファイル:Symbol rename vote.svg 返信 - 出会いに感謝。参考にさせてもらいました。関数アノテーションは知らなかっただけになんとも言えないですわ・・・--夜泣き (トーク) 2022年6月18日 (土) 21:04 (JST)

コメント - 出会いに感謝。すごく読みやすいです。取り敢えず思ったことを

  • テンプレート:Archiveではなくテンプレート:CallinShowLinkを使っていただけると嬉しいです
  • DoS攻撃になりかねないのでrequest_onetimesleep(1)を入れた方が良いと思います
  • 出力の魚拓がTor用のURLになっています
  • 返り値がNoneの可能性があるときは‎requests.models.Response | None([1])などとした方が良いです
  • 贅沢なことを言うとhttps://github.com/palewire/archiveis/blob/master/archiveis/api.pyみたいな感じで魚拓も自動で取れると理想的ですね 当職が前に試したときは何ページかリクエストすると弾かれてしまっていました あと玉葱だとどうなるかわかりません
  • あと当職はその書き方をしたことがないのでわからないのですが、doublesoupとかって必要ですか?soupにfindなどした結果にそのままさらにfindなどの処理をすることは多分可能だと思います

--Fet-Fe (トーク) 2022年6月20日 (月) 12:06 (JST)

ファイル:Symbol rename vote.svg 返信 - 出会いに感謝。徹夜で意識が薄れながらギリギリに作った感じなのでやっぱ不具合ありましたか。今も頭あまり回ってませんがぶっちゃけ貴職のほうがスクリプト能力嵯峨山なので言ってもらえた所は直していこうかと。
  • テンプレート:Archiveではなくテンプレート:CallinShowLink
    • 存在を失念しておりました。修正コスト安そうなのでバグ取りと同時に直してしまいます。
      • 直しました。
  • request_onetimesleep(1)を入れた方が良い
    • 失敗した時は長く待ってリトライさせるために失敗用と成功用で待ち時間分けて失敗した時はrequestメソッド内で5秒待ち成功した時はrequestメソッド呼び出した後に呼出側で必ず1秒待つようにしてるのでDOS攻撃は一応大丈夫です。request_onetimeで必ず1秒待って失敗したとき追加で4秒待たせればいいだけなので指摘されると確かにいいコードではないですね。
      • 直しました。
  • 出力の魚拓がTor用のURLになっています
    • 恐らくスクレイピングした場所がバグってるようです。当職無能頭唐澤眼球麻原につき気づきませんでした。
      • 直しました。
  • 返り値がNoneの可能性があるとき
    • これもなんとかします。
      • requests.models.Response | Noneの書き方だとエラーでした。代わりにOptional[requests.models.Response]になってます。
  • 魚拓も自動で取れる
    • 玉ねぎだと取得時に100%One more stepが出ますのでさすがにrecaptcha突破は無理です。生IPだとかあんま使われてないVPNなら出てこないときもありそうですがスクリプト回す人全員が全員そんな環境ではないし最初から諦めてました。別で魚拓取得するためだけのスクリプトを作って回せる人に回してもらう方が現実的かと。
  • soupにfindなどした結果にそのままさらにfindなどの処理をすることは多分可能
    • ガチなのですか?soupはBeautifulSoupオブジェクトでfind使って取得したのはTagオブジェクトなので無理だと思ってました。それに使ってる中で動かなかった記憶もありますが別の理由でエラーだったのかもしれないですしあとで試してみます。
      • 普通にいけました。貴職有能当職無能。

--夜泣き (トーク) 2022年6月20日 (月) 22:19 (JST)

追記しましたを--夜泣き (トーク) 2022年6月21日 (火) 23:16 (JST)

8月9日 v2.1.0

ツイートの画像を自動で取得するため、勝手ながら改造いたしました。

追加機能は以下の通りです

  • ツイートについている画像を自動でダウンロードし、MEDIA_DIRに入れておく
  • ツイートについている画像ファイル名をWiki記法に変換して本文に追加する
  • 引用リツイートの引用元URLを取得し、Archiveして本文に追加する
  • 最初にTorに接続できているかのチェックを追加
  • (推奨する訳ではありませんが)MacOSでの動作確認
    • brewでtorコマンドをインストールして実行しておいてからこのスクリプトを実行すれば、MacOSでもツイートが取得できます
    • MacOSから利用する場合、PySocksモジュールが必要になるのでpipで入れて下さい。またそれに合わせてPROXIESのプロキシをsocks5h://127.0.0.1:9050としていますが、環境によってはsocks5://127.0.0.1:9050でないと機能しないかもしれません

またこのスクリプトには現状バグがあります

https://twitter.com/CallinShow/status/1556339048138289152(魚拓)のように1ツイートに2枚以上の画像があると1枚しか処理しません

これに関してはまた修正しようと思います--Fet-Fe (トーク) 2022年8月9日 (火) 01:41 (JST)