Add duration to lyrics search request

This commit is contained in:
Jonas Kvinge
2025-12-09 18:40:45 +01:00
parent cf15a1f423
commit 059def8d0c
5 changed files with 9 additions and 5 deletions

View File

@@ -59,6 +59,7 @@
#include "covermanager/albumcoverchoicecontroller.h" #include "covermanager/albumcoverchoicecontroller.h"
#include "lyrics/lyricsfetcher.h" #include "lyrics/lyricsfetcher.h"
#include "constants/contextsettings.h" #include "constants/contextsettings.h"
#include "constants/timeconstants.h"
#include "contextview.h" #include "contextview.h"
#include "contextalbum.h" #include "contextalbum.h"
@@ -353,7 +354,7 @@ void ContextView::SearchLyrics() {
if (lyrics_.isEmpty() && action_show_lyrics_->isChecked() && action_search_lyrics_->isChecked() && !song_playing_.artist().isEmpty() && !song_playing_.title().isEmpty() && !lyrics_tried_ && lyrics_id_ == -1) { if (lyrics_.isEmpty() && action_show_lyrics_->isChecked() && action_search_lyrics_->isChecked() && !song_playing_.artist().isEmpty() && !song_playing_.title().isEmpty() && !lyrics_tried_ && lyrics_id_ == -1) {
lyrics_fetcher_->Clear(); lyrics_fetcher_->Clear();
lyrics_tried_ = true; lyrics_tried_ = true;
lyrics_id_ = static_cast<qint64>(lyrics_fetcher_->Search(song_playing_.effective_albumartist(), song_playing_.artist(), song_playing_.album(), song_playing_.title())); lyrics_id_ = static_cast<qint64>(lyrics_fetcher_->Search(song_playing_.effective_albumartist(), song_playing_.artist(), song_playing_.album(), song_playing_.title(), song_playing_.length_nanosec() / kNsecPerSec));
} }
} }

View File

@@ -71,6 +71,7 @@
#include <QSettings> #include <QSettings>
#include <QMimeData> #include <QMimeData>
#include "constants/timeconstants.h"
#include "core/iconloader.h" #include "core/iconloader.h"
#include "core/logging.h" #include "core/logging.h"
#include "core/settings.h" #include "core/settings.h"
@@ -1520,7 +1521,7 @@ void EditTagDialog::FetchLyrics() {
const Song song = data_.value(ui_->song_list->selectionModel()->selectedIndexes().first().row()).current_; const Song song = data_.value(ui_->song_list->selectionModel()->selectedIndexes().first().row()).current_;
lyrics_fetcher_->Clear(); lyrics_fetcher_->Clear();
ui_->lyrics->setPlainText(tr("loading...")); ui_->lyrics->setPlainText(tr("loading..."));
lyrics_id_ = static_cast<qint64>(lyrics_fetcher_->Search(song.effective_albumartist(), song.artist(), song.album(), song.title())); lyrics_id_ = static_cast<qint64>(lyrics_fetcher_->Search(song.effective_albumartist(), song.artist(), song.album(), song.title(), song.length_nanosec() / kNsecPerSec));
} }

View File

@@ -49,13 +49,14 @@ LyricsFetcher::LyricsFetcher(const SharedPtr<LyricsProviders> lyrics_providers,
} }
quint64 LyricsFetcher::Search(const QString &effective_albumartist, const QString &artist, const QString &album, const QString &title) { quint64 LyricsFetcher::Search(const QString &effective_albumartist, const QString &artist, const QString &album, const QString &title, const qint64 duration) {
LyricsSearchRequest search_request; LyricsSearchRequest search_request;
search_request.albumartist = effective_albumartist; search_request.albumartist = effective_albumartist;
search_request.artist = artist; search_request.artist = artist;
search_request.album = Song::AlbumRemoveDiscMisc(album); search_request.album = Song::AlbumRemoveDiscMisc(album);
search_request.title = Song::TitleRemoveMisc(title); search_request.title = Song::TitleRemoveMisc(title);
search_request.duration = duration;
Request request; Request request;
request.id = ++next_id_; request.id = ++next_id_;

View File

@@ -53,7 +53,7 @@ class LyricsFetcher : public QObject {
LyricsSearchRequest search_request; LyricsSearchRequest search_request;
}; };
quint64 Search(const QString &effective_albumartist, const QString &artist, const QString &album, const QString &title); quint64 Search(const QString &effective_albumartist, const QString &artist, const QString &album, const QString &title, const qint64 duration);
void Clear(); void Clear();
private: private:

View File

@@ -26,11 +26,12 @@
class LyricsSearchRequest { class LyricsSearchRequest {
public: public:
explicit LyricsSearchRequest() = default; explicit LyricsSearchRequest() : duration(-1) {}
QString albumartist; QString albumartist;
QString artist; QString artist;
QString album; QString album;
QString title; QString title;
qint64 duration;
}; };
Q_DECLARE_METATYPE(LyricsSearchRequest) Q_DECLARE_METATYPE(LyricsSearchRequest)