[PR #3] [MERGED] Playlist/song selection UX + Docker + startup automation #4

Closed
opened 2026-02-28 15:19:04 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/Ssenseii/harmoni/pull/3
Author: @TheRealAlexV
Created: 12/13/2025
Status: Merged
Merged: 12/13/2025
Merged by: @Ssenseii

Base: mainHead: TRAV_Rely_on_Exportify_as_primary_source_v1


📝 Commits (10+)

  • 1d5a2cc feat(input): allow Exportify CSVs as primary track input source
  • 785fe24 feat(start): automate environment setup and app launch
  • b6fe8e1 feat(downloads): improve playlist selection experience
  • e6d39a4 feat(downloads): add interactive song selection for playlist downloads
  • 4f4fdf4 test(song-selection): remove feature test runner
  • 7da6daa docs(readme): simplify Exportify usage and add start script examples
  • bdc1e9a feat(docker): add Docker support for containerized deployment
  • 88223a7 chore(data): remove unused electro data file
  • 2ef5790 chore(config): remove csv primary source configuration
  • b46170c chore(config): remove csv primary source config options

📊 Changes

20 files changed (+2235 additions, -449 deletions)

View changed files

.dockerignore (+60 -0)
📝 .gitignore (+4 -1)
Dockerfile (+41 -0)
📝 config.json (+3 -0)
📝 config.py (+80 -27)
docker-compose.yml (+28 -0)
📝 docs/README.md (+16 -1)
📝 docs/menus.md (+33 -7)
📝 docs/utils.md (+24 -24)
📝 downloader/base_downloader.py (+92 -10)
📝 downloader/metadata.py (+893 -35)
📝 main.py (+15 -4)
📝 managers/schedule_manager.py (+4 -21)
📝 managers/sync_manager.py (+118 -107)
📝 menus/downloads_menu.py (+203 -57)
menus/song_selection_menu.py (+83 -0)
📝 readme.md (+147 -19)
start.sh (+25 -0)
📝 utils/loaders.py (+255 -20)
📝 utils/track_checker.py (+111 -116)

📄 Description

Playlist/song selection UX + Docker + startup automation

Overview

This PR improves the primary download workflow by adding better playlist + per-song selection UX, automating local environment startup, and documenting/packaging the app for Docker-based use.

Branch: TRAV_Rely_on_Exportify_as_primary_source_v1

What Changed

2) Download UX: playlist selection + per-playlist song selection

  • Improved playlist selection experience (more usable selection flows and guidance).
  • Added interactive per-playlist song selection so users can choose specific tracks before downloading (see select_songs_for_playlist()).
  • Integrates into download menu routing (see downloads_menu.py).

3) Startup automation

  • Automated environment setup and launch so a missing venv/setup is handled automatically (see start.sh).

4) Docker support

5) Docs + cleanup

  • Simplified Exportify usage docs and added start-script examples (see readme.md).
  • Removed the song-selection feature test runner as part of cleanup (commit: 4f4fdf4).

Testing

