Skip to main content

Trackhound

Paste a link, get tagged music. Trackhound downloads albums, singles, playlists and single tracks by link from Spotify, Apple Music, Deezer, YouTube, SoundCloud, Last.fm and sites such as Bandcamp. A name works too: "Daft Punk - Discovery".

Titles, artists, track numbers, the year and the cover are read from the page behind the link, with no accounts or API keys. When the service streams the audio openly (YouTube, SoundCloud, Bandcamp), the track is taken from there; otherwise the same track is looked for on YouTube Music, SoundCloud and among YouTube videos. yt-dlp downloads it, and mutagen writes the tags and the cover art.

This package is the engine and the command line. Windows users who want the program with its window and everything bundled should take the installer from Releases instead.

Installing

pip install trackhound          # the engine and the `trackhound` command
pip install "trackhound[gui]"   # adds the window, started with `trackhound-gui`

ffmpeg and a JavaScript runtime (Deno, or Node.js 22+) have to be on PATH. yt-dlp needs the runtime to get audio from YouTube, and ffmpeg is needed for mp3, opus and ReplayGain. trackhound --check says what it found.

Command line

trackhound https://open.spotify.com/album/2noRn2Aes5aoNVsU6iWThc
trackhound "Daft Punk - Discovery" -f mp3 -o ~/Music
trackhound --dry-run https://www.deezer.com/playlist/908622995
trackhound --help

As a library

from pathlib import Path
from trackhound.engine import Downloader, Options, resolve

release = resolve("https://www.deezer.com/album/302127")
print(release.album.name, [track.title for track in release.tracks])

downloader = Downloader(Options(output_dir=Path("Music"), audio_format="m4a"))
report = downloader.download_link("https://www.deezer.com/album/302127")
print(report.summary())

The names importable from trackhound.engine are the public interface and keep working across minor versions; the modules behind it may change. Messages come in the system's language, Russian or English; set_language("en") fixes it. The engine writes to the trackhound logger and sets up no handlers of its own.

Licence

GPL-2.0-or-later. Use it for music you have the rights to, and respect copyright law and the terms of service of the services involved.

Metadata

Release files for trackhound 1.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for trackhound 1.4.0
File Size Uploaded
trackhound-1.4.0.tar.gz 188.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for trackhound 1.4.0
File Interpreter ABI Platform
trackhound-1.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 344.0 kB

Release files / trackhound-1.4.0.tar.gz

Download URL trackhound-1.4.0.tar.gz
Size 188.3 kB
Tags Source
SHA-256 checksum
How to use checksums
99cc3d7856a3a11516d67c572d5cc788d0f828c7d5fc54cbc68dd154c6452581
BLAKE2b-256 checksum
How to use checksums
dc8a9b1b19dc6f5587541febcebfe0abcf40ef70148e1f2f626239ef98aeee36
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release files / trackhound-1.4.0-py3-none-any.whl

Download URL trackhound-1.4.0-py3-none-any.whl
Size 155.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
455838e0f64a3cbe0d60b0701adbda2d745366ce08060bbce2bacd5e3bd1e970
BLAKE2b-256 checksum
How to use checksums
48c78d8295a77cdaa2f456bda989a39c2cc77edd9b752362f898bf9ae09c5d2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 19, 2026.

Transparency log

Release history Release notifications | RSS feed

2.1.0

2 release files

2.0.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

This release

1.4.0 This release

2 release files

1.3.2

2 release files

1.3.1

2 release files

1.3.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