标记Feed不按标记时间排序

时间:2015-04-11 10:13:28

标签: instagram

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

1 个答案:

答案 0 :(得分:2)

文档已经过时,Instagram最近做了一些更改,他们现在按照发布照片时排序,而不是在添加主题标签时排序。

以下是Instagram的公告: https://twitter.com/instagram/status/581493922620309504