[Xfce4-commits] [apps/parole] 01/01: Extract media filename from remote URL

noreply at xfce.org noreply at xfce.org
Tue Feb 14 05:23:56 CET 2017


This is an automated email from the git hooks/post-receive script.

bluesabre pushed a commit to branch master
in repository apps/parole.

commit ed81e5b1f2887d88836344d4f79fc15de32eb3cf
Author: Sean Davis <smd.seandavis at gmail.com>
Date:   Mon Feb 13 23:23:50 2017 -0500

    Extract media filename from remote URL
---
 src/parole-player.c | 38 ++++++++++++++++++++++++++++++++++----
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/src/parole-player.c b/src/parole-player.c
index b4b0ce3..d74c886 100644
--- a/src/parole-player.c
+++ b/src/parole-player.c
@@ -1844,6 +1844,39 @@ parole_player_error_cb (ParoleGst *gst, const gchar *error, ParolePlayer *player
     parole_player_stopped (player);
 }
 
+static gchar *
+parole_player_get_filename_from_uri (gchar *uri)
+{
+    gchar *filename;
+    gchar *scheme;
+
+    scheme = g_uri_parse_scheme(uri);
+    if (strcmp(scheme, "http") == 0 || strcmp(scheme, "https") == 0 || strcmp(scheme, "ftp") == 0) {
+        GRegex *regex;
+        GMatchInfo *match_info;
+
+        regex = g_regex_new ("^.*://.*/(?<filename>[^?#/]+)", 0, 0, NULL);
+        g_regex_match (regex, uri, 0, &match_info);
+        if (g_match_info_matches (match_info))
+        {
+            gchar *word = g_match_info_fetch_named (match_info, "filename");
+            filename = g_strdup(word);
+            g_free (word);
+        }
+        g_match_info_free (match_info);
+        g_regex_unref (regex);
+    } else {
+        gchar *decoded;
+        decoded = g_filename_from_uri(uri, NULL, NULL);
+        filename = g_path_get_basename(decoded);
+        g_free (decoded);
+    }
+
+    g_free (scheme);
+
+    return filename;
+}
+
 static void
 parole_player_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePlayer *player)
 {
@@ -1853,7 +1886,6 @@ parole_player_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePl
     gchar *year;
     gchar *uri;
     gchar *filename;
-    gchar *decoded;
     GdkPixbuf *image = NULL;
 
     if ( player->priv->row )
@@ -1876,12 +1908,10 @@ parole_player_media_tag_cb (ParoleGst *gst, const ParoleStream *stream, ParolePl
         else
         {
             /* No ID3, no problem! Show the filename instead */
-            decoded = g_filename_from_uri(uri, NULL, NULL);
-            filename = g_path_get_basename(decoded);
+            filename = parole_player_get_filename_from_uri (uri);
             gtk_window_set_title (GTK_WINDOW (player->priv->window), filename);
             gtk_label_set_markup(GTK_LABEL(player->priv->audiobox_title), g_strdup_printf("<span color='#F4F4F4'><b><big>%s</big></b></span>", filename));
             g_free (filename);
-            g_free (decoded);
         }
         g_free(uri);
 

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the Xfce4-commits mailing list