2016-01-17 4 views
0

Я использую следующий код, чтобы ответить пользователю, который чирикает «Hello World». Кажется, он не находит пользователей.Автоответ с Tweepy

У вас есть проблемы с кодом?

#!/usr/bin/env python 
import tweepy 
#from our keys module (keys.py), import the keys dictionary 
from keys import keys 

CONSUMER_KEY = keys['consumer_key'] 
CONSUMER_SECRET = keys['consumer_secret'] 
ACCESS_TOKEN = keys['access_token'] 
ACCESS_TOKEN_SECRET = keys['access_token_secret'] 

auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) 
auth.set_access_token(ACCESS_TOKEN, ACCESS_TOKEN_SECRET) 
api = tweepy.API(auth) 

twts = api.search(q="Hello World!")  

#list of specific strings we want to check for in Tweets 
t = ['Hello world!', 
    'Hello World!', 
    'Hello World!!!', 
    'Hello world!!!', 
    'Hello, world!', 
    'Hello, World!'] 

for s in twts: 
    for i in t: 
     if i == s.text: 
      sn = s.user.screen_name 
      print s 
      m = "@%s Hello!" % (sn) 
      s = api.update_status(m, s.id) 

ответ

0

Просто глядя на результаты из веб-поиска

https://twitter.com/search?q=Hello%20World!

Результаты, как правило, привет и мира, а не конкретные формы, которые вы хотите. Вы можете немного уменьшить это в своем вызове API, окружая кавычками, например.

Но вы все равно найдете результаты как

"Hello World! Слушайте эту песню! https://t.co/x8QUmIHrVk \ NMy CMD NJ Family ....... NSR & NSP"

0

A общей хорошей практикой было бы напечатать объекты, с которыми вы работаете, чтобы посмотреть, что они содержат.

В вашем методе выше вы проверяете, что i == s.text.

Это будет оценивать только True когда твит только содержит точное совпадение из списка t. Итак, если кто-то проветрит «Hello World! Какой чудесный мир», ваш условный будет оценивать False.

for s in twts: 
    print s.text # Let's see what's in s.text 
    for i in t: 
     if i == s.text: 
      sn = s.user.screen_name 
      print (sn,s.text) 

Здесь пока первые три s.text объекты:

RT @TheCamcorderApp: Hello World;)

@KaoruAIX Нет сын сосны! Vamos a hacer un juego en equipos para fomentar la unión de Hello, World y FAIX (?)

информация для удобства #TILab #SmartCity #OpenAirLab - привет мир! 9887 человек сидит!

В целом, исследуйте с помощью оператора in для вашего конкретного метода. Вместо i == s.text: используйте i in s.text:. Есть также несколько вопросов по маркировке SO tweepy. Они дадут вам другие идеи относительно более эффективных способов анализа твитов.

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