void treeView_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (treeView.SelectedItems.Count == 0) { return; } YoutubeChannelNodeBase item = treeView.SelectedItems[0] as YoutubeChannelNodeBase; YoutubeSearchQuery youtubeSearch = null; if (item is YoutubeChannelVideosNode || item is YoutubeChannelNode) { SearchResource.ListRequest searchListRequest = searchListRequest = Youtube.Search.List("snippet"); searchListRequest.ChannelId = item.ChannelId; searchListRequest.MaxResults = YoutubeSearchViewModel.maxResults; searchListRequest.Order = Google.Apis.YouTube.v3.SearchResource.ListRequest.OrderEnum.Date; youtubeSearch = new YoutubeSearchQuery(searchListRequest, item.Name); } else if (item is YoutubeChannelPlaylistsNode) { PlaylistsResource.ListRequest playlistRequest = Youtube.Playlists.List("snippet"); playlistRequest.ChannelId = item.ChannelId; playlistRequest.MaxResults = YoutubeSearchViewModel.maxResults; youtubeSearch = new YoutubeSearchQuery(playlistRequest, item.Name); } EventAggregator.GetEvent<SearchEvent>().Publish(youtubeSearch); e.Handled = true; }
public YoutubeSearchViewModel(IEventAggregator eventAggregator) { EventAggregator = eventAggregator; Youtube = new YouTubeService(new BaseClientService.Initializer() { ApiKey = YoutubeApiKey.ApiKey, ApplicationName = "MediaViewer" }); SearchCommand = new Command(() => { var searchListRequest = Youtube.Search.List("snippet"); searchListRequest.Q = Query; searchListRequest.MaxResults = maxResults; DateTime? publishedAfter = null; DateTime current = DateTime.Now; switch ((PublishedFilter)PublishedDate.CurrentItem) { case PublishedFilter.Any: break; case PublishedFilter.LastHour: publishedAfter = current - new TimeSpan(1, 0, 0); break; case PublishedFilter.Today: publishedAfter = DateTime.Today; break; case PublishedFilter.ThisWeek: int delta = DayOfWeek.Monday - DateTime.Today.DayOfWeek; publishedAfter = DateTime.Today.AddDays(delta); break; case PublishedFilter.ThisMonth: publishedAfter = new DateTime(current.Year, current.Month, 1); break; case PublishedFilter.ThisYear: publishedAfter = new DateTime(current.Year, 1, 1); break; default: break; } searchListRequest.PublishedAfter = publishedAfter; searchListRequest.VideoDuration = (Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoDurationEnum)VideoDuration.CurrentItem; if (searchListRequest.VideoDuration != SearchResource.ListRequest.VideoDurationEnum.Any) { searchListRequest.Type = "video"; } if((ResourceType)Type.CurrentItem != ResourceType.Any) { switch ((ResourceType)Type.CurrentItem) { case ResourceType.Movie: searchListRequest.VideoType = Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoTypeEnum.Movie; searchListRequest.Type = "video"; break; case ResourceType.Show: searchListRequest.VideoType = Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoTypeEnum.Episode; searchListRequest.Type = "video"; break; default: searchListRequest.Type = ((ResourceType)Type.CurrentItem).ToString().ToLower(); break; } } if (GeoLocationRect != null) { string location = GeoLocationRect.Center.Latitude.ToString(CultureInfo.InvariantCulture) + "," + GeoLocationRect.Center.Longitude.ToString(CultureInfo.InvariantCulture); searchListRequest.Location = location; double radius = DistanceTo(GeoLocationRect.Center, new Location(GeoLocationRect.Center.Latitude, GeoLocationRect.East)); searchListRequest.LocationRadius = radius.ToString(CultureInfo.InvariantCulture) + "km"; searchListRequest.Type = "video,list"; } YoutubeSearchQuery youtubeSearch = new YoutubeSearchQuery(searchListRequest, "Search Result"); EventAggregator.GetEvent<SearchEvent>().Publish(youtubeSearch); }); PublishedDate = new ListCollectionView(Enum.GetValues(typeof(PublishedFilter))); VideoDuration = new ListCollectionView(Enum.GetValues(typeof(Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoDurationEnum))); Type = new ListCollectionView(Enum.GetValues(typeof(ResourceType))); }
public YoutubeSearchViewModel(IEventAggregator eventAggregator) { EventAggregator = eventAggregator; Youtube = new YouTubeService(new BaseClientService.Initializer() { ApiKey = YoutubeApiKey.ApiKey, ApplicationName = "MediaViewer" }); SearchCommand = new Command(() => { var searchListRequest = Youtube.Search.List("snippet"); searchListRequest.Q = Query; searchListRequest.MaxResults = maxResults; DateTime?publishedAfter = null; DateTime current = DateTime.Now; switch ((PublishedFilter)PublishedDate.CurrentItem) { case PublishedFilter.Any: break; case PublishedFilter.LastHour: publishedAfter = current - new TimeSpan(1, 0, 0); break; case PublishedFilter.Today: publishedAfter = DateTime.Today; break; case PublishedFilter.ThisWeek: int delta = DayOfWeek.Monday - DateTime.Today.DayOfWeek; publishedAfter = DateTime.Today.AddDays(delta); break; case PublishedFilter.ThisMonth: publishedAfter = new DateTime(current.Year, current.Month, 1); break; case PublishedFilter.ThisYear: publishedAfter = new DateTime(current.Year, 1, 1); break; default: break; } searchListRequest.PublishedAfter = publishedAfter; searchListRequest.VideoDuration = (Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoDurationEnum)VideoDuration.CurrentItem; if (searchListRequest.VideoDuration != SearchResource.ListRequest.VideoDurationEnum.Any) { searchListRequest.Type = "video"; } if ((ResourceType)Type.CurrentItem != ResourceType.Any) { switch ((ResourceType)Type.CurrentItem) { case ResourceType.Movie: searchListRequest.VideoType = Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoTypeEnum.Movie; searchListRequest.Type = "video"; break; case ResourceType.Show: searchListRequest.VideoType = Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoTypeEnum.Episode; searchListRequest.Type = "video"; break; default: searchListRequest.Type = ((ResourceType)Type.CurrentItem).ToString().ToLower(); break; } } if (GeoLocationRect != null) { string location = GeoLocationRect.Center.Latitude.ToString(CultureInfo.InvariantCulture) + "," + GeoLocationRect.Center.Longitude.ToString(CultureInfo.InvariantCulture); searchListRequest.Location = location; double radius = DistanceTo(GeoLocationRect.Center, new Location(GeoLocationRect.Center.Latitude, GeoLocationRect.East)); searchListRequest.LocationRadius = radius.ToString(CultureInfo.InvariantCulture) + "km"; searchListRequest.Type = "video,list"; } YoutubeSearchQuery youtubeSearch = new YoutubeSearchQuery(searchListRequest, "Search Result"); EventAggregator.GetEvent <SearchEvent>().Publish(youtubeSearch); }); PublishedDate = new ListCollectionView(Enum.GetValues(typeof(PublishedFilter))); VideoDuration = new ListCollectionView(Enum.GetValues(typeof(Google.Apis.YouTube.v3.SearchResource.ListRequest.VideoDurationEnum))); Type = new ListCollectionView(Enum.GetValues(typeof(ResourceType))); }
public async void searchEvent(YoutubeSearchQuery query) { await searchAsync(query.Request, query.QueryName, false); }