Migrated scrobbling stuff
This commit is contained in:
@@ -1,15 +1,7 @@
|
|||||||
|
|
||||||
add_subdirectory(auth)
|
|
||||||
add_subdirectory(av)
|
add_subdirectory(av)
|
||||||
add_subdirectory(database)
|
|
||||||
add_subdirectory(image)
|
add_subdirectory(image)
|
||||||
add_subdirectory(metadata)
|
add_subdirectory(metadata)
|
||||||
add_subdirectory(recommendation)
|
|
||||||
add_subdirectory(scanner)
|
|
||||||
add_subdirectory(scrobbling)
|
|
||||||
add_subdirectory(services)
|
add_subdirectory(services)
|
||||||
add_subdirectory(som)
|
add_subdirectory(som)
|
||||||
add_subdirectory(subsonic)
|
add_subdirectory(subsonic)
|
||||||
add_subdirectory(utils)
|
add_subdirectory(utils)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1 +1,6 @@
|
|||||||
|
add_subdirectory(auth)
|
||||||
add_subdirectory(cover)
|
add_subdirectory(cover)
|
||||||
|
add_subdirectory(database)
|
||||||
|
add_subdirectory(recommendation)
|
||||||
|
add_subdirectory(scanner)
|
||||||
|
add_subdirectory(scrobbling)
|
||||||
|
|||||||
@@ -4,7 +4,7 @@ add_library(lmsscrobbling SHARED
|
|||||||
impl/listenbrainz/ListenBrainzScrobbler.cpp
|
impl/listenbrainz/ListenBrainzScrobbler.cpp
|
||||||
impl/listenbrainz/ListensSynchronizer.cpp
|
impl/listenbrainz/ListensSynchronizer.cpp
|
||||||
impl/listenbrainz/Utils.cpp
|
impl/listenbrainz/Utils.cpp
|
||||||
impl/Scrobbling.cpp
|
impl/ScrobblingService.cpp
|
||||||
)
|
)
|
||||||
|
|
||||||
target_include_directories(lmsscrobbling INTERFACE
|
target_include_directories(lmsscrobbling INTERFACE
|
||||||
+1
-1
@@ -25,7 +25,7 @@
|
|||||||
|
|
||||||
#include <Wt/WDateTime.h>
|
#include <Wt/WDateTime.h>
|
||||||
|
|
||||||
#include "scrobbling/Listen.hpp"
|
#include "services/scrobbling/Listen.hpp"
|
||||||
|
|
||||||
namespace Database
|
namespace Database
|
||||||
{
|
{
|
||||||
+22
-22
@@ -17,7 +17,7 @@
|
|||||||
* along with LMS. If not, see <http://www.gnu.org/licenses/>.
|
* along with LMS. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Scrobbling.hpp"
|
#include "ScrobblingService.hpp"
|
||||||
|
|
||||||
#include "database/Artist.hpp"
|
#include "database/Artist.hpp"
|
||||||
#include "database/Db.hpp"
|
#include "database/Db.hpp"
|
||||||
@@ -34,13 +34,13 @@ namespace Scrobbling
|
|||||||
{
|
{
|
||||||
using namespace Database;
|
using namespace Database;
|
||||||
|
|
||||||
std::unique_ptr<IScrobbling>
|
std::unique_ptr<IScrobblingService>
|
||||||
createScrobbling(boost::asio::io_context& ioContext, Db& db)
|
createScrobblingService(boost::asio::io_context& ioContext, Db& db)
|
||||||
{
|
{
|
||||||
return std::make_unique<Scrobbling>(ioContext, db);
|
return std::make_unique<ScrobblingService>(ioContext, db);
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::Scrobbling(boost::asio::io_context& ioContext, Db& db)
|
ScrobblingService::ScrobblingService(boost::asio::io_context& ioContext, Db& db)
|
||||||
: _db {db}
|
: _db {db}
|
||||||
{
|
{
|
||||||
_scrobblers.emplace(Database::Scrobbler::Internal, std::make_unique<InternalScrobbler>(_db));
|
_scrobblers.emplace(Database::Scrobbler::Internal, std::make_unique<InternalScrobbler>(_db));
|
||||||
@@ -48,28 +48,28 @@ namespace Scrobbling
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Scrobbling::listenStarted(const Listen& listen)
|
ScrobblingService::listenStarted(const Listen& listen)
|
||||||
{
|
{
|
||||||
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
||||||
_scrobblers[*scrobbler]->listenStarted(listen);
|
_scrobblers[*scrobbler]->listenStarted(listen);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Scrobbling::listenFinished(const Listen& listen, std::optional<std::chrono::seconds> duration)
|
ScrobblingService::listenFinished(const Listen& listen, std::optional<std::chrono::seconds> duration)
|
||||||
{
|
{
|
||||||
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
||||||
_scrobblers[*scrobbler]->listenFinished(listen, duration);
|
_scrobblers[*scrobbler]->listenFinished(listen, duration);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
Scrobbling::addTimedListen(const TimedListen& listen)
|
ScrobblingService::addTimedListen(const TimedListen& listen)
|
||||||
{
|
{
|
||||||
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
if (std::optional<Database::Scrobbler> scrobbler {getUserScrobbler(listen.userId)})
|
||||||
_scrobblers[*scrobbler]->addTimedListen(listen);
|
_scrobblers[*scrobbler]->addTimedListen(listen);
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<Database::Scrobbler>
|
std::optional<Database::Scrobbler>
|
||||||
Scrobbling::getUserScrobbler(Database::UserId userId)
|
ScrobblingService::getUserScrobbler(Database::UserId userId)
|
||||||
{
|
{
|
||||||
std::optional<Database::Scrobbler> scrobbler;
|
std::optional<Database::Scrobbler> scrobbler;
|
||||||
|
|
||||||
@@ -81,8 +81,8 @@ namespace Scrobbling
|
|||||||
return scrobbler;
|
return scrobbler;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::ArtistContainer
|
ScrobblingService::ArtistContainer
|
||||||
Scrobbling::getRecentArtists(UserId userId,
|
ScrobblingService::getRecentArtists(UserId userId,
|
||||||
const std::vector<ClusterId>& clusterIds,
|
const std::vector<ClusterId>& clusterIds,
|
||||||
std::optional<TrackArtistLinkType> linkType,
|
std::optional<TrackArtistLinkType> linkType,
|
||||||
std::optional<Range> range,
|
std::optional<Range> range,
|
||||||
@@ -107,8 +107,8 @@ namespace Scrobbling
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::ReleaseContainer
|
ScrobblingService::ReleaseContainer
|
||||||
Scrobbling::getRecentReleases(Database::UserId userId,
|
ScrobblingService::getRecentReleases(Database::UserId userId,
|
||||||
const std::vector<Database::ClusterId>& clusterIds,
|
const std::vector<Database::ClusterId>& clusterIds,
|
||||||
std::optional<Database::Range> range,
|
std::optional<Database::Range> range,
|
||||||
bool& moreResults)
|
bool& moreResults)
|
||||||
@@ -132,8 +132,8 @@ namespace Scrobbling
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::TrackContainer
|
ScrobblingService::TrackContainer
|
||||||
Scrobbling::getRecentTracks(Database::UserId userId,
|
ScrobblingService::getRecentTracks(Database::UserId userId,
|
||||||
const std::vector<Database::ClusterId>& clusterIds,
|
const std::vector<Database::ClusterId>& clusterIds,
|
||||||
std::optional<Database::Range> range,
|
std::optional<Database::Range> range,
|
||||||
bool& moreResults)
|
bool& moreResults)
|
||||||
@@ -159,8 +159,8 @@ namespace Scrobbling
|
|||||||
|
|
||||||
|
|
||||||
// Top
|
// Top
|
||||||
Scrobbling::ArtistContainer
|
ScrobblingService::ArtistContainer
|
||||||
Scrobbling::getTopArtists(UserId userId,
|
ScrobblingService::getTopArtists(UserId userId,
|
||||||
const std::vector<Database::ClusterId>& clusterIds,
|
const std::vector<Database::ClusterId>& clusterIds,
|
||||||
std::optional<Database::TrackArtistLinkType> linkType,
|
std::optional<Database::TrackArtistLinkType> linkType,
|
||||||
std::optional<Database::Range> range,
|
std::optional<Database::Range> range,
|
||||||
@@ -185,8 +185,8 @@ namespace Scrobbling
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::ReleaseContainer
|
ScrobblingService::ReleaseContainer
|
||||||
Scrobbling::getTopReleases(Database::UserId userId,
|
ScrobblingService::getTopReleases(Database::UserId userId,
|
||||||
const std::vector<Database::ClusterId>& clusterIds,
|
const std::vector<Database::ClusterId>& clusterIds,
|
||||||
std::optional<Database::Range> range,
|
std::optional<Database::Range> range,
|
||||||
bool& moreResults)
|
bool& moreResults)
|
||||||
@@ -210,8 +210,8 @@ namespace Scrobbling
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
Scrobbling::TrackContainer
|
ScrobblingService::TrackContainer
|
||||||
Scrobbling::getTopTracks(Database::UserId userId,
|
ScrobblingService::getTopTracks(Database::UserId userId,
|
||||||
const std::vector<Database::ClusterId>& clusterIds,
|
const std::vector<Database::ClusterId>& clusterIds,
|
||||||
std::optional<Database::Range> range,
|
std::optional<Database::Range> range,
|
||||||
bool& moreResults)
|
bool& moreResults)
|
||||||
@@ -235,7 +235,7 @@ namespace Scrobbling
|
|||||||
}
|
}
|
||||||
|
|
||||||
Database::ObjectPtr<Database::TrackList>
|
Database::ObjectPtr<Database::TrackList>
|
||||||
Scrobbling::getListensTrackList(Session& session, Database::ObjectPtr<Database::User> user)
|
ScrobblingService::getListensTrackList(Session& session, Database::ObjectPtr<Database::User> user)
|
||||||
{
|
{
|
||||||
return _scrobblers[user->getScrobbler()]->getListensTrackList(session, user);
|
return _scrobblers[user->getScrobbler()]->getListensTrackList(session, user);
|
||||||
}
|
}
|
||||||
+3
-3
@@ -23,15 +23,15 @@
|
|||||||
#include <optional>
|
#include <optional>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
|
|
||||||
#include "scrobbling/IScrobbling.hpp"
|
#include "services/scrobbling/IScrobblingService.hpp"
|
||||||
#include "IScrobbler.hpp"
|
#include "IScrobbler.hpp"
|
||||||
|
|
||||||
namespace Scrobbling
|
namespace Scrobbling
|
||||||
{
|
{
|
||||||
class Scrobbling : public IScrobbling
|
class ScrobblingService : public IScrobblingService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Scrobbling(boost::asio::io_context& ioContext, Database::Db& db);
|
ScrobblingService(boost::asio::io_context& ioContext, Database::Db& db);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void listenStarted(const Listen& listen) override;
|
void listenStarted(const Listen& listen) override;
|
||||||
+1
-1
@@ -32,7 +32,7 @@
|
|||||||
#include "database/Track.hpp"
|
#include "database/Track.hpp"
|
||||||
#include "database/TrackList.hpp"
|
#include "database/TrackList.hpp"
|
||||||
#include "database/User.hpp"
|
#include "database/User.hpp"
|
||||||
#include "scrobbling/Exception.hpp"
|
#include "services/scrobbling/Exception.hpp"
|
||||||
#include "utils/IConfig.hpp"
|
#include "utils/IConfig.hpp"
|
||||||
#include "utils/http/IClient.hpp"
|
#include "utils/http/IClient.hpp"
|
||||||
#include "utils/Logger.hpp"
|
#include "utils/Logger.hpp"
|
||||||
+1
-1
@@ -27,7 +27,7 @@
|
|||||||
#include <Wt/Dbo/Dbo.h>
|
#include <Wt/Dbo/Dbo.h>
|
||||||
|
|
||||||
#include "database/Types.hpp"
|
#include "database/Types.hpp"
|
||||||
#include "scrobbling/Listen.hpp"
|
#include "services/scrobbling/Listen.hpp"
|
||||||
|
|
||||||
namespace Database
|
namespace Database
|
||||||
{
|
{
|
||||||
+4
-4
@@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
#include <Wt/WDateTime.h>
|
#include <Wt/WDateTime.h>
|
||||||
|
|
||||||
#include "scrobbling/Listen.hpp"
|
#include "services/scrobbling/Listen.hpp"
|
||||||
#include "database/Types.hpp"
|
#include "database/Types.hpp"
|
||||||
|
|
||||||
namespace Database
|
namespace Database
|
||||||
@@ -44,10 +44,10 @@ namespace Database
|
|||||||
namespace Scrobbling
|
namespace Scrobbling
|
||||||
{
|
{
|
||||||
|
|
||||||
class IScrobbling
|
class IScrobblingService
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual ~IScrobbling() = default;
|
virtual ~IScrobblingService() = default;
|
||||||
|
|
||||||
// Scrobbling
|
// Scrobbling
|
||||||
virtual void listenStarted(const Listen& listen) = 0;
|
virtual void listenStarted(const Listen& listen) = 0;
|
||||||
@@ -97,7 +97,7 @@ namespace Scrobbling
|
|||||||
bool& moreResults) = 0;
|
bool& moreResults) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::unique_ptr<IScrobbling> createScrobbling(boost::asio::io_service& ioService, Database::Db& db);
|
std::unique_ptr<IScrobblingService> createScrobblingService(boost::asio::io_service& ioService, Database::Db& db);
|
||||||
|
|
||||||
} // ns Scrobbling
|
} // ns Scrobbling
|
||||||
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user