Можно ли транслировать полные твиты с помощью функции Tweepy on_data - PullRequest
0 голосов
/ 13 апреля 2019

Можно ли вернуть полный текст твита в функции on_data при потоковой передаче через Twitter с помощью Tweepy?

Я экспериментировал и видел решения для функции on_status для потоковой передачи. Функция on_status может возвращать полные тексты, делая что-то в соответствии с status.extended_tweet ["full_text"]. Однако, похоже, что это не работает для функции on_data, и я не видел, чтобы кто-то задавал этот вопрос специально для on_data (если я не пропустил его как-то). Так кто-нибудь здесь знает, есть ли какие-либо способы использования on_data для потоковой передачи полнотекстовых твитов?

Я видел, как некоторые люди говорят, что tweet_mode = 'extended' будет работать, но я заметил, что это решение не относится к потоковым твитам.

класс TwitterListener (StreamListener):

def __init__(self, fetchedFeedsFile):
    self.fetchedFeedsFile = fetchedFeedsFile

def on_data(self, data):
    try:
            print(data)
            with open(self.fetchedFeedsFile, 'a') as tf:
                tf.write(data)
            return True

    except BaseException as e:
        print("Error on_data: %s" % str(e))
        return True

def on_error(self, status):
    if status == 420:
        return False
    print(status)

Код, который я показал, транслирует твиты с помощью переопределения on_data и выводит твиты, однако он не может возвращать полные твиты.

1 Ответ

1 голос
/ 16 апреля 2019

Так как никто не ответил на мой вопрос, и я сам провел дальнейшие исследования и эксперименты. Я могу подтвердить, что можно получить полные тексты, используя on_data. Если кто-то захочет транслировать полноразмерные твиты с помощью on_data, вам сначала нужно получить доступ к JSON, возвращенному функцией on_data. Обычно JSON будет содержать строку с именем «text», содержащую твит, однако, если твит слишком длинный (более 140 символов, я верю? , Ниже приведен фрагмент переопределения on_data, которое я использовал, и он успешно передает полноразмерные твиты в файл.

data = json.loads(data)

try:
    tweetStr = data['extended_tweet']['full_text']
except Exception as e:
    tweetStr = data['text']

тогда вы можете вывести tweetStr в функцию печати, файл или что угодно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...