Skip to content

Releases: fbialogrecki/dj-digger

dj-digger 1.2.0 — desktop preview for Windows and macOS

Choose a tag to compare

@fbialogrecki fbialogrecki released this 16 Sep 18:55

dj-digger 1.2.0 adds an optional desktop interface alongside the existing terminal app. Windows and Mac installers are available below; no Python or terminal commands are needed for these downloads.

Download the desktop preview

Computer Download
Windows 11, Intel/AMD 64-bit Windows installer
macOS 15+, Apple Silicon Apple Silicon DMG
macOS 15+, Intel Intel Mac DMG

Please read the installation guide before opening the installer. These are unsigned desktop previews from a free, open-source hobby project. Windows may flag an unrecognized publisher; macOS packages do not have Developer ID signing or Apple notarization. The guide explains the warnings and per-app approval where available. Keep your computer's security protections enabled.

What's new

  • Qt Quick desktop with English and Polish menus, light/dark themes, local folders, playlists, audio preview, downloads, BPM/key analysis and reviewed audio export.
  • Resizable, reorderable and hideable columns, a selection toolbar, clearer errors and persistent presentation settings.
  • More responsive playback and seeking, with waveform rendering independent of playback-position updates.
  • Improved manual download-gate sessions, legacy-library migration and Windows file-identity handling.
  • Audio playback included in the default Python installation.

Python / terminal users

The package is still dj-sc-digger on PyPI; the command is dj-digger. Update with the same package manager used for installation. The optional desktop entry point is dj-digger-gui, available with the gui extra. Source/Python installations need FFmpeg and ffprobe separately for local media operations.

Close all running copies before upgrading. Installers do not remove the application's separately stored library, settings or account data. Desktop updates remain manual.

Preview limitations

Automated tests cover startup, packaged media decoding and analysis, bundled browser startup and installer operations. They do not certify audible playback/device switching, screen-reader support or every high-DPI and keyboard/mouse interaction on physical computers. Existing provider limitations and unverified analysis accuracy still apply. No new live account or purchase tests were performed for this release.

See the changelog for details. Report problems with your OS version, downloaded filename and error message, without passwords or sign-in codes.

Verification

  • Local offline suite: 957 passed, 83 live/provider tests deselected.
  • Cross-platform CI: Python 3.12, 3.13 and 3.14 on Linux, macOS and Windows, including isolated package installation and legacy-name migration checks.
  • Desktop build and runtime checks: see the completed workflow for native installer results.

dj-digger Desktop Preview 3 — Windows

Pre-release

Choose a tag to compare

Windows desktop test installer built from commit 5cdc62367b855fe767a480e2ccbe217b53fea59f.

Download the .exe asset below and run it directly.

  • Download progress fills the entire track row, with the percentage in Status.
  • Playlist downloads and local-file copies use the playlist's folder, matching the TUI.
  • Closing one manual gate tab keeps other downloads and owned login popups running.
  • Includes the earlier legacy-database migration, Windows filesystem ID, and bundled audio fixes.

Validation: 945 local offline tests passed; cross-platform CI, GUI checks, frozen runtime decoding, and Windows installer lifecycle checks passed.

SHA-256: 35740338834b48396ecabad46ec307b2d0b0fba6301efbbd611796d525ab9407

dj-digger Desktop Preview 2 — macOS

Pre-release

Choose a tag to compare

Testowa wersja aplikacji dla macOS 15 lub nowszego. Instalacja bez Pythona i terminala: otwórz DMG i przeciągnij dj-digger do folderu Aplikacje.

  • Apple Silicon (M1, M2, M3, M4 i nowsze): pobierz plik z arm64 w nazwie.
  • Intel: pobierz plik z x86_64 w nazwie.
  • Typ procesora sprawdzisz w menu Apple → Ten Mac.

