Skip to content

Commit 768de48

Browse files
authored
Merge pull request #123 from contre95/fix/analyze_ui
Fix/analyze UI
2 parents b8eb5e0 + d5de20e commit 768de48

32 files changed

+820
-585
lines changed

public/svg/fingerprint.svg

Lines changed: 1 addition & 1 deletion
Loading

public/svg/mic.svg

Lines changed: 1 addition & 1 deletion
Loading

src/features/analyze/handlers.go

Lines changed: 0 additions & 124 deletions
This file was deleted.

src/features/analyze/routes.go

Lines changed: 0 additions & 18 deletions
This file was deleted.

src/features/analyze/service.go

Lines changed: 0 additions & 67 deletions
This file was deleted.

src/features/hosting/server.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"os"
77
"strings"
88

9-
"github.com/contre95/soulsolid/src/features/analyze"
109
"github.com/contre95/soulsolid/src/features/config"
1110
"github.com/contre95/soulsolid/src/features/downloading"
1211
"github.com/contre95/soulsolid/src/features/importing"
@@ -16,6 +15,7 @@ import (
1615
"github.com/contre95/soulsolid/src/features/metadata"
1716
"github.com/contre95/soulsolid/src/features/metrics"
1817
"github.com/contre95/soulsolid/src/features/playlists"
18+
"github.com/contre95/soulsolid/src/features/reorganize"
1919
"github.com/contre95/soulsolid/src/features/syncdap"
2020
"github.com/contre95/soulsolid/src/features/ui"
2121
"github.com/contre95/soulsolid/src/music"
@@ -30,7 +30,7 @@ type Server struct {
3030
}
3131

3232
// NewServer creates a new HTTP server.
33-
func NewServer(cfg *config.Manager, importingService *importing.Service, libraryService *library.Service, playlistsService *playlists.Service, syncService *syncdap.Service, downloadingService *downloading.Service, jobService *jobs.Service, tagService *metadata.Service, lyricsService *lyrics.Service, metricsService *metrics.Service, analyzeService *analyze.Service) *Server {
33+
func NewServer(cfg *config.Manager, importingService *importing.Service, libraryService *library.Service, playlistsService *playlists.Service, syncService *syncdap.Service, downloadingService *downloading.Service, jobService *jobs.Service, tagService *metadata.Service, lyricsService *lyrics.Service, metricsService *metrics.Service, reorganizeService *reorganize.Service) *Server {
3434
engine := html.New("./views", ".html")
3535
engine.Debug(cfg.Get().Logger.Level == "debug")
3636
// Add custom template functions
@@ -121,7 +121,6 @@ func NewServer(cfg *config.Manager, importingService *importing.Service, library
121121
})
122122

123123
uiHandler := ui.NewHandler(cfg)
124-
analyzeHandler := analyze.NewHandler(analyzeService)
125124

126125
importing.RegisterRoutes(app, importingService)
127126
library.RegisterRoutes(app, libraryService)
@@ -138,7 +137,8 @@ func NewServer(cfg *config.Manager, importingService *importing.Service, library
138137
metadata.RegisterRoutes(app, tagService)
139138
lyricsHandler := lyrics.NewHandler(lyricsService, tagService)
140139
lyrics.RegisterRoutes(app, lyricsHandler)
141-
analyze.RegisterRoutes(app, analyzeHandler)
140+
reorganizeHandler := reorganize.NewHandler(reorganizeService)
141+
reorganize.RegisterRoutes(app, reorganizeHandler)
142142

143143
return &Server{app: app, port: cfg.Get().Server.Port}
144144
}

src/features/lyrics/handlers.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,56 @@ func (h *Handler) GetTrackLyrics(c *fiber.Ctx) error {
8686
}
8787
return c.SendString(track.Metadata.Lyrics)
8888
}
89+
90+
// StartLyricsAnalysis handles starting the lyrics analysis job
91+
func (h *Handler) StartLyricsAnalysis(c *fiber.Ctx) error {
92+
slog.Info("Starting lyrics analysis via HTTP request")
93+
94+
// Get provider from form data
95+
provider := c.FormValue("provider")
96+
if provider == "" {
97+
return c.Render("toast/toastErr", fiber.Map{
98+
"Msg": "Please select a lyrics provider",
99+
})
100+
}
101+
102+
jobID, err := h.service.StartLyricsAnalysis(c.Context(), provider)
103+
if err != nil {
104+
slog.Error("Failed to start lyrics analysis", "error", err)
105+
return c.Render("toast/toastErr", fiber.Map{
106+
"Msg": "Failed to start lyrics analysis: " + err.Error(),
107+
})
108+
}
109+
110+
slog.Info("Lyrics analysis job started successfully", "jobID", jobID, "provider", provider)
111+
112+
// Trigger HTMX to refresh the job list
113+
c.Set("HX-Trigger", "refreshJobList")
114+
115+
if c.Get("HX-Request") == "true" {
116+
return c.Render("toast/toastOk", fiber.Map{
117+
"Msg": "Lyrics analysis started successfully",
118+
})
119+
}
120+
121+
return c.Redirect("/ui/analyze/lyrics")
122+
}
123+
124+
// RenderLyricsAnalysisSection renders the lyrics analysis section page
125+
func (h *Handler) RenderLyricsAnalysisSection(c *fiber.Ctx) error {
126+
slog.Debug("Rendering lyrics analysis section")
127+
128+
data := fiber.Map{
129+
"Title": "Lyrics Analysis",
130+
}
131+
132+
// Get lyrics providers info for the UI
133+
data["LyricsProviders"] = h.service.GetLyricsProvidersInfo()
134+
135+
if c.Get("HX-Request") != "true" {
136+
data["Section"] = "analyze_lyrics"
137+
return c.Render("main", data)
138+
}
139+
140+
return c.Render("sections/analyze_lyrics", data)
141+
}
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package analyze
1+
package lyrics
22

33
import (
44
"context"
@@ -30,7 +30,7 @@ func (t *LyricsJobTask) Execute(ctx context.Context, job *music.Job, progressUpd
3030
job.Logger.Info("EXECUTE STARTED: Lyrics job task is running", "color", "pink")
3131

3232
// Check if any lyrics providers are enabled
33-
enabledProviders := t.service.lyricsService.GetEnabledLyricsProviders()
33+
enabledProviders := t.service.GetEnabledLyricsProviders()
3434
hasEnabledProviders := false
3535
for _, enabled := range enabledProviders {
3636
if enabled {
@@ -47,7 +47,7 @@ func (t *LyricsJobTask) Execute(ctx context.Context, job *music.Job, progressUpd
4747
job.Logger.Info("Enabled lyrics providers", "providers", enabledProviders, "color", "blue")
4848

4949
// Get total track count for progress reporting
50-
totalTracks, err := t.service.library.GetTracksCount(ctx)
50+
totalTracks, err := t.service.libraryRepo.GetTracksCount(ctx)
5151
if err != nil {
5252
return nil, fmt.Errorf("failed to get tracks count: %w", err)
5353
}
@@ -80,7 +80,7 @@ func (t *LyricsJobTask) Execute(ctx context.Context, job *music.Job, progressUpd
8080
}
8181

8282
// Get next batch of tracks
83-
tracks, err := t.service.library.GetTracksPaginated(ctx, batchSize, offset)
83+
tracks, err := t.service.libraryRepo.GetTracksPaginated(ctx, batchSize, offset)
8484
if err != nil {
8585
return nil, fmt.Errorf("failed to get tracks batch (offset %d): %w", offset, err)
8686
}
@@ -112,7 +112,7 @@ func (t *LyricsJobTask) Execute(ctx context.Context, job *music.Job, progressUpd
112112

113113
// Try to fetch lyrics for this track using the specified provider
114114
job.Logger.Info("Fetching lyrics for track", "trackID", track.ID, "title", track.Title, "artist", track.Artists, "album", track.Album, "provider", provider, "color", "cyan")
115-
err := t.service.lyricsService.AddLyrics(ctx, track.ID, provider)
115+
err := t.service.AddLyrics(ctx, track.ID, provider)
116116
if err != nil {
117117
job.Logger.Error("Failed to add lyrics for track", "trackID", track.ID, "title", track.Title, "provider", provider, "error", err.Error(), "manual_fix", "<a href='/ui/library/tag/edit/"+track.ID+"' target='_blank'>track</a>")
118118
errors++

src/features/lyrics/routes.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,11 @@ func RegisterRoutes(app *fiber.App, handler *Handler) {
1717
// Library routes for lyrics
1818
library := app.Group("/library")
1919
library.Get("/tracks/:id/lyrics", handler.GetTrackLyrics)
20+
21+
// Analyze routes - lyrics analysis
22+
analyze := app.Group("/analyze")
23+
analyze.Post("/lyrics", handler.StartLyricsAnalysis)
24+
25+
// UI routes for lyrics analysis section
26+
ui.Get("/analyze/lyrics", handler.RenderLyricsAnalysisSection)
2027
}

0 commit comments

Comments
 (0)