From 016176103c7fa647f0317f6525c40a88d7b8238d Mon Sep 17 00:00:00 2001 From: Casey Langen Date: Thu, 3 May 2018 21:27:37 -0700 Subject: [PATCH] Moved `LastFm` to core, and wired it directly into PlaybackService so it works from `musikcubed` as well. In the future we'll probably want a repository for scrobblers... but for now this works. --- CMakeLists.txt | 1 + clean-nix.sh | 5 +++++ src/core/CMakeLists.txt | 1 + src/core/audio/PlaybackService.cpp | 5 +++++ src/{musikcube/app/util => core/support}/LastFm.cpp | 9 ++++----- src/{musikcube/app/util => core/support}/LastFm.h | 2 +- src/core/support/PreferenceKeys.cpp | 3 +++ src/core/support/PreferenceKeys.h | 3 +++ src/musikcube/CMakeLists.txt | 1 - src/musikcube/app/overlay/LastFmOverlay.cpp | 9 ++++++++- src/musikcube/app/overlay/LastFmOverlay.h | 1 - src/musikcube/app/util/PreferenceKeys.cpp | 3 --- src/musikcube/app/util/PreferenceKeys.h | 3 --- src/musikcube/app/window/TransportWindow.cpp | 6 ------ src/musikcube/musikcube.vcxproj | 1 - src/musikcube/musikcube.vcxproj.filters | 3 --- 16 files changed, 31 insertions(+), 25 deletions(-) create mode 100755 clean-nix.sh rename src/{musikcube/app/util => core/support}/LastFm.cpp (97%) rename src/{musikcube/app/util => core/support}/LastFm.h (97%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 39bc4590e..e7bf06346 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -81,6 +81,7 @@ if (CMAKE_SYSTEM_NAME MATCHES "Darwin" OR CMAKE_SYSTEM_NAME MATCHES "FreeBSD") include_directories("/usr/local/include") link_directories ("/opt/local/lib") include_directories("/opt/local/include") + include_directories("/usr/local/opt/openssl/include") endif () if (EXISTS "/etc/arch-release" OR EXISTS "/etc/manjaro-release" OR NO_NCURSESW) diff --git a/clean-nix.sh b/clean-nix.sh new file mode 100755 index 000000000..f951ee3bb --- /dev/null +++ b/clean-nix.sh @@ -0,0 +1,5 @@ +#!/bin/sh +make clean 2> /dev/null +rm -rf bin +find . -name CMakeCache.txt -delete +find . -name CMakeFiles -type d -exec rm -r "{}" \; 2> /dev/null \ No newline at end of file diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 8fcb47d17..200150970 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -48,6 +48,7 @@ set(CORE_SOURCES ./runtime/MessageQueue.cpp ./support/Duration.cpp ./support/Common.cpp + ./support/LastFm.cpp ./support/Playback.cpp ./support/Preferences.cpp ./support/PreferenceKeys.cpp diff --git a/src/core/audio/PlaybackService.cpp b/src/core/audio/PlaybackService.cpp index 85ea47d09..edc9f3e20 100755 --- a/src/core/audio/PlaybackService.cpp +++ b/src/core/audio/PlaybackService.cpp @@ -45,6 +45,7 @@ #include #include #include +#include #include @@ -456,6 +457,10 @@ void PlaybackService::OnTrackChanged(size_t pos, TrackPtr track) { this->playingTrack = track; this->TrackChanged(this->index, track); + if (track && this->GetPlaybackState() == PlaybackPlaying) { + lastfm::Scrobble(track); + } + for (auto it = remotes.begin(); it != remotes.end(); it++) { (*it)->OnTrackChanged(track.get()); } diff --git a/src/musikcube/app/util/LastFm.cpp b/src/core/support/LastFm.cpp similarity index 97% rename from src/musikcube/app/util/LastFm.cpp rename to src/core/support/LastFm.cpp index 5ce24affb..0e24b7e82 100644 --- a/src/musikcube/app/util/LastFm.cpp +++ b/src/core/support/LastFm.cpp @@ -39,7 +39,6 @@ #include #include #include -#include #include #include #include @@ -65,7 +64,7 @@ static std::shared_ptr createClient() { return LastFmClient::Create(std::stringstream()); } -static void validate(musik::cube::lastfm::Session& session) { +static void validate(musik::core::lastfm::Session& session) { session.valid = session.sessionId.size() && session.username.size() && @@ -129,7 +128,7 @@ static inline Prefs settings() { return Preferences::ForComponent(components::Settings); } -namespace musik { namespace cube { namespace lastfm { +namespace musik { namespace core { namespace lastfm { void CreateAccountLinkToken(TokenCallback callback) { std::string url = generateSignedUrl(GET_TOKEN); @@ -184,7 +183,7 @@ namespace musik { namespace cube { namespace lastfm { } Session LoadSession() { - namespace keys = cube::prefs::keys; + namespace keys = core::prefs::keys; auto prefs = settings(); Session session; session.token = prefs->GetString(keys::LastFmToken); @@ -195,7 +194,7 @@ namespace musik { namespace cube { namespace lastfm { } void SaveSession(const Session& session) { - namespace keys = cube::prefs::keys; + namespace keys = core::prefs::keys; auto prefs = settings(); prefs->SetString(keys::LastFmToken.c_str(), session.token.c_str()); prefs->SetString(keys::LastFmSessionId.c_str(), session.sessionId.c_str()); diff --git a/src/musikcube/app/util/LastFm.h b/src/core/support/LastFm.h similarity index 97% rename from src/musikcube/app/util/LastFm.h rename to src/core/support/LastFm.h index f4553ecbc..b14b59181 100644 --- a/src/musikcube/app/util/LastFm.h +++ b/src/core/support/LastFm.h @@ -37,7 +37,7 @@ #include "stdafx.h" #include -namespace musik { namespace cube { namespace lastfm { +namespace musik { namespace core { namespace lastfm { struct Session { bool valid{ false }; std::string username, token, sessionId; diff --git a/src/core/support/PreferenceKeys.cpp b/src/core/support/PreferenceKeys.cpp index 8c3008a16..2ac365bbf 100644 --- a/src/core/support/PreferenceKeys.cpp +++ b/src/core/support/PreferenceKeys.cpp @@ -58,6 +58,9 @@ namespace musik { namespace core { namespace prefs { const std::string keys::SaveSessionOnExit = "SaveSessionOnExit"; const std::string keys::LastPlayQueueIndex = "LastPlayQueueIndex"; const std::string keys::LastPlayQueueTime = "LastPlayQueueTime"; + const std::string keys::LastFmToken = "LastFmToken"; + const std::string keys::LastFmSessionId = "LastFmSessionId"; + const std::string keys::LastFmUsername = "LastFmUsername"; } } } diff --git a/src/core/support/PreferenceKeys.h b/src/core/support/PreferenceKeys.h index 549667573..3c7f73d86 100644 --- a/src/core/support/PreferenceKeys.h +++ b/src/core/support/PreferenceKeys.h @@ -62,6 +62,9 @@ namespace musik { namespace core { namespace prefs { extern const std::string SaveSessionOnExit; extern const std::string LastPlayQueueIndex; extern const std::string LastPlayQueueTime; + extern const std::string LastFmToken; + extern const std::string LastFmSessionId; + extern const std::string LastFmUsername; } } } } diff --git a/src/musikcube/CMakeLists.txt b/src/musikcube/CMakeLists.txt index 143086362..7485f2ada 100644 --- a/src/musikcube/CMakeLists.txt +++ b/src/musikcube/CMakeLists.txt @@ -23,7 +23,6 @@ set (CUBE_SRCS ./app/overlay/VisualizerOverlay.cpp ./app/util/GlobalHotkeys.cpp ./app/util/Hotkeys.cpp - ./app/util/LastFm.cpp ./app/util/PreferenceKeys.cpp ./app/util/Playback.cpp ./app/util/UpdateCheck.cpp diff --git a/src/musikcube/app/overlay/LastFmOverlay.cpp b/src/musikcube/app/overlay/LastFmOverlay.cpp index 1d77466fe..614ddb76e 100644 --- a/src/musikcube/app/overlay/LastFmOverlay.cpp +++ b/src/musikcube/app/overlay/LastFmOverlay.cpp @@ -34,14 +34,15 @@ #include "stdafx.h" #include "LastFmOverlay.h" -#include #include +#include #include #include #include #include using namespace musik::cube; +using namespace musik::core; using namespace musik; using namespace cursespp; @@ -131,6 +132,9 @@ void LastFmOverlay::UpdateMessage() { core::ReplaceAll(message, "{{link}}", url); break; } + + default: + break; } this->SetMessage(message); @@ -207,6 +211,9 @@ void LastFmOverlay::UpdateButtons() { }); break; } + + default: + break; } } diff --git a/src/musikcube/app/overlay/LastFmOverlay.h b/src/musikcube/app/overlay/LastFmOverlay.h index 5e6a02a89..a02ff2b8f 100644 --- a/src/musikcube/app/overlay/LastFmOverlay.h +++ b/src/musikcube/app/overlay/LastFmOverlay.h @@ -35,7 +35,6 @@ #pragma once #include -#include namespace musik { namespace cube { /* in general we probably shouldn't subclass DialogOverlay because diff --git a/src/musikcube/app/util/PreferenceKeys.cpp b/src/musikcube/app/util/PreferenceKeys.cpp index c5947f5e6..adae66d9f 100644 --- a/src/musikcube/app/util/PreferenceKeys.cpp +++ b/src/musikcube/app/util/PreferenceKeys.cpp @@ -51,9 +51,6 @@ namespace musik { namespace cube { namespace prefs { const std::string keys::LastBrowseDirectoryRoot = "LastBrowseDirectoryRoot"; const std::string keys::LastCategoryFilter = "LastCategoryFilter"; const std::string keys::LastTrackFilter = "LastTrackFilter"; - const std::string keys::LastFmToken = "LastFmToken"; - const std::string keys::LastFmSessionId = "LastFmSessionId"; - const std::string keys::LastFmUsername = "LastFmUsername"; } } } diff --git a/src/musikcube/app/util/PreferenceKeys.h b/src/musikcube/app/util/PreferenceKeys.h index be6559fad..441e2fefa 100644 --- a/src/musikcube/app/util/PreferenceKeys.h +++ b/src/musikcube/app/util/PreferenceKeys.h @@ -53,9 +53,6 @@ namespace musik { namespace cube { namespace prefs { extern const std::string LastBrowseDirectoryRoot; extern const std::string LastCategoryFilter; extern const std::string LastTrackFilter; - extern const std::string LastFmToken; - extern const std::string LastFmSessionId; - extern const std::string LastFmUsername; } } } } diff --git a/src/musikcube/app/window/TransportWindow.cpp b/src/musikcube/app/window/TransportWindow.cpp index 9b932c6d0..be0e1a7a7 100755 --- a/src/musikcube/app/window/TransportWindow.cpp +++ b/src/musikcube/app/window/TransportWindow.cpp @@ -50,7 +50,6 @@ #include #include -#include #include #include @@ -427,11 +426,6 @@ void TransportWindow::OnPlaybackServiceTrackChanged(size_t index, TrackPtr track this->currentTrack = track; this->lastTime = DEFAULT_TIME; this->UpdateReplayGainState(); - - if (playback.GetPlaybackState() == PlaybackPlaying) { - lastfm::Scrobble(track); - } - DEBOUNCE_REFRESH(TimeSync, 0); } diff --git a/src/musikcube/musikcube.vcxproj b/src/musikcube/musikcube.vcxproj index eae735fe2..7886bc575 100755 --- a/src/musikcube/musikcube.vcxproj +++ b/src/musikcube/musikcube.vcxproj @@ -227,7 +227,6 @@ xcopy "$(SolutionDir)src\3rdparty\bin\win32\font\*.ttf" "$(TargetDir)fonts\" /Y - diff --git a/src/musikcube/musikcube.vcxproj.filters b/src/musikcube/musikcube.vcxproj.filters index 38ecf1918..ced3bbb4e 100755 --- a/src/musikcube/musikcube.vcxproj.filters +++ b/src/musikcube/musikcube.vcxproj.filters @@ -367,9 +367,6 @@ app\layout - - app\util - app\overlay