2011-03-25 1 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를 다시 사용하지 않는 이유는 무엇입니까? –

+0

아델 (Adeel), "다시"는 어디에서 나타 납니까? 저는 파이썬의 초보자입니다. – Dexter

답변

0

예외가 라인에 있던이 :

entry = yt_service.GetYouTubeVideoEntry(video_id = entry_video_id) 

comment_feed = yt_service.GetYouTubeVideoCommentFeed(uri=url) 

은 내가 exception_ignore_handler을 추가하고, 프로그램은 이제 예외를 무시함으로써 실행됩니다.