[grilo-plugins] freebox: Add support for Freebox Radios



commit a5110d6460b90065148914d1855fbeeedfd20fc3
Author: Bastien Nocera <hadess hadess net>
Date:   Sun Feb 8 16:10:04 2015 +0100

    freebox: Add support for Freebox Radios
    
    Using the playlist from:
    http://play.with.free.fr/index.php/radios-freebox-sur-la-freebox-revolution/
    and newer version of totem-pl-parser, export the radios proxied by the
    Freebox all-in-one router.
    
    Note that the audio player will need to respect the "audio-track" number
    given out in the GrlMedia for the correct radio station to be played.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=744168

 src/freebox/freebox.gresource.xml |    1 +
 src/freebox/grl-freebox.c         |  176 +++++++++++---
 src/freebox/radios.m3u            |  465 +++++++++++++++++++++++++++++++++++++
 3 files changed, 603 insertions(+), 39 deletions(-)
---
diff --git a/src/freebox/freebox.gresource.xml b/src/freebox/freebox.gresource.xml
index 5942941..b65f7d2 100644
--- a/src/freebox/freebox.gresource.xml
+++ b/src/freebox/freebox.gresource.xml
@@ -2,5 +2,6 @@
 <gresources>
   <gresource prefix="/org/gnome/grilo/plugins/freebox">
     <file compressed="false">free.png</file>
+    <file compressed="false">radios.m3u</file>
   </gresource>
 </gresources>
diff --git a/src/freebox/grl-freebox.c b/src/freebox/grl-freebox.c
index ac09623..8ad3bfc 100644
--- a/src/freebox/grl-freebox.c
+++ b/src/freebox/grl-freebox.c
@@ -34,7 +34,8 @@
 #include "grl-freebox.h"
 #include "freebox-monitor.h"
 
-#define FREEBOX_URL "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u";
+#define FREEBOXTV_URL    "http://mafreebox.freebox.fr/freeboxtv/playlist.m3u";
+#define FREEBOXRADIO_URL "resource:///org/gnome/grilo/plugins/freebox/radios.m3u"
 
 /* --------- Logging  -------- */
 
@@ -45,9 +46,13 @@ GRL_LOG_DOMAIN_STATIC(freebox_log_domain);
 
 #define PLUGIN_ID   FREEBOX_PLUGIN_ID
 
-#define SOURCE_ID   "grl-freebox"
-#define SOURCE_NAME _("Freebox TV")
-#define SOURCE_DESC _("A source for browsing Freebox TV channels")
+#define TV_SOURCE_ID   "grl-freeboxtv"
+#define TV_SOURCE_NAME _("Freebox TV")
+#define TV_SOURCE_DESC _("A source for browsing Freebox TV channels")
+
+#define RADIO_SOURCE_ID   "grl-freeboxradio"
+#define RADIO_SOURCE_NAME _("Freebox Radio")
+#define RADIO_SOURCE_DESC _("A source for browsing Freebox radio channels")
 
 /* --- Grilo Freebox Private --- */
 
