2015-12-07 9 views

Antwort

10

Ich habe auf diese Weise getan und es funktionierte für mich ich Youtube API v3 von Nuget Packet Manager

using Google.Apis.Services; 
using Google.Apis.YouTube.v3; 

public ActionResult GetVideo(YouTubeData objYouTubeData) 
{ 
    try 
    { 
     var yt = new YouTubeService(new BaseClientService.Initializer() { ApiKey = "Your API Key" }); 
     var channelsListRequest = yt.Channels.List("contentDetails"); 
     channelsListRequest.ForUsername = "kkrofficial"; 
     var channelsListResponse = channelsListRequest.Execute(); 
     foreach (var channel in channelsListResponse.Items) 
     { 
      // of videos uploaded to the authenticated user's channel. 
      var uploadsListId = channel.ContentDetails.RelatedPlaylists.Uploads; 
      var nextPageToken = ""; 
      while (nextPageToken != null) 
      { 
       var playlistItemsListRequest = yt.PlaylistItems.List("snippet"); 
       playlistItemsListRequest.PlaylistId = uploadsListId; 
       playlistItemsListRequest.MaxResults = 50; 
       playlistItemsListRequest.PageToken = nextPageToken; 
       // Retrieve the list of videos uploaded to the authenticated user's channel. 
       var playlistItemsListResponse = playlistItemsListRequest.Execute(); 
       foreach (var playlistItem in playlistItemsListResponse.Items) 
       { 
        // Print information about each video. 
        //Console.WriteLine("Video Title= {0}, Video ID ={1}", playlistItem.Snippet.Title, playlistItem.Snippet.ResourceId.VideoId); 
        var qry = (from s in ObjEdbContext.ObjTubeDatas where s.Title == playlistItem.Snippet.Title select s).FirstOrDefault(); 
        if (qry == null) 
        { 
         objYouTubeData.VideoId = "https://www.youtube.com/embed/" + playlistItem.Snippet.ResourceId.VideoId; 
         objYouTubeData.Title = playlistItem.Snippet.Title; 
         objYouTubeData.Descriptions = playlistItem.Snippet.Description; 
         objYouTubeData.ImageUrl = playlistItem.Snippet.Thumbnails.High.Url; 
         objYouTubeData.IsValid = true; 
         ObjEdbContext.ObjTubeDatas.Add(objYouTubeData); 
         ObjEdbContext.SaveChanges(); 
         ModelState.Clear(); 

        } 
       } 
       nextPageToken = playlistItemsListResponse.NextPageToken; 
      } 
     } 
    } 
    catch (Exception e) 
    { 
     ViewBag.ErrorMessage = "Some exception occured" + e; 
     return RedirectToAction("GetYouTube"); 
    } 

    return RedirectToAction("GetYouTube"); 
} 

Ihren Sendernamen Geben Sie in dieser Zeile verwendet haben

channelsListRequest.ForUsername = "kkrofficial"; //kkrofficial is kkr channel name. 

Folgen Sie diesem Link https://developers.google.com/youtube/v3/code_samples/dotnet#retrieve_my_uploads

+0

Was ClientServiceRequest.cs? Soll ich das haben? – Cieja

+0

Ich habe API erstellt, aber in meiner Anwendung habe ich Fehlermeldung: Zugriff nicht konfiguriert. Die API (YouTube-Daten-API) ist für dein Projekt nicht aktiviert. Verwenden Sie die Google Developers Console, um Ihre Konfiguration zu aktualisieren. [403] – Cieja

+0

ClientServiceRequest.cs nicht erforderlich ... Nur Youtube API v3 von Nuget Paketmanager installiert diesen Satz –

3

Sie können Ihren API-Schlüssel verwenden und nur alle Kanäle Video abfragen (auch wenn nicht Ihr :))

 public Task<List<SearchResult>> GetVideosFromChannelAsync(string ytChannelId) 
    { 

     return Task.Run(() => 
     { 
      List<SearchResult> res = new List<SearchResult>(); 

      string nextpagetoken = " "; 

      while (nextpagetoken != null) 
      { 
       var searchListRequest = _youtubeService.Search.List("snippet"); 
       searchListRequest.MaxResults = 50; 
       searchListRequest.ChannelId = ytChannelId; 
       searchListRequest.PageToken = nextpagetoken; 
       searchListRequest.Type  = "video"; 

       // Call the search.list method to retrieve results matching the specified query term. 
       var searchListResponse = searchListRequest.Execute(); 

       // Process the video responses 
       res.AddRange(searchListResponse.Items); 

       nextpagetoken = searchListResponse.NextPageToken; 

      } 

      return res; 

     }); 
    } 

Diese Methode sollte man auf die Strecke

Verwandte Themen