示例#1
0
        /// <summary>
        /// Retrieves Videos Feeds from YouTube using API KEY.
        /// </summary>
        /// <returns></returns>
        public List <SearchResult> RetriveVideosUsingAPIKey(string searchTerm)
        {
            var youtube = new YouTubeService(new BaseClientService.Initializer());

            SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
            listRequest.Fields     = "items(id,snippet(title, description, publishedAt, thumbnails, channelId, channelTitle))";
            listRequest.Key        = API_KEY;
            listRequest.Type       = ResourceTypes.Video;
            listRequest.MaxResults = MAX_RESULTS_PER_PAGE;

            if (!string.IsNullOrEmpty(PUBLISHED_FROM_DATE))
            {
                listRequest.PublishedAfter = DateTime.ParseExact(PUBLISHED_FROM_DATE, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
            }
            if (!string.IsNullOrEmpty(LOCATION))
            {
                listRequest.Location = LOCATION;
            }
            if (!string.IsNullOrEmpty(LOCATION_RADIUS))
            {
                listRequest.LocationRadius = LOCATION_RADIUS;
            }
            listRequest.Q     = searchTerm;
            listRequest.Order = SearchResource.ListRequest.OrderEnum.Date;

            SearchListResponse  searchResponse = listRequest.Execute();
            List <SearchResult> results        = new List <SearchResult>();

            results.AddRange(searchResponse.Items);

            string nextPageToken = searchResponse.NextPageToken;

            int amountWithoutChannelTitle = 0;
            int amountWithoutChannelId    = 0;

            while (searchResponse.Items.Count == MAX_RESULTS_PER_PAGE && !string.IsNullOrEmpty(nextPageToken))
            {
                foreach (var item in searchResponse.Items)
                {
                    if (string.IsNullOrEmpty(item.Snippet.ChannelTitle))
                    {
                        amountWithoutChannelTitle++;
                    }
                    if (string.IsNullOrEmpty(item.Snippet.ChannelId))
                    {
                        amountWithoutChannelId++;
                    }
                }
                listRequest.PageToken = nextPageToken;
                searchResponse        = listRequest.Execute();
                results.AddRange(searchResponse.Items);
                nextPageToken = searchResponse.NextPageToken;
            }

            return(results);
        }
示例#2
0
        /// <summary>
        /// Retrieves Videos Feeds from YouTube using OAuth 2.0.
        /// </summary>
        /// <returns></returns>
        public List <SearchResult> RetriveVideosUsingOAuth(string searchTerm)
        {
            String serviceAccountEmail = OAUTH_SERVICE_ACCOUNT_EMAIL;

            var certificate = new X509Certificate2(OAUTH_LOCAL_KEY_FILE, OAUTH_PASSWORD, X509KeyStorageFlags.Exportable);

            ServiceAccountCredential credential = new ServiceAccountCredential(
                new ServiceAccountCredential.Initializer(serviceAccountEmail)
            {
                Scopes = new[] { YouTubeService.Scope.YoutubeReadonly }
            }.FromCertificate(certificate));

            // Create the service.
            var service = new YouTubeService(new BaseClientService.Initializer()
            {
                HttpClientInitializer = credential,
                ApplicationName       = "YouTube API Sample",
            });

            SearchResource.ListRequest listRequest = service.Search.List("snippet");
            listRequest.Fields     = "items(id,snippet(title, description, publishedAt, thumbnails, channelId, channelTitle))";
            listRequest.Type       = ResourceTypes.Video;
            listRequest.MaxResults = MAX_RESULTS_PER_PAGE;
            if (!string.IsNullOrEmpty(PUBLISHED_FROM_DATE))
            {
                listRequest.PublishedAfter = DateTime.ParseExact(PUBLISHED_FROM_DATE, "yyyy/MM/dd HH:mm:ss", CultureInfo.InvariantCulture);
            }
            if (string.IsNullOrEmpty(LOCATION))
            {
                listRequest.Location = LOCATION;
            }
            if (string.IsNullOrEmpty(LOCATION_RADIUS))
            {
                listRequest.LocationRadius = LOCATION_RADIUS;
            }
            listRequest.Q     = searchTerm;
            listRequest.Order = SearchResource.ListRequest.OrderEnum.Date;

            SearchListResponse  searchResponse = listRequest.Execute();
            List <SearchResult> results        = new List <SearchResult>();

            results.AddRange(searchResponse.Items);

            string nextPageToken = searchResponse.NextPageToken;

            while (searchResponse.Items.Count == MAX_RESULTS_PER_PAGE)
            {
                listRequest.PageToken = nextPageToken;
                searchResponse        = listRequest.Execute();
                results.AddRange(searchResponse.Items);
                nextPageToken = searchResponse.NextPageToken;
            }

            return(results);
        }
示例#3
0
        public List <SearchResultCustomized> SearchYoutubeVideo(string keyword)
        {
            //Construyendo el servicio de Youtube
            YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = "AIzaSyA-HQVqE6Smy-oBBk9RPrYx7jL1VwYMXTI"
            });

            SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
            listRequest.Q          = keyword;
            listRequest.MaxResults = 6;


            SearchListResponse            searchResponse          = listRequest.Execute();
            IList <SearchResult>          searchResults           = searchResponse.Items;
            List <SearchResultCustomized> searchResultCustomizeds = new List <SearchResultCustomized>();

            foreach (var item in searchResults.ToList())
            {
                SearchResultCustomized searchResultCustomized = new SearchResultCustomized();
                searchResultCustomized.VideoId  = item.Id.VideoId;
                searchResultCustomized.Title    = item.Snippet.Title;
                searchResultCustomized.ImageURL = item.Snippet.Thumbnails.Default__.Url;
                searchResultCustomizeds.Add(searchResultCustomized);
            }
            return(searchResultCustomizeds);
        }
