diff --git a/forked-daapd.conf b/forked-daapd.conf index 7b41e6e9..eac8c442 100644 --- a/forked-daapd.conf +++ b/forked-daapd.conf @@ -78,14 +78,21 @@ library { # (changing this setting only takes effect after rescan, see the README) compilation_artist = "Various artists" - # There are 5 default playlists: "Library", "Music", "Movies", "TV Shows" - # and "Podcasts". Here you can change the names of these playlists. + # Internet streams in your playlists will by default be shown in the + # "Radio" library, like iTunes does. However, some clients (like + # TunesRemote+) won't show the "Radio" library. If you would also like + # to have them shown like normal playlists, you can enable this option. +# radio_playlists = false + + # These are the default playlists. If you want them to have other names, + # you can set it here. # name_library = "Library" # name_music = "Music" # name_movies = "Movies" # name_tvshows = "TV Shows" # name_podcasts = "Podcasts" # name_audiobooks = "Audiobooks" +# name_radio = "Radio" # Artwork file names (without file type extension) # forked-daapd will look for jpg and png files with these base names diff --git a/src/conffile.c b/src/conffile.c index c6801d20..e2781a91 100644 --- a/src/conffile.c +++ b/src/conffile.c @@ -69,12 +69,14 @@ static cfg_opt_t sec_library[] = CFG_STR_LIST("audiobooks", NULL, CFGF_NONE), CFG_STR_LIST("compilations", NULL, CFGF_NONE), CFG_STR("compilation_artist", NULL, CFGF_NONE), + CFG_BOOL("radio_playlists", cfg_false, CFGF_NONE), CFG_STR("name_library", "Library", CFGF_NONE), CFG_STR("name_music", "Music", CFGF_NONE), CFG_STR("name_movies", "Movies", CFGF_NONE), CFG_STR("name_tvshows", "TV Shows", CFGF_NONE), CFG_STR("name_podcasts", "Podcasts", CFGF_NONE), CFG_STR("name_audiobooks", "Audiobooks", CFGF_NONE), + CFG_STR("name_radio", "Radio", CFGF_NONE), CFG_STR_LIST("artwork_basenames", "{artwork,cover,Folder}", CFGF_NONE), CFG_BOOL("artwork_individual", cfg_false, CFGF_NONE), CFG_STR_LIST("filetypes_ignore", "{.db,.ini,.db-journal,.pdf}", CFGF_NONE), diff --git a/src/httpd_daap.c b/src/httpd_daap.c index 1facff31..f125614d 100644 --- a/src/httpd_daap.c +++ b/src/httpd_daap.c @@ -69,6 +69,7 @@ extern struct event_base *evbase_httpd; /* Update requests refresh interval in seconds */ #define DAAP_UPDATE_REFRESH 0 +/* Database number for the Radio item */ #define DAAP_DB_RADIO 2 struct uri_map { @@ -1128,6 +1129,7 @@ daap_reply_dblist(struct evhttp_request *req, struct evbuffer *evbuf, char **uri struct daap_session *s; cfg_t *lib; char *name; + char *name_radio; int count; s = daap_session_find(req, query, evbuf); @@ -1136,6 +1138,7 @@ daap_reply_dblist(struct evhttp_request *req, struct evbuffer *evbuf, char **uri lib = cfg_getsec(cfg, "library"); name = cfg_getstr(lib, "name"); + name_radio = cfg_getstr(lib, "name_radio"); content = evbuffer_new(); if (!content) @@ -1187,7 +1190,7 @@ daap_reply_dblist(struct evhttp_request *req, struct evbuffer *evbuf, char **uri dmap_add_long(item, "mper", DAAP_DB_RADIO); dmap_add_int(item, "mdbk", 0x64); dmap_add_int(item, "aeCs", 0); - dmap_add_string(item, "minm", "Radio"); + dmap_add_string(item, "minm", name_radio); count = db_pl_get_count(); // TODO This counts too much, should only include stream playlists dmap_add_int(item, "mimc", count); dmap_add_int(item, "mctc", 0); @@ -1545,12 +1548,14 @@ daap_reply_playlists(struct evhttp_request *req, struct evbuffer *evbuf, char ** struct daap_session *s; struct evbuffer *playlistlist; struct evbuffer *playlist; + cfg_t *lib; const struct dmap_field_map *dfm; const struct dmap_field *df; const struct dmap_field **meta; const char *param; char **strval; int database; + int cfg_radiopl; int nmeta; int npls; int32_t plid; @@ -1573,6 +1578,9 @@ daap_reply_playlists(struct evhttp_request *req, struct evbuffer *evbuf, char ** return -1; } + lib = cfg_getsec(cfg, "library"); + cfg_radiopl = cfg_getbool(lib, "radio_playlists"); + ret = evbuffer_expand(evbuf, 61); if (ret < 0) { @@ -1674,7 +1682,7 @@ daap_reply_playlists(struct evhttp_request *req, struct evbuffer *evbuf, char ** */ if ((database == DAAP_DB_RADIO) && (plstreams == 0)) continue; - if ((database != DAAP_DB_RADIO) && (plstreams > 0) && (plstreams == plitems)) + if (!cfg_radiopl && (database != DAAP_DB_RADIO) && (plstreams > 0) && (plstreams == plitems)) continue; /* Don't add empty Smart playlists */