public static string GetVideoId(Data.MediaItem item) { var url = new Uri(item.Location); var result = HttpUtility.ParseQueryString(url.Query).Get("v"); return(result); }
//TODO writing a async sync method for what i get from youtube vs that i generate myself as playlist public async Task <IList <Data.MediaItem> > GetVideo(string videoId) { var result = new List <Data.MediaItem>(); var youtubeService = await GetService().ConfigureAwait(false); var request = youtubeService.Videos.List("snippet,contentDetails"); request.Id = videoId; var response = await request.ExecuteAsync() .ConfigureAwait(false); foreach (var item in response.Items) { var nextPageToken = ""; while (nextPageToken != null) { var video = new Data.MediaItem { Title = item.Snippet.Title, Location = $"{_videoBaseUrl}{videoId}", Duration = XmlConvert.ToTimeSpan(item.ContentDetails.Duration).Ticks, PrivacyStatus = (item.ContentDetails.CountryRestriction?.Allowed ?? true) ? (int)PrivacyStatus.None : (int)PrivacyStatus.Restricted, }; result.Add(video); nextPageToken = response.NextPageToken; } } return(result); }
public UrlParseResult(ILoggingService log, Data.MediaItem item, ParseResultType type) : this(log, type) { MediaItems = new List <Data.MediaItem>() { item }; Log(); }