2011-04-16 68 views
2

我使用Youtube API使用关键字查询中搜索的确切时间:取的视频被上传

import gdata.youtube 
import gdata.youtube.service 

def youtube_query(query_text, 
     max_results=50, 
     start_index=1, 
     racy='exclude', 
     orderby='relevance'): 
    client = gdata.youtube.service.YouTubeService() 
    query = gdata.youtube.service.YouTubeVideoQuery() 

    query.vq   = query_text 
    query.max_results = max_results 
    query.start_index = start_index 
    query.racy  = racy 
    #query.format = 5 
    query.orderby  = orderby 
    feed = client.YouTubeQuery(query) 
    resultsCount = int(feed.total_results.text) 
    entries = [] 

    try: 
     while resultsCount > int(query.start_index): 
      print repr(feed.entry) 
      entries += feed.entry 
      query.start_index = int(query.start_index) + int(query.max_results) 
      feed = client.YouTubeQuery(query) 
    except gdata.service.RequestError: 
     # 
     # Cannot request beyond 1000 items. 
     # 
     pass  
    return entries 

每一项都是一个YoutubeVideoEntry

日期每个视频被上传绝对应该是可访问的,因为它会显示每个视频:

enter image description here

我需要时间为好。有谁知道这是否可以完成?

回答

4

可以使用entry.published.text属性:

import datetime 
import time 

feed = client.YouTubeQuery(query) 
for entry in feed.entry: 
    _tmp = time.strptime(entry.published.text, '%Y-%m-%dT%H:%M:%S.000Z') 
    ptime = datetime.datetime(*_tmp[:6]) 
    print ptime 
    print ptime.time() 

输出:

2010-01-27 19:42:42 
19:42:42 
1

您也可以使用parse_date功能在ISO8601库,它会返回一个日期对象:

import iso8601 
uploaded_time = iso8601.parse_date("2007-01-25T12:00:00Z") 
print uploaded_time 

输出:

datetime.datetime(2013, 8, 21, 20, 54, 34, tzinfo=<iso8601.iso8601.Utc object at 0x1045d7b10>)