instagram媒体搜索时间戳问题

时间:2015-05-08 14:11:06

标签: api instagram instagram-api

我正在使用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并在每次迭代中更改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()

3 个答案:

答案 0 :(得分:2)

MAX_TIMESTAMPMIN_TIMESTAMP应为小写:max_timestampmin_timestamp

Instagram上的api文档显示大写的params,它的误导性,它应该都是小写的。

答案 1 :(得分:0)

我在上周遇到了同样的问题,我认为我的问题源于time.mktime() - 这假设日期设置为本地时区,而不是Instagram数据的UTC / GMT时间基于。尝试使用calendar.timegm()替换所有time.mktime()调用,看看是否可以解决问题 - 似乎为我解决了问题。

答案 2 :(得分:0)

Instagram的API使用时间戳,以秒为单位,而不是毫秒。将所有时间戳除以1000