Comment obtenir un utilisateur de la totalité de YouTube l'histoire de l'horlogerie?
Je vais essayer d'obtenir une liste complète des vidéos visionnées pour un utilisateur donné dans mon YouTube application de l'API. Je veux ajouter jusqu'durée totale de toutes les vidéos.
Quand je reçois la liste des vidéos de histoire de liste de lecture, l'API casquettes à 50 éléments. Il y a de la pagination mais le montant total de 50 (et pas seulement par page); je ne peux pas accéder à plus de données avec l'API, il s'affiche.
Est-il de toute façon je peux obtenir cette liste de lecture sans les données de la pac? Je suis l'espoir d'une autre méthode (de l'aide de l'API) ou un moyen de le faire sans l'API. Je sais que YouTube stocke ces données parce que je peut voir l'ensemble de mon histoire (bien plus que les 50 vidéos).
Je suis en utilisant ce code:
var requestOptions = {
playlistId: playlistId,
part: 'snippet',
maxResults: 50
};
gapi.client.youtube.playlistItems.list(requestOptions);
où playlistId
est l'id de l'histoire de la liste de lecture que j'ai obtenu à partir d'un gapi.client.youtube.channels.list
demande.
Modifier (2017): je tiens à préciser que cela a toujours été mon intention de télécharger ma propre histoire, tout juste sorti de l'intérêt de voir comment beaucoup de temps que j'ai passé à regarder des vidéos. Je n'ai pas encore été capable de le faire.
- La documentation indique expressément les valeurs acceptables pour
maxResults
sont de 0 à 50. Ainsi, vous aurez la ont pour taper dans la pagination - il n'y a pas de pagination, il y a seulement 50 résultats total. Comme le
response.result.pageInfo.totalResults
qui est le nombre total de vidéos sur toutes les pages est de 50 aussi. En outre, il ne retourne pas unenextPageToken
ou unprevPageToken
. Aussi cette commentaire par un employé de Google confirme qu'il est plafonné. - Si c'est plafonnée, ils ne veulent pas de vous le faire. Trouver des solutions de contournement, si possible, est probablement une violation de leurs mandats.
- En particulier, l'API Youtube Conditions de Service II.2, qui stipule que vous ne devez pas interefere avec le bon fonctionnement de l'API. Et si il y a une intentionnalité limite de 50 résultats, c'est le fonctionnement normal. Et vous allez en trouver dans tous les API de réseaux sociaux, à savoir facebook.
- Je suis à la recherche d'une limite de 147 sur un compte qui possède des milliers de vidéo de l'histoire. Suce ... est actuellement à la recherche d'une vieille vidéo que j'ai vu. Suppose que je vais avoir à cliquer à travers leur page de l'Histoire de l'horlogerie comme un robot.
- Il semble que c'est un BUG! Seule la dernière "semaine" est affiché. S'il vous plaît soutenir cette Question en commentant: code.google.com/p/gdata-issues/issues/detail?id=4642
- Je pense que c'est seulement les deux dernières semaines, mais il semble que nous avons trouvé le même fil! (Je n'ai pas lu votre commentaire avant de poster la réponse, sinon je l'aurais crédité)
- Google va même voir que depuis google code est d'arriver à arrêter maintenant?
Vous devez vous connecter pour publier un commentaire.
J'ai écrit un grattoir(en Python 2.7(mis à jour pour 3.5) et de Scrapy) pour cette tâche il y a un moment.
Sans officielle de l'API, il utilise un enregistré dans le cookie de session et d'analyse html. Décharges pour SQLite par défaut.
https://github.com/zvodd/Youtube-Watch-History-Scraper
Comment c'est fait: pour l'essentiel, il ouvre l'url
avec un valide(connecté) cookie de session prises à partir de Chrome. Éraflures toutes les entrées de vidéo pour le nom, vid(url), le canal/de l'utilisateur, la description, la longueur. Il trouve ensuite le bouton au bas de la page avec l'attribut de données-uix-charge-plus-href qui contient le lien vers la page suivante, quelque chose comme:
... re-racle les entrées de vidéo à partir de là et de décharges tous dans une base de données sqlite; laquelle vous pouvez rechercher des entrées par l'un des champs (nom, la durée, l'utilisateur, description, etc).
Jusqu'à ce qu'ils changent leur alimentation/page d'histoire, c'est faisable et fait.
Je pourrais même mettre à jour.
L'API actuellement récupère uniquement les deux dernières semaines de l'Histoire de l'horlogerie. Pour plus d'informations, reportez-vous à la Question Bug signalé: https://code.google.com/p/gdata-issues/issues/detail?id=4642
Remarque:
Il y a une question similaire sur la demande lui en est ici: YouTube API v3 retourne tronquée de l'histoire de l'horlogerie
Il semble que c'est un bug connu initialement déclarés en 2013. Exactement le même comportement est expliqué sur Google Code thread: https://code.google.com/p/gdata-issues/issues/detail?id=4642
De remue-méninges, jamais essayé: Avez-vous essayé pas l'aide de l'API et au lieu de l'analyse du https://www.youtube.com/feed/history URL?
Théoriquement, la navigation de l'utilisateur pourrait faire des émules, y compris la pagination. Je ne suis pas au courant de comment si dur (très probablement), car vous avez besoin pour faire face à l'authentification et YouTube probablement essaie de vérifier qu'un homme est la navigation.
curl ... GET ... https://www.youtube.com/feed/history
). C'est probablement une douleur, mais pas un abus de l'API. Peut-être un abus de la CDU d'un utilisateur normal.