Python:会議時間をCrontabに設定し、自動Zoom出席する

事前にスケジュールがわかっているズーム会議の時間設定をcrontabに渡し、会議時間にZoomが立ち上がる設定コードをPythonで実装する。自動でZoom会議に入出するコードは、前記事のコードを使う。

crontabの起動には、subprocessを使い、pyautoguiで時間設定とコマンドを書き込む手順となる。
初めに、Meeting IDと会議時間、会議日程、Passcodeが必要な場合はPasscodeをmain.pyに渡す。main.pyは、会議日程をcrontab仕様に変換し、crontabに実行命令とともに書き込む。
実際にZoomを起動するコードを呼び出すのは、main_zoom.pyでMeeting IDと会議時間、Passcodeを引数とする。
main_zoom.pyの実装は以下のようになる。

if __name__ == '__main__':

    import PyZoom as PZ
    import argparse

    # Create an ArgumentParser object
    parser = argparse.ArgumentParser(description="Pass meeting details as arguments.")

    # Add arguments
    parser.add_argument("--MeetingID", required=True, help="Meeting ID (e.g., '880 1935 6472')")
    parser.add_argument("--Passcode", default=None, help="Passcode for the meeting (optional)")
    parser.add_argument("--MeetingTime", required=True, help="Time of the meeting (e.g., '0.5m')")
    args = parser.parse_args()

    print(args.MeetingID,args.MeetingTime,args.Passcode)
    PZ.AutoZoom(args.MeetingID,args.MeetingTime,Passcode=args.Passcode)

これの実行を時間指定とともに、crontabに書き込むmain.pyが以下のコードとなる。

def DateToCron(MeetingDateTime):
    import datetime
    MeetingDT = datetime.datetime.strptime(MeetingDateTime, '%d/%m/%y %H:%M')
    sunday_as_zero = (MeetingDT.weekday() + 1) % 7
    return f'{MeetingDT.minute} {MeetingDT.hour} {MeetingDT.day} {MeetingDT.month} {sunday_as_zero} '


if __name__ == '__main__':

    import argparse
    import pyautogui as pa
    import os
    import time
    import subprocess
    import PyZoom as PZ
    from pathlib import Path

    parser = argparse.ArgumentParser(description="Pass meeting details as arguments.")
    # Adding arguments
    parser.add_argument("--MeetingID", required=True, help="Meeting ID")
    parser.add_argument("--Passcode", default=None, help="Passcode for the meeting")
    parser.add_argument("--MeetingTime", required=True, help="Time of the meeting")
    parser.add_argument("--MeetingSchedule", required=True, help="Date and time of the meeting")
    args = parser.parse_args()
    strArgs=f"--MeetingID='{args.MeetingID}' --MeetingTime='{args.MeetingTime}' --Passcode='{args.Passcode}'"

    # Parse the arguments

    strCron=DateToCron(args.MeetingSchedule)
    home_directory = Path.home()
    strCron=strCron+f'source {home_directory}/.zshrc; cd {home_directory}/path/to/mainzoomfile; python {home_directory}/path/to/mainzoomfile/main_zoom.py  {strArgs} >> /tmp/test.txt 2>&1'
    
    subprocess.run(["open", "-a", "Terminal"])
    pa.write('crontab -e')
    pa.press('enter')

    time.sleep(2)
    pa.press('i')
    pa.write('PATH=/usr/sbin:/usr/bin:/bin:/usr/local/bin \nSHELL=/bin/zsh \n')
    pa.write(strCron)

    pa.press('esc')            # Confirm save (if asked)
    pa.write(':wq')   # Exit nano
    pa.press('enter')

実行は、

% python main.py --MeetingID='XXX XXXX XXXX' --Passcode='XXXXXX' --MeetingTime='30m' --MeetingSchedule='date/month/year H:M'

のように行う。これによって、crontabに書き込まれ、指定時間にChromeからZoomが起動される。

この記事が気に入ったらサポートをしてみませんか?