Tôi hiện đang gặp sự cố khi lấy mã mẫu để sử dụng tweepy để truy cập API phát trực tuyến của Twitter để chạy đúng (err ... hoặc ít nhất là cách tôi mong đợi nó chạy). Tôi đang sử dụng một bản sao gần đây của tweepy từ GitHub (có nhãn phiên bản 1.9) và Python 2.7.1.Sử dụng tweepy để truy cập API truyền trực tuyến của Twitter
Tôi đã thử mã ví dụ từ ba nguồn khác nhau, trong từng trường hợp sử dụng "twitter" như một thuật ngữ kiểm tra để theo dõi:
O'Rilley câu trả lời mã: viết blog How to Capture Tweets in Real-time with Twitter's Streaming API
Andrew Robinson : Using Tweepy to access the Twitter Stream
Kho lưu trữ ví dụ Tweepy trên GitHub (trong đó, như Andrew Robinson đã thực hiện, có thể dễ dàng sửa đổi để hỗ trợ xác thực OAuth): streamwatcher.py
Trong cả ba trường hợp, tôi nhận được kết quả tương tự: Xác thực thành công, không có lỗi nào được tạo và vòng lặp chương trình chính dường như đang thực thi bất kỳ sự cố nào. Tôi thấy việc sử dụng mạng nhảy lên khoảng 200KB/s và quá trình python nhảy tới gần 100% mức sử dụng CPU, vì vậy tôi nghĩ rằng dữ liệu đang được nhận. Không có gì là đầu ra cho giao diện điều khiển, tuy nhiên.
Tôi nghi ngờ rằng lớp Luồng của tweepy không gọi phương thức gọi lại tùy chỉnh vì một số lý do. Tôi đã thử viết lại các phương thức gọi lại trong mỗi ví dụ để tạo ra đầu ra bất cứ khi nào chúng được gọi, dường như để xác nhận điều này. Đây là một đoạn mã thử nghiệm rất đơn giản dựa trên mục blog của Andrew Robinson (tất nhiên, với khóa ứng dụng của tôi đã bị xóa):
# -*- coding: utf-8 -*-
import tweepy
consumer_key = ''
consumer_secret = ''
access_token_key = ''
access_token_secret = ''
auth1 = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth1.set_access_token(access_token_key, access_token_secret)
class StreamListener(tweepy.StreamListener):
def on_status(self, tweet):
print 'Ran on_status'
def on_error(self, status_code):
print 'Error: ' + repr(status_code)
return False
def on_data(self, data):
print 'Ok, this is actually running'
l = StreamListener()
streamer = tweepy.Stream(auth=auth1, listener=l)
#setTerms = ['hello', 'goodbye', 'goodnight', 'good morning']
setTerms = ['twitter']
streamer.filter(track = setTerms)
Tôi làm gì sai?
Cảm ơn !!! Làm việc như người ở. Ngoài ra, cảm ơn cho đề xuất để kiểm tra danh sách các vấn đề trên GitHub - đó có thể là những gì tôi thực sự cần biết ;-) –