🌱

えっちなサイトを作る(22)

2021/08/16に公開

引き続きえっちなゲームがプレイできちゃうサイトを作ろうと頑張ります。

色々調査などやりました🧐

pixivpyのOAuth対応について調査

pixivから画像を取得し、機械学習のDatasetを作成する際の補助として利用するpixivpyがあります。

https://github.com/upbit/pixivpy

今年初頭にpixivpyのpassword認証方式が使えなくなったようです。
pixivがOAuth対応したためaccessTokenの取得が必要になったようです。

代替手段は2つあるようです。

後者のSelenium方式でやってみます。

Seleniumを利用したpixivpyの動作確認

基本的には以下の記事を参考。

https://qiita.com/yuki_2020/items/759e639a4cecc0770758

前提

  • windows 10
  • Chrome
    • 設定->ChromeについてにChromeのバージョンが表示される
    • 92.XXX.XXXとか
  • ChromeDriver
  • powershell
  • pyehon3
    • windows storeよりインストール
    • powershellでpython3 -Vでversion表示されたらOK

pythonのライブラリインストール

  • selenium
    • pip install selenium
  • pixivpy
    • pip install pixivpy
  • requests
    • pip install requests

1.Seleniumの動作テスト

作業フォルダに以下のtest.pychromedriver.exeを置く

  • python3 ./test.py
test.py
import time
from selenium import webdriver

driver = webdriver.Chrome('./chromedriver.exe')
driver.get('http://www.google.com/xhtml')
time.sleep(5)
print(driver.title)

search_box = driver.find_element_by_name('q')
search_box.send_keys('ChromeDriver')
search_box.submit()
time.sleep(5)
print(driver.title)

driver.save_screenshot('search_results.png')

driver.quit()
  • print文によりpowershellにgoogleのページタイトルが表示されたらOK
    • おまけとしてキャプチャした画像search_results.pngが作成される。

2.リフレッシュトークンの取得

pixiv_auth.pyを以下から取得し、作業フォルダに配置。

https://gist.github.com/upbit/6edda27cb1644e94183291109b8a5fde

  • python3 pixivpy login
  • Chromeが立ち上がるので、ログイン
  • powershellにaccess_tokenとrefresh_tokenが表示される
  • refresh_tokenをメモしておく
    • expires_in: 3600なので1時間利用しないとダメになるっぽい
    • その場合はpython pixiv_auth.py refresh OLD_REFRESH_TOKEN

3.pixivpyのテスト

以下のpixivpy-test.pyでpixivpyの動作テスト。
メモしたリフレッシュトークンを記入しておく。

pixivpy-test.py
# ランキングの3位までの画像をdownloadするサンプル
import time
from pixivpy3 import *

api = AppPixivAPI()
# aapi.login("ここにユーザ名","ここにパスワード") ## 使えなくなった
api.auth(refresh_token="ここにリフレッシュトークン")
json_result = api.illust_ranking()
for illust in json_result.illusts[:3]:
    api.download(illust.image_urls.large)
    time.sleep(1)

ランキング1位~3位の画像を取得できる。

うまくいった。

その他

  • wsl2経由でwindows側のChromeをseleniumで操作できるらしいですが、ハマりたくないのでやりませんでした。
  • データ収集処理はwsl2側でやるべきか?
    • wsl2のネットワーク速度はwindowsでの速度とさほど変わらず
    • アノテーションツール利用時にGUIが必要なのでwindows側で組むのが良い
      • ファイルシステムをまたいだ参照すると、変更監視などが上手く行かないケースが有るのでGUI側のファイルシステムに合わせたほうがよさそう

終わりに

これで参考書籍のサンプルデータ収集ソフトを修正して、自分のデータセットが作れそうです。
次回無事にPartial Convolutionsの実装に入れたら良いなと思います。

Discussion