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.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.3.0
File Size Uploaded
trackhound-1.3.0.tar.gz 170.7 kB Details

Built distribution (wheel)

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

Total release size: 312.5 kB

Release files / trackhound-1.3.0.tar.gz

Download URL trackhound-1.3.0.tar.gz
Size 170.7 kB
Tags Source
SHA-256 checksum
How to use checksums
b8e074eb82837de573dc65c06b1c2ef87ac90742d569ee637556360e5f314311
BLAKE2b-256 checksum
How to use checksums
b077b811dcf470abc79769d4aacf36e2998f606b2af37bef216e6f796cbfaf6a
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.0-py3-none-any.whl

Download URL trackhound-1.3.0-py3-none-any.whl
Size 141.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ee7642e9361bf86855d99e672ba5eb7099750a1465cb7b6a604862d21afd3317
BLAKE2b-256 checksum
How to use checksums
7475c679e3c1adbaad599885e38d717693b4f7b29e55d8574bd039071f3d2031
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

1.3.1

2 release files

This release

1.3.0 This release

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