2012-12-16 12 views
7

मैं अवधि के अनुसार आदेश दिया गया प्लेलिस्ट के लिए YouTube API से पूछताछ करने के लिए एक छोटा जावास्क्रिप्ट प्रोग्राम बनाने की कोशिश कर रहा हूं। सब कुछ पूरी तरह से काम करता है, लेकिन ऑर्डरिंग पूरी प्लेलिस्ट के लिए जिम्मेदार नहीं है, केवल 25 नवीनतम वीडियो! यहाँ एक न्यूनतम काम करने example as a JSFiddle पूरा हो और यहां इसके बारे में जावास्क्रिप्ट हिस्सा है:यूट्यूब एपीआई 'ऑर्डरबी = अवधि' पूरी प्लेलिस्ट को संभालने में नहीं, केवल नवीनतम वीडियो

var playlistId = "UUAuUUnT6oDeKwE6v1NGQxug";  
jQuery.getJSON(
    "https://gdata.youtube.com/feeds/api/playlists/"+playlistId+"?v=2&orderby=duration&alt=json", 
    function(data) { 
     $.each(data.feed.entry, function(key, val) { 
      var title = val.title.$t; 
      var url = val.content.src; 
      var duration = val.media$group.yt$duration.seconds; 
      var minutes = Math.floor(duration/60); 
      var seconds = (duration % 60); 

      if(seconds < 10) seconds = "0"+seconds; 

      var newRow = $("<tr></tr>"); 
      newRow.append("<td><a href='"+url+"'>"+title+"</a></td>"); 
      newRow.append("<td class='dur'>"+minutes+":"+seconds+"</td>"); 
      $("#videos").append(newRow); 
     }); 
    } 
); 

मैं दोनों एक्सएमएल में यह कोशिश की है और JSON और मैं भी प्लेलिस्ट खोज के अलावा खोजें के अन्य प्रकार की कोशिश की है। एपीआई सॉर्ट होने के परिणामस्वरूप केवल परिणाम के नवीनतम वीडियो काफी व्यर्थ लगते हैं। मैं प्लेलिस्ट, या उस मामले के लिए किसी दिए गए उपयोगकर्ता द्वारा अपलोड किए गए लोगों के सबसे लंबे या सबसे कम वीडियो कैसे प्राप्त करूं?

उत्तर

6

संपादित

मुझे नहीं लगता कि कार्यक्षमता आप चाहते हैं उपलब्ध है। अवधि के अनुसार आदेश YouTube पर भी उपलब्ध नहीं है। मुझे लगता है कि वीडियो के ब्लॉक लाने के लिए आपको max-results और start-index का उपयोग करने की आवश्यकता होगी। फिर आप संकलित सूची को अवधि के अनुसार क्रमबद्ध कर सकते हैं। http://jsfiddle.net/PKcnb/8


मैंने पाया जहां Google ने इस स्पष्ट रूप से संभव नहीं कहते हैं:

यहाँ एक संभव समाधान की एक काम उदाहरण है।

YouTube API v2.0 – Video Feed Types: Videos uploaded by a specific user

यह खंड बताते हैं कि कैसे वीडियो एक विशिष्ट उपयोगकर्ता द्वारा अपलोड किए गए सभी युक्त एक फ़ीड पुनः प्राप्त करने के। आपको अपलोड किए गए वीडियो फ़ीड पुनर्प्राप्त करने के अनुरोधों में search parameters शामिल नहीं करना चाहिए। पैरामीटर यूट्यूब की सर्च इंडेक्स, से उपयोगकर्ता के अपलोड किए गए वीडियो की पूरी सूची लौटने के बजाय इंडेक्स किए गए, सार्वजनिक वीडियो, पर परिणाम सेट को प्रभावी ढंग से प्रतिबंधित कर देगा।

यह कहना है:

सभी वीडियो द्वारा वर्तमान में लॉग-इन उपयोगकर्ता अपलोड की एक फ़ीड के अनुरोध के लिए निम्न URL में प्राप्त अनुरोध भेजें। इस अनुरोध के लिए एक प्रमाणीकरण टोकन की आवश्यकता है, जो यूट्यूब को उपयोगकर्ता की पहचान करने में सक्षम बनाता है।

तो, यह संभव हो सकता है लेकिन आपको प्रमाणीकरण टोकन का उपयोग करके इसका परीक्षण करना होगा।


मूल पोस्ट

  1. API docs for orderby यह केवल प्रतिक्रिया क्रमबद्ध हो जाता है की तरह ध्वनि बनाते हैं।

    ऑर्डरबाइट पैरामीटर, जो वीडियो फ़ीड्स और प्लेलिस्ट फ़ीड्स के लिए समर्थित है, एपीआई प्रतिक्रिया में प्रविष्टियों को ऑर्डर करने के लिए उपयोग की जाने वाली विधि निर्दिष्ट करता है।

  2. इसके अलावा, the max-results tag आप कितने आइटम लौटने के लिए निर्दिष्ट करने देगा।

  3. Here's an example of how you could pull more (50 in this example) परिणाम पहले ही सॉर्ट किए गए हैं। ऐसा लगता है कि आपको जितना संभव हो उतना अनुरोध करना पड़ सकता है और फिर सॉर्ट करें। निश्चित रूप से आदर्श नहीं है।

  4. Retrieving a user's playlists

+0

आप परिणामों सर्वर साइड छँटाई कुछ भी छँटाई के बिना एक दर्जन या अधिक व्यक्ति प्रश्नों का जवाब दे रहे तुलना में एक समग्र सस्ता आपरेशन किया जाएगा लगता है कि ... निश्चित रूप से नहीं आदर्श है, जैसे आपने कहा था। – ZeroOne

+0

@ ज़ीरोऑन, मैं सहमत हूं। मैं वास्तव में इस तर्क को समझ नहीं पा रहा हूं कि वे इसे इस तरह क्यों निष्पादित करेंगे। – JSuar

+0

यह लिंक विषय पर थोड़ा और प्रकाश डाल सकता है। http://apiblog.youtube.com/2012/03/keeping-things-fresh.html – JSuar

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