我必须从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包含所有三种类型的网址,我不知道如何从中提取。
答案 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();