[girl] girl version 0.5.2



commit 92e97395baf55a863c5853b833d35f228bd6c381
Author: Ole Aamot <oka oka no>
Date:   Sun Nov 30 13:39:09 2014 +0100

    girl version 0.5.2

 girl.spec.in        |    2 +
 src/Makefile.am     |    4 +-
 src/Makefile.in     |    4 +-
 src/girl-gui.c      |   56 ++++++++++++++++++++---
 src/girl-listener.c |    7 +++
 src/girl-listener.h |    2 +
 src/girl-station.c  |    5 +-
 src/girl-station.h  |    1 +
 src/girl.c          |  125 ++++++++++++++++++++++++++++++++++++++++++++++++---
 src/girl.h          |    6 +++
 src/listeners.xml   |    6 +--
 src/stations.xml    |   44 +++++++++---------
 12 files changed, 217 insertions(+), 45 deletions(-)
---
diff --git a/girl.spec.in b/girl.spec.in
index 376eef3..045e66c 100644
--- a/girl.spec.in
+++ b/girl.spec.in
@@ -56,9 +56,11 @@ rm -rf %{buildroot}
 %{_datadir}/girl/girl-0.3.dtd
 %{_datadir}/girl/girl-0.4.dtd
 %{_datadir}/girl/girl-0.5.dtd
+%{_datadir}/girl/girl-0.6.dtd
 %{_datadir}/girl/girl-logo.png
 %{_datadir}/girl/girl.png
 %{_datadir}/girl/listener-1.0.dtd
+%{_datadir}/girl/listener-1.1.dtd
 %{_datadir}/girl/listeners.xml
 %{_datadir}/girl/stations.xml
 %{_datadir}/appdata/girl.appdata.xml
diff --git a/src/Makefile.am b/src/Makefile.am
index 4af4704..64889e9 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -8,6 +8,6 @@ bin_PROGRAMS = girl
 girl_SOURCES = girl.c girl-gui.c girl-listener.c girl-station.c girl-canvas.c
 
 girldir = $(datadir)/girl
-girl_DATA = listeners.xml stations.xml girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd 
listener-1.0.dtd girl-logo.png girl.png
+girl_DATA = listeners.xml stations.xml girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd 
girl-0.6.dtd listener-1.0.dtd listener-1.1.dtd girl-logo.png girl.png
 
-EXTRA_DIST = girl.h girl-gui.h girl-listener.h girl-station.h girl-canvas.h listeners.xml stations.xml 
girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd listener-1.0.dtd girl-logo.png girl.png
+EXTRA_DIST = girl.h girl-gui.h girl-listener.h girl-station.h girl-canvas.h listeners.xml stations.xml 
girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd girl-0.6.dtd listener-1.0.dtd 
listener-1.1.dtd girl-logo.png girl.png
diff --git a/src/Makefile.in b/src/Makefile.in
index 12a9213..c0ed90a 100644
--- a/src/Makefile.in
+++ b/src/Makefile.in
@@ -309,8 +309,8 @@ AM_CFLAGS = $(GOAL_CFLAGS)
 AM_LDFLAGS = $(GOAL_LIBS)
 girl_SOURCES = girl.c girl-gui.c girl-listener.c girl-station.c girl-canvas.c
 girldir = $(datadir)/girl
-girl_DATA = listeners.xml stations.xml girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd 
listener-1.0.dtd girl-logo.png girl.png
-EXTRA_DIST = girl.h girl-gui.h girl-listener.h girl-station.h girl-canvas.h listeners.xml stations.xml 
girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd listener-1.0.dtd girl-logo.png girl.png
+girl_DATA = listeners.xml stations.xml girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd 
girl-0.6.dtd listener-1.0.dtd listener-1.1.dtd girl-logo.png girl.png
+EXTRA_DIST = girl.h girl-gui.h girl-listener.h girl-station.h girl-canvas.h listeners.xml stations.xml 
girl-0.1.dtd girl-0.2.dtd girl-0.3.dtd girl-0.4.dtd girl-0.5.dtd girl-0.6.dtd listener-1.0.dtd 
listener-1.1.dtd girl-logo.png girl.png
 all: all-am
 
 .SUFFIXES:
diff --git a/src/girl-gui.c b/src/girl-gui.c
index c6e9518..a784574 100644
--- a/src/girl-gui.c
+++ b/src/girl-gui.c
@@ -64,13 +64,21 @@ GnomeUIInfo toolbar[] = {
                               on_stations_selector_button_clicked,
                               GTK_STOCK_PREFERENCES),
        GNOMEUIINFO_SEPARATOR,