Paczki nie mają certyfikatu Developer ID ani notaryzacji Apple. Zawierają techniczne podpisy ad-hoc. Przy pierwszym uruchomieniu może być potrzebna zgoda dla tej aplikacji w Ustawienia systemowe → Prywatność i ochrona → Otwórz mimo to.

Obie paczki zawierają Python, Qt, FFmpeg/ffprobe, moduły audio i analizy oraz Chromium. Testy CI na macOS sprawdziły zamontowanie DMG, skopiowanie aplikacji, wysunięcie obrazu, integralność podpisów, zależności, start/zamknięcie, syntetyczny plik audio, analizę oraz przeglądarkę. Interakcja z Finderem/Gatekeeperem i fizyczne urządzenia audio pozostają do ręcznego sprawdzenia.

Pliki pochodzą bez zmian z udanego buildu CI, commit fe6c43278e4310601ea57072f1023be81a2f5e31. Dołączono sumy SHA256 i manifesty zależności. To wydanie testowe z brancha GUI; nie zmienia main ani wydania PyPI.

Instalator testowy Windows pozostaje dostępny osobno.

dj-digger Desktop Preview 1 — Windows

Pre-release

Choose a tag to compare

Testowy instalator dj-digger GUI dla Windows 11 x64.

Pobierz plik .exe z sekcji Assets i uruchom go. Instalator zawiera wymagane komponenty; Python i terminal nie są potrzebne.

Build instalatora: 991e535dd12d866ac01e8c2040e0c3513a1e9ff2. Zawiera poprawki kontrastu, układu małych okien, obsługi Play i komunikatów błędów. Przeszedł automatyczne testy instalacji, ponownej instalacji, uruchomienia i odinstalowania z zachowaniem danych na Windows.

To wydanie testowe bez podpisu cyfrowego. Windows może pokazać ostrzeżenie o nierozpoznanym wydawcy. Nie jest to wydanie stabilne ani publikacja na PyPI. Kod GUI pozostaje na branchu feat/qt-quick-windows, bez merge do main.

Plik .sha256 pozwala sprawdzić integralność instalatora; build-manifest.json opisuje jego pochodzenie i zależności. Commit wydania dodaje wyłącznie wyłączenie publikacji PyPI dla prerelease oraz odpowiedni zapis specyfikacji; sam instalator pochodzi z podanego wyżej, sprawdzonego buildu.

dj-sc-digger 1.1.0

Choose a tag to compare

@fbialogrecki fbialogrecki released this 09 Sep 10:11
9f8a420

Install the PyPI distribution dj-sc-digger; launch it with dj-digger.

Close the app before upgrading. If you use the old dj-soundcloud-digger distribution, uninstall it with the same package manager first, then install the new package. Keep the existing data and configuration directories.

uv tool uninstall dj-soundcloud-digger  # only if previously installed with uv
uv tool install 'dj-sc-digger[play,analyze]==1.1.0'
dj-digger --version

See the README for pip and pipx migration instructions. The Python module and CLI/data directory names remain unchanged.

Added

  • Local file explorer, paginated folder views, pinned directories and local playlists.
  • Local FFmpeg playback, independent waveform caching and BPM/key analysis with manual overrides.
  • Manufacturer-based deck profiles, verified complete-folder audio export and journaled replacement/recovery.
  • Public/owner-private SoundCloud profile playlist import with stable provider identity and partial-response protection.
  • Schema 2 migration with consistent SQLite backups and a CLI instance lock.
  • Distribution renamed to dj-sc-digger; GitHub repository renamed to dj-digger; module, CLI and data directories remain unchanged.
  • Private rotating diagnostic logs, an in-app log viewer and per-file analysis reports.
  • F4 view summaries and an isolated analysis benchmark with explicit reference coverage.

Improved

  • Responsive track columns and footer, tabbed settings, readable cart results, and export dialogs with always-visible confirmation/cancel actions.
  • Local BPM/key fields show their saved value and source without triggering reanalysis.
  • Explorer horizontal scrolling uses a thin thumb; waveform colors follow playback position without pulsing with amplitude.
  • Analysis subprocesses and owned FFmpeg processes are cleaned up on cancellation and failures.

Fixed

  • Late table-layout events no longer access removed widgets during application shutdown.
  • SoundCloud repost collection uses the current stream endpoint and rejects repeated pagination pages.
  • SoundCloud preview falls back to MP3 HLS when progressive MP3 is absent; account/region blocks, absent streams and unsupported formats have distinct diagnostics.
  • Browser launch failures are reported accurately, and automatic local scans no longer show access errors for folders the user did not explicitly open.

Limitations

  • BPM/key values are estimates; accuracy has not been established against a human-labelled DJ corpus. Deck compatibility is manufacturer-documented rather than hardware-tested.
  • Private SoundCloud playlist import has offline fixture coverage; live owner-private completeness has not been established.
  • MP3 HLS preview is limited to 50 MiB in memory. AAC/Opus HLS and encrypted streams are unsupported; SoundCloud availability restrictions still apply.

dj-soundcloud-digger 1.0.0

Choose a tag to compare

@fbialogrecki fbialogrecki released this 04 Sep 17:49
171f033

What's Changed

Full Changelog: v0.15.0...v1.0.0

v0.15.0 - Safer Bandcamp carts and Beatport playlists

Choose a tag to compare

@fbialogrecki fbialogrecki released this 28 Aug 14:48

Added

  • Beatport results can now be saved as a non-overwriting plain-text playlist,
    copied for a Soundiiz plain-text import, and handed to Beatport's official
    Soundiiz transfer page. Exact track URLs are preferred; release-page and
    blocked lookups fall back to artist/title matching.
  • Explicitly selecting both Bandcamp and Beatport now sends each eligible track
    to both workflows instead of treating Beatport only as Bandcamp's fallback.
  • Store-cart batches now have live progress, an editable review screen, grouped
    results, safe retry for failures known to precede a click, and Settings actions
    for checking, opening, or explicitly resetting the dedicated store session.
  • Cart diagnostics now record lifecycle phases, redacted navigation/status,
    per-track outcomes, browser HTTP/console signals, and aggregate counts in
    --log-file without recording URL queries, credentials, or raw console text.
  • Bandcamp moved-link recovery now uses its visible autocomplete, accepts only an
    exact canonical track, and inspects at most three returned album pages without
    entering the CAPTCHA-protected full search page.

Fixed

  • The purchase-review table now shrinks in short terminals instead of pushing
    its Continue button off-screen. A visible instruction and Enter shortcut
    make the intentional review pause distinct from a stalled batch.
  • Natural decoder EOF no longer escapes through miniaudio's CFFI callback as
    RuntimeError: generator raised StopIteration. Playback events are tagged by
    generation, so a late callback after seek or stop cannot advance the wrong row.
  • Bandcamp product discovery now tolerates its current split between public DOM,
    TralbumData, and structured metadata. It also dismisses the necessary-cookie
    footer, accepts an exact unique trailing title across artist aliases, and does
    not require an account login for a cookie-backed cart.
  • Bandcamp storefront homepages and undeclared name-your-price values no longer
    masquerade as global structure failures and stop the remaining queue. Current
    DOM identity/price now wins over stale ?action=download metadata, safe plain
    HTTP store links are upgraded after domain validation, and common //, quoted
    premiere, and feat. title forms can be matched exactly.
  • Beatport's production verification no longer loops in managed Chromium or
    aborts an unrelated Bandcamp batch when its server rejects Playwright.
  • Bandcamp cart verification now checks the post-click item count, opens the real
    side-cart control instead of the SVG sprite, inspects its current rows, and
    performs one final reload check. A still-unverified page stays open instead of
    disappearing, and no second add click is issued.
  • Bandcamp cart membership now requires a visible removable row with the exact
    canonical track, preventing hidden page data from marking the rest of a batch
    as already added. Flexible prices default to the verified minimum, remain
    editable with E, and fail before mutation if Bandcamp withdraws its price
    input.
  • Bandcamp storefront recovery now reaches the global autocomplete instead of
    reopening the same label homepage. Beatport release rows can use their track
    slug to preserve an exact mix or remix before the target page is revalidated.