示例#4
0
        public List <Videos> ObtenerVideos(string name)
        {
            List <Videos>  videos  = new List <Videos>();
            YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer
            {
                ApiKey          = "AIzaSyBhqe3OaIZT7RusiHlV_kBL3z2CExG3Vb4",
                ApplicationName = "Rockola-264715"
            });

            SearchResource.ListRequest searchListRequest = youtube.Search.List("snippet");
            searchListRequest.Q          = name;
            searchListRequest.MaxResults = 40;
            SearchListResponse searchListResponse = searchListRequest.Execute();

            foreach (var item in searchListResponse.Items)
            {
                if (item.Id.Kind == "youtube#video")
                {
                    videos.Add(new Videos
                    {
                        ID        = item.Id.VideoId,
                        Nombre    = item.Snippet.Title,
                        Url       = "https://www.youtube.com/embed/" + item.Id.VideoId,
                        Thumbnail = "http://img.youtube.com/vi/" + item.Id.VideoId + "/hqdefault.jpg"
                    });
                }
            }
            return(videos);
        }
示例#5
0
        public override List <VideoHosting> Parse()

        {
            var youtubeService = new YouTubeService(new BaseClientService.Initializer
            {
                ApplicationName = "Youtube parser",
                ApiKey          = "AIzaSyCtrxWvxLLF33phNIi6TTWjekgG9NiLpsw",
            });

            int maxResults = 20;

            SearchResource.ListRequest searchListByKeywordRequest = youtubeService.Search.List("snippet");
            searchListByKeywordRequest.MaxResults        = maxResults;
            searchListByKeywordRequest.Q                 = GetUrlLink();
            searchListByKeywordRequest.Type              = "video";
            searchListByKeywordRequest.RelevanceLanguage = "ru";

            SearchListResponse response = searchListByKeywordRequest.Execute();

            var result = response.Items.Select(t =>
                                               new VideoHosting
            {
                NameVideo   = t.Snippet.Title,
                NameHosting = HostNames.Youtube,
                Time        = DateTime.Now
            }).ToList();

            return(result);
        }
示例#6
0
        public VideosEntry SearchVideos(string query)
        {
            SearchResource.ListRequest listRequest = _service.Search.List("snippet");
            listRequest.Q          = query;
            listRequest.MaxResults = 5;
            listRequest.Type       = "video";

            SearchListResponse resp = listRequest.Execute();

            List <VideoInfo> pool = new List <VideoInfo>();

            foreach (var result in resp.Items)
            {
                pool.Add(new VideoInfo {
                    id        = result.Id.VideoId,
                    title     = result.Snippet.Title,
                    thumbnail = result.Snippet.Thumbnails.Default__.Url
                });
            }
            VideosEntry videos = new VideosEntry {
                selected = pool[0],
                pool     = pool
            };

            return(videos);
        }
