Note: zoomino.py is deprecated, since all JWT apps have been deactivated by ZOOM. You may find more information here.
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.
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.
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
List basic information for all users in the account by executing
zoomino.py list
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
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
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.
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
.
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).
Zoomino is licensed under the MIT license (see LICENSE).
Everything is provided as is and without warranty. Use at your own risk!