正在从Youtube URL中提取VideoId

本文关键字:提取 VideoId URL Youtube | 更新日期: 2023-09-27 18:24:18

我必须从Youtube链接中获取视频ID并将其传递给媒体播放器。我提取视频ID的代码是

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;
         }     
     }
}

这对于类型为的url非常有效[https://www.youtube.com/watch?v=SLUbJtlBtHM]

并且不适用于url类型http://youtu.be/RjqEgSW7F9w

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

请告诉我如何从以上两种url类型中提取VideoId。我的提要包括所有三种类型的url,我不知道如何从中提取。

正在从Youtube URL中提取VideoId

我会在这里使用某种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();