【问题标题】:How to retrieve images from Instagram API?如何从 Instagram API 检索图像?
【发布时间】:2016-01-13 16:56:55
【问题描述】:

我想在任何位置使用 Instagram API 抓取图像

这是我在 python 中的代码:

  from instagram.client import InstagramAPI
    client_id = ********
    client_secret = ******* 
    access_token = *******
    client_ip = *******

    q=None
    count=100
    lat=51.51608899635712
    lng=0.09891956707558282
    min_timestamp = '2015-12-07 22:00:00'
    max_timestamp = '2015-12-08 22:00:00'
    distance=1000


    api = InstagramAPI(client_id=client_id, client_secret=client_secret, client_ips= client_ip,access_token= access_token)

    media_all_ids = []
  media_id = api.media_search(q,count=20) + api.media_search(lat=lat, lng=lng, min_timestamp=min_timestamp, max_timestamp=max_timestamp, distance=distance)

    temp,max_tag = next.split('max_tag_id=')
    max_tag=str(max_tag)

    for media_id in media_ids:
        media_all_ids.append(media_id.id)

    counter = 1

    while next and counter <3 :
        more_media, next = api.media_search(lat, lng, min_timestamp, max_timestamp, distance, max_tag_id=max_tag)
        temp,max_tag=next.split('max_tag_id=')
        max_tag = str(max_tag)
        for media_id2 in more_media:
             media_all_ids.append(media_id2.id)
        print (len(media_all_ids))
        counter+=1

    media_all_ids=list(OrderedDict.fromkeys(media_all_ids))
    print (len(media_all_ids))

主要问题是,它给了我同样的错误,我不知道如何解决:

  content, next = self._do_api_request(url, method, body, headers)
in _do_api_request
    raise InstagramAPIError(status_code, content_obj['meta']['error_type'], content_obj['meta']['error_message'])
instagram.bind.InstagramAPIError: (400) APIInvalidParametersError-missing lat and lng

我想在他们的图片链接旁边打印出他们的 ID 以及拍摄照片的时间。我想知道是否有人知道如何解决这个问题?

【问题讨论】:

  • 检查 api.media_search 返回的内容。该错误表示它返回的值超过 2 个,并且它不知道如何解压其余的值。
  • 即使我输入了正确的参数,仍然给我一个错误
  • “输入正确的参数”是什么意思? api.media_search 返回两个以上的值。在 python 控制台a, b = (1, 2, 3) 中试试这个。它会给你同样的错误。将其重写为a, b, c = (1, 2, 3) 将修复错误。
  • media_ids,next,a,b,c,d,e = api.media_search(q,count,lat,lng,min_timestamp,max_timestamp,distance)
  • 仍然给我同样的错误

标签: python instagram latitude-longitude instagram-api


【解决方案1】:

参数的顺序很重要。如果您查看at the source,您会发现您需要按以下顺序传递参数:

["q", "count"] + ['lat', 'lng', 'min_timestamp', 'max_timestamp', 'distance']

尝试使用参数名称传递参数以避免此问题。您已经为 max_tag_id=max_tag 执行了此操作,因此请为其余部分执行此操作。

不过,我不确定access_token。它似乎不是该方法的参数。你比我更熟悉 API 客户端,所以我把它留给你。

【讨论】:

  • 引发 InstagramAPIError(status_code, content_obj['meta']['error_type'], content_obj['meta']['error_message']) instagram.bind.InstagramAPIError: (400) APIInvalidParametersError-missing lat和液化天然气
  • 你现在如何调用media_search
  • @Mr_Shoryuken 你没有按照我的回答建议做。试试media_search(lat=lat, lng=lng, ) 等等。
  • @Mr_Shoryuken 这意味着该方法返回的元组的值多于您要解包的变量数。这与我在源代码中找到的内容背道而驰,但您可以通过不解包然后打印响应来弄清楚您需要做什么。喜欢response = api.media_search(...); print(response)。这将显示元组中有多少值,您可以相应地解包。
  • 顺便说一句,我查看了您在 awnser 中展示的 turple 并意识到我犯的错误,想知道我将如何构建它,我已经更新了上面的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-18
  • 2020-02-13
  • 2013-07-21
  • 2013-03-25
  • 1970-01-01
相关资源
最近更新 更多