示例#7
0
        private static SearchListResponse SearchYoutube(string search, string appName, int maxResults,
                                                        string searchType)
        {
            try
            {
                //Check to see if the token is null or white space
                if (string.IsNullOrWhiteSpace(Config.bot.Apis.ApiYoutubeKey))
                {
                    return(null);
                }

                SearchListResponse youtubeSearch;

                using (YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer
                {
                    ApiKey = Config.bot.Apis.ApiYoutubeKey,
                    ApplicationName = appName
                }))
                {
                    SearchResource.ListRequest searchListRequest = youtube.Search.List("snippet");
                    searchListRequest.Q          = search;
                    searchListRequest.MaxResults = maxResults;
                    searchListRequest.Type       = searchType;

                    youtubeSearch = searchListRequest.Execute();
                }

                return(youtubeSearch);
            }
            catch
            {
                return(null);
            }
        }
示例#8
0
        /**
         * Request Youtube Api for movie trailer
         * **/
        private string getTrailer(dynamic original_title, dynamic release_date)
        {
            var search = "";

            // Creation of string to search for trailer on Youtube
            try
            {
                search = original_title + " official trailer " + Convert.ToDateTime(release_date).Year;
            }
            catch (FormatException)
            {
                search = original_title + " official trailer ";
            }

            YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = _movieConfig.YtApiKey
            });

            SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
            listRequest.Q          = search; // search term
            listRequest.Type       = "video";
            listRequest.MaxResults = 1;      // I decided to keep the first result as the chosen one to associate with the movie

            SearchListResponse searchResponse = listRequest.Execute();

            // Handle possible occurrence of no results
            if (searchResponse.Items.Count == 0)
            {
                return("");
            }
            return(searchResponse.Items[0].Id.VideoId);
        }
示例#9
0
        public void SearchForVideosByTitle(string searchValue, int maxResultCount)
        {
            SearchResource.ListRequest searchListRequest = client.Search.List("snippet");
            searchListRequest.Q          = searchValue;
            searchListRequest.MaxResults = maxResultCount;

            SearchListResponse searchListResponse = searchListRequest.Execute();

            List <string> videos    = new List <string>();
            List <string> channels  = new List <string>();
            List <string> playlists = new List <string>();

            foreach (SearchResult searchResult in searchListResponse.Items)
            {
                switch (searchResult.Id.Kind)
                {
                case "youtube#video":
                    videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));
                    break;

                case "youtube#channel":
                    channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
                    break;

                case "youtube#playlist":
                    playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));
                    break;
                }
            }

            Console.WriteLine(String.Format("Videos:\n{0}\n", string.Join("\n", videos)));
            Console.WriteLine(String.Format("Channels:\n{0}\n", string.Join("\n", channels)));
            Console.WriteLine(String.Format("Playlists:\n{0}\n", string.Join("\n", playlists)));
        }
示例#10
0
        public String generateRandomVideos(bool onlyOne)
        {
            if (onlyOne)
            {
                log.Debug("Cache is empty; generating video...");
            }
            else
            {
                log.Debug(String.Format("Cache currently contains {0} items; refilling to {1}...", randomCache.Count, PluginSettings.Default.YoutubeCacheSize));
            }
            while (randomCache.Count < PluginSettings.Default.YoutubeCacheSize)
            {
                try {
                    log.Debug("Generating a random video...");
                    VideosResource.ListRequest request = youtubeService.Videos.List("snippet");
                    request.Fields     = "items(id,snippet/title)";
                    request.Chart      = VideosResource.ListRequest.ChartEnum.MostPopular;
                    request.MaxResults = 40;

                    log.Debug("Fetching list of most popular videos...");

                    VideoListResponse response = request.Execute();
                    int count = response.Items.Count;

                    Video  first = response.Items[random.Next(count)];
                    String id    = first.Id;
                    log.Debug("Picked \"" + first.Snippet.Title + "\" as my starting point.");
                    for (int i = 0; i < PluginSettings.Default.YoutubeIterations; i++)
                    {
                        SearchResource.ListRequest relatedRequest = youtubeService.Search.List("snippet");
                        relatedRequest.Fields           = "items(id,snippet/title)";
                        relatedRequest.Type             = "video";
                        relatedRequest.RelatedToVideoId = id;
                        relatedRequest.SafeSearch       = SearchResource.ListRequest.SafeSearchEnum.None;
                        relatedRequest.MaxResults       = 20;

                        SearchListResponse relatedResponse = relatedRequest.Execute();
                        count = relatedResponse.Items.Count;
                        SearchResult result = relatedResponse.Items[random.Next(count)];
                        id = result.Id.VideoId;
                        log.Debug("Next link: " + result.Snippet.Title);
                    }

                    log.Debug("Found my random video!");
                    String url = "https://youtu.be/" + id;

                    if (onlyOne)
                    {
                        return(url);
                    }

                    log.Debug("Adding to cache...");
                    randomCache.Enqueue(url);
                } catch (Exception e) {
                    log.Error("Failed in generating a video.", e);
                }
            }

            return(null);
        }
