[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [libechonest] /: add GenrePresets & Distribution Playlist Params
From: Leo Franchi <lfranchi () kde ! org>
Date: 2014-09-13 2:21:19
Message-ID: E1XScxj-00062T-WD () scm ! kde ! org
[Download RAW message or body]
Git commit 109bff3b4dd4f1d44a4e1ed4a3338f5c2fe0e90a by Leo Franchi, on behalf of \
Stefan Derkits. Committed on 29/05/2014 at 20:58.
Pushed by lfranchi into branch 'master'.
add GenrePresets & Distribution Playlist Params
M +26 -1 src/Playlist.cpp
M +16 -1 src/Playlist.h
M +45 -2 tests/PlaylistTest.cpp
M +2 -0 tests/PlaylistTest.h
http://commits.kde.org/libechonest/109bff3b4dd4f1d44a4e1ed4a3338f5c2fe0e90a
diff --git a/src/Playlist.cpp b/src/Playlist.cpp
index 97048a3..b5d992c 100644
--- a/src/Playlist.cpp
+++ b/src/Playlist.cpp
@@ -327,8 +327,10 @@ QNetworkReply* Echonest::DynamicPlaylist::generateInternal(const \
Echonest::Dynam urlAddQueryItem( url, QString::fromLatin1( playlistParamToString( \
iter->first ) ), QString::fromLatin1( playlistSortToString( \
static_cast<Echonest::DynamicPlaylist::SortingType>( iter->second.toInt() ) ) ) ); } \
else if( iter->first == Pick ) { urlAddQueryItem( url, QString::fromLatin1( \
playlistParamToString( iter->first ) ), QString::fromLatin1( \
playlistArtistPickToString( static_cast<Echonest::DynamicPlaylist::ArtistPick>( \
iter->second.toInt() ) ) ) );
- } else if( iter->first == SongInformation ){
+ } else if( iter->first == SongInformation ) {
Echonest::Song::addQueryInformation( url, Echonest::SongInformation( \
iter->second.value< Echonest::SongInformation >() ) ); + } else if ( \
iter->first == GenrePreset ) { + urlAddQueryItem( url, \
QString::fromLatin1( playlistParamToString( iter->first ) ), QString::fromLatin1( \
playlistGenrePresetToString( \
static_cast<Echonest::DynamicPlaylist::GenrePresetParam>( iter->second.toInt() ) ) ) \
); } else {
urlAddQueryItem( url, QString::fromLatin1( playlistParamToString( \
iter->first ) ), QString::fromLatin1( Echonest::escapeSpacesAndPluses( \
iter->second.toString() ) ) ); }
@@ -472,6 +474,10 @@ QByteArray \
Echonest::DynamicPlaylist::playlistParamToString(Echonest::DynamicPla return \
"max_valence"; case Echonest::DynamicPlaylist::MinValence:
return "min_valence";
+ case Echonest::DynamicPlaylist::Distribution:
+ return "distribution";
+ case Echonest::DynamicPlaylist::GenrePreset:
+ return "genre_preset";
}
return QByteArray();
}
@@ -606,6 +612,25 @@ QByteArray \
Echonest::DynamicPlaylist::dynamicFeedbackToString(Echonest::DynamicP }
}
+QByteArray Echonest::DynamicPlaylist::playlistGenrePresetToString(Echonest::DynamicPlaylist::GenrePresetParam \
param) +{
+ switch( param )
+ {
+ case CoreBest:
+ return "core-best";
+ case CoreShuffled:
+ return "core-shuffled";
+ case EmergingBest:
+ return "emerging-best";
+ case EmerginShuffled:
+ return "emerging-shuffled";
+ default:
+ Q_ASSERT(false);
+ return "";
+ }
+}
+
+
QDebug Echonest::operator<<(QDebug d, const Echonest::DynamicPlaylist& playlist)
{
d << QString::fromLatin1( "DynamicPlaylist(%1, %2)" ).arg( QLatin1String( \
playlist.sessionId() ), playlist.currentSong().toString() );
diff --git a/src/Playlist.h b/src/Playlist.h
index e47e39e..e562a56 100644
--- a/src/Playlist.h
+++ b/src/Playlist.h
@@ -195,7 +195,9 @@ namespace Echonest{
MaxLiveness, /// 0 < liveness < 1 a measure of the maximum liveness of \
the song
MinLiveness, /// 0 < liveness < 1 a measure of the minimum liveness of \
the song
MaxValence, /// 0 < valence < 1 a measure of the maximum valence of the \
song
- MinValence /// 0 < valence < 1 a measure of the minimum valence of the \
song + MinValence, /// 0 < valence < 1 a measure of the minimum valence \
of the song + Distribution, /// focused or wandering
+ GenrePreset /// core-best, core-shuffled, in_rotation-best, \
in_rotation-shuffled, emerging-best or emerging-shuffled };
/**
@@ -212,6 +214,18 @@ namespace Echonest{
RateSong, /// Rate the desired song. [track_id, song_id, "last"]^[0-10]. \
E.g: "last^3" or "TRTLKZV12E5AC92E11^5" };
+ /**
+ * The parameters that can be passed to GenrePreset
+ */
+ enum GenrePresetParam {
+ CoreBest,
+ CoreShuffled,
+ InRotationBest,
+ InRotationShuffled,
+ EmergingBest,
+ EmerginShuffled,
+ };
+
typedef QPair< PlaylistParam, QVariant > PlaylistParamData;
typedef QVector< PlaylistParamData > PlaylistParams;
@@ -339,6 +353,7 @@ namespace Echonest{
static QNetworkReply* generateInternal( const PlaylistParams& params, const \
QByteArray& type ); static QByteArray playlistSortToString(SortingType sorting);
static QByteArray playlistArtistPickToString(ArtistPick pick);
+ static QByteArray playlistGenrePresetToString(GenrePresetParam param);
static QByteArray dynamicFeedbackToString(DynamicFeedbackParam param);
QSharedDataPointer<DynamicPlaylistData> d;
diff --git a/tests/PlaylistTest.cpp b/tests/PlaylistTest.cpp
index 54bcb63..6efafd3 100644
--- a/tests/PlaylistTest.cpp
+++ b/tests/PlaylistTest.cpp
@@ -207,7 +207,6 @@ void PlaylistTest::testDynamic1()
p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Artist, \
QLatin1String( "tallest man on earth" ) ) );
p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Artist, \
QLatin1String( "fleet foxes" ) ) );
p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Artist, \
QLatin1String( "johnny cash" ) ) );
- p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Artist, \
QLatin1String( "crosby, stills, nash and young" ) ) );
p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Type, \
Echonest::DynamicPlaylist::ArtistRadioType ) );
p.append( DynamicPlaylist::PlaylistParamData( \
Echonest::DynamicPlaylist::ArtistMinHotttnesss, .6 ) );
p.append( DynamicPlaylist::PlaylistParamData( \
Echonest::DynamicPlaylist::ArtistMaxFamiliarity, .4 ) ); @@ -217,7 +216,7 @@ void \
PlaylistTest::testDynamic1() QNetworkReply* reply = playlist.create( p );
qDebug() << reply->url().toString();
- QCOMPARE( reply->url().toString(), QLatin1String( \
"http://developer.echonest.com/api/v4/playlist/dynamic/create?api_key=JGJCRKWLXLBZIFAZ \
B&format=xml&artist=tallest+man+on+earth&artist=fleet+foxes&artist=johnny+cash&artist= \
crosby,+stills,+nash+and+young&type=artist-radio&artist_min_hotttnesss=0.6&artist_max_familiarity=0.4&mood=sad" \
) ); + QCOMPARE( reply->url().toString(), QLatin1String( \
"http://developer.echonest.com/api/v4/playlist/dynamic/create?api_key=JGJCRKWLXLBZIFAZ \
B&format=xml&artist=tallest+man+on+earth&artist=fleet+foxes&artist=johnny+cash&type=artist-radio&artist_min_hotttnesss=0.6&artist_max_familiarity=0.4&mood=sad" \
) );
QEventLoop loop;
loop.connect( reply, SIGNAL(finished()), SLOT(quit()) );
@@ -612,6 +611,50 @@ void PlaylistTest::testAudioSummaryAttributes()
}
}
+void PlaylistTest::testGenrePresets()
+{
+ DynamicPlaylist::PlaylistParams p;
+ p.append( DynamicPlaylist::PlaylistParamData( DynamicPlaylist::Genre, \
QLatin1String( "classic rock" ) ) ); + p.append( \
DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Type, \
Echonest::DynamicPlaylist::GenreRadioType ) ); + p.append( \
DynamicPlaylist::PlaylistParamData( DynamicPlaylist::GenrePreset, \
DynamicPlaylist::CoreBest ) ); + p.append( DynamicPlaylist::PlaylistParamData( \
DynamicPlaylist::Results, 30 ) ); +
+ QNetworkReply* reply = DynamicPlaylist::staticPlaylist( p );
+
+ qDebug() << reply->url().toEncoded();
+
+ QEventLoop loop;
+ loop.connect( reply, SIGNAL(finished()), SLOT(quit()) );
+ loop.exec();
+ SongList songs = DynamicPlaylist::parseStaticPlaylist( reply );
+
+ QVERIFY( songs.size() == 30 );
+}
+
+void PlaylistTest::testDistribution()
+{
+ DynamicPlaylist::PlaylistParams p;
+ p.append( DynamicPlaylist::PlaylistParamData( Echonest::DynamicPlaylist::Artist, \
QLatin1String( "the doors" ) ) ); + p.append( DynamicPlaylist::PlaylistParamData( \
Echonest::DynamicPlaylist::Type, Echonest::DynamicPlaylist::ArtistRadioType ) ); + \
p.append( DynamicPlaylist::PlaylistParamData( DynamicPlaylist::Results, 50 ) ); + \
p.append( DynamicPlaylist::PlaylistParamData( DynamicPlaylist::Distribution, \
QLatin1String( "wandering" ) ) ); + p.append( DynamicPlaylist::PlaylistParamData( \
DynamicPlaylist::GenrePreset, DynamicPlaylist::CoreBest ) ); +
+ QNetworkReply* reply = DynamicPlaylist::staticPlaylist( p );
+
+ qDebug() << reply->url().toEncoded();
+
+ QEventLoop loop;
+ loop.connect( reply, SIGNAL(finished()), SLOT(quit()) );
+ loop.exec();
+ SongList songs = DynamicPlaylist::parseStaticPlaylist( reply );
+
+ Q_FOREACH( const Song& song, songs) {
+ qDebug() << song;
+ }
+
+ QVERIFY( songs.size() == 50 );
+}
QTEST_MAIN( PlaylistTest )
diff --git a/tests/PlaylistTest.h b/tests/PlaylistTest.h
index 0e32fac..9d75c05 100644
--- a/tests/PlaylistTest.h
+++ b/tests/PlaylistTest.h
@@ -37,6 +37,8 @@ private slots:
void testGenreRadio();
void testAudioSummaryAttributes();
+ void testGenrePresets();
+ void testDistribution();
};
#endif
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic