Skip to content
This repository has been archived by the owner on Aug 25, 2024. It is now read-only.
/ zoomino Public archive

A simple Zoom management tool written in Python

License

Notifications You must be signed in to change notification settings

hlrs-tasc/zoomino

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 

Repository files navigation

Zoomino

Zoomino is a Python script to easily manage Zoom licenses in a joint Zoom account, where there are fewer licenses available than users. This works only with a Zoom account with at least one paid license and multiple users (free or paid). Additionally, basic meeting management is available.

Note: Zoomino is based on cooperative use. Since there are no authorization mechanisms beyond basic authentication, it relies on users not abusing their powers.

Update 2022-09-01: Due to a restriction in the Zoom API, it is not possible to retrieve a user's host key via the API anymore. See also here for more information.

Usage

After completing the installation instructions, just execute the zoomino.py script:

zoomino.py

If everything is set up correctly, it will by default show the status of your user, i.e., something like this:

name:     Michael Schlottke-Lakemper
email:    [email protected]
type:     Basic

There are two user types supported: Basic users with a free license and Licensed users with a paid license.

Zoomino provides several commands:

  • show: Show information about a single user (default: yourself).
  • list: List all users in the Zoom account.
  • assign: Assign a license to another user (default: to yourself).
  • unassign: Release the license currently assigned to a user (default: from yourself).
  • list-meetings: List all upcoming and recurring meetings.

Command show

Show basic information on a user, i.e., their name, email address, and license type. By default, information about oneself is shown (useful to check if one is is already assigned a paid license). Optionally, another user's information can be shown by giving their email as a second positional argument, e.g.,

zoomino.py show [email protected]

which gives you an output similar to the following:

name:     Walter White
email:    [email protected]
type:     Licensed

Command list

List basic information for all users in the account by executing

zoomino.py list

Command assign

Assign a paid license to a given user. By default, a license is assigned to yourself, i.e., the user identified by the email address in the credentials file. Optionally, you can also specify a user who should be assigned a license by providing their email address as a second positional argument, e.g.,

zoomino.py assign [email protected]

If no license is currently unassigned, you also need to specify from which user you want to transfer the license. For example, to transfer the license from [email protected] to [email protected], execute

zoomino.py --from [email protected] assign [email protected]

Upon success, the basic information of the user with the newly assigned license will be shown:

name:     Walter White
email:    [email protected]
type:     Licensed

Command unassign

Release the paid license currently assigned to a given user. By default, the license is released from yourself, i.e., the user identified by the email address in the credentials file. Optionally, you can also specify a user whose license should be released by providing their email address as a second positional argument, e.g.,

zoomino.py unassign [email protected]

Upon success, the basic information of the user with the removed license will be shown:

name:     Walter White
email:    [email protected]
type:     Basic

Command list-meetings

List basic information for all upcoming meetings in the account by executing

zoomino.py list-meetings

This will show the meetings for all users in ascending order, e.g.,

topic:    Test-Meeting
start:    2022-04-28T08:00:00Z
duration: 01:00h
user:     Walter White ([email protected], 123456, Basic)
url:      https://us06web.zoom.us/j/12345678901?pwd=12345678901234567890123456789012

topic:    Indefinitely
start:    Recurring meeting
duration: -
user:     Walter White ([email protected], 123456, Basic)
url:      https://us06web.zoom.us/j/23456789012?pwd=23456789012345678901234567890123

Meetings without starting time (e.g., recurring meetings without fixed time) will be listed last. The meeting information also contains information on the user who created the meeting, including their email address and current license type.

Installation

Zoomino requires at least Python 3.6 and uses the Zoomus and PyJWT packages, which can be installed via pip3 using

pip3 install zoomus PyJWT

On some systems, PyJWT is installed with an older version, even though Zoomus requires at least v2.0.0 to work correctly. Zoomino will try to detect an older version and warn you about it; in this case, you can upgrade your PyJWT package to the latest version by executing

pip3 install --upgrade PyJWT

Next, create a credentials file with the Zoom API key and secret, which you can obtain by creating a JWT Zoom app following the instructions here. Create a file named .zoomino_credentials.json in your home directory with the following content

{"API_KEY": "YOUR_API_KEY", "API_SECRET": "YOUR_API_SECRET", "USER_EMAIL": "YOUR_EMAIL_ADDRESS"}

where you replace YOUR_API_KEY and YOUR_API_SECRET with the actual key and secret, respectively, and YOUR_EMAIL_ADDRESS with the email address of your personal Zoom account.

Finally, get the zoomino.py file, e.g., by cloning this repository

git clone [email protected]:hlrs-tasc/zoomino.git

or use curl

curl -JLO https://github.com/hlrs-tasc/zoomino/raw/main/zoomino.py

and put the file somewhere on your PATH.

Authors

Zoomino was initiated by Michael Schlottke-Lakemper and is based on ideas in a previous implementation by Oleksandr Shcherbakov (both from HLRS, University of Stuttgart).

License

Zoomino is licensed under the MIT license (see LICENSE).

Disclaimer

Everything is provided as is and without warranty. Use at your own risk!

About

A simple Zoom management tool written in Python

Resources

License

Stars

Watchers

Forks

Languages