Скрипт Python-Twitter работает дома, а не в университете. Срок ДЕЙСТВИТЕЛЬНО скоро

Я написал довольно простой скрипт на python, который извлекает твиты и включает GPIO, если фильтр соответствует. Я попробовал это дома, и это работает очень хорошо, однако в сети университета, похоже, не удается подключиться к твиттеру.

Детали университетской сети: БЕСПРОВОДНОЙ SSID: Uni-WiFi WPA2 Enterprise.

Он использует PEAP (MSCHAPv2) для подключения, что означает, что мне нужно ввести свое имя пользователя и пароль университета. В настоящее время сеть подключена, и я могу просматривать Интернет, но когда я запускаю скрипт python, я получаю сообщение об ошибке:

urllib2.HTTPError: HTTP Error 401: Unauthorized

Вот полный скрипт на Python. Если бы кто-то мог помочь, это было бы удивительно, это нужно передать очень скоро!

#!/usr/bin/env python

import twitter
import RPi.GPIO as GPIO ## Import GPIO library
import time ## Import 'time' library. Allows us to use 'sleep'
from termcolor import colored

GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.cleanup()

#My app keys and secrets
CONSUMER_KEY = 'TXXGPRg'
CONSUMER_SECRET = 'jRVxtEgf1CQWuan0N8L4a3s'
OAUTH_TOKEN = '528854Jaudhna2K36g4y79oiwUq'
OAUTH_SECRET = 'ZoQEv1deAQ'

FILTER_TAG = u'art'  # Can also be just text, like u'idol', but expect a lot more results!

# We want a continuous stream of events which match a given tag, so we need to use the streaming API.
twitter_stream = twitter.TwitterStream(auth=twitter.OAuth(OAUTH_TOKEN,OAUTH_SECRET,CONSUMER_KEY,CONSUMER_SECRET))

# Now, we don't want every single tweet from the stream, so we'll filter to include only specific text, or a specific tag.
iterator = twitter_stream.statuses.filter(track = FILTER_TAG)

# Now, iterator is a generator which yields a new tweet whenever it sees one. We need to loop over it forever.
for tweet in iterator:

        print colored(tweet.get(u'user', {}).get(u'name'), 'white', 'on_red'), colored(tweet.get(u'text'), 'cyan')

        if "hate" in tweet.get(u'text', u'fake_text_that_never_matches'):  # Now, you need to light up the light for 5 seconds, then shut it off.
            print colored("Switch turned ON!", "red", 'on_yellow')
            GPIO.setup(7, GPIO.OUT)
            GPIO.output(7,True)## Switch on pin 7
            time.sleep(5)## Wait
            GPIO.output(7,False)## Switch off pin 7

        print "----------------------------------------------------------------------------------------------------------------------------------------------------"

1 ответ

Решение

Частью подписи OAuth является временная метка, которая генерируется при выполнении запроса. Если время вашего сервера слишком сильно отличается от времени сервера Twitter, сервер Twitter отклонит ваш запрос с помощью 401. Итак, проверьте время, возвращаемое сервером Twitter, и убедитесь, что ваш локальный компьютер, генерирующий подпись, совпадает с тем же временем.

Другие вопросы по тегам