为什么最新标准订阅源上的视频如此过时



我正在尝试获取最近上传的视频。有一个标准的提要,叫做most_recent。我在抓取提要时没有任何问题,但当我看到里面的条目时,它们都是半年前的,这几乎不是最近的。

这是我正在使用的代码:

import requests
import os.path as P
import sys
from lxml import etree
import datetime
namespaces = {"a": "http://www.w3.org/2005/Atom", "yt": "http://gdata.youtube.com/schemas/2007"}
fmt = "%Y-%m-%dT%H:%M:%S.000Z"
class VideoEntry:
    """Data holder for the video."""
    def __init__(self, node):
        self.entry_id = node.find("./a:id", namespaces=namespaces).text
        published = node.find("./a:published", namespaces=namespaces).text
        self.published = datetime.datetime.strptime(published, fmt)
    def __str__(self):
        return "VideoEntry[id='%s']" % self.entry_id
def paginate(xml):
    root = etree.fromstring(xml)
    next_page = root.find("./a:link[@rel='next']", namespaces=namespaces)
    if next_page == None:
        next_link = None
    else:
        next_link = next_page.get("href")
    entries = [VideoEntry(e) for e in root.xpath("/a:feed/a:entry", namespaces=namespaces)]
    return entries, next_link
prefix = "https://gdata.youtube.com/feeds/api/standardfeeds/"
standard_feeds = set("top_rated top_favorites most_shared most_popular most_recent most_discussed most_responded recently_featured on_the_web most_viewed".split(" "))
feed_name = sys.argv[1]
assert feed_name in standard_feeds
feed_url = prefix + feed_name
all_video_ids = []
while feed_url is not None:
    r = requests.get(feed_url)
    if r.status_code != 200:
        break
    text = r.text.encode("utf-8")
    video_ids, feed_url = paginate(text)
    all_video_ids += video_ids
all_upload_times = [e.published for e in all_video_ids]
print min(all_upload_times), max(all_upload_times)

正如您所看到的,它打印整个提要的最小和最大时间戳。

misha@misha-antec$ python get_standard_feed.py most_recent 
2013-02-02 14:40:02 2013-02-02 14:54:00 
misha@misha-antec$ python get_standard_feed.py top_rated 
2006-04-06 21:30:53 2013-07-28 22:22:38

我浏览了一下下载的XML,它似乎与输出相匹配。我做错什么了吗?

此外,在一个无关的问题上,我得到的提要都是大约100个条目(我一次分页25个)。这正常吗?我原以为提要会大一点。

关于"最近的提要"-主题:这里有一张票。不幸的是,到目前为止,YouTube-API-Teams没有回应或解决问题。

关于条目数量:这取决于标准提要的类型,但对于最近的提要,通常在100左右。

注意:您可以尝试使用"orderby=published"参数来获取最近的视频,尽管我不知道它们有多"最近"。

https://gdata.youtube.com/feeds/api/videos?orderby=published&prettyprint=True

您可以将此查询与"category"参数或其他参数组合在一起(特定于地区的查询(如标准提要)是不可能的,afaik)。

相关内容

  • 没有找到相关文章