Как напечатать текст на html-странице во Flask, когда текст собирается в режиме реального времени? - PullRequest
0 голосов
/ 21 марта 2019

Когда нажимается кнопка отправки в index.html, мне нужно, чтобы твиты, которые собираются и записываются в csv в функции extract_tweets, также печатались в режиме реального времени (поток) на html-странице «livestream.html».Я создал iframe на index.html src для livestream.html.В настоящее время livestream.html является пустым HTML-документом.

main.py

app = Flask(__name__)
@app.route('/', methods=['GET', 'POST'])
def index():
    return render_template('index.html')

@app.route('/pie', methods=['GET', 'POST'])
def pie():
    if request.method == 'POST':
        keyword = request.form['keyword']
        extract_tweets(keyword)
        return 'Search Complete'
if __name__ == '__main__':
    app.run(debug=True)

extract_tweets

def extract_tweets( query):
    auth = OAuthHandler(config.consumer_key, config.consumer_secret)
    auth.set_access_token(config.access_token, config.access_secret)
    api = tweepy.API(auth)

    csvFile = open('result.csv', 'w', newline='', encoding="utf-8")
    csvWriter = csv.writer(csvFile)
    for index, search in enumerate(tweepy.Cursor(api.search, q=query, lang='en', tweet_mode='extended').items(200)):
        csvWriter.writerow([search.retweeted_status.full_text])
    csvFile.close()

index.html

<iframe src="livestream.html" width=30% height=100% style="position:absolute;left:70%">
  <p>Your browser does not support iframes.</p>
</iframe>
<form action="/pie" method="POST" id="nameform" class="center_text">
    Keyword:
    <input type="text" name="keyword"> <br><br>
    <br><br>
    <button type="submit" style="color:green; border:5px solid blue;border-radius: 10px; " value="Submit" onclick="loading();">Search</button>
</form>
...