示例#11
0
        private SearchListResponse GetSearch(string query)
        {
            SearchResource.ListRequest listRequest = youTubeService.Search.List("snippet");
            listRequest.Q          = query;
            listRequest.MaxResults = 1;

            SearchListResponse search = listRequest.Execute();

            return(search);
        }
示例#12
0
        private static async Task RunYoutubeSearch()
        {
            try
            {
                Console.Write("Searching YouTube for new videos... ");
                var youtube = new YouTubeService(new BaseClientService.Initializer()
                {
                    ApplicationName = ConfigurationManager.AppSettings["YoutubeApiAppName"],
                    ApiKey          = ConfigurationManager.AppSettings["YoutubeApiToken"]
                });

                SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
                listRequest.ChannelId  = ConfigurationManager.AppSettings["YoutubeChannelId"];
                listRequest.MaxResults = 5;
                listRequest.Order      = SearchResource.ListRequest.OrderEnum.Date;
                listRequest.Type       = "video";
                SearchListResponse resp = listRequest.Execute();

                DateTime mostRecent = DateTime.MinValue.ToUniversalTime();

                var youtubeRootDir         = Path.Combine(Environment.CurrentDirectory, string.Format("data/youtube/"));
                var channelSubscribersPath = Path.Combine(youtubeRootDir,
                                                          string.Format("{0}.txt", listRequest.ChannelId));

                CreateIfMissing(Path.Combine(Environment.CurrentDirectory, string.Format("data/youtube/")));

                if (File.Exists(channelSubscribersPath))
                {
                    var  dateStr = File.ReadAllText(channelSubscribersPath);
                    long ticks   = long.Parse(dateStr);
                    mostRecent = DateTime.SpecifyKind(new DateTime(ticks), DateTimeKind.Utc);
                }

                Console.WriteLine("Done.");

                var newItems =
                    resp.Items.Where(
                        obj => obj.Snippet.PublishedAt.HasValue && obj.Snippet.PublishedAt.Value > mostRecent)
                    .ToList();

                if (newItems.Any())
                {
                    Console.WriteLine("Found New Videos! Notifying clients.");
                    var latestEp = newItems.OrderByDescending(obj => obj.Snippet.PublishedAt.Value)
                                   .FirstOrDefault();
                    File.WriteAllText(channelSubscribersPath, latestEp.Snippet.PublishedAt.Value.Ticks.ToString());
                    await NotifyChats(newItems);
                }
            }
            catch (Exception ex)
            {
                // No nothing, just don't crash the app if service is down, or some unknown error.
                Console.WriteLine(ex.ToString());
            }
        }
示例#13
0
        public string GetVideoUrl(string search, bool IsEmbedded)
        {
            AddListRequestProperties(search);
            SearchListResponse resp = _listRequest.Execute();

            if (resp.Items.Count > 0)
            {
                _result = resp.Items[0];
                return(ReturnGenericYoutubeUrl(IsEmbedded) + _result.Id.VideoId.ToString());
            }
            return("");
        }
