2009-12-14 10 views
4

Je me bats un peu avec la syntaxe pour parcourir tous les commentaires sur une vidéo youtube. J'utilise le python et j'ai trouvé peu de documentation sur la fonction GetYouTubeVideoCommentFeed(). Ce que j'essaie vraiment de faire est de rechercher tous les commentaires d'une vidéo pour une instance d'un mot et d'augmenter un compteur (éventuellement le commentaire sera imprimé). Il fonctionne pour les 25 résultats renvoyés, mais j'ai besoin d'accéder au reste des commentaires.données youtube api commentaire pagination

import gdata.youtube 
import gdata.youtube.service 

video_id = 'hMnk7lh9M3o' 
yt_service = gdata.youtube.service.YouTubeService()  
comment_feed = yt_service.GetYouTubeVideoCommentFeed(video_id=video_id) 
for comment_entry in comment_feed.entry: 
comment = comment_entry.content.text 
if comment.find('hi') != -1: 
    counter = counter + 1 

print "hi: " 
print counter 

J'ai essayé de régler le start_index de GetYouTubeVideoCommentFeed() en plus du video_id mais il n'a pas comme ça.

Y a-t-il quelque chose qui me manque?

Merci! Steve

Répondre

1

J'ai trouvé comment faire. Au lieu de passer un video_id à la fonction GetYouTubeVideoCommentFeed, vous pouvez lui transmettre une URL. Vous pouvez parcourir les commentaires en modifiant les paramètres d'URL.

Il doit cependant y avoir une limite d'API; Je peux seulement accéder aux 1000 derniers commentaires sur la vidéo.

5

est ici l'extrait de code pour le même:

# Comment feed URL 
comment_feed_url = "http://gdata.youtube.com/feeds/api/videos/%s/comments" 

''' Get the comment feed of a video given a video_id'''   
def WriteCommentFeed(video_id, data_file): 
    url = comment_feed_url % video_id 
    comment_feed = yt_service.GetYouTubeVideoCommentFeed(uri=url) 

    try: 
     while comment_feed: 

      for comment_entry in comment_feed.entry: 
       print comment_entry.id.text 
       print comment_entry.author[0].name.text 
       print comment_entry.title.text 
       print comment_entry.published.text 
       print comment_entry.updated.text 
       print comment_entry.content.text 

      comment_feed = yt_service.Query(comment_feed.GetNextLink().href) 

    except: 
      pass 
Questions connexes