2012-12-16 7 views
7

Ich versuche ein kleines JavaScript-Programm zu erstellen, um die YouTube API für eine bestimmte Playlist abzurufen, geordnet nach Dauer. Alles funktioniert perfekt, aber die Reihenfolge ist nicht die ganze Playlist, nur die 25 neuesten Videos! Hier ist ein Minimum komplette Arbeits example as a JSFiddle und hier ist der JavaScript Teil davon:YouTube-API 'orderby = duration' nicht die gesamte Playlist, nur die neuesten Videos

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

Ich habe versucht, dies in XML und JSON und ich habe versucht, auch andere Arten von Suchanfragen neben der Playlist-Suche. Die API zu sortieren, nur die neuesten Videos des Ergebnisses scheint ziemlich sinnlos. Wie genau kann ich die längsten oder kürzesten Videos einer Wiedergabeliste abrufen, oder die von einem bestimmten Benutzer für diese Angelegenheit hochgeladen?

Antwort

6

EDIT

Ich glaube nicht, dass die Funktionen, die Sie sich wünschen, verfügbar ist. Die Reihenfolge nach Dauer ist nicht einmal auf YouTube selbst verfügbar. Ich denke, Sie müssen max-results und start-index verwenden, um Blöcke von Videos zu holen. Sie können dann die kompilierte Liste nach Dauer sortieren.

Hier ist ein funktionierendes Beispiel für eine mögliche Lösung: http://jsfiddle.net/PKcnb/8


ich gefunden, wo Google sagt, dass dies ausdrücklich nicht möglich.

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

In diesem Abschnitt wird erläutert, wie ein Feed abzurufen alle der Videos enthält, die durch einen bestimmten Benutzer hochgeladen. Sie sollten search parameters nicht in Anfragen aufnehmen, um einen hochgeladenen Video-Feed abzurufen. Die Parameter generieren einen Feed aus dem YouTube-Suchindex , der die Ergebnismenge effektiv auf indizierte öffentliche Videos beschränkt, anstatt eine vollständige Liste der hochgeladenen Videos des Nutzers zurückzuliefern.

Es geht weiter zu sagen:

einen Feed aller Videos von den aktuell angemeldeten Benutzer in , senden Sie eine GET-Anfrage an die folgende URL hochgeladen anfordern. Diese Anfrage erfordert ein Authentifizierungstoken, mit dem YouTube den Nutzer identifizieren kann.

Es kann also möglich sein, aber Sie müssen es mit einem Authentifizierungstoken testen.


Original-Beitrag

  1. Die API docs for orderby es klingen zu lassen, wie es nur die Antwort sortiert ist.

    Der Parameter orderby, der für Video-Feeds und Wiedergabelisten-Feeds unterstützt wird, gibt die Methode an, die zum Sortieren von Einträgen in der API-Antwort verwendet wird.

  2. Außerdem können Sie mit the max-results tag angeben, wie viele Elemente zurückgegeben werden sollen.

  3. Here's an example of how you could pull more (50 in this example) Ergebnisse bereits sortiert. Sieht so aus, als müsstest du so viele wie möglich anfordern und dann sortieren. Definitiv nicht ideal.

  4. Retrieving a user's playlists

+0

Man sollte meinen, die Ergebnisse Server-Seite Sortierung würde zu einem Dutzend oder mehr einzelne Abfragen eine Gesamt billiger Betrieb als Antwort, ohne etwas zu Sortierung ... Definitiv nicht ideal, wie Sie gesagt haben. – ZeroOne

+0

@ZeroOne, stimme ich zu. Ich verstehe wirklich nicht die Logik, warum sie es so ausführen lassen würden. – JSuar

+0

Dieser Link könnte ein wenig mehr Licht in das Thema bringen. http://apiblog.youtube.com/2012/03/keeping-things-fresh.html – JSuar

Verwandte Themen