@@ -63,7 +68,8 @@ struct _GrlFreeboxSourcePrivate {
 
 /* --- Data types --- */
 
-static GrlFreeboxSource *grl_freebox_source_new (void);
+static GrlFreeboxSource *grl_freebox_source_new_tv (void);
+static GrlFreeboxSource *grl_freebox_source_new_radio (void);
 
 static void grl_freebox_source_finalize (GObject *object);
 
@@ -85,20 +91,31 @@ freebox_found (FreeboxMonitor *mon,
 {
   GrlFreeboxSource *source;
   GrlRegistry *registry;
+  const char *sources[] = {
+    "source-tv",
+    "source-radio"
+  };
+  guint i;
+
+  for (i = 0; i < G_N_ELEMENTS(sources); i++) {
+    if (g_object_get_data (G_OBJECT (plugin), sources[i]) != NULL)
+      return;
 
-  if (g_object_get_data (G_OBJECT (plugin), "source") != NULL)
-    return;
+    GRL_DEBUG ("Found a Freebox: %s", name);
 
-  GRL_DEBUG ("Found a Freebox: %s", name);
+    if (g_strcmp0 (sources[i], "source-tv") == 0)
+      source = grl_freebox_source_new_tv ();
+    else
+      source = grl_freebox_source_new_radio ();
 
-  source = grl_freebox_source_new ();
-  registry = grl_registry_get_default ();
+    registry = grl_registry_get_default ();
 
-  g_object_set_data (G_OBJECT (plugin), "source", source);
-  grl_registry_register_source (registry,
-                                plugin,
-                                GRL_SOURCE (source),
-                                NULL);
+    g_object_set_data (G_OBJECT (plugin), sources[i], source);
+    grl_registry_register_source (registry,
+                                  plugin,
+                                  GRL_SOURCE (source),
+                                  NULL);
+  }
 }
 
 static void
@@ -106,20 +123,26 @@ freebox_lost (FreeboxMonitor *mon,
               const char     *name,
               GrlPlugin      *plugin)
 {
-  GrlFreeboxSource *source;
   GrlRegistry *registry;
+  const char *sources[] = {
+    "source-tv",
+    "source-radio"
+  };
+  guint i;
 
-  source = g_object_get_data (G_OBJECT (plugin), "source");
-  if (source == NULL)
-    return;
+  for (i = 0; i < G_N_ELEMENTS(sources); i++) {
+    GrlFreeboxSource *source = g_object_get_data (G_OBJECT (plugin), sources[i]);
+    if (source == NULL)
+      continue;
 
-  GRL_DEBUG ("Remove a Freebox: %s", name);
+    GRL_DEBUG ("Remove a Freebox: %s", name);
 
-  registry = grl_registry_get_default ();
+    registry = grl_registry_get_default ();
 
-  grl_registry_unregister_source (registry,
-                                  GRL_SOURCE (source),
-                                  NULL);
+    grl_registry_unregister_source (registry,
+                                    GRL_SOURCE (source),
+                                    NULL);
+  }
 }
 
 gboolean
@@ -158,7 +181,7 @@ G_DEFINE_TYPE (GrlFreeboxSource,
                GRL_TYPE_SOURCE);
 
 static GrlFreeboxSource *
-grl_freebox_source_new (void)
+grl_freebox_source_new_tv (void)
 {
   GIcon *icon;
   GFile *file;
@@ -175,13 +198,45 @@ grl_freebox_source_new (void)
   icon = g_file_icon_new (file);
   g_object_unref (file);
   object = g_object_new (GRL_FREEBOX_SOURCE_TYPE,
-                         "source-id", SOURCE_ID,
-                         "source-name", SOURCE_NAME,
-                         "source-desc", SOURCE_DESC,
+                         "source-id", TV_SOURCE_ID,
+                         "source-name", TV_SOURCE_NAME,
+                         "source-desc", TV_SOURCE_DESC,
                          "supported-media", GRL_MEDIA_TYPE_VIDEO,
                          "source-icon", icon,
                          "source-tags", tags,
                          NULL);
+  grl_media_set_url (GRL_FREEBOX_SOURCE(object)->priv->media, FREEBOXTV_URL);
+  g_object_unref (icon);
+
+  return object;
+}
+
+static GrlFreeboxSource *
+grl_freebox_source_new_radio (void)
+{
+  GIcon *icon;
+  GFile *file;
+  GrlFreeboxSource *object;
+  const char *tags[] = {
+    "radio",
+    "country:fr",
+    NULL
+  };
+
+  GRL_DEBUG ("%s", __FUNCTION__);
+
+  file = g_file_new_for_uri ("resource:///org/gnome/grilo/plugins/freebox/free.png"); //FIXME
+  icon = g_file_icon_new (file);
+  g_object_unref (file);
+  object = g_object_new (GRL_FREEBOX_SOURCE_TYPE,
+                         "source-id", RADIO_SOURCE_ID,
+                         "source-name", RADIO_SOURCE_NAME,
+                         "source-desc", RADIO_SOURCE_DESC,
+                         "supported-media", GRL_MEDIA_TYPE_AUDIO,
+                         "source-icon", icon,
+                         "source-tags", tags,
+                         NULL);
+  grl_media_set_url (GRL_FREEBOX_SOURCE(object)->priv->media, FREEBOXRADIO_URL);
   g_object_unref (icon);
 
   return object;
@@ -209,7 +264,6 @@ grl_freebox_source_init (GrlFreeboxSource *source)
   priv = source->priv = GRL_FREEBOX_SOURCE_GET_PRIVATE(source);
 
   priv->media = grl_media_new ();
-  grl_media_set_url (priv->media, FREEBOX_URL);
 }
 
 static void
@@ -273,9 +327,9 @@ remove_flavour (const char *url)
 }
 
 static GrlMedia *
-filter_func (GrlSource   *source,
-             GrlMedia    *media,
-             gpointer     user_data)
+filter_func_tv (GrlSource   *source,
+                GrlMedia    *media,
+                gpointer     user_data)
 {
   GrlFreeboxSourcePrivate *priv = GRL_FREEBOX_SOURCE (source)->priv;
   GrlMedia *ret;
@@ -322,17 +376,61 @@ filter_func (GrlSource   *source,
   return ret;
 }
 
+static GrlMedia *
+filter_func_radio (GrlSource   *source,
+                   GrlMedia    *media,
+                   gpointer     user_data)
+{
+  GrlMedia *ret;
+  const gchar *title;
+  char *new_title;
+
+  title = grl_media_get_title (media);
+  if (title == NULL) {
+    g_object_unref (media);
+    return NULL;
+  }
+
+  /* Title are of the form:
+   * channel_num - Name
+   * such as:
+   * 100003 - France Inter */
+  new_title = cleanup_title (title);
+
+  ret = grl_media_audio_new ();
+  grl_media_set_url (ret, grl_media_get_url (media));
+  grl_media_set_id (ret, grl_media_get_url (media));
+  grl_data_set_int (GRL_DATA (ret), GRL_METADATA_KEY_AUDIO_TRACK,
+                    grl_data_get_int (GRL_DATA (media), GRL_METADATA_KEY_AUDIO_TRACK));
+  grl_media_set_title (ret, new_title);
+  g_free (new_title);
+
+  g_object_unref (media);
+
+  return ret;
+}
+
 static void
 grl_freebox_source_browse (GrlSource           *source,
                            GrlSourceBrowseSpec *bs)
 {
   GrlFreeboxSourcePrivate *priv = GRL_FREEBOX_SOURCE (source)->priv;
 
-  grl_pls_browse (source,
-                  priv->media,
-                  bs->keys,
-                  bs->options,
-                  filter_func,
-                  bs->callback,
-                  bs->user_data);
+  if (g_strcmp0 (grl_source_get_id (source), TV_SOURCE_ID) == 0) {
+    grl_pls_browse (source,
+                    priv->media,
+                    bs->keys,
+                    bs->options,
+                    filter_func_tv,
+                    bs->callback,
+                    bs->user_data);
+  } else {
+    grl_pls_browse (source,
+                    priv->media,
+                    bs->keys,
+                    bs->options,
+                    filter_func_radio,
+                    bs->callback,
+                    bs->user_data);
+  }
 }
diff --git a/src/freebox/radios.m3u b/src/freebox/radios.m3u
new file mode 100644
index 0000000..bdc54a0
--- /dev/null
+++ b/src/freebox/radios.m3u
@@ -0,0 +1,465 @@
+#EXTINF:0,10001 - Europe 1
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10003 - France Inter
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10004 - RMC Info
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10005 - RTL
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10006 - Chérie FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10007 - Virgin Radio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10008 - Fun Radio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100013
+#EXTINF:0,10009 - Nostalgie
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100004
+#EXTINF:0,10010 - NRJ
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10011 - RFM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10012 - Rire et Chansons
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10013 - RTL 2
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100001
+#EXTINF:0,10014 - Skyrock
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10015 - BFM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10016 - France Culture
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10017 - France Info
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10018 - France Musiques
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10019 - Radio Classique
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10020 - Contact FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100013
+#EXTINF:0,10021 - FIP
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10022 - Le Mouv'
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10023 - Nova
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10024 - Ouï FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10025 - TSF Jazz
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10026 - France BLEU - la CityRadio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10027 - RFI
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10028 - RFI Multilingues
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100013
+#EXTINF:0,10030 - Radio FG
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100005
+#EXTINF:0,10031 - TEMPOMIX
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10032 - Fréquence Jazz
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100011
+#EXTINF:0,10033 - Tropiques FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10034 - Beur FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100013
+#EXTINF:0,10035 - Voltage
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100001
+#EXTINF:0,10036 - Sud Radio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100001
+#EXTINF:0,10037 - Ado FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100001
+#EXTINF:0,10038 - MplusM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10039 - RFO Martinique
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10040 - Metropolys
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10041 - Top Music
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10042 - Rts FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10043 - Evasion
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10044 - Radio Scoop
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10046 - Radio 8
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10048 - Vibration
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100001
+#EXTINF:0,10049 - KISS FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10050 - 1onAir Connect
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10051 - Radio Mont Blanc
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10053 - Public Sante Detente
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10054 - Public Sante Famille
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10055 - Public Sante Loisirs
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10056 - Public Sante Seniors
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10061 - Radio Latina
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100013
+#EXTINF:0,10063 - Espace FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10064 - Hit West
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10065 - Radio Public Santé
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10068 - FC RADIO L'essentiel
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10069 - NTI
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10070 - Web-Station
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10071 - Radio Junior
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10073 - Corsica Radio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10077 - Radio ô
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10078 - Bachata Dominicana
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100010
+#EXTINF:0,10079 - 100 %
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10080 - Netradio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100006
+#EXTINF:0,10082 - Radio Notre-Dame
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10084 - Radio Sing Sing
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10085 - Monte-Carlo Doualiya
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10087 - Radio Star
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10088 - SUN
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10089 - Radio Soleil
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10090 - RFO Guadeloupe
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10091 - RFO Guyane
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10092 - RFO Réunion
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10093 - RFO Saint Pierre et Miquelon
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10094 - RFO Polynésie
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10095 - RFO Nouvelle Calédonie
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10096 - RFO Wallis
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10097 - RFO Mayotte
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100014
+#EXTINF:0,10098 - Only 1
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10099 - Public Santé Sexo
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1009
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100002
+#EXTINF:0,10100 - HAG'FM
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1002
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10101 - Public Santé Nutri-Conso
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1009
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100007
+#EXTINF:0,10102 - FG Underground
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10103 - FG Dance By Hakimakli
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1009
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100012
+#EXTINF:0,10109 - XHTVFM Latina
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1003
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10110 - XHTVFM Europa Dance
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1004
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10111 - Chante France
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1005
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10112 - Imagine Hautes-Alpes
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1006
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10113 - Urban Hit
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1009
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100009
+#EXTINF:0,10114 - France Maghreb 2
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1007
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10115 - Only Rai
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1008
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015
+#EXTINF:0,10116 - Radio Vag
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1001
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100008
+#EXTINF:0,10118 - Corail la webradio
+#EXTVLCOPT:ts-es-id-pid
+#EXTVLCOPT:no-video
+#EXTVLCOPT:audio-track-id=1009
+rtsp://mafreebox.freebox.fr/fbxtv_pub/stream?namespace=1&service=100015


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