Instagram开发者文档说this关于/tags/<tag_name>/media/recent
Feed:
请注意,此媒体按媒体标记此标记时排序,而不是按照发布的顺序排序。
然而,实际情况似乎并非如此。如果我请求标签的数据用于标题和评论的混合,然后提取相关标题/评论的发布时间,我得到这个:
[('caption ', '2015-04-10 07:55:48'),
('caption ', '2015-04-10 07:46:31'),
('caption ', '2015-04-08 17:16:38'),
('caption ', '2015-04-07 12:20:02'),
('caption ', '2015-04-07 05:35:47'),
('comment 5', '2015-04-11 01:53:33'),
('caption ', '2015-04-04 15:27:32'),
('caption ', '2015-04-04 14:11:27'),
('comment 0', '2015-04-06 00:49:15'),
('caption ', '2015-04-04 01:16:52'),
('caption ', '2015-04-03 23:47:48'),
('caption ', '2015-04-03 23:45:02'),
('comment 2', '2015-04-03 18:48:37'),
('comment 0', '2015-04-03 07:35:28'),
('comment 1', '2015-04-06 16:11:31'),
('caption ', '2015-04-02 05:38:34'),
('comment 0', '2015-04-04 19:57:26'),
('comment 5', '2015-04-02 01:05:38'),
('caption ', '2015-04-01 15:51:37'),
('caption ', '2015-04-01 15:47:50')]
您可以清楚地看到此数据无序:即使在稍后的评论中添加了触发更新的标记,项目也会按发布顺序显示。
这种排序至关重要,因为不可理解的原因,实时标签通知不包括已标记的媒体项的ID,这意味着我们必须请求最近标记的订阅源以获取该信息。如果我们不能依赖于排序,就无法可靠地提取已标记的项目而无需每次都重新解析整个标记流,这显然是不可扩展的。
关于如何通过标记时间来获得真实排序的任何想法或建议?
它应该不相关,但这是我用来提取上面排序的Python代码:
def get_date(timestamp):
return datetime.datetime.fromtimestamp(float(timestamp))
def tagged_time(tag):
url = 'https://api.instagram.com/v1/tags/{tag_name}/media/recent?client_id={client_id}'
data = requests.get(url.format(tag_name=tag, client_id=my_client_id)).json()
times = []
for item in data['data']:
if tag in item['caption']['text'].lower():
times.append(('caption ', item['caption']['created_time']))
else:
for i, c in enumerate(item['comments']['data']):
if tag in c['text'].lower():
times.append(('comment %s' % i, get_date(c['created_time'])))
break
else:
times.append('not found')
return times
答案 0 :(得分:2)
文档已经过时,Instagram最近做了一些更改,他们现在按照发布照片时排序,而不是在添加主题标签时排序。
以下是Instagram的公告: https://twitter.com/instagram/status/581493922620309504