Take the 2-minute tour ×

I'm struggling a little bit with the syntax for iterating through all comments on a youtube video. I'm using the python and have found little documentation on the GetYouTubeVideoCommentFeed() function.

What I'm really trying to do is search all comments of a video for an instance of a word and increase a counter (eventually the comment will be printed out). It functions for the 25 results returned, but I need to access the rest of the comments.

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

I tried to set the start_index of GetYouTubeVideoCommentFeed() in addition to the video_id but it didn't like that.

Is there something I'm missing?

Thanks! Steve

share|improve this question
add comment

2 Answers

Here's the code snippet for the same:

# 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)

        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) 

share|improve this answer
add comment

Found out how to do it. Instead of passing a video_id to the GetYouTubeVideoCommentFeed function, you can pass it a URL. You can iterate through the comments by changing the URL parameters.

There must be an API limitation though; I can only access the last 1000 comments on the video.

share|improve this answer
add comment

Your Answer