示例#14
0
        public List <Content> FindContent(string q, int maxResults)
        {
            var contentist = new List <Content>();

            try
            {
                //https://developers.google.com/youtube/v3/code_samples/dotnet?hl=pt#search_by_keyword

                SearchResource.ListRequest listRequest = youTubeService.Search.List("snippet");
                listRequest.Q     = q;
                listRequest.Order = SearchResource.ListRequest.OrderEnum.Relevance;
                listRequest.Type  = "video";
                //listRequest.RegionCode = "BRA"; //TODO: reginalizar
                listRequest.MaxResults = maxResults;

                SearchListResponse searchResponse = listRequest.Execute();

                foreach (SearchResult searchResult in searchResponse.Items)
                {
                    contentist.Add(new Content
                    {
                        ContentType = ContentType.YoutubeVideo,
                        Created     = DateTime.Now,
                        Data        = searchResult.Id.VideoId,
                        Idiom       = "PT-BR", //TODO
                        Modificated = DateTime.Now,
                        Thumbnail   = GetThumbNail(searchResult.Snippet.Thumbnails),
                        Title       = searchResult.Snippet.Title,
                        Description = searchResult.Snippet.Description,
                    });
                }
            }
            catch (Exception ex) {
                //TODO: Melhorar essa verificação, precisa pera a exceptions correta e verificar se é uma System.Net.HttpStatusCode.Forbidden
                if (ex.Message.Contains("The request cannot be completed because you have exceeded your"))
                {
                    LogManager.Warning($"A cota de consumo do youtube foi excedida para a chave {_serviceKey}");
                    throw new Exception("Cota excedida");
                }
                else
                {
                    throw ex;
                }
            }

            return(contentist);
        }
示例#15
0
        /// <summary>
        /// Search video for Imdb
        /// </summary>
        /// <param name="parameters">Search parameters</param>
        /// <returns>Returns an instance of VideSearchResponse which contains video search result or error information </returns>
        public VideoSearchResponse SearchVideo(VideoSearchRequest parameters)
        {
            if (parameters == null)
            {
                return(null);
            }

            if (string.IsNullOrWhiteSpace(parameters.SearchQuery))
            {
                return(null);
            }

            VideoSearchResponse response = new VideoSearchResponse();

            this.RunSafely(() =>
            {
                var youtubeService = new YouTubeService(new BaseClientService.Initializer()
                {
                    ApiKey = YOUTUBE_API_URL
                });

                SearchResource.ListRequest searchListRequest = youtubeService.Search.List(YOUTUBE_SEARCH_SNIPPET);
                searchListRequest.Q                   = parameters.SearchQuery;
                searchListRequest.MaxResults          = parameters.MaxResult;
                searchListRequest.VideoType           = SearchResource.ListRequest.VideoTypeEnum.Movie;
                searchListRequest.Type                = YOUTUBE_SEARCH_TYPE;
                SearchListResponse searchListResponse = searchListRequest.Execute();

                VideoItem temp                    = null;
                VideoItemCollection items         = new VideoItemCollection();
                YouTubeAdapter youTubeDataADapter = new YouTubeAdapter();
                if (searchListResponse != null)
                {
                    foreach (SearchResult eachItemFromYouTubeService in searchListResponse.Items)
                    {
                        temp = youTubeDataADapter.ToVideoItem(eachItemFromYouTubeService);
                        items.Add(temp);
                    }
                }

                response.Success(items);
            }, (ex) =>
            {
                response.Error("YoutubeVideoProvider_SearchVideo", ex.Message, false);
            });
            return(response);
        }
示例#16
0
        private List <SearchResult> SearchYouTube(string input, int max = 10)
        {
            List <SearchResult> searchResults = new List <SearchResult>();
            var youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey          = _configuration["YouTubeApiKey"],
                ApplicationName = GetType().ToString()
            });

            SearchResource.ListRequest listRequest = youtubeService.Search.List("snippet");
            listRequest.Q          = input;
            listRequest.MaxResults = max;
            listRequest.Type       = "video";
            SearchListResponse response = listRequest.Execute();

            return(response.Items.ToList());
        }
        /// <summary>
        /// Search in YouTube and returns a dictionary containing Titles of Music Videos and the Video Url.
        /// </summary>
        /// <param name="searchQuery"> Search string to use for the search query. </param>
        /// <returns></returns>
        public Dictionary <string, string> SearchVideos(string searchQuery)
        {
            YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer {
                ApiKey = youtubeApiKey, ApplicationName = $"YouTubeCustomSearchEngine"
            });

            SearchResource.ListRequest searchListRequest = youtubeService.Search.List("snippet");
            searchListRequest.Q               = searchQuery;
            searchListRequest.Type            = "video";
            searchListRequest.MaxResults      = _maxSearchResults;
            searchListRequest.VideoCategoryId = "10";
            searchListRequest.EventType       = SearchResource.ListRequest.EventTypeEnum.None;

            SearchListResponse searchListResponse = searchListRequest.Execute();

            return(GetYouTubeSearchResults(searchListResponse));
        }
