我正在使用Instagram的媒体搜索API
现在我在for循环下调用此api并在每次迭代中更改min和max时间戳的值。这样我就可以获得该时间段的图像。
我面临的问题是我在每次迭代中得到相同的结果(或图像集)。因此,更改时间戳对结果没有影响。
是否因为缓存?或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()
答案 0 :(得分:2)
MAX_TIMESTAMP
和MIN_TIMESTAMP
应为小写:max_timestamp
和min_timestamp
Instagram上的api文档显示大写的params,它的误导性,它应该都是小写的。
答案 1 :(得分:0)
我在上周遇到了同样的问题,我认为我的问题源于time.mktime() - 这假设日期设置为本地时区,而不是Instagram数据的UTC / GMT时间基于。尝试使用calendar.timegm()替换所有time.mktime()调用,看看是否可以解决问题 - 似乎为我解决了问题。
答案 2 :(得分:0)
Instagram的API使用时间戳,以秒为单位,而不是毫秒。将所有时间戳除以1000
。