webentwicklung-frage-antwort-db.com.de

Wie bekomme ich die gesamte YouTube-Chronik eines Nutzers?

Ich versuche in meiner YouTube-API-Anwendung eine vollständige Liste der für einen bestimmten Nutzer angesehenen Videos zu erhalten. Ich möchte die Gesamtdauer aller Videos addieren. 

Wenn ich die Liste der Videos aus der Verlaufs-Wiedergabeliste erhalte, wird sie von der API auf 50 Elemente festgelegt. Es gibt Paginierung, aber die Gesamtzahl der Elemente beträgt 50 (nicht nur pro Seite). Ich kann mit der angezeigten API nicht auf weitere Daten zugreifen. 

Gibt es eine Möglichkeit, diese Playlist ohne die Datenobergrenze zu erhalten? Ich hoffe auf eine andere Methode (die Verwendung der API) oder eine Möglichkeit, dies ohne die API zu tun. Ich weiß, dass YouTube diese Daten speichert, weil ich meine gesamte Historie (weit mehr als 50 Videos) anzeigen kann.

Ich verwende diesen Code:

var requestOptions = {
    playlistId: playlistId,
    part: 'snippet',
    maxResults: 50
};
gapi.client.youtube.playlistItems.list(requestOptions);

dabei ist playlistId die ID der Verlaufsliste, die ich von einer gapi.client.youtube.channels.list-Anforderung erhalten habe.

Edit (2017): Ich möchte klarstellen, dass es immer meine Absicht war, meine eigene Geschichte herunterzuladen. Nur aus Interesse, um zu sehen, wie viel Zeit ich mit dem Ansehen von Videos verbracht habe. Ich habe das immer noch nicht geschafft.

26
Fsmv

Ich habe vor einiger Zeit einen Scraper (in Python 2.7 (aktualisiert für 3.5) und Scrapy) für diese Aufgabe geschrieben ... _. Sans offizielle API verwendet ein angemeldetes Session-Cookie und HTML-Analyse. Dumps standardmäßig auf SQLite . https://github.com/zvodd/Youtube-Watch-History-Scraper

Wie es gemacht wird: Im Wesentlichen wird die URL geöffnet 

https://www.youtube.com/feed/history'

mit einem gültigen (angemeldeten) Sitzungscookie aus Chrome. Kratzt alle Videoeinträge nach Name, VID (URL), Kanal/Benutzer, Beschreibung, Länge. Dann findet er die Schaltfläche am unteren Rand der Seite mit dem Attribut data-uix-load-more-href, das den Link zur nächsten Seite enthält, etwa

"/browse_ajax?action_continuation=1&continuation=98h32hfoasau0fu928hf2hf908h98hr%253D%253D&target_id=item-section-552363&direct_render=1"

... erstellt die Videoeinträge von dort neu und speichert sie alle in einer sqlite-Datenbank. Sie können Einträge nach einem der Felder durchsuchen (Name, Länge, Benutzer, Beschreibung usw.).

Bis sie ihre Feed-/History-Seite ändern, ist sie machbar und fertig. Ich könnte sie sogar aktualisieren.

13
Zv_oDD

Die API ruft derzeit nur die letzten zwei Wochen des Watch-Verlaufs ab. Weitere Informationen finden Sie in dem gemeldeten Bug-Problem: https://code.google.com/p/gdata-issues/issues/detail?id=4642

Hinweis: Es gibt eine ähnliche Frage zu SO, die hier gestellt wurde: YouTube API v3 gibt abgeschnittenen Überwachungsverlauf zurück

13
vol7ron

Es scheint, dass dies ein bekannter Fehler ist, der ursprünglich im Jahr 2013 gemeldet wurde. Das gleiche Verhalten wird in einem Google Code-Thread erläutert: https://code.google.com/p/gdata-issues/issues/detail?id=4642

3
Nostradamus

Brainstorming, noch nie probiert: Haben Sie not mit der API ausprobiert und stattdessen die URL " https://www.youtube.com/feed/history " analysiert?

Theoretisch könnte das Durchsuchen des Benutzers einschließlich der Paginierung emuliert werden. Mir ist nicht bewusst, wie schwer (wahrscheinlich sehr) es ist, da Sie sich mit Authentifizierung befassen müssen und YouTube wahrscheinlich versucht, zu überprüfen, ob ein Mensch browst.

0
noderman