示例#18
0
        public string GetVideoUrl(string search, bool IsEmbedded)
        {
            SearchResult result;

            SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
            listRequest.Q          = search + "trailer";
            listRequest.MaxResults = 1;
            listRequest.Type       = "video";
            SearchListResponse resp = listRequest.Execute();

            if (resp.Items.Count > 0)
            {
                result = resp.Items[0];
                return(ReturnGenericYoutubeUrl(IsEmbedded) + result.Id.VideoId.ToString());
            }
            return("");
        }
示例#19
0
        private void Timer_Elapsed(object sender, ElapsedEventArgs e)
        {
            PlaybackContext context = _spotify.GetPlayingTrack();

            webView.Dispatcher.Invoke(() =>
            {
                if (context.Error == null)
                {
                    if (context.Item.Error == null)
                    {
                        String songName   = context.Item.Name;
                        String artistName = context.Item.Artists[0].Name;
                        if (_currentSong != songName)
                        {
                            _currentSong = songName;
                            SearchResource.ListRequest listRequest = youtube.Search.List("snippet");
                            listRequest.MaxResults      = 1;
                            listRequest.Type            = "video";
                            listRequest.Q               = songName + " - " + artistName;
                            listRequest.VideoEmbeddable = SearchResource.ListRequest.VideoEmbeddableEnum.True__;
                            //listRequest.VideoSyndicated = SearchResource.ListRequest.VideoSyndicatedEnum.True__;
                            SearchListResponse resp = listRequest.Execute();

                            string videoID   = resp.Items[0].Id.VideoId;
                            string startTime = (context.ProgressMs / 1000).ToString();
                            if (Spotify.GetSetVolume() != 0)
                            {
                                _volume = Spotify.GetSetVolume();
                            }
                            Spotify.GetSetVolume(0);

                            YoutubePlayer(videoID, startTime);
                        }
                    }
                    else
                    {
                        System.Diagnostics.Debug.WriteLine("Inside- " + context.Error.Message);
                    }
                }
                else
                {
                    System.Diagnostics.Debug.WriteLine("Outside- " + context.Error.Message);
                }
            });
        }
示例#20
0
        private bool SearchYouTube(YouTubeSearchRequest searchRequest)
        //================================================================================================================
        // Search YouTube based on the given search request and populate the request with search results
        //
        // Parameters
        //      searchRequest: YouTube search request data
        //
        // Retruns
        //      True/False, has the YouTube data limit been exceeded
        //================================================================================================================
        {
            bool   dataLimitReached = false;
            string googleAPIKey     = RetrieveGoogleAPIKey();

            try
            {
                // Create and initialize the YouTube API
                YouTubeService youTube = new YouTubeService(
                    new BaseClientService.Initializer()
                {
                    ApiKey          = googleAPIKey,
                    ApplicationName = this.GetType().ToString()
                });

                // Build a search request for the selected category
                SearchResource.ListRequest youtubeRequest = youTube.Search.List("snippet");
                youtubeRequest.Q          = searchRequest.SearchPhrase;
                youtubeRequest.Type       = "video";
                youtubeRequest.MaxResults = searchRequest.MaxResults;

                // Search YouTube and parse the results
                SearchListResponse searchResults = youtubeRequest.Execute();
                ParseYouTubeSearchResults(searchRequest, searchResults);
                SaveYouTubeSearchResults(searchRequest);
            }
            catch (Exception runError)
            {
                if (runError.Source == GOOGLE_ERROR_SOURCE)
                {
                    dataLimitReached = true;
                }
            }

            return(dataLimitReached);
        }
