Скрипт 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, и убедитесь, что ваш локальный компьютер, генерирующий подпись, совпадает с тем же временем.