Add Last.fm import

Fixes #247
This commit is contained in:
Jonas Kvinge
2020-08-30 18:09:13 +02:00
parent 82d10dd7cb
commit 5aaa5231b8
17 changed files with 1204 additions and 4 deletions

View File

@@ -69,6 +69,7 @@
#include "lyrics/chartlyricsprovider.h"
#include "scrobbler/audioscrobbler.h"
#include "scrobbler/lastfmimport.h"
#include "internet/internetservices.h"
@@ -160,6 +161,7 @@ class ApplicationImpl {
return internet_services;
}),
scrobbler_([=]() { return new AudioScrobbler(app, app); }),
lastfm_import_([=]() { return new LastFMImport(app); }),
#ifdef HAVE_MOODBAR
moodbar_loader_([=]() { return new MoodbarLoader(app, app); }),
@@ -187,6 +189,7 @@ class ApplicationImpl {
Lazy<LyricsProviders> lyrics_providers_;
Lazy<InternetServices> internet_services_;
Lazy<AudioScrobbler> scrobbler_;
Lazy<LastFMImport> lastfm_import_;
#ifdef HAVE_MOODBAR
Lazy<MoodbarLoader> moodbar_loader_;
Lazy<MoodbarController> moodbar_controller_;
@@ -315,6 +318,7 @@ PlaylistBackend *Application::playlist_backend() const { return p_->playlist_bac
PlaylistManager *Application::playlist_manager() const { return p_->playlist_manager_.get(); }
InternetServices *Application::internet_services() const { return p_->internet_services_.get(); }
AudioScrobbler *Application::scrobbler() const { return p_->scrobbler_.get(); }
LastFMImport *Application::lastfm_import() const { return p_->lastfm_import_.get(); }
#ifdef HAVE_MOODBAR
MoodbarController *Application::moodbar_controller() const { return p_->moodbar_controller_.get(); }
MoodbarLoader *Application::moodbar_loader() const { return p_->moodbar_loader_.get(); }

View File

@@ -56,6 +56,7 @@ class CurrentAlbumCoverLoader;
class CoverProviders;
class LyricsProviders;
class AudioScrobbler;
class LastFMImport;
class InternetServices;
#ifdef HAVE_MOODBAR
class MoodbarController;
@@ -93,6 +94,7 @@ class Application : public QObject {
LyricsProviders *lyrics_providers() const;
AudioScrobbler *scrobbler() const;
LastFMImport *lastfm_import() const;
InternetServices *internet_services() const;

View File

@@ -103,6 +103,7 @@
#include "dialogs/edittagdialog.h"
#include "dialogs/addstreamdialog.h"
#include "dialogs/deleteconfirmationdialog.h"
#include "dialogs/lastfmimportdialog.h"
#include "organize/organizedialog.h"
#include "widgets/fancytabwidget.h"
#include "widgets/playingwidget.h"
@@ -169,6 +170,7 @@
#include "internet/internetsearchview.h"
#include "scrobbler/audioscrobbler.h"
#include "scrobbler/lastfmimport.h"
#if defined(HAVE_GSTREAMER) && defined(HAVE_CHROMAPRINT)
# include "musicbrainz/tagfetcher.h"
@@ -257,6 +259,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSDBase *osd
#ifdef HAVE_TIDAL
tidal_view_(new InternetTabsView(app_, app->internet_services()->ServiceBySource(Song::Source_Tidal), TidalSettingsPage::kSettingsGroup, SettingsDialog::Page_Tidal, this)),
#endif
lastfm_import_dialog_(new LastFMImportDialog(app_->lastfm_import(), this)),
collection_show_all_(nullptr),
collection_show_duplicates_(nullptr),
collection_show_untagged_(nullptr),
@@ -417,6 +420,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSDBase *osd
ui_->action_update_collection->setIcon(IconLoader::Load("view-refresh"));
ui_->action_full_collection_scan->setIcon(IconLoader::Load("view-refresh"));
ui_->action_settings->setIcon(IconLoader::Load("configure"));
ui_->action_import_data_from_last_fm->setIcon(IconLoader::Load("scrobble"));
// Scrobble
@@ -457,6 +461,7 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSDBase *osd
connect(ui_->action_auto_complete_tags, SIGNAL(triggered()), SLOT(AutoCompleteTags()));
#endif
connect(ui_->action_settings, SIGNAL(triggered()), SLOT(OpenSettingsDialog()));
connect(ui_->action_import_data_from_last_fm, SIGNAL(triggered()), lastfm_import_dialog_, SLOT(show()));
connect(ui_->action_toggle_show_sidebar, SIGNAL(toggled(bool)), SLOT(ToggleSidebar(bool)));
connect(ui_->action_about_strawberry, SIGNAL(triggered()), SLOT(ShowAboutDialog()));
connect(ui_->action_about_qt, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
@@ -822,6 +827,12 @@ MainWindow::MainWindow(Application *app, SystemTrayIcon *tray_icon, OSDBase *osd
LoveButtonVisibilityChanged(app_->scrobbler()->LoveButton());
ScrobblingEnabledChanged(app_->scrobbler()->IsEnabled());
// Last.fm ImportData
connect(app_->lastfm_import(), SIGNAL(Finished()), lastfm_import_dialog_, SLOT(Finished()));
connect(app_->lastfm_import(), SIGNAL(FinishedWithError(QString)), lastfm_import_dialog_, SLOT(FinishedWithError(QString)));
connect(app_->lastfm_import(), SIGNAL(UpdateTotal(int, int)), lastfm_import_dialog_, SLOT(UpdateTotal(int, int)));
connect(app_->lastfm_import(), SIGNAL(UpdateProgress(int, int)), lastfm_import_dialog_, SLOT(UpdateProgress(int, int)));
// Load settings
qLog(Debug) << "Loading settings";
settings_.beginGroup(kSettingsGroup);

View File

@@ -96,6 +96,7 @@ class InternetTabsView;
class Windows7ThumbBar;
#endif
class AddStreamDialog;
class LastFMImportDialog;
class MainWindow : public QMainWindow, public PlatformInterface {
Q_OBJECT
@@ -324,6 +325,8 @@ class MainWindow : public QMainWindow, public PlatformInterface {
InternetSongsView *subsonic_view_;
InternetTabsView *tidal_view_;
LastFMImportDialog *lastfm_import_dialog_;
QAction *collection_show_all_;
QAction *collection_show_duplicates_;
QAction *collection_show_untagged_;

View File

@@ -511,6 +511,7 @@
<addaction name="action_abort_collection_scan"/>
<addaction name="separator"/>
<addaction name="action_settings"/>
<addaction name="action_import_data_from_last_fm"/>
<addaction name="action_console"/>
<addaction name="separator"/>
<addaction name="action_toggle_show_sidebar"/>
@@ -844,6 +845,11 @@
<string>Show sidebar</string>
</property>
</action>
<action name="action_import_data_from_last_fm">
<property name="text">
<string>Import data from last.fm...</string>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>