示例#21
0
        public VideoInfo SearchVideo(string query)
        {
            SearchResource.ListRequest listRequest = _service.Search.List("snippet");
            listRequest.Q          = query;
            listRequest.MaxResults = 1;
            listRequest.Type       = "video";
            SearchListResponse resp = listRequest.Execute();

            foreach (var result in resp.Items)
            {
                //Console.WriteLine("{0}, {1}", result.Snippet.Title, result.Id.VideoId);
                return(new VideoInfo {
                    id = result.Id.VideoId, title = result.Snippet.Title
                });
            }

            return(new VideoInfo());
        }
示例#22
0
 private static (bool, string) ValidateChannelId(string channelId)
 {
     try
     {
         SearchResource.ListRequest listRequest = YoutubeModuleService.YoutubeS.Search.List("snippet");
         listRequest.ChannelId  = channelId;
         listRequest.Type       = "video";
         listRequest.Order      = SearchResource.ListRequest.OrderEnum.Date;
         listRequest.MaxResults = 1;
         var request = listRequest.Execute();
         return(true, request.Items.FirstOrDefault().Snippet.ChannelTitle);
     }
     catch (Exception ex)
     {
         Log.Verbose(ex + ex.Message);
         return(false, null);
     }
 }
示例#23
0
        public string SearchVideo(string artist, string song)
        {
            SearchResource.ListRequest searchRequest = this.youTubeService.Search.List("snippet");
            searchRequest.Q = $"{artist} {song}";

            SearchListResponse searchResponse = searchRequest.Execute();

            foreach (var item in searchResponse.Items)
            {
                switch (item.Id.Kind)
                {
                case "youtube#video":
                    return(item.Id.VideoId);
                }
            }

            return(null);
        }
示例#24
0
        public ActionResult Search(string search)
        {
            var youTubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey = key
            });

            SearchResource.ListRequest listRequest = youTubeService.Search.List("snippet");
            listRequest.Q     = search;
            listRequest.Order = SearchResource.ListRequest.OrderEnum.Relevance;

            SearchListResponse searchResponse = listRequest.Execute();

            List <dynamic> videos    = new List <dynamic>();
            List <dynamic> channels  = new List <dynamic>();
            List <dynamic> playlists = new List <dynamic>();
            List <dynamic> all       = new List <dynamic>();

            foreach (SearchResult searchResult in searchResponse.Items)
            {
                switch (searchResult.Id.Kind)
                {
                case "youtube#video":
                    videos.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "video", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.VideoId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });
                    all.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "video", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.VideoId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });
                    break;

                case "youtube#channel":
                    channels.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "canal", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.ChannelId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });
                    all.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "canal", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.ChannelId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });
                    break;

                case "youtube#playlist":
                    playlists.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "playlist", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.PlaylistId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });
                    all.Add(new { Criado = searchResult.Snippet.PublishedAt, Tipo = "playlist", Titulo = searchResult.Snippet.Title, Id = searchResult.Id.PlaylistId, Descricao = searchResult.Snippet.Description, Foto = searchResult.Snippet.Thumbnails.Medium.Url });

                    break;
                }
            }


            return(Ok(all));
        }
示例#25
0
        public async Task YoutubeTestCommand()
        {
            SearchResource.ListRequest listRequest = YoutubeModuleService.YoutubeS.Search.List("snippet");
            listRequest.ChannelId  = "UCmeds0MLhjfkjD_5acPnFlQ";
            listRequest.Type       = "video";
            listRequest.EventType  = SearchResource.ListRequest.EventTypeEnum.Live;
            listRequest.Order      = SearchResource.ListRequest.OrderEnum.Date;
            listRequest.MaxResults = 1;
            SearchListResponse searchResponse = listRequest.Execute();

            Google.Apis.YouTube.v3.Data.SearchResult data = searchResponse.Items.FirstOrDefault(v => v.Id.Kind == "youtube#video");
            string currentVideo = data.Id.VideoId;

            if (_latestVideo != currentVideo)
            {
                await ReplyAsync($"https://youtu.be/{data.Id.VideoId}").ConfigureAwait(false);
            }
            _latestVideo = currentVideo;
        }
        private void GetResults()
        {
            YouTubeService ys = new YouTubeService(new BaseClientService.Initializer()
            {
                ApiKey          = YoutubeHook.ApiKey,
                ApplicationName = "Butler-YoutubeViewer"
            });

            SearchResource.ListRequest req = new SearchResource.ListRequest(ys, "snippet")
            {
                Q          = searchQ,
                MaxResults = 50
            };

            SearchListResponse resp = req.Execute();

            _results = resp.Items.Where(itm => itm.Id.Kind == "youtube#video").ToList();

            Dispatcher.Invoke(UpdateItems);
        }
