週に数回connpassのイベントを作るPyCon JPスタッフは、Heliumを使って自動化しました

週に数回connpassのイベントを作るPyCon JPスタッフは、Heliumを使って自動化しました

Event

Python Charity Talks in Japan

Presented

2021/09/11 nikkie

お前、誰よ

  • Python大好き にっきー @ftnext / @ftnext

  • PyCon JP 2021 座長🇨🇭

  • アニメも大好き。最近好きな挨拶「ういっす✌️」🐙

お前、誰よ( @skip

週に数回connpassのイベントを作る PyCon JP スタッフは、Heliumを使って自動化しました

import PythonConference as PyCon

Pythonについてのカンファレンス(国際会議)

10/15(金), 16(土) 開催です!

PyCon JP 2021 チケット発売中 !🎫

PyCon JP 2021では現在( @skip

週に数回 connpass のイベントを作るPyCon JPスタッフは、Heliumを使って自動化しました

いつもお世話になっております🙇‍♂️

今日申し込んだ方は利用済み✅

PyCon JP スタッフとconnpass

スタッフmtgの参加者管理に利用

PyCon JP スタッフナレッジベース connpassの項 より

スタッフmtgの例

週に数回 connpassのイベントを作るPyCon JPスタッフは、Heliumを使って自動化しました

nikkieのconnpassカレンダー

../_images/202109_nikkie_connpass_calendar_August.png

週に2つはPyCon JP 2021ロゴ🐍がありますね

この機に集計:半年間、週2回以上

週に数回connpassのイベントを作るPyCon JPスタッフは、 Helium を使って自動化しました

Helium

こんなに簡単です🍰


from helium import *
start_chrome("google.com")  # 1. Chrome立ち上げ、「helium」についてGoogle検索
write("helium selenium github")
press(ENTER)
click("mherrmann/helium")  # 検索結果の中からクリック
go_to("github.com/login")  # 2. 別の例:GitHubにログイン
write("username", into="Username")
write("password", into="Password")
click("Sign in")
kill_browser()  # Chrome終了

https://github.com/mherrmann/selenium-python-helium/blob/master/docs/cheatsheet.md

週に数回connpassのイベントを作るPyCon JPスタッフは、Heliumを使って 自動化しました

単調な作業の繰り返し😫

  • ブラウザのシークレットウィンドウ立ち上げ

  • スタッフ共通アカウントを確認し、ログイン(👈これが毎回面倒でした)

  • 既存のイベントの「コピーを作成」

デモの時間です! 🤖「見てもらおうか」

connpassのイベント作成を自動化🙌

  1. スタッフ共通アカウントでconnpassにログイン

  2. 指定した既存のイベントの「コピーを作成」押下(確認ポップアップを出す)

copy_existing_event.py

まとめ🌯:週に数回connpassのイベントを作るPyCon JPスタッフは、Heliumを使って自動化しました

PyCon JP 2021 チケットお願いします🐦🍕🙏

https://pyconjp.connpass.com/event/221241/

週2くらいでconnpassイベントを作る方へ

pycharity の後は pyconjp で!

その後に pycon_shizupyconk もありますね😊

🎫🙏🐦🍕

ご清聴ありがとうございました

Appendix が続きます(よろしければどうぞ!)

Appendix

  • connpass-ops-playbook

  • Heliumチートシート

  • PyCon JP 2021スタッフが開催したイベントの集計

  • Future Works

  • LTへのフィードバック

connpass-ops-playbook

この書き方、かっこよくないですか?😎


from connpass_ops_playbook.decorators import logged_in, using_firefox
from connpass_ops_playbook.plays import copy_existing_event


@using_firefox
@logged_in
def show_copy_popup(url):
    copy_existing_event(url, human_confirms=True)

copy_existing_event.py

補足:コピーの確認ポップアップ

  • ポップアップ操作も自動化できます

  • デモが確認ポップアップを出すまでだったのは、LT練習で不要なイベントを作らないようにするためです

  • デモのスクリプトをVSCodeのUIで見られるリンク (実装の詳細は connpass_ops_playbook 以下をどうぞ)

Heliumチートシート

  • 「こんなに簡単です」スライドのコードも チートシート から

  • できる操作と書き方がつかめる ので、一読をオススメします!

  • 「python helium」で検索すると、日本語の情報も見つかるようになってきました

PyCon JP 2021スタッフが開催したイベントの集計

集計ソースコード

  • samplecode/pycharity

  • ダウンロードまたはcloneし、仮想環境を有効にしてから make all で動くと思います

robots.txtを守って楽しくスクレイピング!

Future Works

  • 現在は人が定期的に実行している➡️ 自動 で定期実行

  • 他のスタッフも使えるようにしたい( Slack opsが理想🌟)

LTへのフィードバック

LT中にZoomでいただいたコメントに回答します

  • ログインを待つ制御の実装

ログインを待つ制御の実装


click("ログインする")
# ログインをクリックした後、ダッシュボードのテキストが見つかるまで待ちます
wait_until(Text("あなたのイベント").exists)

補足:ログインを待つ制御の実装

  • ログインに使うアカウント情報(メールアドレスとパスワード)

  • それぞれ 環境変数 で渡しています

EOF