Instagram 媒体搜索时间戳问题
Posted
技术标签:
【中文标题】Instagram 媒体搜索时间戳问题【英文标题】:instagram media search timestamp issues 【发布时间】:2015-05-08 14:11:06 【问题描述】:我正在使用 instagram 的媒体搜索 api
https://api.instagram.com/v1/media/search?lat=8.51&lng=115.239394&MAX_TIMESTAMP=xyz&MIN_TIMESTAMP=abc&client_id=my_client_id
现在我在 for 循环下调用这个 api,并在每次迭代中更改最小和最大时间戳的值。这样我就可以获得该时间范围内的图像。
我面临的问题是我在每次迭代中得到相同的结果(或一组图像)。所以更改时间戳对结果没有影响。
是因为缓存吗?还是 Instagram 不允许这样的迭代请求?或者还有其他方式,例如分页或其他东西来提出这样的要求?
这里是代码(在python中):
import urllib2
import datetime
import time
import json
clientId = 'ef63de4634b344e3856b4f4138a8db56'
city = "Bali"
baliLat = '8.51'
baliLong = '115.239394'
distance = 1000
def callApi(startStamp, endStamp):
searchStr = 'https://api.instagram.com/v1/media/search?lat=' + baliLat + '&lng=' + baliLong + '&client_id=' + clientId + '&MAX_TIMESTAMP=' + str(endStamp) + '&MIN_TIMESTAMP=' + str(startStamp) + '&distance=' + str(distance) + '&count=10'
print searchStr
response = urllib2.urlopen(searchStr)
res = json.loads(response.read())
return res
if __name__ == "__main__":
# call instagram api for 1 year for each month for 1st week.
# compare the dates of creation for each month.
start = '1/05/2014'
startDate = datetime.datetime.strptime(start, '%d/%m/%Y')
count = 0
result =
while count < 12:
endDate = startDate + datetime.timedelta(days=7)
minStamp = time.mktime(startDate.timetuple())
maxStamp = time.mktime(endDate.timetuple())
res = callApi(minStamp, maxStamp)
result[str(startDate)] = res
startDate = startDate + datetime.timedelta(days=30)
count += 1
f = open('out-y.json', 'w')
f.write(json.dumps(result))
f.close()
【问题讨论】:
你想争取多少天? 7 天(每个月)。没有交叉路口。还有什么我应该注意的吗? 发布代码,如果你调用太多,它不应该给你相同的结果,你的代码中的某些东西可能是 我添加了我正在使用的代码。 【参考方案1】:MAX_TIMESTAMP
和 MIN_TIMESTAMP
应为小写:max_timestamp
和 min_timestamp
Instagram 上的 api 文档以大写形式显示 params,它具有误导性,应该全部小写。
【讨论】:
我尝试使用小写的 max_timestamp 和 min_timestamp 但它们不起作用。所以我求助于使用至少可以工作的大写字母,但不正确。 如果你使用大写,那么它会被忽略并且你正在获取最新的照片,如果你使用小写并且你什么都没有,那么这是正确的,时间范围内没有照片或者你的时间值是不正确,请在此处查看带有您的时间的照片:gramfeed.com/instagram/map【参考方案2】:上周我在同一个问题上苦苦挣扎,我认为我的问题源于 time.mktime() - 这假设日期设置为当地时区,而不是 Instagram 数据所在的 UTC/GMT 时间基于。尝试用 calendar.timegm() 替换所有 time.mktime() 调用,看看是否能解决问题 - 似乎解决了我的问题。
【讨论】:
不,更改并没有为我解决问题。我的代码在那里,你能不能用 calendar.timegm 替换 time.mktime 看看它是否有效。【参考方案3】:Instagram 的 API 使用以秒为单位的时间戳,而不是毫秒。将所有时间戳除以1000
。
【讨论】:
试过这个。不工作。连续几个月的两次调用仍然得到相同的结果。以上是关于Instagram 媒体搜索时间戳问题的主要内容,如果未能解决你的问题,请参考以下文章
Postgresql:如何为postgres中的相同时间戳选择“媒体”列中的最大值?