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)));
        }
Example #4
0
 public async void searchEvent(YoutubeSearchQuery query)
 {
     await searchAsync(query.Request, query.QueryName, false);
 }