2015-12-07 11 views
6

क्या कुछ चैनल (मेरा नहीं) से सभी वीडियो प्राप्त करना संभव है? यदि यह संभव है, तो क्या मैं एक साधारण एपीआई कुंजी का उपयोग कर सकता हूं या क्या मुझे OAuth 2.0 क्रेडेंशियल्स का उपयोग करना चाहिए?चैनल से सभी वीडियो प्राप्त करें - यूट्यूब एपीआई v3 C#

उत्तर

10

मैं इस तरह से किया है और यह मेरे लिए काम किया मैं Nuget पैकेट प्रबंधक

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"); 
} 

से यूट्यूब API v3 का इस्तेमाल किया है इस लाइन

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

इस लिंक का अनुसरण में अपने चैनल का नाम प्रदान करें https://developers.google.com/youtube/v3/code_samples/dotnet#retrieve_my_uploads

+0

क्या ClientServiceRequest.cs के बारे में पर मिलना चाहिए? क्या मुझे यह होना चाहिए? – Cieja

+0

मैंने एपीआई बनाया है लेकिन मेरे आवेदन में मुझे त्रुटि संदेश मिला: एक्सेस कॉन्फ़िगर नहीं किया गया। एपीआई (यूट्यूब डेटा एपीआई) आपकी परियोजना के लिए सक्षम नहीं है। कृपया अपनी कॉन्फ़िगरेशन को अपडेट करने के लिए Google डेवलपर कंसोल का उपयोग करें। [403] – Cieja

+0

ClientServiceRequest.cs आवश्यक नहीं है ... Nuget पैकेट प्रबंधक से बस यूट्यूब एपीआई v3 उस सेट को स्थापित करें –

3

आप अपनी एपीआई कुंजी का उपयोग कर सकते हैं और बस सभी चैनल वीडियो पूछ सकते हैं (भले ही आपका नहीं :) :)

 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; 

     }); 
    } 

इस विधि आप ट्रैक

संबंधित मुद्दे

 संबंधित मुद्दे