Ticket #8576: upnp-entries.diff

File upnp-entries.diff, 12.9 KB (added by Wolfgang <mythtv@…>, 14 years ago)

Add new entries to upnp music

  • mythtv/programs/mythbackend/upnpcdsmusic.cpp

     
    5555            "ORDER BY name",
    5656        "" },
    5757
    58 /*
    59 This is currently broken... need to handle list of items with single parent (like 'All Music')
     58    {   "Playlists",
     59            "playlist.playlist_id",
     60            "SELECT p.playlist_id as id, "
     61              "p.playlist_name as name, "
     62              " count( song.song_id ) as children "
     63                "FROM music_playlists p join music_songs song on FIND_IN_SET(song.song_id, p.playlist_songs) "
     64                "WHERE p.playlist_name NOT LIKE '%storage' "
     65                "%1 "
     66                "GROUP BY p.playlist_id "
     67                "ORDER BY p.playlist_name ",
     68            "AND FIND_IN_SET(song.song_id, (:KEY))" },
    6069
    61     {   "Recently Added",
    62         "*",
    63         "SELECT song_id id, "
    64           "name, "
    65           "1 as children "
    66             "FROM music_songs song "
    67             "%1 "
    68             "ORDER BY name",
    69         "WHERE (DATEDIFF( CURDATE(), date_modified ) <= 30 ) " },
    70 */
    71     {   "By Album",
    72         "song.album_id",
    73         "SELECT a.album_id as id, "
    74           "a.album_name as name, "
    75           "count( song.album_id ) as children "
    76             "FROM music_songs song join music_albums a on a.album_id = song.album_id "
    77             "%1 "
    78             "GROUP BY a.album_id "
    79             "ORDER BY a.album_name",
    80         "WHERE song.album_id=:KEY" },
    81 /*
     70    {   "Most Played Albums",
     71            "song.album_id",
     72            "SELECT a.album_id as id, "
     73              "a.album_name as name, "
     74              "count( song.album_id ) as children "
     75                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     76                "%1 "
     77                "GROUP BY song.album_id "
     78                "ORDER BY sum( song.numplays ) DESC",
     79            "WHERE song.album_id=:KEY" },
    8280
    83     {   "By Artist",
    84         "artist_id",
    85         "SELECT a.artist_id as id, "
    86           "a.artist_name as name, "
    87           "count( distinct song.artist_id ) as children "
    88             "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
    89             "%1 "
    90             "GROUP BY a.artist_id "
    91             "ORDER BY a.artist_name",
    92         "WHERE song.artist_id=:KEY" },
     81    {   "Least Played Albums",
     82            "song.album_id",
     83            "SELECT a.album_id as id, "
     84              "a.album_name as name, "
     85              "count( song.album_id ) as children "
     86                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     87                "%1 "
     88                "GROUP BY song.album_id "
     89                "ORDER BY sum( song.numplays )",
     90            "WHERE song.album_id=:KEY" },
     91
     92    {   "Recently Played Albums",
     93            "song.album_id",
     94            "SELECT a.album_id as id, "
     95              "a.album_name as name, "
     96              "count( song.album_id ) as children "
     97                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     98                "%1 "
     99                "GROUP BY song.album_id "
     100                "ORDER BY song.lastplay DESC",
     101            "WHERE song.album_id=:KEY" },
     102    /*
     103    This is currently broken... need to handle list of items with single parent (like 'All Music')
     104
     105        {   "Recently Added",
     106            "*",
     107            "SELECT song_id id, "
     108              "name, "
     109              "1 as children "
     110                "FROM music_songs song "
     111                "%1 "
     112                "ORDER BY name",
     113            "WHERE (DATEDIFF( CURDATE(), date_modified ) <= 30 ) " },
     114    */
     115
     116    {   "Recently Added Albums",
     117            "song.album_id",
     118            "SELECT a.album_id as id, "
     119              "a.album_name as name, "
     120              "count( song.album_id ) as children "
     121                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     122                "%1 "
     123                "GROUP BY song.album_id "
     124                "ORDER BY song.date_entered DESC",
     125            "WHERE song.album_id=:KEY" },
     126
     127    {   "Recently Modified Albums",
     128            "song.album_id",
     129            "SELECT a.album_id as id, "
     130              "a.album_name as name, "
     131              "count( song.album_id ) as children "
     132                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     133                "%1 "
     134                "GROUP BY song.album_id "
     135                "ORDER BY song.date_modified DESC",
     136            "WHERE song.album_id=:KEY" },
     137
     138    {   "Random Albums",
     139            "song.album_id",
     140            "SELECT a.album_id as id, "
     141              "a.album_name as name, "
     142              "count( song.album_id ) as children "
     143                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     144                "%1 "
     145                "GROUP BY song.album_id "
     146                "ORDER BY RAND() ",
     147            "WHERE song.album_id=:KEY" },
     148
     149    {   "Most Played Artists",
     150            "song.artist_id",
     151            "SELECT a.artist_id as id, "
     152              "a.artist_name as name, "
     153              "count( song.artist_id ) as children "
     154                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     155                "%1 "
     156                "GROUP BY song.artist_id "
     157                "ORDER BY sum( song.numplays ) DESC",
     158            "WHERE song.artist_id=:KEY" },
     159
     160    {   "Least Played Artists",
     161            "song.artist_id",
     162            "SELECT a.artist_id as id, "
     163              "a.artist_name as name, "
     164              "count( song.artist_id ) as children "
     165                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     166                "%1 "
     167                "GROUP BY song.artist_id "
     168                "ORDER BY sum( song.numplays )",
     169            "WHERE song.artist_id=:KEY" },
     170
     171    {   "Random Artists",
     172            "song.artist_id",
     173            "SELECT a.artist_id as id, "
     174              "a.artist_name as name, "
     175              "count( song.artist_id ) as children "
     176                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     177                "%1 "
     178                "GROUP BY song.artist_id "
     179                "ORDER BY RAND() ",
     180            "WHERE song.artist_id=:KEY" },
     181
     182/*      {   "By Album",
     183          "song.album_id",
     184          "SELECT a.album_id as id, "
     185            "a.album_name as name, "
     186            "count( song.album_id ) as children "
     187              "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     188              "%1 "
     189              "GROUP BY a.album_id "
     190              "ORDER BY a.album_name",
     191          "WHERE song.album_id=:KEY" },
    93192*/
    94 /*
    95 {   "By Genre",
    96         "genre_id",
    97         "SELECT g.genre_id as id, "
    98           "genre as name, "
    99           "count( distinct song.genre_id ) as children "
    100             "FROM music_songs song join music_genres g on g.genre_id = song.genre_id "
    101             "%1 "
    102             "GROUP BY g.genre_id "
    103             "ORDER BY g.genre",
    104         "WHERE song.genre_id=:KEY" },
     193    {   "By Album A-F",
     194            "song.album_id",
     195            "SELECT a.album_id as id, "
     196              "a.album_name as name, "
     197              "count( song.album_id ) as children "
     198                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     199                "WHERE a.album_name REGEXP '^[A-F]' "
     200                "%1 "
     201                "GROUP BY a.album_id "
     202                "ORDER BY a.album_name",
     203            "AND song.album_id=:KEY " },
    105204
    106 */
     205    {   "By Album G-L",
     206            "song.album_id",
     207            "SELECT a.album_id as id, "
     208              "a.album_name as name, "
     209              "count( song.album_id ) as children "
     210                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     211                "WHERE a.album_name REGEXP '^[G-L]' "
     212                "%1 "
     213                "GROUP BY a.album_id "
     214                "ORDER BY a.album_name",
     215            "AND song.album_id=:KEY " },
     216
     217    {   "By Album M-R",
     218            "song.album_id",
     219            "SELECT a.album_id as id, "
     220              "a.album_name as name, "
     221              "count( song.album_id ) as children "
     222                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     223                "WHERE a.album_name REGEXP '^[M-R]' "
     224                "%1 "
     225                "GROUP BY a.album_id "
     226                "ORDER BY a.album_name",
     227            "AND song.album_id=:KEY " },
     228
     229    {   "By Album S-Z",
     230            "song.album_id",
     231            "SELECT a.album_id as id, "
     232              "a.album_name as name, "
     233              "count( song.album_id ) as children "
     234                "FROM music_songs song join music_albums a on a.album_id = song.album_id "
     235                "WHERE a.album_name REGEXP '^[S-Z]' "
     236                "%1 "
     237                "GROUP BY a.album_id "
     238                "ORDER BY a.album_name",
     239            "AND song.album_id=:KEY " },
     240  /*
     241
     242      {   "By Artist",
     243          "artist_id",
     244          "SELECT a.artist_id as id, "
     245            "a.artist_name as name, "
     246            "count( distinct song.artist_id ) as children "
     247              "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     248              "%1 "
     249              "GROUP BY a.artist_id "
     250              "ORDER BY a.artist_name",
     251          "WHERE song.artist_id=:KEY" },
     252  */
     253    {   "By Artist A-F",
     254            "song.artist_id",
     255            "SELECT a.artist_id as id, "
     256              "a.artist_name as name, "
     257              "count( song.artist_id ) as children "
     258                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     259                "WHERE a.artist_name REGEXP '^[A-F]' "
     260                "%1 "
     261                "GROUP BY  a.artist_id "
     262                "ORDER BY a.artist_name",
     263            "AND song.artist_id=:KEY" },
     264
     265    {   "By Artist G-L",
     266            "song.artist_id",
     267            "SELECT a.artist_id as id, "
     268              "a.artist_name as name, "
     269              "count( song.artist_id ) as children "
     270                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     271                "WHERE a.artist_name REGEXP '^[G-L]' "
     272                "%1 "
     273                "GROUP BY  a.artist_id "
     274                "ORDER BY a.artist_name",
     275            "AND song.artist_id=:KEY" },
     276
     277    {   "By Artist M-R",
     278            "song.artist_id",
     279            "SELECT a.artist_id as id, "
     280              "a.artist_name as name, "
     281              "count( song.artist_id ) as children "
     282                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     283                "WHERE a.artist_name REGEXP '^[M-R]' "
     284                "%1 "
     285                "GROUP BY  a.artist_id "
     286                "ORDER BY a.artist_name",
     287            "AND song.artist_id=:KEY" },
     288
     289    {   "By Artist S-Z",
     290            "song.artist_id",
     291            "SELECT a.artist_id as id, "
     292              "a.artist_name as name, "
     293              "count( song.artist_id ) as children "
     294                "FROM music_songs song join music_artists a on a.artist_id = song.artist_id "
     295                "WHERE a.artist_name REGEXP '^[S-Z]' "
     296                "%1 "
     297                "GROUP BY  a.artist_id "
     298                "ORDER BY a.artist_name",
     299            "AND song.artist_id=:KEY" },
     300  {   "By Genre",
     301          "song.genre_id",
     302          "SELECT g.genre_id as id, "
     303            "g.genre as name, "
     304            "count( distinct song.genre_id ) as children "
     305              "FROM music_songs song join music_genres g on g.genre_id = song.genre_id "
     306              "%1 "
     307              "GROUP BY g.genre_id "
     308              "ORDER BY g.genre",
     309          "WHERE song.genre_id=:KEY" },
     310
    107311};
    108312
    109313int UPnpCDSMusic::g_nRootCount = sizeof( g_RootNodes ) / sizeof( UPnpCDSRootInfo );
     
    135339
    136340QString UPnpCDSMusic::GetTableName( QString sColumn )
    137341{
    138     return "music_songs song";
     342    QString sTableName = "";
     343
     344    if(sColumn.startsWith("playlist"))
     345    {
     346        sTableName = "music_playlists playlist";
     347    }
     348    else
     349    {
     350        sTableName = "music_songs song";
     351    }
     352    return sTableName;
    139353}
    140354
    141355/////////////////////////////////////////////////////////////////////////////
     
    151365            "FROM music_songs song "                                              \
    152366               " join music_artists artist on artist.artist_id = song.artist_id " \
    153367               " join music_albums album on album.album_id = song.album_id "      \
    154                " join music_genres genre on  genre.genre_id = song.genre_id ";
     368               " join music_genres genre on  genre.genre_id = song.genre_id "     \
     369               " join music_playlists playlist on FIND_IN_SET(song.song_id, playlist.playlist_songs) ";
    155370}
    156371
    157372/////////////////////////////////////////////////////////////////////////////