Skip to main content

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_PASSWORD environment variable.
  • Storage folder: the stored config, or --drive on 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)

Source distribution for itu-sync 0.2.2
File Size Uploaded
itu_sync-0.2.2.tar.gz 28.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for itu-sync 0.2.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.2.2 This release

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page