Skip to main content

与 Zoom API v2 交互的实用程序

项目描述

缩放 API 助手

https://img.shields.io/pypi/v/zoom-api-helper.svg https://img.shields.io/pypi/pyversions/zoom-api-helper.svg https://github.com/rnag/zoom-api-helper/actions/workflows/dev.yml/badge.svg 文件状态 更新

与Zoom API v2交互的实用程序

  • 免费软件:麻省理工学院许可证

  • 文档:https ://zoom-api-helper.readthedocs.io 。

安装

Zoom API Helper 库在 PyPI上可用,并且可以使用pip安装:

$ pip install zoom-api-helper

您还需要创建一个服务器到服务器 OAuth 应用程序,如文档中所述

特征

快速开始

首先创建一个助手客户端 ( ZoomAPI ) 以与 Zoom API 交互:

>>> from zoom_api_helper import ZoomAPI
>>> zoom = ZoomAPI('<CLIENT ID>', '<CLIENT SECRET>',
...                # can also be specified via `ZOOM_ACCOUNT_ID` env variable
...                account_id='<ACCOUNT ID>')

通过ZoomAPI.list_users()检索用户列表:

>>> zoom.list_users()
{'page_count': 3, 'page_number': 1, 'page_size': 300, 'total_records': 700, 'users': [{'id': '-abc123', 'first_name': 'Jon', 'last_name': 'Doe', 'email': 'jdoe@email.org', 'timezone': 'America/New_York', ...}, ...]}

或者,每个 Zoom 用户的电子邮件用户 ID的映射:

>>> zoom.user_email_to_id(use_cache=True)
{'jdoe@email.org': '-abc123', 'dsimms@email2.org': '-xyz321', ...}

通过ZoomAPI.create_meeting()创建单独的会议:

>>> zoom.create_meeting(topic='My Awesome Meeting')
{'uuid': 'T9SwnVWzQB2dD1zFQ7PxFA==', 'id': 91894643201, 'host_id': '...', 'host_email': 'me@email.org', 'topic': 'My Awesome Meeting', 'type': 2, ...}

要以并发方式批量创建会议列表,请参阅下面的批量创建会议部分。

本地存储

该库使用本地存储来进行缓存,默认情况下位于~/.zoom/cache的用户主目录下 - 尽管可以通过CACHE_DIR环境变量自定义此位置。

包含缓存数据的文件名的格式类似于以下内容:

{{ Purpose }}_{{ Zoom Account ID }}_{{ Zoom Client ID }}.json

目前,帮助程序库使用本地文件缓存有两个目的:

  • 存储从OAuth 步骤检索到的访问令牌,以便只需要在~1 小时后刷新令牌。

  • 存储 Zoom 用户电子邮件到用户 ID 的缓存映射,因为通常 Zoom API 只需要用户 ID。

    • 否则,从 API 检索此映射有时会很昂贵,尤其是对于拥有大量用户 (1000+) 的 Zoom 帐户。

批量创建会议

为了批量创建会议——例如,如果您需要在短时间内创建 100 多个会议——使用ZoomAPIbulk_create_meetings() 方法。

这允许您传入包含要创建的会议的 Excel ( .xlsx ) 文件,或者直接传入包含会议信息的

例子

假设您有一个包含以下数据的 Excel 文件 ( meeting-info.xlsx ):

团队名字

缩放用户名

话题

会议日期

会议时间

持续时间小时

持续时间最短

会议网址

会议编号

密码

A-BC:TEST:样品组 1

主机1@电子邮件com

测试会议#1:只是一个例子

25 年 10 月 26 日

下午 3:30

1

30

A-BC:TEST:样品组 2

主机1@电子邮件com

测试会议#2:这是另一个

25 年 11 月 27 日

下午7时00

1

0

A-BC:TEST:样品组 3

主机2 @电子邮件com

测试会议#3:这是现在的最后一次

25 年 9 月 29 日

9:00 PM

1

15

然后,这是一个示例代码,可让您在 Zoom 帐户中批量创建指定的会议。

注意:根据需要替换下面的<CLIENT ID>等凭据。

from datetime import datetime

from zoom_api_helper import ZoomAPI
from zoom_api_helper.models import *


def main():
    zoom = ZoomAPI('<CLIENT ID>', '<CLIENT SECRET>', '<ACCOUNT ID>')

    # (optional) column header to keyword argument
    col_name_to_kwarg = {'Group Name': 'agenda',
                         'Zoom Username': 'host_email'}

    # (optional) predicate function to initially process the row data
    def process_row(row: 'RowType', dt_format='%Y-%m-%d %I:%M %p'):
        start_time = f"{row['Meeting Date'][:10]} {row['Meeting Time']}"

        row.update(
            start_time=datetime.strptime(start_time, dt_format),
            # Zoom expects the `duration` value in minutes.
            duration=int(row['Duration Hr']) * 60 + int(row['Duration Min']),
        )

        return True

    # (optional) function to update row(s) with the API response
    def update_row(row: 'RowType', resp: dict):
        row['Meeting URL'] = resp['join_url']
        row['Meeting ID'] = resp['id']
        row['Passcode'] = resp['password']

    # create meetings with dry run enabled.
    zoom.bulk_create_meetings(
        col_name_to_kwarg,
        excel_file='./meeting-info.xlsx',
        default_timezone='America/New_York',
        process_row=process_row,
        update_row=update_row,
        # comment out below line to actually create the meetings.
        dry_run=True,
    )


if __name__ == '__main__':
    main()

学分

这个包是用Cookiecutterrnag/cookiecutter-pypackage项目模板创建的。

历史

0.1.1 (2022-09-07)

  • 更新文档。

0.1.0 (2022-09-06)

  • PyPI 上的第一个版本。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

zoom-api-helper-0.1.1.tar.gz (21.8 kB 查看哈希)

已上传 source

内置分布

zoom_api_helper-0.1.1-py2.py3-none-any.whl (14.1 kB 查看哈希)

已上传 py2 py3