2011-03-25 78 views
1

我正在使用Python YouTube API从几个视频ID检索信息。我有时碰到一个在使用YouTube API时忽略Python中的异常/错误

gdata.service.RequestError: {'status': 403, 'body': 'Private video', 'reason': 'Forbidden'}

但是,我想我的程序忽略错误并继续。 PFB一些代码片段:

@contextlib.contextmanager 
def exception_ignore_handler(): 
    try: 
     yield 
    except Exception: 
     pass 

''' Get Video details ''' 
def WriteStatEntryDetails(entry_video_id,data_file):    
    entry = yt_service.GetYouTubeVideoEntry(video_id = entry_video_id) 

    with exception_ignore_handler(): 
     author = entry.author[0].name.text  
     data_file.write(author) 
     data_file.write(",") 

    with exception_ignore_handler():   
     time = entry.published.text 
     data_file.write(time) 
     data_file.write(",") 

    with exception_ignore_handler(): 
     category = entry.media.category[0].label 
     data_file.write(category) 
     data_file.write(",") 

    with exception_ignore_handler(): 
     duration = entry.media.duration.seconds 
     data_file.write(duration) 
     data_file.write(",") 


    with exception_ignore_handler(): 
     view_count = entry.statistics.view_count 
     data_file.write(view_count.rstrip()) 
     data_file.write(",") 

    with exception_ignore_handler(): 
     rating = entry.rating.average 
     data_file.write(rating.rstrip()) 
     data_file.write(",") 

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

    try : 
     numComments = comment_feed.total_results.text 
     data_file.write(numComments) 
    except: 
     pass  

''' Populate data statistics ''' 
def populate_data_stats(positive_video_id_list): 
    data_file = open(data_statistics_file, "w") 

    for entry_video_id in positive_video_id_list : 
     data_file.write(entry_video_id) 
     data_file.write(",") 
     WriteStatEntryDetails(entry_video_id, data_file) 
     WriteStatCommentFeed(entry_video_id, data_file) 
     data_file.write("\n") 
    data_file.close() 
+0

为什么不重新使用你的exception_ignore_handler? – 2011-03-26 06:50:01

+0

Adeel,“再次”意味着什么?我是Python的新手。 – Dexter 2011-03-26 19:35:06

回答

0

例外情况是在线路:

entry = yt_service.GetYouTubeVideoEntry(video_id = entry_video_id) 

comment_feed = yt_service.GetYouTubeVideoCommentFeed(uri=url) 

我增加了exception_ignore_handler和程序现在忽略异常运行。