ZoomAPIを使ってMeetingを作成したり削除したりする

ZoomAPIを使ってミーティングを作成したり、削除したりする記事はたくさんあるので、これらの記事を参考にPythonを使ってプログラミングをしてみた。今回参考にしたサイトはこちら。
[How to create a meeting with zoom API in Python?](https://www.geeksforgeeks.org/how-to-create-a-meeting-with-zoom-api-in-python/)
[Zoom Meeting API (2.0.0)](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods)
私、英語はほとんど読めなので、Google翻訳にお世話になっています。

# コーディング

上のサイトを参考に、下のようにコーディングを行った。

```python:zoom_meeting.py
import jwt
import requests
import json
from time import time


API_KEY = 'your API_KEY'
API_SEC = 'your API_SEC'


def generateToken():
    token = jwt.encode({'iss': API_KEY, 'exp': time() + 5000}, API_SEC, algorithm='HS256')

    return token


meetingdetails = {"topic": "The title of your zoom meeting",
                  "type": 2,
                  "start_time": "2022-06-14T10: 21: 57",
                  "duration": "45",
                  "timezone": "Asia/Tokyo",
                  "agenda": "test",

                  "recurrence": {"type": 1,
                                 "repeat_interval": 1
                                 },
                  "settings": {"host_video": "true",
                               "participant_video": "true",
                               "join_before_host": "False",
                               "mute_upon_entry": "False",
                               "watermark": "true",
                               "audio": "voip",
                               "auto_recording": "cloud"
                               }
                  }


def createMeeting():
    headers = {'authorization': 'Bearer ' + generateToken(),
               'content-type': 'application/json'}
    r = requests.post(
        f'https://api.zoom.us/v2/users/me/meetings',
        headers=headers, data=json.dumps(meetingdetails))

    print("\n creating zoom meeting ... \n")

    y = json.loads(r.text)
    join_URL = y["join_url"]
    meetingPassword = y["password"]

    print(
        f'\n here is your zoom meeting link {join_URL} and your \
        password: "{meetingPassword}"\n')


def deleteMeeting(meetingId):
    headers = {'authorization': 'Bearer ' + generateToken(),
               'content-type': 'application/json'}
    response = requests.delete(f'https://api.zoom.us/v2/meetings/{meetingId}',
                    headers=headers, data=json.dumps(meetingdetails))

    print("\n delete zoom meeting ... \n")


    if response.status_code == 204 :
        print('Successfully delete meeting.')
    else:
        print(f'Failed to delete. Code:{response.status_code}')


if __name__ == '__main__' :
    createMeeting()
    deleteMeeting()
```

# ちょっと解説

[How to create a meeting with zoom API in Python?](https://www.geeksforgeeks.org/how-to-create-a-meeting-with-zoom-api-in-python/)でのコーディングの中に、

```python:python3
return token.decode('utf-8')
```

があったが、実行すると私のターミナルではこのようにエラー表示された。

```zsh:zsh
AttributeError: 'str' object has no attribute 'decode'
```

なので、この部分については、私はこのように書き換えた。

```python:zoom_meeting.py
return token
```

次に、ミーティングを削除する部分で、

```python:zoom_meeting.py
if response.status_code == 204 :
```

の部分があるが、こちらは[Zoom Meeting API (2.0.0)](https://marketplace.zoom.us/docs/api-reference/zoom-api/methods)に書かれているレスポンスコードをそのまま指定している。もっといい方法があったら教えて欲しいです。

あとは、最後の部分、

```python:zoom_meeting.py
if __name__ == '__main__' :
    createMeeting()
    deleteMeeting()
```

はお好きにコメントアウトして実行して欲しい。

# コーディングしてみて

色々方法はあると思うけど、今回の方法ではZoomの複数アカウントを使用する際に利用できるかなと考えている。API_KEYなどの情報をdicｔ型とかにして複数アカウントで運用とか。
API独特のお作法？を覚えれば、あとはそんなに難しくないのかなと今回作ってみて思った。

今後も色々つくってみたい。