正在从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,我不知道如何从中提取。
我会在这里使用某种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();