Skip to main content

A download manager for USDB songs.

Project description

USDB Syncer

PyPI Poetry Ruff License: MIT Release tox

USDB Syncer is an app to download and synchronize UltraStar songs hosted on USDB. The project extensively uses the #VIDEO tag to automatically retrieve the resources (audio, video, images, etc...) to make the UltraStar song complete. Once a song is downloaded it can be synchronized (new notes, audio, video, images...) by redownloading the song. If a resource didn't change it's skipped.

Installation

There are three ways to run USDB Syncer:

  1. To run from source, see Development.
  2. Use your favourite package manager to install the Python package, e.g. pipx: pipx install usdb_syncer
  3. We provide ready-to-run executables for all major operating systems.

[!IMPORTANT]
Linux users should check Linux Compatibility as additional packages might be required.

Development

USDB Syncer is written in Python, and uses Poetry to manage its dependencies. The following explains how to set up a development environment.

Prerequisites

Project Setup

Clone the project:

git clone https://github.com/bohning/usdb_syncer.git
cd usdb_syncer

Now make sure the Python 3.12 environment you installed Poetry to is activated and run:

poetry install

Run usdb_syncer

The package has a defined entry point for the GUI. Simply type in poetry run usdb_syncer in your terminal.

Run tests

tox makes it easy to run the full CI pipeline on your local machine, i.e., if the pipeline passes on your machine there is a good chance it will also pass on the build server.

Run poetry run tox to execute the test pipeline. The tox pipelines are configured in the tox.ini file. Configurations for specific tools in the pipeline are maintained in the pyproject.toml file. Tox is configured to create its own virtual environments, install test dependencies and the package you are developing, and run all tests. If you changed the test requirements or want to perform a clean run for some reason, you can run poetry run tox -r to recreate tox's virtual environment.

The following tools are part of the test pipeline:

  • mypy: Statically checks your type hints.

  • ruff: A linter and code formatter.

  • pytest: Provides a framework for functional unit tests.

  • unittest: A built-in objective unittest framework with extensive support for mocking.

If you don’t want to run the whole test pipeline, you can also use single commands from the pipeline, e.g., poetry run pytest. The tools will automatically pick up the correct configuration from the pyproject.toml file.

Versioning

USDB Syncer uses semantic versioning (semver) as versioning scheme. However, since USDB Syncer is not a library/API but a user-facing application, we use MAJOR, MINOR and PATCH versions according to the following scheme:

  • MAJOR version increments mean a breaking change for the end user, be it the need to install additional (3rd party) tools or changes that make it necessary to make changes to the already downloaded songs.
  • MINOR version increments only involve adding backward compatible features.
  • PATCH version increments bring bugfixes.

We will try to avoid MAJOR version increments whenever possible, but since the project is still in the startup phase, they cannot be completely ruled out.

Addons

USDB Syncer supports simple addons. Consult addons/README.md for detailed information.

Support

Troubleshooting

  • The keyring package auto-detects an appropriate installed keyring backend (see PyPI - keyring). Thus may require following additional package if no backend can be detected, see #136

    apt install gnome-keyring
    

    If using KDE, a Wallet will have to be activated in the system settings.

  • One user using KDE Plasma experiencing an issue with the menu bar solved it by forcing XWayland instead of Wayland being used: env WAYLAND_DISPLAY=.

Linux Compatibility

Required packages

The bundles contain all necessary dependencies with the exception of some hardware-specific packages:

apt install -y libportaudio2

More packages are required when running from source or the official Python package, mostly for Qt:

apt install -y libgstreamer-gl1.0-0 libxcb-glx0 libxcb-icccm4 libxcb-image0 libxcb-keysyms1 libxcb-randr0 libxcb-render-util0 libxcb-render0 libxcb-shape0 libxcb-shm0 libxcb-sync1 libxcb-util1 libxcb-xfixes0 libxcb1 libxkbcommon-dev libxkbcommon-x11-0 libxcb-cursor0 libva-dev libva-drm2 libva-x11-2 libportaudio2

If this doesn't help, you might also check:

Binaries

Linux bundles are generated on AlmaLinux 9. They should be compatible with any modern distribution. If not, please open an issue.

The only known requirement for the binary is glibc >= 2.34. The current glibc version can be checked with:

ldd --version

Support for the following distributions has been manually confirmed as of March 2025:

  • Ubuntu 22.04 and 24.04
  • Debian 12
  • Manjaro 24.2
  • Fedora 41

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

usdb_syncer-0.18.0.tar.gz (3.2 MB view details)

Uploaded Source

Built Distribution

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

usdb_syncer-0.18.0-py3-none-any.whl (3.4 MB view details)

Uploaded Python 3

File details

Details for the file usdb_syncer-0.18.0.tar.gz.

File metadata

  • Download URL: usdb_syncer-0.18.0.tar.gz
  • Upload date:
  • Size: 3.2 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for usdb_syncer-0.18.0.tar.gz
Algorithm Hash digest
SHA256 10407d27e06e746b4e16ed96105a9d1f4874a5896b18ac837e895d46ddd0bac5
MD5 dca064398bb97e86d6a595cdc789b97f
BLAKE2b-256 56287159702bd18576128922ccdf527a96ea8b0c5f2f7e4d0f48c8cfe7d8a3b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for usdb_syncer-0.18.0.tar.gz:

Publisher: release.yaml on bohning/usdb_syncer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file usdb_syncer-0.18.0-py3-none-any.whl.

File metadata

  • Download URL: usdb_syncer-0.18.0-py3-none-any.whl
  • Upload date:
  • Size: 3.4 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for usdb_syncer-0.18.0-py3-none-any.whl
Algorithm Hash digest
SHA256 47a2efe95267b0b8c247bc9f71fb23d73413c6cc7a6e63aab439b11c0d16d3c7
MD5 5116400320273165905f1a68cf045afb
BLAKE2b-256 6f221206f1571dd08000f162ee8c7deb88e35e190b0e94fd8773e72876978e38

See more details on using hashes here.

Provenance

The following attestation bundles were made for usdb_syncer-0.18.0-py3-none-any.whl:

Publisher: release.yaml on bohning/usdb_syncer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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