从Youtube网址中提取VideoId

时间:2014-09-25 12:04:53

标签: c# windows-phone-8

我必须从Youtube链接获取videoId并将其传递给mediaplayer。我的提取视频的代码是

namespace Sample
{
    public partial class VideoPage : PhoneApplicationPage
    {
        Movie movie;

        // Constructor
        public VideoPage()
        {
            InitializeComponent();
            var app = App.Current as App;
            movie = app.selectedMovie;
            string video = movie.MovieWatchLink;//MoviewatchLink contains youtube url and I was storing it in video//
            string a = video.ToString().Remove(0, 32);
            movie.MovieId = a.Substring(0, 11);
         }

         protected async override void OnNavigatedTo(NavigationEventArgs e)
         {
             var url = await YouTube.GetVideoUriAsync(movie.MovieId, YouTubeQuality.Quality480P);
             System.Diagnostics.Debug.WriteLine(url);
             player.Source = url.Uri;
         }     
     }
}

对于[https://www.youtube.com/watch?v=SLUbJtlBtHM]

类型的网址,此功能非常好

并不适用于http://youtu.be/RjqEgSW7F9w

的网址

http://www.youtube.com/movie?v=VPUMDrBjzC4

请告诉我如何从上述两种网址类型中提取VideoId。我的Feed包含所有三种类型的网址,我不知道如何从中提取。

1 个答案:

答案 0 :(得分:0)

我在这里使用某种URL解析器,而不是依赖Substring等字符计数。不幸的是System.Uri没有为查询字符串解析和HttpUtility.ParseQueryString提供任何内容在Windows Phone 8上不可用。

你可以尝试我的Flurl库,它是可移植的,可以在两种情况下帮助你:

using Flurl;

var url = new Url(movie.MovieWatchLink);
if (url.Path.StartsWith("http://www.youtube.com"))
    movie.MovieId = url.QueryParams["v"];
else if (url.Path.StartsWith("http://youtu.be"))
    movie.MovieId = url.Path.Split('/').Last();