-       GNOMEUIINFO_ITEM_STOCK(("Previous station"),
-                              ("Go to the previous station"),
+       GNOMEUIINFO_ITEM_STOCK(("Previous"),
+                              ("Go back to the previous station"),
                               on_previous_click, GTK_STOCK_GO_BACK),
-       GNOMEUIINFO_ITEM_STOCK(("Next station"), ("Go to the next station"),
+       GNOMEUIINFO_ITEM_STOCK(("Next"), ("Proceed to the next station"),
                               on_next_click, GTK_STOCK_GO_FORWARD),
        GNOMEUIINFO_SEPARATOR,
-       GNOMEUIINFO_ITEM_STOCK(("About"),
+       GNOMEUIINFO_ITEM_STOCK(("About Listener"),
+                              ("About the GNOME Internet Radio Locator"),
+                              about_listener, GNOME_STOCK_ABOUT),
+       GNOMEUIINFO_SEPARATOR,
+       GNOMEUIINFO_ITEM_STOCK(("About Station"),
+                              ("About the GNOME Internet Radio Locator"),
+                              about_station, GNOME_STOCK_ABOUT),
+       GNOMEUIINFO_SEPARATOR,
+       GNOMEUIINFO_ITEM_STOCK(("About Program"),
                               ("About the GNOME Internet Radio Locator"),
                               about_app, GNOME_STOCK_ABOUT),
        GNOMEUIINFO_SEPARATOR,
@@ -97,7 +105,7 @@ GtkWidget *create_listeners_selector(char *selected_listener_uri,
        GtkWidget *listeners_selector;
        GtkWidget *align, *menu, *drop_down, *item;
 
-       gchar *listener_uri, *listener_name, *listener_location;
+       gchar *listener_uri, *listener_name, *listener_location, *listener_release, *listener_description;
        gchar *label, *world_listener_xml_uri,
            *local_listener_xml_file;
 
@@ -164,6 +172,7 @@ GtkWidget *create_listeners_selector(char *selected_listener_uri,
                listener_uri = g_strdup(listenerinfo->uri);
                listener_name = g_strdup(listenerinfo->name);
                listener_location = g_strdup(listenerinfo->location);
+               listener_description = g_strdup(listenerinfo->description);
 
                /* girl_listeners = g_list_append(girl_listeners,(GirlListenerInfo *)listenerinfo); */
 
@@ -181,6 +190,12 @@ GtkWidget *create_listeners_selector(char *selected_listener_uri,
                        g_object_set_data(G_OBJECT(item),
                                          "listener_location",
                                          (gpointer) listener_location);
+                       g_object_set_data(G_OBJECT(item),
+                                         "listener_release",
+                                         (gpointer) listener_release);
+                       g_object_set_data(G_OBJECT(item),
+                                         "listener_description",
+                                         (gpointer) listener_description);
                        gtk_widget_show(item);
                        g_free(label);
 
@@ -200,6 +215,7 @@ GtkWidget *create_listeners_selector(char *selected_listener_uri,
                        g_free(listener_uri);
                        g_free(listener_name);
                        g_free(listener_location);
+                       g_free(listener_description);
                }
                i++;
                listenerinfo = listenerinfo->next;
@@ -230,7 +246,7 @@ GtkWidget *create_stations_selector(char *selected_station_uri,
        GtkWidget *stations_selector;
        GtkWidget *align, *menu, *drop_down, *item;
 
-       gchar *station_uri, *station_name, *station_location;
+       gchar *station_uri, *station_name, *station_location, *station_release, *station_description;
        gchar *label, *world_station_xml_filename, *local_station_xml_file;
 
        int i = 0, selection = -1;
@@ -294,7 +310,9 @@ GtkWidget *create_stations_selector(char *selected_station_uri,
                station_uri = g_strdup(stationinfo->stream->uri);
                station_name = g_strdup(stationinfo->name);
                station_location = g_strdup(stationinfo->location);
-
+               station_release = g_strdup(stationinfo->release);
+               station_description = g_strdup(stationinfo->description);
+               
                girl_stations = g_list_append(girl_stations,(GirlStationInfo *)stationinfo);
 
                if (label != NULL) {
@@ -311,6 +329,12 @@ GtkWidget *create_stations_selector(char *selected_station_uri,
                        g_object_set_data(G_OBJECT(item),
                                          "station_location",
                                          (gpointer) station_location);
+                       g_object_set_data(G_OBJECT(item),
+                                         "station_release",
+                                         (gpointer) station_release);
+                       g_object_set_data(G_OBJECT(item),
+                                         "station_description",
+                                         (gpointer) station_description);
                        gtk_widget_show(item);
                        g_free(label);
 
@@ -322,6 +346,8 @@ GtkWidget *create_stations_selector(char *selected_station_uri,
                        g_free(station_uri);
                        g_free(station_name);
                        g_free(station_location);
+                       g_free(station_release);
+                       g_free(station_description);
                }
                i++;
                stationinfo = stationinfo->next;
@@ -436,6 +462,10 @@ GtkWidget *create_girl_app()
            gnome_config_get_string("selected_listener_name=");
        girl->selected_listener_location =
            gnome_config_get_string("selected_listener_location=");
+       girl->selected_listener_release =
+           gnome_config_get_string("selected_listener_release=");
+       girl->selected_listener_description =
+           gnome_config_get_string("selected_listener_description=");
 
        printf("girl->selected_listener_uri: %s\n",
               girl->selected_listener_uri);
@@ -443,6 +473,10 @@ GtkWidget *create_girl_app()
               girl->selected_listener_name);
        printf("girl->selected_listener_location: %s\n",
               girl->selected_listener_location);
+       printf("girl->selected_listener_release: %s\n",
+              girl->selected_listener_release);
+       printf("girl->selected_listener_description: %s\n",
+              girl->selected_listener_description);
 
        girl->selected_station_uri =
            gnome_config_get_string("selected_station_uri=");
@@ -450,6 +484,10 @@ GtkWidget *create_girl_app()
            gnome_config_get_string("selected_station_name=");
        girl->selected_station_location =
            gnome_config_get_string("selected_station_location=");
+       girl->selected_station_release =
+           gnome_config_get_string("selected_station_release=");
+       girl->selected_station_description =
+           gnome_config_get_string("selected_station_description=");
 
        printf("girl->selected_station_uri: %s\n",
               girl->selected_station_uri);
@@ -457,6 +495,10 @@ GtkWidget *create_girl_app()
               girl->selected_station_name);
        printf("girl->selected_station_location: %s\n",
               girl->selected_station_location);
+       printf("girl->selected_station_release: %s\n",
+              girl->selected_station_release);
+       printf("girl->selected_station_description: %s\n",
+              girl->selected_station_description);
 
        gnome_config_pop_prefix();
 #endif
diff --git a/src/girl-listener.c b/src/girl-listener.c
index b8ad4d6..0ece17b 100644
--- a/src/girl-listener.c
+++ b/src/girl-listener.c
@@ -60,6 +60,12 @@ girl_listener_parser(GirlListenerInfo * listener, xmlDocPtr doc,
        MSG("listener->location = %s\n", listener->location);
        listener->uri = xmlGetProp(cur, "uri");
        MSG("listener->uri = %s\n", listener->uri);
+       listener->release = xmlGetProp(cur, "release");
+       MSG("listener->release = %s\n", listener->release);
+       listener->description = xmlGetProp(cur, "description");
+       MSG("listener->description = %s\n", listener->description);
+
+#if 0
        sub = cur->xmlChildrenNode;
 
        while (sub != NULL) {
@@ -108,6 +114,7 @@ girl_listener_parser(GirlListenerInfo * listener, xmlDocPtr doc,
                /* if... "location" */
                sub = sub->next;
        }
+#endif
 
        return;
 }
diff --git a/src/girl-listener.h b/src/girl-listener.h
index 7a19b15..132815d 100644
--- a/src/girl-listener.h
+++ b/src/girl-listener.h
@@ -36,6 +36,8 @@ struct _GirlListenerInfo {
        gchar *name;
        gchar *pass;
        gchar *uri;
+       gchar *release;
+       gchar *description;
        GirlLocationInfo *locationinfo;
        GirlListenerInfo *next;
 };
diff --git a/src/girl-station.c b/src/girl-station.c
index c2d4715..cbb1918 100644
--- a/src/girl-station.c
+++ b/src/girl-station.c
@@ -142,6 +142,8 @@ girl_station_parser(GirlStationInfo * station, xmlDocPtr doc,
        MSG("station->rank = %s\n", station->rank);
        station->type = xmlGetProp(cur, "type");
        MSG("station->type = %s\n", station->type);
+       station->release = xmlGetProp(cur, "release");
+       MSG("station->release = %s\n", station->release);
 
        sub = cur->xmlChildrenNode;
 
@@ -167,8 +169,7 @@ girl_station_parser(GirlStationInfo * station, xmlDocPtr doc,
                        station->description =
                            xmlNodeListGetString(doc, sub->xmlChildrenNode,
                                                 1);
-                       MSG("station->description = %s\n",
-                           station->description);
+                       MSG("station->description = %s\n", station->description);
                }
 
                if ((!xmlStrcmp(sub->name, (const xmlChar *) "uri"))) {
diff --git a/src/girl-station.h b/src/girl-station.h
index ae41164..1dc77b6 100644
--- a/src/girl-station.h
+++ b/src/girl-station.h
@@ -47,6 +47,7 @@ struct _GirlStationInfo {
        gchar *name;
        gchar *rank;
        gchar *type;
+       gchar *release;
        gchar *frequency;
        gchar *location;
        gchar *description;
diff --git a/src/girl.c b/src/girl.c
index ff1f15c..2a73063 100644
--- a/src/girl.c
+++ b/src/girl.c
@@ -186,10 +186,21 @@ void on_previous_click(GtkWidget * a, gpointer user_data)
                        MSG("on_station_select_changed: %s\n",
                            girl->selected_station_location);
 
+                       girl->selected_station_release = station->release;
+
+                       MSG("on_station_select_changed: %s\n",
+                           girl->selected_station_release);
+
+                       girl->selected_station_description = station->description;
+
+                       MSG("on_station_select_changed: %s\n",
+                           girl->selected_station_description);
+
                        appbar_send_msg(_("Selected %s in %s: %s"),
                                        girl->selected_station_name,
                                        girl->selected_station_location,
-                                       girl->selected_station_uri);
+                                       girl->selected_station_uri,
+                                       girl->selected_station_release);
                        
 
                        girl_launch_helper(station->stream->uri, GIRL_STREAM_SHOUTCAST);
@@ -231,10 +242,21 @@ void on_next_click(GtkWidget * a, gpointer user_data)
                        MSG("on_station_select_changed: %s\n",
                            girl->selected_station_location);
 
+                       girl->selected_station_release = station->release;
+
+                       MSG("on_station_select_changed: %s\n",
+                           girl->selected_station_release);
+
+                       girl->selected_station_description = station->description;
+
+                       MSG("on_station_select_changed: %s\n",
+                           girl->selected_station_description);
+
                        appbar_send_msg(_("Selected %s in %s: %s"),
                                        girl->selected_station_name,
                                        girl->selected_station_location,
-                                       girl->selected_station_uri);
+                                       girl->selected_station_uri,
+                                       girl->selected_station_release);
                        
                        girl_launch_helper(station->stream->uri, GIRL_STREAM_SHOUTCAST);
                }
@@ -268,10 +290,21 @@ void on_listeners_selector_changed(GtkWidget * a, gpointer user_data)
        MSG("on_listener_select_changed: %s\n",
            girl->selected_listener_location);
 
-       appbar_send_msg(_("Selected %s in %s: %s"),
+       girl->selected_listener_release =
+           g_strdup(g_object_get_data(G_OBJECT(a), "listener_release"));
+       MSG("on_listener_select_changed: %s\n",
+           girl->selected_listener_release);
+
+       girl->selected_listener_description =
+           g_strdup(g_object_get_data(G_OBJECT(a), "listener_description"));
+       MSG("on_listener_select_changed: %s\n",
+           girl->selected_listener_description);
+
+       appbar_send_msg(_("Selected %s in %s: %s (%f)"),
                        girl->selected_listener_name,
                        girl->selected_listener_location,
-                       girl->selected_listener_uri);
+                       girl->selected_listener_uri,
+                       girl->selected_listener_release);
 
        girl_launch_helper(girl->selected_listener_uri,
                           GIRL_STREAM_SHOUTCAST);
@@ -303,10 +336,21 @@ void on_stations_selector_changed(GtkWidget * a, gpointer user_data)
        MSG("on_station_select_changed: %s\n",
            girl->selected_station_location);
 
+       girl->selected_station_release =
+           g_strdup(g_object_get_data(G_OBJECT(a), "station_release"));
+       MSG("on_station_select_changed: %s\n",
+           girl->selected_station_release);
+
+       girl->selected_station_description =
+           g_strdup(g_object_get_data(G_OBJECT(a), "station_description"));
+       MSG("on_station_select_changed: %s\n",
+           girl->selected_station_description);
+
        appbar_send_msg(_("Selected %s in %s: %s"),
                        girl->selected_station_name,
                        girl->selected_station_location,
-                       girl->selected_station_uri);
+                       girl->selected_station_uri,
+                       girl->selected_station_release);
 
        girl_launch_helper(girl->selected_station_uri,
                           GIRL_STREAM_SHOUTCAST);
@@ -321,12 +365,18 @@ void quit_app(GtkWidget * a, gpointer user_data)
                                girl->selected_listener_name);
        gnome_config_set_string("selected_listener_location",
                                girl->selected_listener_location);
+       gnome_config_set_string("selected_listener_release",
+                               girl->selected_listener_release);
        gnome_config_set_string("selected_station_uri",
                                girl->selected_station_uri);
        gnome_config_set_string("selected_station_name",
                                girl->selected_station_name);
        gnome_config_set_string("selected_station_location",
                                girl->selected_station_location);
+       gnome_config_set_string("selected_station_release",
+                               girl->selected_station_release);
+       gnome_config_set_string("selected_station_description",
+                               girl->selected_station_description);
        gnome_config_sync();
        gnome_config_pop_prefix();
 
@@ -365,6 +415,68 @@ void about_app(GtkWidget * a, gpointer user_data)
        gtk_widget_show(about);
 }
 
+void about_listener(GtkWidget * a, gpointer user_data)
+{
+       static GtkWidget *about_listener = NULL;
+       const gchar *translator_credits = _("translator_credits");
+       const gchar *authors[] = {
+               girl->selected_listener_name,
+               NULL,
+       };
+
+       if (about_listener) {
+               gdk_window_raise(about_listener->window);
+               return;
+       }
+
+       about_listener = gnome_about_new(girl->selected_listener_name,
+                                       girl->selected_listener_release,
+                                       girl->selected_listener_location,
+                                       girl->selected_listener_description,
+                                       authors,
+                                       NULL,
+                                       NULL,
+                                       girl->icon);
+
+       g_signal_connect(G_OBJECT(about_listener), "destroy",
+                        G_CALLBACK(gtk_widget_destroy), NULL);
+       g_signal_connect(G_OBJECT(about_listener), "delete-event",
+                        G_CALLBACK(gtk_widget_destroy), NULL);
+       g_object_add_weak_pointer(G_OBJECT(about_listener), (void **) &(about_listener));
+       gtk_widget_show(about_listener);
+}
+
+void about_station(GtkWidget * a, gpointer user_data)
+{
+       static GtkWidget *about_station = NULL;
+       const gchar *translator_credits = _("translator_credits");
+       const gchar *authors[] = {
+               girl->selected_station_name,
+               NULL,
+       };
+
+       if (about_station) {
+               gdk_window_raise(about_station->window);
+               return;
+       }
+
+       about_station = gnome_about_new(girl->selected_station_name,
+                                       girl->selected_station_release,
+                                       girl->selected_station_location,
+                                       girl->selected_station_description,
+                                       authors,
+                                       NULL,
+                                       NULL,
+                                       girl->icon);
+
+       g_signal_connect(G_OBJECT(about_station), "destroy",
+                        G_CALLBACK(gtk_widget_destroy), NULL);
+       g_signal_connect(G_OBJECT(about_station), "delete-event",
+                        G_CALLBACK(gtk_widget_destroy), NULL);
+       g_object_add_weak_pointer(G_OBJECT(about_station), (void **) &(about_station));
+       gtk_widget_show(about_station);
+}
+
 void on_listen_button_clicked(GtkWidget *a, gpointer user_data)
 {
 
@@ -374,7 +486,8 @@ void on_listen_button_clicked(GtkWidget *a, gpointer user_data)
        appbar_send_msg(_("Listening to %s in %s: %s "),
                        girl->selected_station_name,
                        girl->selected_station_location,
-                       girl->selected_station_uri);
+                       girl->selected_station_uri,
+                       girl->selected_station_release);
 
        girl_launch_helper(girl->selected_station_uri,
                           GIRL_STREAM_SHOUTCAST);
diff --git a/src/girl.h b/src/girl.h
index 9240c3c..ed3e2f2 100644
--- a/src/girl.h
+++ b/src/girl.h
@@ -56,6 +56,8 @@ void on_stations_selector_button_clicked(GtkWidget *, gpointer user_data);
 void on_stations_selector_changed(GtkWidget * a, gpointer user_data);
 void quit_app(GtkWidget *, gpointer user_data);
 void about_app(GtkWidget *, gpointer user_data);
+void about_listener(GtkWidget *, gpointer user_data);
+void about_station(GtkWidget *, gpointer user_data);
 
 
 struct _GirlData {
@@ -65,10 +67,14 @@ struct _GirlData {
        gchar *selected_listener_uri;
        gchar *selected_listener_name;
        gchar *selected_listener_location;
+       gchar *selected_listener_release;
+       gchar *selected_listener_description;
        GirlStationInfo *selected_station;
        gchar *selected_station_uri;
        gchar *selected_station_name;
        gchar *selected_station_location;
+       gchar *selected_station_release;
+       gchar *selected_station_description;
        gint selected_bitrate;
        GirlChannels selected_channels;
        gint selected_samplerate;
diff --git a/src/listeners.xml b/src/listeners.xml
index 40d2b52..8f226ea 100644
--- a/src/listeners.xml
+++ b/src/listeners.xml
@@ -2,10 +2,8 @@
 
 <!DOCTYPE listener SYSTEM "listener-1.0.dtd">
 
-<girl version="0.4">
+<girl version="0.6">
 
-  <listener name="oka" mail="oka+girl oka no" uri="http://oka.no/"; location="Oslo, Norway">
-    <location name="Oslo, Norway" link="http://girl.src.oka.no/oka"; glat="59.9292193" glon="10.7903029" 
grad="1.0" vote="1.0" rack="1.0" />
-  </listener>
+  <listener name="oka" mail="oka+girl oka no" uri="http://linux.oka.no:8000/"; location="Oslo, Norway" 
release="1.0" description="Maintainer of GNOME Internet Radio Locator" />
 
 </girl>
diff --git a/src/stations.xml b/src/stations.xml
index 37e686d..ab6ae92 100644
--- a/src/stations.xml
+++ b/src/stations.xml
@@ -1,7 +1,7 @@
 <?xml version="1.0"?>
-<!DOCTYPE girl SYSTEM "girl-0.5.dtd">
-<girl version="0.5">
-  <station id="ruc" name="Coimbra University Radio" rank="1.0" type="edu">
+<!DOCTYPE girl SYSTEM "girl-0.6.dtd">
+<girl version="0.6">
+  <station id="ruc" name="Coimbra University Radio" rank="1.0" type="edu" release="107.9">
     <frequency uri="http://www.ruc.pt/";>107.9 FM MHz in Coimbra, Portugal</frequency>
     <location>Coimbra, Portugal</location>
     <description>Coimbra University Radio (Portuguese: Rádio Universidade de Coimbra - RUC) is a university 
radio station of the Coimbra Academic Association (students' union) of the University of Coimbra in Coimbra, 
Portugal.
@@ -16,56 +16,56 @@
     <stream mime="mime/mpeg" uri="http://ruc.midi-club.net:8000/;stream/1"; codec="MPEG 1 Audio, Layer 3 
(MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.ruc.pt/</uri>
   </station>
-  <station id="radiocampusbruxelles" name="Radio Campus Bruxelles" rank="1.0" type="edu">
+  <station id="radiocampusbruxelles" name="Radio Campus Bruxelles" rank="1.0" type="edu" release="92.1">
     <frequency uri="http://www.radiocampus.be/";>92.1 MHz FM in Bruxelles, Belgium</frequency>
     <location>Bruxelles, Belgium</location>
     <description>Radio Campus est née en 1980 sur le campus de l’Université Libre de Bruxelles. Avec une 
cinquantaine d’émissions, elle rassemble plus de 150 animateurs, techniciens et collaborateurs autour de 
valeurs partagées : une libre expression assumée et constructive, un attachement immodéré au tissu social 
bruxellois et un amour sans borne pour la diversité musicale et culturelle.</description>
     <stream mime="mime/mpeg" uri="http://streamer.radiocampus.be:8000/stream_hi.ogg"; codec="Vorbis" 
samplerate="44100 Hz" channels="Stereo" bitrate="192 kbps" />
     <uri>http://www.radiocampus.be/</uri>
   </station>
-  <station id="radiocampusparis" name="Radio Campus Paris" rank="1.0" type="edu">
+  <station id="radiocampusparis" name="Radio Campus Paris" rank="1.0" type="edu" release="93.9">
     <frequency uri="http://www.radiocampusparis.org/";>93.9 MHz FM in Paris, France</frequency>
     <location>Paris, France</location>
     <description>Radio Campus Paris is a non-profit Student radio station. Founded in 1998 and first 
broadcast on the Internet, the radio can be listened to in Paris, France on 93.9 FM (from 5.30 p.m. to 5.30 
a.m.). Managed by volunteers (mainly students), this indie student radio focuses on emerging music and local 
and student-related news.</description>
     <stream mime="audio/mpeg" uri="http://www.radiocampusparis.org:8000/stream_rcp"; codec="MPEG 1 Audio, 
Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.radiocampusparis.org/</uri>
   </station>
-  <station id="wcsb" name="WCSB" rank="1.0" type="edu">
+  <station id="wcsb" name="WCSB" rank="1.0" type="edu" release="89.3">
     <frequency uri="http://wcsb.org/";>89.3 MHz FM in Cleveland, OH</frequency>
     <location>Cleveland, OH</location>
     <description>A student-operated radio station at Cleveland State University, broadcasting from northeast 
Ohio.</description>
     <stream mime="mime/mpeg" uri="http://cent7.directhostingcenter.com/tunein.php/ubtevcdv/playlist.pls"; 
codec="MPEG 1 Audio, Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://wcsb.org/</uri>
   </station>
-  <station id="pulse" name="Pulse LSE" rank="1.0" type="edu">
+  <station id="pulse" name="Pulse LSE" rank="1.0" type="edu" release="87.7">
     <frequency uri="http://pulselse.co.uk/";>87.7 MHz FM in London, United Kingdom</frequency>
     <location>London, United Kingdom</location>
     <description>Pulse Radio is the official radio station of the London School of Economics and Political 
Science Students’ Union. We are totally student run and are committed to bringing great radio broadcasting to 
LSE students and beyond. We hope you tune in and enjoy!</description>
     <stream mime="audio/mpeg" uri="http://s3.radioboss.fm:8223/stream"; codec="MPEG 1 Audio, Layer 3 (MP3)" 
samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://pulselse.co.uk/</uri>
   </station>
-  <station id="oxide" name="Oxford Student Radio" rank="1.0" type="edu">
+  <station id="oxide" name="Oxford Student Radio" rank="1.0" type="edu" release="107.9">
     <frequency uri="http://oxideradio.co.uk/";>107.9 MHz FM in Oxford, United Kingdom</frequency>
     <location>Oxford, United Kingdom</location>
     <description>Oxide Radio is a student radio station run by members of Oxford University in Oxford, 
England.</description>
     <stream mime="audio/mpeg" uri="http://listen.oxideradio.co.uk:8000/oxide-radio.m3u"; codec="MPEG 1 Audio, 
Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://oxideradio.co.uk/</uri>
   </station>
-  <station id="camfm" name="Cam FM" rank="1.0" type="edu">
+  <station id="camfm" name="Cam FM" rank="1.0" type="edu" release="97.2">
     <frequency uri="http://www.camfm.co.uk/";>97.2 MHz FM in Cambridge, United Kingdom</frequency>
     <location>Cambridge, United Kingdom</location>
     <description>Originally founded in 1979, the award-winning Cam FM is now one of the most heavily 
listened to student radio stations in the UK, as well as one of the largest student-run media organisations 
in Cambridge, covering students at both Cambridge and Anglia Ruskin Universities. We know students because we 
are students; every aspect of the station is professionally run by students, staff, and alumni of the 
Universities - presenting, producing, or running the committee. Our content is primarily geared towards 
engaging with the student community in Cambridge.</description>
     <stream mime="audio/mpeg" uri="http://stream.camfm.co.uk/camfm"; codec="MPEG 1 Audio, Layer 3 (MP3)" 
samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.camfm.co.uk/</uri>
   </station>
-  <station id="radiounam" name="Radio UNAM" rank="1.0" type="edu">
+  <station id="radiounam" name="Radio UNAM" rank="1.0" type="edu" release="96.1">
     <frequency uri="http://www.radiounam.unam.mx/";>96.1 MHz FM in México City, México</frequency>
     <location>México City, México</location>
     <description>Radio Universidad Nacional Autónoma de México</description>
     <stream mime="audio/mpeg" 
uri="http://www.radiounam.unam.mx/templates/player/reproductor/CREA_FM/listen.m3u"; codec="MPEG 1 Audio, Layer 
3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.radiounam.unam.mx/</uri>
   </station>
-  <station id="wxyc" name="WXYC" rank="1.0" type="edu">
+  <station id="wxyc" name="WXYC" rank="1.0" type="edu" release="89.3">
     <frequency uri="http://www.wxyc.org/";>89.3 MHz FM in Chapel Hill, NC</frequency>
     <location>Chapel Hill, NC</location>
     <description>WXYC went on the air on March 17, 1977 with Joni Mitchell's "You Turn Me on I'm a Radio."
@@ -87,7 +87,7 @@
     <stream mime="audio/mpeg" uri="http://wxyc.org/files/streams/wxyc-mp3.m3u"; codec="MPEG 1 Audio, Layer 3 
(MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.wxyc.org/</uri>
   </station>
-  <station id="kalx" name="KALX" rank="1.0" type="edu">
+  <station id="kalx" name="KALX" rank="1.0" type="edu" release="90.7">
     <frequency uri="http://kalx.berkeley.edu/";>90.7 MHz FM in Berkeley, CA</frequency>
     <location>Berkeley, CA</location>
     <description>KALX 90.7 FM broadcasts freeform radio 24 hours a day to a large portion of the San 
Francisco Bay Area. You can catch all stripes of underground music accented with news, sports and alternative 
informational programming.
@@ -99,56 +99,56 @@
     <stream mime="audio/mpeg" uri="http://icecast.media.berkeley.edu:8000/kalx-128.mp3.m3u"; codec="MPEG 1 
Audio, Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://kalx.berkeley.edu/</uri>
   </station>
-  <station id="whrb" name="WHRB" rank="1.0" type="edu">
+  <station id="whrb" name="WHRB" rank="1.0" type="edu" release="95.3">
     <frequency uri="http://www.whrb.org/";>95.3 MHz FM in Boston, MA</frequency>
     <location>Boston, MA</location>
     <description>For seventy years, 95.3FM has been Boston's first source for exciting, entertaining, and 
enlightening music broadcasts. Harvard Radio's daily broadcast of Classical music, Jazz, and underground Rock 
explore a great repertoire of music left largely untouched by other commercial stations.</description>
     <stream mime="audio/mpeg" uri="http://www.whrb.org/streams/whrb.m3u"; codec="MPEG 1 Audio, Layer 3 (MP3)" 
samplerate="44100 Hz" channels="Stereo" bitrate="96 kbps" />
     <uri>http://www.whrb.org/</uri>
   </station>
-  <station id="nova" name="Radio NOVA" rank="1.0" type="edu">
+  <station id="nova" name="Radio NOVA" rank="1.0" type="edu" release="99.3">
     <frequency uri="http://radionova.no/";>99.3 MHz FM in Oslo, Norway</frequency>
     <location>Oslo, Norway</location>
     <description>Radio NOVA is the student radio of University of Oslo.</description>
     <stream mime="audio/mpeg" uri="http://stream.radionova.no/mp3.m3u"; codec="MPEG 1 Audio, Layer 3 (MP3)" 
samplerate="44100 Hz" channels="Stereo" bitrate="192 kbps" />
     <uri>http://radionova.no/</uri>
   </station>
-  <station id="wwno" name="WWNO" rank="1.0" type="edu">
+  <station id="wwno" name="WWNO" rank="1.0" type="edu" release="89.9">
     <frequency uri="http://wwno.org/";>89.9 MHz FM in New Orleans, LA</frequency>
     <location>New Orleans, LA</location>
     <description>WWNO is the NPR member station for New Orleans and the 13 parishes of southeast Louisiana, 
broadcasting on 89.9 FM — and on KTLN 90.5 FM in the Houma-Thibodaux area — as a public service of the 
University of New Orleans.</description>
     <stream mime="audio/mpeg" uri="http://www.publicbroadcasting.net/wwno/ppr/wwno_128.m3u"; codec="MPEG 1 
Audio, Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://wwno.org/</uri>
   </station>
-  <station id="ktru" name="KTRU" rank="1.0" type="edu">
+  <station id="ktru" name="KTRU" rank="1.0" type="edu" release="99.1">
     <frequency uri="http://ktru.org/";>99.1 MHz FM in Houston, TX</frequency>
     <location>Houston, TX</location>
     <description>KTRU Houston is Rice University's student-run radio station.</description>
     <stream mime="audio/mpeg" uri="http://ktru.org/audiometa/listen3.m3u"; codec="MPEG 1 Audio, Layer 3 
(MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://ktru.org/</uri>
   </station>
-  <station id="bbcworldservice" name="BBC World Service" rank="1.0" type="gov">
+  <station id="bbcworldservice" name="BBC World Service" rank="1.0" type="gov" release="93.20">
     <frequency uri="http://www.bbc.co.uk/worldservice/schedules/frequencies/";>Internet</frequency>
     <location>London, United Kingdom</location>
     <description>BBC World Service is an international news service available on radio, television and 
online. It provides impartial news reports and analysis in English and 27 other languages.  BBC World Service 
aims to inspire and illuminate the lives of its audience by bringing the world together, making connections 
and helping listeners to make sense of the world.</description>
     <stream mime="audio/mpeg" uri="http://www.bbc.co.uk/worldservice/meta/live/mp3/eneuk.pls"; codec="MPEG 1 
Audio, Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="48 kbps" />
     <uri>http://www.bbc.co.uk/worldserviceradio</uri>
   </station>
-  <station id="nrkradioalltidnyheter" name="NRK Radio Alltid Nyheter" rank="1.0" type="gov">
+  <station id="nrkradioalltidnyheter" name="NRK Radio Alltid Nyheter" rank="1.0" type="gov" release="93.0">
     <frequency>93.0 MHz FM in Oslo, Norway</frequency>
     <location>Oslo, Norway</location>
     <description>The Norwegian Broadcasting Corporation (NRK) offers the Norwegian public a wide range of 
content with three national TV-channels, 13 national radio-channels and the website nrk.no.</description>
     <stream mime="audio/aac" uri="http://lyd.nrk.no/nrk_radio_alltid_nyheter_aac_h"; codec="AAC, v4 LC" 
samplerate="48000 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://www.nrk.no/alltid_nyheter</uri>
   </station>
-  <station id="wkcr" name="WKCR" rank="1.0" type="edu">
+  <station id="wkcr" name="WKCR" rank="1.0" type="edu" release="89.9">
     <frequency>89.9 MHz FM in New York, NY</frequency>
     <location>New York City, NY</location>
     <description>WKCR-FM, Columbia University’s non-commercial student-run radio station, is dedicated to 
presenting a spectrum of alternative programming—traditional and art music, spoken arts, and original 
journalism. Granted its FCC license in 1941, WKCR is both steeped in tradition and committed to innovation. 
In the New York area, the station can be heard at 89.9 megacycles in FM; worldwide, it streams 
online.</description>
     <stream mime="audio/mpeg" uri="http://kanga.college.columbia.edu:8000/listen.pls"; codec="MPEG 1 Audio, 
Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="96 kbps" />
     <uri>http://www.studentaffairs.columbia.edu/wkcr/</uri>
   </station>
-  <station id="kzsu" name="KZSU" rank="1.0" type="edu">
+  <station id="kzsu" name="KZSU" rank="1.0" type="edu" release="90.1">
     <frequency>90.1 MHz FM in Stanford, CA</frequency>
     <location>San Francisco, CA</location>
     <description>KZSU is Stanford University's FM radio station, broadcasting across the Bay Area on 90.1 FM 
and across the world at kzsulive.stanford.edu. We exist to serve the Stanford community with quality radio 
broadcasts, including music, sports, news, and public affairs programming.
@@ -159,14 +159,14 @@
     <stream mime="audio/mpeg" uri="http://kzsulive.stanford.edu/audio/kzsu-1-128.m3u"; codec="MPEG 1 Audio, 
Layer 3 (MP3)" samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://kzsulive.stanford.edu/</uri>
   </station>
-  <station id="wmbr" name="WMBR" rank="1.0" type="edu">
+  <station id="wmbr" name="WMBR" rank="1.0" type="edu" release="88.1">
     <frequency>88.1 MHz FM in Cambridge, MA</frequency>
     <location>Boston, MA</location>
     <description>WMBR is the MIT campus radio station. We broadcast on 88.1 FM between 20 and 24 hours per 
day, 365 days a year. We transmit at 720 watts, effective radiated power from the top of the Eastgate 
Building in Kendall Square in Cambridge, Massachusetts. Our programming includes a wide range of music shows, 
public affairs programs and eclectic audio entertainment.</description>
     <stream mime="audio/mpeg" uri="http://wmbr.org/WMBR_live_128.m3u"; codec="MPEG 1 Audio, Layer 3 (MP3)" 
samplerate="44100 Hz" channels="Stereo" bitrate="128 kbps" />
     <uri>http://wmbr.org/</uri>
   </station>
-  <station id="kexp" name="KEXP" rank="1.0" type="edu">
+  <station id="kexp" name="KEXP" rank="1.0" type="edu" release="90.9">
     <frequency>90.9 MHz FM in Seattle, WA</frequency>
     <location>Seattle, WA</location>
     <description>KEXP is a service of the University of Washington, who holds the station’s FCC license. As 
a 501(c)3 non-profit arts organization, KEXP relies on investments from individual, foundation, business, and 
government supporters.</description>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]