Skip to main content

Sync ITU meeting documents from the terminal over implicit FTPS

Project description

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

[!CAUTION]

This software is provided as-is as a general-purpose tool for interacting with the ITU document services. The author provides this tool solely as software code and has no control over how it is used, no relationship with ITU, and no obligation to enforce any third-party terms of service or licenses. You, the user, are solely and independently responsible for ensuring that your use of this software complies with all applicable laws, regulations, and third-party terms of service, including those of ITU. By using this software, you agree to hold the author harmless from any claims, damages, or liabilities arising from your use of the software or your interactions with ITU's services.

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

itu_sync-0.2.0.tar.gz (26.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

itu_sync-0.2.0-py3-none-any.whl (32.3 kB view details)

Uploaded Python 3

File details

Details for the file itu_sync-0.2.0.tar.gz.

File metadata

  • Download URL: itu_sync-0.2.0.tar.gz
  • Upload date:
  • Size: 26.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for itu_sync-0.2.0.tar.gz
Algorithm Hash digest
SHA256 1a2205ee94f519c302fee0bbf3c324695f825d2df137b2ecda8d3c3a33512b75
MD5 57968a8ff1077e0259b423399128a4e4
BLAKE2b-256 f8783a9e196b20d9c83129ea3bd29e0178b95bfffd987dd3d96779a24328d72c

See more details on using hashes here.

File details

Details for the file itu_sync-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: itu_sync-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 32.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for itu_sync-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a3f58f99c8018cd02eb48ffae2b059574c1e4fd5c883aad5425ba861edaca661
MD5 2b5d3f9891b896e49b2556eafdd0998d
BLAKE2b-256 2049325262858f402a0ac3b9805a6a878e26af0b958e56c6b21996b68d2ae5c0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page