[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