Notes

  • This PR is focused on workflow/UX improvements and packaging. Runtime download behavior still depends on system tools (yt-dlp, ffmpeg) as described in docs.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Ssenseii/harmoni/pull/3 **Author:** [@TheRealAlexV](https://github.com/TheRealAlexV) **Created:** 12/13/2025 **Status:** ✅ Merged **Merged:** 12/13/2025 **Merged by:** [@Ssenseii](https://github.com/Ssenseii) **Base:** `main` ← **Head:** `TRAV_Rely_on_Exportify_as_primary_source_v1` --- ### 📝 Commits (10+) - [`1d5a2cc`](https://github.com/Ssenseii/harmoni/commit/1d5a2ccb61fe9e1afba7f612d34e1403f143f6b1) feat(input): allow Exportify CSVs as primary track input source - [`785fe24`](https://github.com/Ssenseii/harmoni/commit/785fe241859d459a869a2b4ff90f2aac44f904b3) feat(start): automate environment setup and app launch - [`b6fe8e1`](https://github.com/Ssenseii/harmoni/commit/b6fe8e1a25afa3a8f15b727b6451dcf366f05fa3) feat(downloads): improve playlist selection experience - [`e6d39a4`](https://github.com/Ssenseii/harmoni/commit/e6d39a44f1ded9d8676f2969b31d1a2c7450c2bf) feat(downloads): add interactive song selection for playlist downloads - [`4f4fdf4`](https://github.com/Ssenseii/harmoni/commit/4f4fdf4024a3fa10df21a7efaf0eecaab7ec2e1f) test(song-selection): remove feature test runner - [`7da6daa`](https://github.com/Ssenseii/harmoni/commit/7da6daa31dfba5b89475eca155428020321709bf) docs(readme): simplify Exportify usage and add start script examples - [`bdc1e9a`](https://github.com/Ssenseii/harmoni/commit/bdc1e9a7104b018b2369631a0e7eb0f554a1da83) feat(docker): add Docker support for containerized deployment - [`88223a7`](https://github.com/Ssenseii/harmoni/commit/88223a76e7a48f0ec9a6e6bf58d5735cba4f82b8) chore(data): remove unused electro data file - [`2ef5790`](https://github.com/Ssenseii/harmoni/commit/2ef57903b4191b43af12b9244f0a4459d15db10c) chore(config): remove csv primary source configuration - [`b46170c`](https://github.com/Ssenseii/harmoni/commit/b46170c37bc55e9de83c93f50857cab2b4f1a976) chore(config): remove csv primary source config options ### 📊 Changes **20 files changed** (+2235 additions, -449 deletions) <details> <summary>View changed files</summary> ➕ `.dockerignore` (+60 -0) 📝 `.gitignore` (+4 -1) ➕ `Dockerfile` (+41 -0) 📝 `config.json` (+3 -0) 📝 `config.py` (+80 -27) ➕ `docker-compose.yml` (+28 -0) 📝 `docs/README.md` (+16 -1) 📝 `docs/menus.md` (+33 -7) 📝 `docs/utils.md` (+24 -24) 📝 `downloader/base_downloader.py` (+92 -10) 📝 `downloader/metadata.py` (+893 -35) 📝 `main.py` (+15 -4) 📝 `managers/schedule_manager.py` (+4 -21) 📝 `managers/sync_manager.py` (+118 -107) 📝 `menus/downloads_menu.py` (+203 -57) ➕ `menus/song_selection_menu.py` (+83 -0) 📝 `readme.md` (+147 -19) ➕ `start.sh` (+25 -0) 📝 `utils/loaders.py` (+255 -20) 📝 `utils/track_checker.py` (+111 -116) </details> ### 📄 Description ## Playlist/song selection UX + Docker + startup automation ## Overview This PR improves the primary download workflow by adding better playlist + per-song selection UX, automating local environment startup, and documenting/packaging the app for Docker-based use. Branch: `TRAV_Rely_on_Exportify_as_primary_source_v1` ## What Changed - Centralized/leveraged source detection and track loading logic (see [`load_primary_tracks()`](spotify-yt-dlp-downloader/utils/loaders.py:70)). ### 2) Download UX: playlist selection + per-playlist song selection - Improved playlist selection experience (more usable selection flows and guidance). - Added interactive per-playlist song selection so users can choose specific tracks before downloading (see [`select_songs_for_playlist()`](spotify-yt-dlp-downloader/menus/song_selection_menu.py:1)). - Integrates into download menu routing (see [`downloads_menu.py`](spotify-yt-dlp-downloader/menus/downloads_menu.py:1)). ### 3) Startup automation - Automated environment setup and launch so a missing venv/setup is handled automatically (see [`start.sh`](spotify-yt-dlp-downloader/start.sh:1)). ### 4) Docker support - Added containerized deployment support: - [`Dockerfile`](spotify-yt-dlp-downloader/Dockerfile:1) - [`docker-compose.yml`](spotify-yt-dlp-downloader/docker-compose.yml:1) - Ignore rules: [`.dockerignore`](spotify-yt-dlp-downloader/.dockerignore:1) ### 5) Docs + cleanup - Simplified Exportify usage docs and added start-script examples (see [`readme.md`](spotify-yt-dlp-downloader/readme.md:1)). - Removed the song-selection feature test runner as part of cleanup (commit: `4f4fdf4`). ## Testing - Manual CLI smoke test: - Exportify CSVs load correctly through the primary source flow ([`load_primary_tracks()`](spotify-yt-dlp-downloader/utils/loaders.py:70)). - Playlist → song selection UI works as expected ([`select_songs_for_playlist()`](spotify-yt-dlp-downloader/menus/song_selection_menu.py:1)). - Startup script successfully creates/uses venv and launches ([`start.sh`](spotify-yt-dlp-downloader/start.sh:1)). - Docker build/compose brings up interactive CLI ([`docker-compose.yml`](spotify-yt-dlp-downloader/docker-compose.yml:1)). ## Notes - This PR is focused on workflow/UX improvements and packaging. Runtime download behavior still depends on system tools (`yt-dlp`, `ffmpeg`) as described in docs. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem closed this issue 2026-02-28 15:19:04 +03:00
Sign in to join this conversation.
No labels
pull-request
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/harmoni#4
No description provided.