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

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.3.1
File Size Uploaded
trackhound-1.3.1.tar.gz 172.0 kB Details

Built distribution (wheel)

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

Total release size: 314.1 kB

Release files / trackhound-1.3.1.tar.gz

Download URL trackhound-1.3.1.tar.gz
Size 172.0 kB
Tags Source
SHA-256 checksum
How to use checksums
d40f0a9071c975ecfbe68bf5cae02803bd4fd0f9da7502fda0294cb3aaba3b07
BLAKE2b-256 checksum
How to use checksums
835e385a67a4bae282dcb45459248fe64c7350d9513de74487637e18f16667de
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 18, 2026.

Transparency log

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

Download URL trackhound-1.3.1-py3-none-any.whl
Size 142.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bab53cfb765d017ebc3daa6b32480ada071e19a9c87430e34fb926bb346bcd5d
BLAKE2b-256 checksum
How to use checksums
6f7a77191305f5b119f1bf0f7ddde4802b00b8b9a3870c6f2196bc4361be6d52
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 18, 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

1.4.0

2 release files

1.3.2

2 release files

This release

1.3.1 This release

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