【ソースコード公開】PayPayStep(支払回数50回)をプログラムで実行させる

プログラム

2022年10月ワイモバイルでのお支払いではPayPayの支払い回数にカウントされなくなりました。

ぽち ぽち ぽち ぽち

あと35回…

なにしてるの?

ワイモバイルに100円ずつチャージしてるの

ヤフショのヘビーユーザーさんは毎月やっているはずです、この作業。

本当にこれ憂鬱な気分になりますよね。

わたしもこの単純作業大嫌いなのでPythonを使ってやらせてみました。

折角なのでソースコードを公開します。

ワイモバのページ仕様が変わったため2022年3月時点では動かなくなっています。

最新記事を参照してください。

この記事を読んで得するひと

  • PayPayStepの支払い回数をワイモバイルに支払いを使って50回にしたい
  • ワイモバイルユーザーである
  • Python勉強したい&実行環境がある
  • 楽したい

読まなくてもいいひと

  • Pythonがある程度できちゃう人
  • プログラムはさっぱりわからない
  • 難しい事はきらいである
  • 単純作業大好き

ソースコード

ChoromeDriverを使用しますので、公式サイトにて現在お使いのChoromeのバージョンに合うものをインストールしてください。

なんのことか全然わからない人は”Selenium Choromedriver”などで検索して調べてみましょう。

# Seleniumを使用
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

driver_path = 'ChoromeDriverをダウンロードしたディレクトリのPATHを入力してください'
options = Options()

url = 'https://www.ymobile.jp/'

# ChoromeDrive起動
def start_driver(url):
    driver = webdriver.Chrome(executable_path=driver_path, options=options)
    driver.get(url)
    print(url)
    driver.implicitly_wait(10)
    return driver

def login(driver, phone_num, password):
    # ご契約者さま(赤いボタン)
    driver.find_element_by_class_name('header-submenu-myymobile').click()
    driver.implicitly_wait(10)
    # ログインボタン
    driver.find_element_by_class_name('btn-l').click()
    driver.implicitly_wait(10)

    driver.find_element_by_name('telnum').send_keys(phone_num)
    driver.find_element_by_name('password').send_keys(password)
    # ログインボタン
    driver.find_element_by_class_name('inputBtnArrowR').click()

def repeat_paypay100_inputnum(driver, repeat_num):
    for num in range(int(repeat_num)):
        print(num)
        driver.find_element_by_xpath('//*[@id="info-price"]/div/div[1]/ul/li[5]/a').click()
        driver.implicitly_wait(10)

        driver.find_element_by_class_name('btn-01').click()
        driver.implicitly_wait(10)

        driver.find_element_by_name('hopeUseRemaining').send_keys('100')
        driver.find_element_by_id('nextBtn').click()
        driver.implicitly_wait(10)

        driver.find_element_by_class_name('btn-01').click()
        driver.implicitly_wait(10)
        
        driver.find_element_by_class_name('uni-btn-02').click()
        driver.implicitly_wait(10)

    print(f'{repeat_num}回分100円(合計{int(repeat_num) * 100}円分)チャージしました')    


def main():
    driver = start_driver(url)
    phone_num = input('Yモバイルの電話番号を入力してください')
    password = input('パスワードを入力してください')
    login(driver, phone_num, password)
    repeat_num = input("PayPayまとめて支払い100円を何回行いますか?")
    repeat_paypay100_inputnum(driver, repeat_num)
    driver.quit()


if __name__ == '__main__':
    main() 

ヘッドレスモード(ウィンドウを起動せずに実行する)を使用したい場合はこちらを追加してください。

options = Options()
# #---headlessで動かすために必要なオプション---
options.add_argument("--headless")
options.add_argument("--disable-gpu")
options.add_argument("--window-size=1280x1696")
options.add_argument("--disable-application-cache")
options.add_argument("--disable-infobars")
options.add_argument("--no-sandbox")
options.add_argument("--hide-scrollbars")
options.add_argument("--enable-logging")
options.add_argument("--log-level=0")
options.add_argument("--single-process")
options.add_argument("--ignore-certificate-errors")
options.add_argument("--homedir=/tmp")

やっていること

詳しい説明は省きますが、ほとんど

  • 要素を探し出す
  • 要素に対して命令を送る .click() , .send_keys()など

ということをやっております。

driver.find_element_by_name('hopeUseRemaining').send_keys('100')

これはPayPay支払い額の入力窓に「100」という文字を入力する命令です。

これをfor文によって、100円づつ任意の回数分繰り返し支払いを行います。

実行する

  1. inputにてログイン情報を入力
  2. 試行回数を入力

入力ウィンドウが出たらログイン情報を入力してください。

実行環境によりますがこんなウィンドウが出ます。

全て半角数字、半角英文字で入力してください。

このウィンドウでコピペ張り付けをしたい場合は右クリックすれば貼り付けができます。

繰り返したい回数を半角数字で入力します。

ご意見お待ちしてます

色々説明を省いたので不親切な記事になりましたが、もし参考になれば嬉しいです。

もし反響があれば追記することがあるかもしれません。

コメント

タイトルとURLをコピーしました