mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-03-31 09:01:33 +02:00
- Add advanced filename template placeholders: {track_raw}, {disc_raw}, {date},
formatted numbers {track:N}/{disc:N}, and date formatting {date:%Y-%m-%d}
with strftime-to-Go layout conversion and robust date parser
- Pass date/release_date metadata to filename builder in all providers
(Amazon, Qobuz, Tidal, YouTube, extensions) and Flutter download queue
- Detect ARM32-only / low-RAM Android devices at startup and reduce image
cache size and disable overscroll effects for smoother experience
- Make artist screen selection bar responsive: compact stacked layout on
narrow screens or large text scale; add quality picker before track download
- Add advanced tags toggle in download settings filename format editor
- Fix ICU plural syntax in DE/ES/PT/RU translations (one {}=1{...} -> one {...})
- Add filenameShowAdvancedTags l10n strings (EN, ID) and regenerate dart files
- Fix featured-artist regex: remove '&' from split separators
- Add Go filename template tests (filename_test.go)
- Add GitHub Pages workflow and static project site
86 lines
2.2 KiB
Go
86 lines
2.2 KiB
Go
package gobackend
|
|
|
|
import "testing"
|
|
|
|
func TestBuildFilenameFromTemplate_WithRawTrackAndDisc(t *testing.T) {
|
|
metadata := map[string]interface{}{
|
|
"title": "Song Name",
|
|
"artist": "Artist Name",
|
|
"album": "Album Name",
|
|
"track": 1,
|
|
"disc": 2,
|
|
"year": "2025",
|
|
}
|
|
|
|
formatted := buildFilenameFromTemplate(
|
|
"{artist} - {track} - {track_raw} - d{disc} - d{disc_raw} - {title}",
|
|
metadata,
|
|
)
|
|
|
|
expected := "Artist Name - 01 - 1 - d2 - d2 - Song Name"
|
|
if formatted != expected {
|
|
t.Fatalf("expected %q, got %q", expected, formatted)
|
|
}
|
|
}
|
|
|
|
func TestBuildFilenameFromTemplate_RawPlaceholdersEmptyWhenZero(t *testing.T) {
|
|
metadata := map[string]interface{}{
|
|
"title": "Song Name",
|
|
"artist": "Artist Name",
|
|
"track": 0,
|
|
"disc": 0,
|
|
}
|
|
|
|
formatted := buildFilenameFromTemplate("{track_raw}-{disc_raw}-{title}", metadata)
|
|
expected := "--Song Name"
|
|
if formatted != expected {
|
|
t.Fatalf("expected %q, got %q", expected, formatted)
|
|
}
|
|
}
|
|
|
|
func TestBuildFilenameFromTemplate_InlineNumberFormatting(t *testing.T) {
|
|
metadata := map[string]interface{}{
|
|
"track": 3,
|
|
"disc": 2,
|
|
}
|
|
|
|
formatted := buildFilenameFromTemplate("{track:1}-{track:02}-{disc:03}", metadata)
|
|
expected := "3-03-002"
|
|
if formatted != expected {
|
|
t.Fatalf("expected %q, got %q", expected, formatted)
|
|
}
|
|
}
|
|
|
|
func TestBuildFilenameFromTemplate_DateStrftimeFormatting(t *testing.T) {
|
|
metadata := map[string]interface{}{
|
|
"artist": "Artist Name",
|
|
"title": "Song Name",
|
|
"release_date": "2024-03-09",
|
|
"track_number": 7,
|
|
"disc_number": 1,
|
|
}
|
|
|
|
formatted := buildFilenameFromTemplate(
|
|
"{artist} - {track:02} - {title} - {date:%Y-%m-%d} - {year}",
|
|
metadata,
|
|
)
|
|
expected := "Artist Name - 07 - Song Name - 2024-03-09 - 2024"
|
|
if formatted != expected {
|
|
t.Fatalf("expected %q, got %q", expected, formatted)
|
|
}
|
|
}
|
|
|
|
func TestBuildFilenameFromTemplate_DateStrftimeFormattingWithYearOnly(t *testing.T) {
|
|
metadata := map[string]interface{}{
|
|
"artist": "Artist Name",
|
|
"title": "Song Name",
|
|
"date": "2019",
|
|
}
|
|
|
|
formatted := buildFilenameFromTemplate("{date:%Y}-{date:%m}-{date:%d}", metadata)
|
|
expected := "2019-01-01"
|
|
if formatted != expected {
|
|
t.Fatalf("expected %q, got %q", expected, formatted)
|
|
}
|
|
}
|