human
2. Modificar nossa classe para ter duração de 5 minutos
Segue abaixo as soluções encontradas para os problemas do último desafio.
1) Falta fechar o arquivo e 2) Falta finalizar a execução do Streaming;
Para esses dois problemas conseguimos tratar dentro do método on_data. O retorno padrão da função é True, portanto enquanto não acontecer alguma ação que diga que não é mais True, o código irá recuperar dados.
Portanto, quando criamos a condição de parada (5 minutos), podemos retornar False, encerrando a execução do Streaming. Nessa mesma condição, antes do retorno, podemos fechar o arquivo. Como mostra o código abaixo.
python
if(time() - self.tempo_inicial &lt.
self.limite):
    self.salvar_arquivo.write(dados)            
    return True
else:
    self.salvar_arquivo.close()
    return False
3) Cada tweet deve ficar em uma linha.
Abra o arquivo tweets.json e veja que existe uma linha em branco entre os tweets salvos.
A função open tem um parâmetro chamado newline em que podemos definir como vazio, desta forma não teremos esse problema. Veja código abaixo:
python
open(nome_arq, 'a', newline='')
Bom, vamos ao código final agora."
Please write code following the instructions in jupyter notebook style.
assistant
#Here is code to 2.

class DadosPublicosTwitter(tweepy.StreamListener):
    def __init__(self, nome_arq, limite):
        self.tempo_inicial = time()
        self.limite = limite # 5 minutos == 300 segundos
        self.salvar_arquivo = open(nome_arq, 'a', newline='')
        
    def on_data(self, dados):
        if(time() - self.tempo_inicial < self.limite):
            self.salvar_arquivo.write(dados)            
            return True
        else:
            self.salvar_arquivo.close()
            return False

nome_arq = 'tweets_5min.json'
dados_twitter = DadosPublicosTwitter(nome_arq, 300)

fluxo = tweepy.Stream(autorizar, dados_twitter)

fluxo.filter(track=['Big Data'])