Changed

  • Whole-list opening now follows the existing Shift convention: o opens the
    highlighted track and Shift+O opens all visible tracks. The local-file marker
    is a monochrome ▣ at the start of the first marker column, and the collapsed
    error banner occupies the full first row above the TUI.
  • Store work uses one persistent Chromium profile: preflight and Bandcamp
    mutation stay headless with two bounded pages, then the same profile is
    relaunched visibly only for the final Bandcamp cart.
  • Beatport public metadata is preflighted only to improve playlist accuracy.
    Managed login and cart mutation are no longer attempted; Settings now exposes
    only the Bandcamp store session. Exact numeric Beatport track URLs go straight
    to the transfer playlist without starting Chromium.
  • Product-checking progress now says that nothing is added until review, and an
    album-only Bandcamp track is reported explicitly rather than substituting a
    full album purchase.

v0.14.0 - Player controls and readable errors

Choose a tag to compare

@fbialogrecki fbialogrecki released this 25 Aug 23:43

Added

  • A three-row control strip under the waveform: previous / play-pause / next buttons, track title, clock, a click-and-drag volume slider, and a close button (ctrl+w). Play/pause there acts on the playing track rather than the cursor row.
  • --log-file PATH writes a timestamped log to a file with faulthandler enabled, and the TUI keeps logging when it is set. Textual draws the interface on stderr, so this is the only way to keep a log of a TUI session.

Fixed

  • Starting a track no longer opens its stream from the interface thread; a slow CDN used to freeze the whole app for up to thirty seconds.
  • Any exception out of a player operation becomes a player message instead of crashing the TUI, an audio device that refuses to start or stop is rebuilt on the next attempt, and TUI crashes are written to the log before the screen is torn down.

Changed

  • The error banner opens collapsed to a one-line summary with the error count, capped at 88 columns; click to read, click again to fold away.
  • The player bar is a row shorter and its waveform twice as tall (four rows, 32 levels); the playhead pulse no longer reads as flicker.
  • Transport buttons are bold text glyphs on translucent chips - no emoji, no theme-coloured background.
  • The crate sidebar heading is centred with a blank row under it.

v0.13.3 - Persistent store cart sessions

Choose a tag to compare

@fbialogrecki fbialogrecki released this 25 Aug 20:31

Fixed

  • Keep one dedicated Chromium session alive from manual login through cart preflight, confirmation, revalidation, and addition.
  • Create one browser tab per candidate track before navigation begins and reuse those tabs through the whole batch.
  • Open every required store login before execution waits, giving the user the full login window before the first cart mutation.

Changed

  • Complete the internal audit cleanup and route hypd.it links through the same Chromium fallback as hypeddit.com.
  • Remove the obsolete pre-0.9 data-file migration path; users upgrading from 0.8 or earlier should pass through a 0.9-0.13 release first.

v0.13.2 - Reliable local file tracking

Choose a tag to compare

@fbialogrecki fbialogrecki released this 25 Aug 13:38

Added

  • Adds a context-menu action to copy a matched file from another library folder into the current playlist folder.
  • Copies run in the background, preserve the source, avoid overwrites and finalize atomically.

Fixed

  • Removes deleted paths from the local-file cache and validates every cached match before exposing it.
  • Ties automatic got status to the exact backing file and clears it when that file disappears.
  • Preserves manually assigned got status independently from local-file provenance.
  • Reconciles legacy stale cache matches during the next scan.

Verification

  • 676 offline tests passed
  • Ruff passed
  • Wheel and source distribution built successfully

See CHANGELOG.md for the complete release notes.