2015-10-21 3 views
1

Мне нужно получить друзей Twitter от пользователя. С щебет «друзьями» Я имею в виду пользователя А следует пользователь B, а также пользователя B следует. Итак, моя идея заключалась в том, чтобы получить список людей, за которыми следует пользователь A, и если за ними следует пользователь B, он увеличивает numFriends. Первая часть работает нормально, но когда я делаю эту вторую просьбу, она разваливается и бросает мне уродливую ошибку «400» :( Я читал об ограничениях на твиттер и все такое, но кажется странным, что второй запрос,Получение числа друзей друзей Twitter с Python

Благодарим вас за то, что я ноб на python и twitter api, а мой родной язык не английский, поэтому я действительно надеюсь, что все будет ясно. это.

Вот код :)

def getNumFriends(user): 

    dataUser=0 
    numFriends=0 
    url ="https://api.twitter.com/1.1/friends/ids.json?cursor=-1&screen_name=%s&count=5000"%(user.screen_name) 
    auth = OAuth1(getConsumerKey(), getConsumerSecret(), getAccessToken(), getAccessTokenSecret()) 
    response = requests.get(url, auth=auth) 
    if response.status_code == 200: 
     dataUser = response.json() 
     userIDs = dataUser['ids'] 
    else: 
     print "Error code %s" %response.status_code 
    #Here comes the problem :S 
    for friend in userIDs: 
     url = "https://api.twitter.com/1.1/friendships/show.json?source_id=%s&target_screen_name=%s"%(friend, user) 
     response = requests.get(url, auth) 
     if response.status_code == 200: 
      dataCompare = response.json()  
      mutualfriends = dataCompare['relationship']['target']['followed_by'] 
      if mutualfriends =='true': 
       numFriends=numFriends+1 
     else: 
      print "First request OK. Second request error code %s" %response.status_code 
      break  
    return numFriends 

ответ

0

Ваш код хорошо, есть только пара Мино r ошибок. Код ошибки 400, «плохой запрос», не дает вам очень конкретной информации, но он говорит вам, что что-то в том, как вы написали url, неверно.

Оно должно быть:

url = "https://api.twitter.com/1.1/friendships/show.json?source_id=%s&target_screen_name=%s"%(friend, user.screen_name) 

т.е. он должен быть user.screen_name вместо пользователя.

Кроме того, второй аргумент requests.get() не auth, таким образом, вы должны всегда указывать имя аргумента,

response = requests.get(url, auth=auth) 

, не было в вашем втором вызове.

BTW, просто любопытно, по какой-либо причине, почему вы не используете библиотеку, такую ​​как twython?

Надеюсь, это поможет.

** EDIT после комментариев: ** Произошла еще одна незначительная ошибка в коде. Обратите внимание, что переменная mutualfriends уже булева, для того, чтобы проверить его значение, которое вы можете сделать это так,

if mutualfriends: 
    ... 

BTW, чтобы проверить тип переменной,

print(type(mutualfriends)) 
+0

Хорошо, что работает хорошо ! Я попробовал сейчас, но он не увеличивает numFriends, но numFriends = 0. Ах, у меня были проблемы с установкой twython, поэтому, почему xD В любом случае, Muchas gracias! – Elena

+0

Хорошо, была еще одна небольшая ошибка, я обновляю ответ. Денада! – lrnzcig

+0

Работает как шарм !!! Muchísimas gracias !! – Elena

Смежные вопросы