2015-06-20 13 views
10

असल में, मैं प्रत्येक वीडियो की वीडियो अवधि प्राप्त करने का प्रयास कर रहा हूं जो परिणाम में दिखाए जाने पर परिणाम में दिखाई देता है। मेरे पास गड़बड़ी करने के लिए आपके पास एक साफ छोटा डेमो सेट है!यूट्यूब डेटा एपीआई के साथ वीडियो अवधि प्राप्त करें?

भी

- जब मैं कहता अवधि मैं एम/एस प्रारूप में वीडियो (00:00) की लंबाई मतलब ..

डेमोhttp://codepen.io/mistkaes/pen/6b6a347c7d24edee15b3491420db4ecd

jQuery:

var apikey = '<API KEY>'; 

$(function() { 
    var searchField = $('#search-input'); 

    $('#search-form').submit(function(e) { 
     e.preventDefault(); 
    }); 
}); 

function search() { 
    $('#results').html(''); 

    q = $('#search-input').val(); 

    $.get(
     "https://www.googleapis.com/youtube/v3/search", { 
      part: 'snippet, id', 
      q: q, 
      maxResults: 50, 
      type: 'video', 
      key: apikey 
     }, 
     function(data) { 
      $.each(data.items, function(i, item) { 
       var output = getResults(item); 

       $('#results').append(output); 
      }); 
     }); 
} 

function getResults(item) { 
    var videoID = item.id.videoId; 
    var title = item.snippet.title; 
    var thumb = item.snippet.thumbnails.high.url; 
    var channelTitle = item.snippet.channelTitle; 

    var output = '<li>' + 
     '<div class="list-left">' + 
     '<img src="' + thumb + '">' + 
     '</div>' + 
     '<div class="list-right">' + 
     '<h3><a href="http://youtube.com/embed/' + videoID + '?rel=0">' + title + '</a></h3>' + 
     '<p class="cTitle">' + channelTitle + '</p>' + 
     '</div>' + 
     '</li>' + 
     '<div class="clearfix"></div>' + 
     ''; 

    return output; 
} 
+1

कृपया मेरा उत्तर जांचें कि यह आपकी मदद करता है। – squiroid

+0

बीटीडब्ल्यू, यह वास्तव में देर हो चुकी है, लेकिन महत्वपूर्ण है। अपनी एपीआई कुंजी पोस्ट न करें! ये निजी हैं। कोई अब आपके कोटा का दुरुपयोग कर सकता है। – ChiralMichael

उत्तर

13

मैंने आपकी क्वेरी की खोज की और पाया कि खोज api के साथ issue है।

विकल्प खोज कॉल करने के बाद Youtube Data API's वीडियो संसाधन पर कॉल करना वैकल्पिक है। आप 50 वीडियो आईडी तलाश में के लिए रख सकते हैं, ताकि आप इसे प्रत्येक तत्व के लिए कॉल करने के लिए की ज़रूरत नहीं होगी

मैं अपने codepen और निम्न क्या मैंने किया था अद्यतन:

1) जाओ का यूआरएल प्रत्येक वीडियो जो आपको खोज से मिला है।

2) एक एक और अजाक्स कॉल भेजें अवधि पाने के लिए: -

for (var i = 0; i < data.items.length; i++) { 
    var url1 = "https://www.googleapis.com/youtube/v3/videos?id=" + data.items[i].id.videoId + "&key=AIzaSyDYwPzLevXauI-kTSVXTLroLyHEONuF9Rw&part=snippet,contentDetails"; 
    $.ajax({ 
     async: false, 
     type: 'GET', 
     url: url1, 
     success: function(data) { 
      if (data.items.length > 0) { 
       var output = getResults(data.items[0]); 
       $('#results').append(output); 
      } 
     } 
    }); 
} 

3) एपीआई आईएसओ प्रारूप में समय देना तो मैं यह mm:ss प्रारूप में परिवर्तित (के रूप में आप चाहते थे)।

function convert_time(duration) { 
    var a = duration.match(/\d+/g); 

    if (duration.indexOf('M') >= 0 && duration.indexOf('H') == -1 && duration.indexOf('S') == -1) { 
     a = [0, a[0], 0]; 
    } 

    if (duration.indexOf('H') >= 0 && duration.indexOf('M') == -1) { 
     a = [a[0], 0, a[1]]; 
    } 
    if (duration.indexOf('H') >= 0 && duration.indexOf('M') == -1 && duration.indexOf('S') == -1) { 
     a = [a[0], 0, 0]; 
    } 

    duration = 0; 

    if (a.length == 3) { 
     duration = duration + parseInt(a[0]) * 3600; 
     duration = duration + parseInt(a[1]) * 60; 
     duration = duration + parseInt(a[2]); 
    } 

    if (a.length == 2) { 
     duration = duration + parseInt(a[0]) * 60; 
     duration = duration + parseInt(a[1]); 
    } 

    if (a.length == 1) { 
     duration = duration + parseInt(a[0]); 
    } 
    var h = Math.floor(duration/3600); 
    var m = Math.floor(duration % 3600/60); 
    var s = Math.floor(duration % 3600 % 60); 
    return ((h > 0 ? h + ":" + (m < 10 ? "0" : "") : "") + m + ":" + (s < 10 ? "0" : "") + s); 
} 

4) आपके वीडियो के शीर्षक के साथ अपने परिणाम संलग्न करें।

'<p class="cTitle">' + channelTitle + ' --->' + duration + '</p>' 
संबंधित मुद्दे