我正在使用disqusapi
Python模块访问Disqus' API。我想使用since
参数,只获取自我指定日期以来创建的线程列表。但是,当我传递一个值时,我什么也得不回来。
SECRET_KEY = config.get("disqus-keys", "private")
PUBLIC_KEY = config.get("disqus-keys", "public")
disqus = DisqusAPI(SECRET_KEY, PUBLIC_KEY)
....
# Ask for all threads since 4 years ago.
t = int(time.time()) - 60*60*24*365*4
results = disqus.threads.list(forum="imaginaryrealities", limit=100, since=t)
print "with since=%d, got %d threads" % (t, len(results))
results = disqus.threads.list(forum="imaginaryrealities", limit=100)
print "with no since, got %d threads" % len(results)
timeseq = list(time.strptime(results[0]["createdAt"], '%Y-%m-%dT%H:%M:%S'))
timeseq.append(0) # offset of date's timezone from UTC.
timeseq = tuple(timeseq)
rt = email.utils.mktime_tz(timeseq) # UTC seconds since the epoch
print "... first thread created at: %s (greater than %d? %s)" % (rt, t, rt > t)
提供以下输出:
with since=1311988086, got 0 threads
with no since, got 30 threads
... first thread created at: 1437988189 (greater than 1311988086? True)
我甚至尝试将1311988086
转换为相同的RFC3339字符串,distring为其提供了日期,并通过了相同的结果。
自纪元以来#34;秒内的一次官方PHP samples次传球值。官方API"文档"是no help whatsoever。
为什么这不起作用?
答案 0 :(得分:1)
尝试同时设置order='asc'
。 since
参数与排序顺序相关,因此它正在查找 old 的任何内容,而不是该日期时间。
答案 1 :(得分:1)
您需要将RFC3339格式的时间与order = asc一起传递。例如
答案 2 :(得分:0)
我建议使用disqus api cursor 代替since参数。从那时起,我得到了重复项(也就是说,第一个查询的最后一个结果出现在第二个查询的第一个结果中)。我将新时间戳添加一秒还是30分钟都没关系,它总是做到这一点。
光标是响应正文的数据成员,文档:
https://disqus.com/api/docs/cursors/
使用光标,它可以可靠地工作。