ramusus / django-instagram-api

Django implementation for Instagram API
BSD 3-Clause "New" or "Revised" License
25 stars 13 forks source link

Error on simple query #13

Open martinszy opened 7 years ago

martinszy commented 7 years ago

Runnin the demo query on the console returns error

$ ./manage.py  shell_plus
/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/models.py:9: RemovedInDjango19Warning: django.utils.importlib will be removed in Django 1.9.
  from django.utils.importlib import import_module

# Shell Plus Model Imports
from django.contrib.admin.models import LogEntry
from django.contrib.auth.models import Group, Permission, User
from django.contrib.contenttypes.models import ContentType
from django.contrib.sessions.models import Session
from instagram_api.models import Comment, Location, Media, Tag, User
from m2m_history.models import ManyToManyHistoryVersion
from oauth_tokens.models import AccessToken, UserCredentials
from taggit.models import Tag, TaggedItem
# Shell Plus Django Imports
from django.conf import settings
from django.utils import timezone
from django.core.cache import cache
from django.db.models import Avg, Case, Count, F, Max, Min, Prefetch, Q, Sum, When
from django.db import transaction
from django.core.urlresolvers import reverse
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> User.remote.fetch(237074561)
/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/lock.py:7: RemovedInDjango19Warning: 'get_cache' is deprecated in favor of 'caches'.
  distributedlock.DEFAULT_MEMCACHED_CLIENT = get_cache('default')

No handlers could be found for logger "distributedlock.memcachedlock"
LOCK: locking with key update_tokens_for_instagram
LOCK: releasing lock update_tokens_for_instagram
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 78, in fetch
    result = self.get(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 287, in get
    return super(UserManager, self).get(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 92, in get
    response = self.api_call('get', *args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 72, in api_call
    return api_call(method, *args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/api.py", line 70, in api_call
    return api.call(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 54, in call
    token = self.get_token()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 149, in get_token
    self.update_tokens()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 126, in update_tokens
    storage.update_tokens()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/utils.py", line 58, in _inner_function
    return fn(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/storages/oauthtokens.py", line 32, in update_tokens
    AccessToken.objects.fetch(provider=self.provider)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/django/utils/decorators.py", line 145, in inner
    return func(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/models.py", line 159, in fetch
    token = self.get_token_of_class(token_class, user).get()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 122, in get
    return self.oauth2_get()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 155, in oauth2_get
    authorization_response_url = self.user_authorization()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 183, in user_authorization
    response = self.authorization_get_request()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/providers/instagram.py", line 80, in authorization_get_request
    response = super(InstagramAccessToken, self).authorization_get_request()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 202, in authorization_get_request
    return self.auth_request.session.get(url=self.get_authorization_url(), headers=self.auth_request.headers)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/sessions.py", line 501, in get
    return self.request('GET', url, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/sessions.py", line 474, in request
    prep = self.prepare_request(req)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/sessions.py", line 407, in prepare_request
    hooks=merge_hooks(request.hooks, self.hooks),
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/models.py", line 303, in prepare
    self.prepare_headers(headers)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/models.py", line 418, in prepare_headers
    check_header_validity(header)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/requests/utils.py", line 796, in check_header_validity
    "not %s" % (value, type(value)))
InvalidHeader: Header value 1 must be of type str or bytes, not <type 'int'>

I'm not sure what I'm doing wrong here.

martinszy commented 7 years ago

Ok, solved it by fixating requests version to 2.10

requests==2.10

In requirements.txt

Read about it here: https://github.com/kennethreitz/requests/issues/3477

But there's more issues.

>>> Media.remote.fetch('937539904871536462_190931988')
/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/lock.py:7: RemovedInDjango19Warning: 'get_cache' is deprecated in favor of 'caches'.
  distributedlock.DEFAULT_MEMCACHED_CLIENT = get_cache('default')

No handlers could be found for logger "distributedlock.memcachedlock"
LOCK: locking with key update_tokens_for_instagram

/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/bs4/__init__.py:181: UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 22 of the file ./manage.py. To get rid of this warning, change code that looks like this:

 BeautifulSoup([your markup])

to this:

 BeautifulSoup([your markup], "html.parser")

  markup_type=markup_type))

LOCK: releasing lock update_tokens_for_instagram
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 79, in fetch
    result = self.get(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 93, in get
    response = self.api_call('get', *args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/models.py", line 73, in api_call
    return api_call(method, *args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/instagram_api/api.py", line 70, in api_call
    return api.call(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 54, in call
    token = self.get_token()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 149, in get_token
    self.update_tokens()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/api.py", line 126, in update_tokens
    storage.update_tokens()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/utils.py", line 58, in _inner_function
    return fn(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/social_api/storages/oauthtokens.py", line 32, in update_tokens
    AccessToken.objects.fetch(provider=self.provider)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/django/utils/decorators.py", line 145, in inner
    return func(*args, **kwargs)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/models.py", line 159, in fetch
    token = self.get_token_of_class(token_class, user).get()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 122, in get
    return self.oauth2_get()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 155, in oauth2_get
    authorization_response_url = self.user_authorization()
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 192, in user_authorization
    return self.process_authorization_response(response)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/providers/instagram.py", line 77, in process_authorization_response
    return super(InstagramAccessToken, self).process_authorization_response(response)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/base.py", line 195, in process_authorization_response
    url = self.get_url_from_response(response)
  File "/home/faras/.virtualenvs/wili/local/lib/python2.7/site-packages/oauth_tokens/providers/instagram.py", line 102, in get_url_from_response
    return response.url.split('access_token=')[1]
IndexError: list index out of range
martinszy commented 7 years ago

Sorry for trolling in the issues.

Now I fixed the bs error by modifing instagram.py line 63 to bs = BeautifulSoup(response.content, "html.parser")