【问题标题】:python instagram api user_recent_media returns Nonepython instagram api user_recent_media 返回无
【发布时间】:2015-09-18 23:06:23
【问题描述】:

看着documentation

api.user_recent_media(userid='1034466',count=1)

返回

([], None)

怎么办?

附言顺便说一句,从http://jelled.com/instagram/lookup-user-id获取用户ID

【问题讨论】:

    标签: python instagram instagram-api


    【解决方案1】:

    基本上你应该user_id而不是userid

    不过,我可能会帮助您进一步了解您正在尝试做的事情,因为几周前我做过同样的事情(从用户那里检索 instagram 媒体):

    定义:

    class InstagramFeed:
        api = InstagramAPI(client_id=settings.SOCIAL_AUTH_INSTAGRAM_KEY,
                           client_secret=settings.SOCIAL_AUTH_INSTAGRAM_SECRET)
        logger = logging.getLogger(__name__)
    
        def get_user_id(self, user_name):
            users = self.api.user_search(q=user_name)
            for user in users:
                if user_name == user.username:
                    return user.id
                else:
                    self.logger.error('Instagram User with username {0} NOT FOUND!', user_name)
                    raise Exception('Instagram User with username {0} NOT FOUND!', user_name)
    
        @classmethod
        def get_media(cls, user_name, count=8):
            user_id = cls.get_user_id(cls, user_name)
            if user_id is None:
                return None
    
            recent_media, next_ = cls.api.user_recent_media(user_id=user_id, count=count)
            return recent_media
    
    
    class InstagramEncoder(json.JSONEncoder):
        def default(self, o):
            if type(o) in (instagram.models.Comment, instagram.models.Image,
                           instagram.models.Location, instagram.models.Media,
                           instagram.models.MediaShortcode, instagram.models.Point,
                           instagram.models.Relationship, instagram.models.Tag,
                           instagram.models.User, instagram.models.Video, instagram.models.UserInPhoto,
                           instagram.models.Position):
                return o.__dict__
            elif isinstance(o, datetime.datetime):
                unix_time = time.mktime(o.timetuple())
                return str(unix_time)
            else:
                return default(o)
    

    用法:

    media = InstagramFeed.get_media(user_name=user_name, count=8)
    

    导入(我在 django1.8 项目中使用它):

    from instagram.client import InstagramAPI
    from django.conf import settings
    from bson.json_util import default
    
    import json
    import logging
    import instagram.models
    import time
    import datetime
    

    【讨论】:

    • 谢谢哈哈,你可以看到我在下面回答了我自己的问题,因为这更像是一个问答。你仍然得到支持。干杯!
    • 你用的是什么cls?
    • 抱歉,不确定我是否理解您的问题,需要解释一下吗?更新:Instagram 在过去几个月更改了 API,所以我不确定这个解决方案是否适用于 ATM。
    【解决方案2】:

    尝试使用 user_id='1034466' 而不是 userid='1034466'

    【讨论】:

    • 只是发布这个问答以供后代/搜索,因为我浪费了 1 小时来解决这个问题
    猜你喜欢
    • 1970-01-01
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多