[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