[PR #240] [CLOSED] New Features, CSV Import, Parallel Downloading, ISRC Lookup from DB (sqlite) #1884

Closed
opened 2026-03-13 19:39:28 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/afkarxyz/SpotiFLAC/pull/240
Author: @keypaa
Created: 1/7/2026
Status: Closed

Base: mainHead: feature/all-features-combined


📝 Commits (5)

  • 5fae44c feat: Add CSV playlist import feature
  • a5d414b WIP: Add individual download buttons
  • 57987f1 Merge feature/csv-playlist-import and add individual download buttons
  • cac9db5 feat: Add parallel downloads with settings control
  • c10a76f feat: add database configuration and connection features

📊 Changes

18 files changed (+7283 additions, -79 deletions)

View changed files

📝 app.go (+224 -2)
backend/csv_parser.go (+180 -0)
backend/database.go (+128 -0)
📝 backend/file_dialog.go (+21 -0)
📝 backend/folder.go (+28 -0)
frontend/package-lock.json (+5638 -0)
📝 frontend/package.json.md5 (+1 -1)
📝 frontend/src/App.tsx (+9 -1)
frontend/src/components/CSVImportPage.tsx (+656 -0)
📝 frontend/src/components/SettingsPage.tsx (+98 -2)
📝 frontend/src/components/Sidebar.tsx (+19 -2)
📝 frontend/src/hooks/useDownload.ts (+153 -68)
📝 frontend/src/lib/api.ts (+10 -1)
📝 frontend/src/lib/settings.ts (+15 -1)
📝 frontend/src/types/api.ts (+48 -0)
📝 go.mod (+11 -0)
📝 go.sum (+42 -0)
📝 wails.json (+2 -1)

📄 Description

This pull request introduces significant new functionality for importing, parsing, and batch processing Spotify playlists from CSV files, as well as improved integration with a local SQLite database for ISRC (International Standard Recording Code) lookups. The changes span backend and frontend code, adding new APIs, file dialog utilities, and UI components to support these workflows.

Key new features and improvements include:

CSV Playlist Import and Batch Processing:

  • Added a new backend module (backend/csv_parser.go) to parse Spotify-exported CSV playlist files, extracting track metadata and handling data normalization and validation.
  • Implemented new APIs in app.go for selecting CSV files, parsing playlists, checking if tracks already exist (to avoid redundant downloads), and batch downloading tracks from CSV.
  • Integrated a new frontend page (CSVImportPage) and kept it mounted in the UI to preserve download state during batch operations. [1] [2] [3]

Database Integration for ISRC Lookup:

  • Added a new backend module (backend/database.go) for querying a local SQLite database for ISRCs by Spotify ID, including schema validation and connection testing.
  • Exposed new APIs in app.go to get ISRCs with a fallback to the Spotify API, and to test database connections from the frontend.
  • Implemented file dialogs for selecting database files in both backend and frontend, and added UI controls in the settings page for browsing and testing database connections. [1] [2] [3] [4]

File Dialog Utilities:

  • Added backend utilities for opening CSV and database file dialogs, with appropriate file filters for user convenience. [1] [2]
  • Connected these dialogs to the frontend, allowing users to select files for import and database configuration. [1] [2]

Other:

  • Updated frontend/package.json.md5 to reflect changes in frontend dependencies.

These changes provide a robust foundation for advanced batch import and metadata workflows, improving usability for users managing large playlists and leveraging local metadata databases.


CSV Playlist Import and Batch Processing

  • Added backend/csv_parser.go to parse Spotify CSV playlists, extracting and validating track metadata into a structured format.
  • Implemented APIs in app.go for selecting CSV files, parsing playlists, checking for existing tracks, and batch downloading from CSV.
  • Integrated CSVImportPage in the frontend and ensured it remains mounted to preserve download state during batch operations. [1] [2] [3]

Database Integration for ISRC Lookup

  • Added backend/database.go for querying ISRCs by Spotify ID from a local SQLite database, with schema validation and connection testing.
  • Exposed new APIs in app.go for ISRC lookup with fallback to Spotify API and for testing database connectivity.
  • Added file dialogs for database selection and UI controls in the settings page for browsing and testing database connections. [1] [2] [3] [4]

File Dialog Utilities

  • Added backend utilities for CSV and database file dialogs, with user-friendly file filters. [1] [2]
  • Connected these dialogs to the frontend for seamless file selection workflows. [1] [2]

Other

  • Updated frontend dependency hash (frontend/package.json.md5) to reflect new and changed frontend files.

🔄 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/afkarxyz/SpotiFLAC/pull/240 **Author:** [@keypaa](https://github.com/keypaa) **Created:** 1/7/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feature/all-features-combined` --- ### 📝 Commits (5) - [`5fae44c`](https://github.com/afkarxyz/SpotiFLAC/commit/5fae44c95b764005e45b42aefccf5a8d503d110c) feat: Add CSV playlist import feature - [`a5d414b`](https://github.com/afkarxyz/SpotiFLAC/commit/a5d414b2796ce015113f015aaa345ae15d8c5c0e) WIP: Add individual download buttons - [`57987f1`](https://github.com/afkarxyz/SpotiFLAC/commit/57987f18dc888bce5389fb2716cbceb8513013cb) Merge feature/csv-playlist-import and add individual download buttons - [`cac9db5`](https://github.com/afkarxyz/SpotiFLAC/commit/cac9db57f67b262c1a534e82fb42896c73b7cec4) feat: Add parallel downloads with settings control - [`c10a76f`](https://github.com/afkarxyz/SpotiFLAC/commit/c10a76f4daef81d974b19d2f59989c50722e32b4) feat: add database configuration and connection features ### 📊 Changes **18 files changed** (+7283 additions, -79 deletions) <details> <summary>View changed files</summary> 📝 `app.go` (+224 -2) ➕ `backend/csv_parser.go` (+180 -0) ➕ `backend/database.go` (+128 -0) 📝 `backend/file_dialog.go` (+21 -0) 📝 `backend/folder.go` (+28 -0) ➕ `frontend/package-lock.json` (+5638 -0) 📝 `frontend/package.json.md5` (+1 -1) 📝 `frontend/src/App.tsx` (+9 -1) ➕ `frontend/src/components/CSVImportPage.tsx` (+656 -0) 📝 `frontend/src/components/SettingsPage.tsx` (+98 -2) 📝 `frontend/src/components/Sidebar.tsx` (+19 -2) 📝 `frontend/src/hooks/useDownload.ts` (+153 -68) 📝 `frontend/src/lib/api.ts` (+10 -1) 📝 `frontend/src/lib/settings.ts` (+15 -1) 📝 `frontend/src/types/api.ts` (+48 -0) 📝 `go.mod` (+11 -0) 📝 `go.sum` (+42 -0) 📝 `wails.json` (+2 -1) </details> ### 📄 Description This pull request introduces significant new functionality for importing, parsing, and batch processing Spotify playlists from CSV files, as well as improved integration with a local SQLite database for ISRC (International Standard Recording Code) lookups. The changes span backend and frontend code, adding new APIs, file dialog utilities, and UI components to support these workflows. Key new features and improvements include: **CSV Playlist Import and Batch Processing:** * Added a new backend module (`backend/csv_parser.go`) to parse Spotify-exported CSV playlist files, extracting track metadata and handling data normalization and validation. * Implemented new APIs in `app.go` for selecting CSV files, parsing playlists, checking if tracks already exist (to avoid redundant downloads), and batch downloading tracks from CSV. * Integrated a new frontend page (`CSVImportPage`) and kept it mounted in the UI to preserve download state during batch operations. [[1]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebR33) [[2]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebR551-R552) [[3]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebL691-R699) **Database Integration for ISRC Lookup:** * Added a new backend module (`backend/database.go`) for querying a local SQLite database for ISRCs by Spotify ID, including schema validation and connection testing. * Exposed new APIs in `app.go` to get ISRCs with a fallback to the Spotify API, and to test database connections from the frontend. * Implemented file dialogs for selecting database files in both backend and frontend, and added UI controls in the settings page for browsing and testing database connections. [[1]](diffhunk://#diff-1ab0f4595f55c3e712f588cf344643e2273b6d99bcc8990978b9bee392d8ca76R79-R106) [[2]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L14-R14) [[3]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L26-R26) [[4]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962R124-R149) **File Dialog Utilities:** * Added backend utilities for opening CSV and database file dialogs, with appropriate file filters for user convenience. [[1]](diffhunk://#diff-bffcfaf1f6ff5ec0c6eea1a94036f6645f7aa26443dba488b4fea893b927f64cR53-R73) [[2]](diffhunk://#diff-1ab0f4595f55c3e712f588cf344643e2273b6d99bcc8990978b9bee392d8ca76R79-R106) * Connected these dialogs to the frontend, allowing users to select files for import and database configuration. [[1]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L26-R26) [[2]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962R124-R149) **Other:** * Updated `frontend/package.json.md5` to reflect changes in frontend dependencies. These changes provide a robust foundation for advanced batch import and metadata workflows, improving usability for users managing large playlists and leveraging local metadata databases. --- **CSV Playlist Import and Batch Processing** - Added `backend/csv_parser.go` to parse Spotify CSV playlists, extracting and validating track metadata into a structured format. - Implemented APIs in `app.go` for selecting CSV files, parsing playlists, checking for existing tracks, and batch downloading from CSV. - Integrated `CSVImportPage` in the frontend and ensured it remains mounted to preserve download state during batch operations. [[1]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebR33) [[2]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebR551-R552) [[3]](diffhunk://#diff-e56cb91573ddb6a97ecd071925fe26504bb5a65f921dc64c63e534162950e1ebL691-R699) **Database Integration for ISRC Lookup** - Added `backend/database.go` for querying ISRCs by Spotify ID from a local SQLite database, with schema validation and connection testing. - Exposed new APIs in `app.go` for ISRC lookup with fallback to Spotify API and for testing database connectivity. - Added file dialogs for database selection and UI controls in the settings page for browsing and testing database connections. [[1]](diffhunk://#diff-1ab0f4595f55c3e712f588cf344643e2273b6d99bcc8990978b9bee392d8ca76R79-R106) [[2]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L14-R14) [[3]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L26-R26) [[4]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962R124-R149) **File Dialog Utilities** - Added backend utilities for CSV and database file dialogs, with user-friendly file filters. [[1]](diffhunk://#diff-bffcfaf1f6ff5ec0c6eea1a94036f6645f7aa26443dba488b4fea893b927f64cR53-R73) [[2]](diffhunk://#diff-1ab0f4595f55c3e712f588cf344643e2273b6d99bcc8990978b9bee392d8ca76R79-R106) - Connected these dialogs to the frontend for seamless file selection workflows. [[1]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962L26-R26) [[2]](diffhunk://#diff-848c4346609b3cafb7ab2020abb6df678fc8f267df33406b116e020b104e7962R124-R149) **Other** - Updated frontend dependency hash (`frontend/package.json.md5`) to reflect new and changed frontend files. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-13 19:39:28 +03:00
Sign in to join this conversation.
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/SpotiFLAC#1884
No description provided.