日期之间的Instagram图形API媒体帖子 [英] Instagram graph api media posts between dates

查看:57
本文介绍了日期之间的Instagram图形API媒体帖子的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用'since''until'从我管理的Instagram业务资料中检索上个月的媒体帖子,但是由于API返回的帖子超出我选择的时间范围.

I'm trying to retrieve last month's media posts from an Instagram Business profile I manage, by using 'since' and 'until', but it doesn't seem to work properly as the API returns posts which are out of the time range I selected.

我正在使用以下字符串来调用API:

I'm using the following string to call the API:

business_profile_id/media?fields=timestamp&since=2018-04-01&until=2018-04-30

而Python代码段就是这个(使用相同的 <来自facebook-python-sdk的strong> init 脚本)

while the Python snippet would be this (using the same init script from the facebook-python-sdk)

import facebook

graph = facebook.GraphAPI(access_token)
profile = graph.get_object(user)    
posts = graph.get_connections(profile['id'], 'media?fields=caption,permalink,timestamp&since=2018-04-01&until=2018-04-30')

get.connections在哪里

where get.connections is

def get_connections(self, id, connection_name, **args):
    """Fetches the connections for given object."""
    return self.request(
        "{0}/{1}/{2}".format(self.version, id, connection_name), args)

请求是

def request(
        self, path, args=None, post_args=None, files=None, method=None):
    """Fetches the given path in the Graph API.
    We translate args to a valid query string. If post_args is
    given, we send a POST request to the given path with the given
    arguments.
    """
    if args is None:
        args = dict()
    if post_args is not None:
        method = "POST"

    # Add `access_token` to post_args or args if it has not already been
    # included.
    if self.access_token:
        # If post_args exists, we assume that args either does not exists
        # or it does not need `access_token`.
        if post_args and "access_token" not in post_args:
            post_args["access_token"] = self.access_token
        elif "access_token" not in args:
            args["access_token"] = self.access_token

    try:
        response = self.session.request(
            method or "GET",
            FACEBOOK_GRAPH_URL + path,
            timeout=self.timeout,
            params=args,
            data=post_args,
            proxies=self.proxies,
            files=files)
    except requests.HTTPError as e:
        response = json.loads(e.read())
        raise GraphAPIError(response)

    headers = response.headers
    if 'json' in headers['content-type']:
        result = response.json()
    elif 'image/' in headers['content-type']:
        mimetype = headers['content-type']
        result = {"data": response.content,
                  "mime-type": mimetype,
                  "url": response.url}
    elif "access_token" in parse_qs(response.text):
        query_str = parse_qs(response.text)
        if "access_token" in query_str:
            result = {"access_token": query_str["access_token"][0]}
            if "expires" in query_str:
                result["expires"] = query_str["expires"][0]
        else:
            raise GraphAPIError(response.json())
    else:
        raise GraphAPIError('Maintype was not text, image, or querystring')

    if result and isinstance(result, dict) and result.get("error"):
        raise GraphAPIError(result)
    return result

基本上,我想获得一段时间的帖子,然后再获取每个帖子的见解.

Basically I'd like to get posts for a certain period and then get insights for each one.

以前有人遇到过这个问题吗?

Has anyone encountered this problem before?

推荐答案

不幸的是,此端点不支持sinceuntil参数,并且该端点仅支持基于游标的分页.我要做的唯一方法是使用API​​响应中提供的beforeafter游标分别加载结果的每一页.

Unfortunately the since and until parameters are not supported on this endpoint and this endpoint has only support cursor based pagination. The only way to do what I wish to do is to load each page of results individually using the before and after cursors provided in the API response.

这篇关于日期之间的Instagram图形API媒体帖子的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