head 1.3; access; symbols pkgsrc-2013Q2:1.3.0.8 pkgsrc-2013Q2-base:1.3 pkgsrc-2012Q4:1.3.0.6 pkgsrc-2012Q4-base:1.3 pkgsrc-2011Q4:1.3.0.4 pkgsrc-2011Q4-base:1.3 pkgsrc-2011Q2:1.3.0.2 pkgsrc-2011Q2-base:1.3 pkgsrc-2010Q3:1.2.0.2 pkgsrc-2010Q3-base:1.2; locks; strict; comment @# @; 1.3 date 2010.11.24.20.55.28; author drochner; state dead; branches; next 1.2; 1.2 date 2010.08.04.17.46.52; author drochner; state Exp; branches; next 1.1; 1.1 date 2010.08.02.10.24.33; author drochner; state Exp; branches; next ; desc @@ 1.3 log @update to 2.32.0 This switches to the gnome-2.32 release branch. @ text @$NetBSD: patch-aj,v 1.2 2010/08/04 17:46:52 drochner Exp $ --- src/plugins/youtube/totem-youtube.c.orig 2010-05-12 15:41:25.000000000 +0000 +++ src/plugins/youtube/totem-youtube.c @@@@ -394,14 +394,6 @@@@ impl_deactivate (TotemPlugin *plugin, To g_regex_unref (self->regex); } -static const gchar * -get_fmt_param (TotemYouTubePlugin *self) -{ - if (bacon_video_widget_get_connection_speed (self->bvw) >= 10) - return "&fmt=18"; - return ""; -} - typedef struct { TotemYouTubePlugin *plugin; guint tree_view; @@@@ -510,29 +502,32 @@@@ resolve_t_param_cb (GObject *source_obje video_id = gdata_youtube_video_get_video_id (GDATA_YOUTUBE_VIDEO (data->entry)); - /* Check for the t parameter, which is now in a JavaScript array on the video page */ + /* Check for the fmt_url_map parameter */ g_regex_match (self->regex, contents, 0, &match_info); if (g_match_info_matches (match_info) == TRUE) { - gchar *t_param, *s; - const gchar *fmt_param; - GString *video_uri_string; + gchar *fmt_url_map_escaped, *fmt_url_map; + gchar **mappings, **i; /* We have a match */ - s = g_match_info_fetch (match_info, 1); - t_param = g_uri_unescape_string (s, NULL); - if (t_param == NULL) - t_param = s; - else - g_free (s); - fmt_param = get_fmt_param (self); - - video_uri_string = g_string_new ("http://www.youtube.com/get_video?video_id="); - g_string_append_uri_escaped (video_uri_string, video_id, NULL, TRUE); - g_string_append (video_uri_string, "&t="); - g_string_append_uri_escaped (video_uri_string, t_param, NULL, TRUE); - g_string_append (video_uri_string, fmt_param); + fmt_url_map_escaped = g_match_info_fetch (match_info, 1); + fmt_url_map = g_uri_unescape_string (fmt_url_map_escaped, NULL); + g_free (fmt_url_map_escaped); + + /* The fmt_url_map parameter is in the following format: + * fmt1|uri1,fmt2|uri2,fmt3|uri3,... + * where fmtN is an identifier for the audio and video encoding and resolution as described here: + * (http://en.wikipedia.org/wiki/YouTube#Quality_and_codecs) and uriN is the playback URI for that format. */ + mappings = g_strsplit (fmt_url_map, ",", 0); + + for (i = mappings; *i != NULL; i++) { + /* For the moment we just take the first format we get */ + gchar **mapping = g_strsplit (*i, "|", 2); + video_uri = g_strdup (mapping[1]); + g_strfreev (mapping); + break; + } - video_uri = g_string_free (video_uri_string, FALSE); + g_strfreev (mappings); } else { GDataMediaContent *content; @@@@ -854,7 +849,7 @@@@ search_button_clicked_cb (GtkButton *but * cycles repeatedly creating new regexes for each video whose t param we resolve. */ /* We're looking for a line of the form: * var swfHTML = (isIE) ? "regex = g_regex_new ("swfHTML = .*&t=([^&]+)&", G_REGEX_OPTIMIZE, 0, NULL); + self->regex = g_regex_new ("swfHTML = .*&fmt_url_map=([^&]+)&", G_REGEX_OPTIMIZE, 0, NULL); g_assert (self->regex != NULL); /* Set up the GData service (needed for the tree views' queries) */ @ 1.2 log @replace my poor fix with the upstream version @ text @d1 1 a1 1 $NetBSD$ @ 1.1 log @modify the youtube video request URI so that it works again (this was by try&error, does anybody know more about the protocol?) bump PKGREVISION @ text @d5 3 a7 6 @@@@ -530,6 +530,7 @@@@ resolve_t_param_cb (GObject *source_obje g_string_append_uri_escaped (video_uri_string, video_id, NULL, TRUE); g_string_append (video_uri_string, "&t="); g_string_append_uri_escaped (video_uri_string, t_param, NULL, TRUE); + g_string_append (video_uri_string, "&asv="); g_string_append (video_uri_string, fmt_param); d9 71 a79 1 video_uri = g_string_free (video_uri_string, FALSE); @