示例#27
0
        public override string GetVideoUrl(string i_SongName)
        {
            YouTubeService youtubeService = new YouTubeService(new BaseClientService.Initializer()
            {
                ApplicationName = this.GetType().ToString(),
                ApiKey          = k_YoutubeApiKey,
            });

            SearchResource.ListRequest listRequest = youtubeService.Search.List("snippet");

            listRequest.Q          = i_SongName;
            listRequest.MaxResults = 1;
            listRequest.Type       = "video";
            SearchListResponse resp     = listRequest.Execute();
            string             videoUrl = r_VideoWatchUrl + resp.Items[0].Id.VideoId;

            m_SongLink = videoUrl;

            return(videoUrl);
        }
示例#28
0
        //For returning the youtube link based on movie title
        public string YoutubeRun(string title)
        {
            string         link    = "";
            YouTubeService youtube = new YouTubeService(new BaseClientService.Initializer()
            {
                //ApplicationName = " ";
                ApiKey = YOUTUBE_API_KEY,
            }
                                                        );

            SearchResource.ListRequest listRequest = youtube.Search.List("id");
            listRequest.Q          = title;
            listRequest.MaxResults = 1;
            listRequest.Type       = "video";
            SearchListResponse resp = listRequest.Execute();

            foreach (SearchResult result in resp.Items)
            {
                link = "https://www.youtube.com/v/" + result.Id.VideoId + "?version=3";
            }
            return(link);
        }
示例#29
0
        public List <string> SearchForVideosByChannel(string searchValue, int maxResultsCount)
        {
            SearchResource.ListRequest searchListRequest = client.Search.List("snippet");
            // searchListRequest.Q = searchValue;
            searchListRequest.MaxResults = maxResultsCount;
            searchListRequest.ChannelId  = searchValue;
            searchListRequest.Type       = "video";
            searchListRequest.Fields     = "description";


            SearchListResponse searchListResponse = searchListRequest.Execute();



            List <string> videos    = new List <string>();
            List <string> channels  = new List <string>();
            List <string> playlists = new List <string>();

            foreach (SearchResult searchResult in searchListResponse.Items)
            {
                switch (searchResult.Id.Kind)
                {
                case "youtube#video":
                    videos.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.VideoId));

                    break;

                case "youtube#channel":
                    channels.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.ChannelId));
                    break;

                case "youtube#playlist":
                    playlists.Add(String.Format("{0} ({1})", searchResult.Snippet.Title, searchResult.Id.PlaylistId));
                    break;
                }
            }

            return(videos);
        }
        public async Task <SearchResultViewModel> Search(string searchText, string pageToken)
        {
            SearchResource.ListRequest listRequest = youTubeDataApiService.Search.List("snippet");

            listRequest.Q                 = searchText;
            listRequest.Order             = SearchResource.ListRequest.OrderEnum.Relevance;
            listRequest.SafeSearch        = SearchResource.ListRequest.SafeSearchEnum.None;
            listRequest.RegionCode        = "BR";
            listRequest.RelevanceLanguage = "PT-BR";
            listRequest.Type              = "video";
            listRequest.MaxResults        = 10;
            listRequest.PageToken         = pageToken;

            SearchListResponse searchResponse = listRequest.Execute();

            List <Models.Video> videos = new List <Models.Video>();

            foreach (SearchResult searchResult in searchResponse.Items)
            {
                var video = new Models.Video()
                {
                    Id          = searchResult.Id.VideoId,
                    Title       = searchResult.Snippet.Title,
                    Description = searchResult.Snippet.Description,
                    Url         = searchResult.Snippet.Thumbnails.Medium.Url
                };

                videos.Add(video);
                await SaveVideo(video);
            }
            return(new SearchResultViewModel()
            {
                nextPageToken = searchResponse.NextPageToken,
                prevPageToken = searchResponse.PrevPageToken,
                Videos = await LoadPlaylistsInVideo(videos),
                Playlists = await repository.PlaylistList()
            });
        }