itu-sync
A small Python tool that replaces the ITU-Sync desktop app. It lets you pick an ITU meeting and work with its documents from the terminal:
- Sync meetings — refresh the list of meetings from ITU and browse it.
- Sync documents — download a meeting's documents (English) over FTPS, optionally restricted to one or more document types.
- List documents — show a meeting's documents without downloading them.
Every command works both interactively (guided pickers) and non-interactively (flags for scripting), including a --latest shortcut.
Very quick one-line usage:
# sync all contributions and TDs from latest SG12 meeting
uvx itu-sync sync --latest --group SG12 --type C,TD
Done! Read on to find out more.
Disclaimer
Reqiurements
- Python 3.10 or later
- An ITU TIES account
Installation
Install with uvx:
uvx itu-sync --help
Or install with pipx:
pipx install itu-sync
Or, with pip:
pip3 install --user itu-sync
We assume you will be using uvx, otherwise just run itu-sync directly without uvx after installing from pipx or pip.
Usage
The command provides four main subcommands:
itu-sync meetings # list meetings
itu-sync sync # sync documents of a meeting
itu-sync list # list documents of a meeting
itu-sync config # show current configuration or edit it
First time setup
The first time you run any command in a terminal, a short guided setup asks for each setting and saves your answers. Example:
$ itu-sync meetings
i Let's set up itu-sync. Use the arrow keys to choose options.
? Folder to store documents in: /Users/you/Documents/ITU
? Default sector: (Use arrow keys)
ITU
ITU-D
ITU-R
» ITU-T
? Default language to download:
» E — English
F — French
S — Spanish
A — Arabic
C — Chinese
R — Russian
? TIES account (username): yourname
? Store your TIES password now? (Y/n)
? TIES password: ********
i Checking your TIES credentials…
✓ Credentials verified.
✓ Setup complete. Change any setting later with 'itu-sync config'.
Examples
Let's say we want to sync the latest Study Group 12 meeting's Contributions and Temporary Documents (TDs). With the interactive guided setup, we can just run:
itu-sync sync --latest --group SG12 --type C,TD
That's all!
Check itu-sync sync --help for more options.
Some more examples!
List meetings (newest first):
itu-sync meetings --sector ITU-T --filter SG12
Sync the latest SG 12 meeting's Contributions and Temporary Documents:
itu-sync sync --sector ITU-T --group SG12 --latest --type C,TD
Sync the Temporary Documents of a specific meeting:
itu-sync sync --meeting 260609 --type TD
List a meeting's TDs without downloading:
itu-sync list --group SG12 --latest --type TD
Liaison statements are Temporary Documents marked LS/i (incoming) or LS/o (outgoing) in their title. The LS type selects just those, and you can narrow to one direction with LS/i or LS/o:
# all liaison statements of the latest SG12 meeting
itu-sync list --group SG12 --latest --type LS
# download only the incoming liaison statements
itu-sync sync --group SG12 --latest --type LS/i
A plain --type TD (or the default, which lists everything) still includes liaison statements; it just shows them marked LS/i or LS/o instead of TD.
Changing the config
Re-run the guided setup, or set any value individually:
itu-sync config --setup # run the guided setup again
itu-sync config --show # print the current settings
itu-sync config --user yourname # set the TIES account
itu-sync config --drive ~/Documents/ITU # set the storage folder
itu-sync config --sector ITU-T # set the default sector
itu-sync config --language E # set the default language
itu-sync config --password # prompt for and store the password
Running itu-sync config with no options shows the current settings (or, on a fresh install, launches the guided setup).
Non-secret settings live in ~/.config/itu-sync/config.json. The TIES password is stored in your operating system's keyring (Keychain on macOS), never in plaintext.
Non-interactive use
In scripts or CI there is no terminal to prompt at, so the guided setup is skipped. Supply what you need through flags and environment variables; each value is resolved in this order:
- TIES account: the stored config, then
ITU_TIES_USER, then--user. - TIES password: the keyring, then the
ITU_TIES_PASSWORDenvironment variable. - Storage folder: the stored config, or
--driveon any command.
When a required account or password is missing in non-interactive mode, the command exits with a clear error rather than hanging on a prompt.
How it works
Meeting catalogs are four public XML files fetched over HTTPS from https://www.itu.int/net/epub/ITU-Sync/ (no authentication). Documents are mirrored from confsynch.itu.int:990 over implicit FTPS, authenticated with your TIES account. By default the FTPS server certificate is not verified (to match the old app); pass --verify-cert to enforce verification.
By default only English documents are downloaded; set a different default language during setup or with itu-sync config --language, or override per run with itu-sync sync --lang fr. The language code is the last hyphen-delimited token of the filename (e.g. ...-E.docx). Index and metadata files (.xml, .js, .css, .png) are always kept.
Development
uv run ruff check
uv run ruff format --check .
uv run ty check
uv run pytest
License
MIT — see LICENSE.md.
Metadata
Release files for itu-sync 0.2.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| itu_sync-0.2.2.tar.gz | 28.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| itu_sync-0.2.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 64.1 kB
Release files / itu_sync-0.2.2.tar.gz
| Download URL | itu_sync-0.2.2.tar.gz |
|---|---|
| Size | 28.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
b7e34228213c004127e3e7810882c6c6fca9e8b7be2ab1756fe72abc0af6d76a
|
|
BLAKE2b-256 checksum How to use checksums |
a9fcbc423d2fa8466369a3933708246e6620e77ec0d7873160753a88af9b162a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|
Release files / itu_sync-0.2.2-py3-none-any.whl
| Download URL | itu_sync-0.2.2-py3-none-any.whl |
|---|---|
| Size | 35.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
426fb520e692eda01369be2b0dbc34d048d2cbabf88e1fde359e6e879e21f1e5
|
|
BLAKE2b-256 checksum How to use checksums |
bbe5243233e3cb9bbf0f1f13c73f7e194ae3f5f49b691636a284174f95566715
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.5
|