[PYTHON] Client de publication Twitter créé avec Flask avec une fonction de connexion simple

Flacon d'apprentissage

J'ai touché à la fois à la bouteille et à Django, donc Flask. Comme d'habitude, nous utiliserons à nouveau l'API Twitter.

$ python3 -m venv flaskworks
$ ls flaskworks/
$ . flaskworks/bin/activate
(flaskworks)$ pip install flask
(flaskworks)$ pip install requests requests_oauthlib

Il est très facile de créer un répertoire comme une bouteille.

(flaskworks)$ cd flaskworks
(flaskworks)$ mkdir static
(flaskworks)$ mkdir templates

Créer un modèle

Créez-en deux car il utilise l'héritage de modèle.

base.html


<!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="UTF-8">
    <link rel="stylesheet" href="/static/css/style.css">
    <link rel="stylesheet" href="/static/css/bootstrap.min.css">
    <title>Tweet</title>
</head>
<body>
  <div class="container">
    <div class="row">
      <form method="post" action="/send">
        <input type="text" id="msg" name="msg">
        <input type="submit" value="Send Form">
      </fomr>
        {% block content %}
        {% endblock %}
    </div>
  </div>
</body>
</html>

index.html


{% extends "base.html" %}
{% block content %}
  {% if msg %}
  <p>「{{msg}}Je posté</p>
  {% endif %}
{% endblock %}

Rédiger une demande de publication

Pour le moment, j'ai décidé d'ajouter une fonction de connexion simple. La réalité est presque la même que la bouteille, n'est-ce pas?

tweet.py


import os
from requests_oauthlib import OAuth1Session
import requests
from flask import Flask, render_template, request, redirect, url_for, session
app = Flask(__name__)

app.config['SECRET_KEY'] = os.urandom(24)

C_KEY = '+++++++++++++++++++++++++++++'
C_SECRET = '+++++++++++++++++++++++++++++'
A_KEY = '+++++++++++++++++++++++++++++'
A_SECRET = '+++++++++++++++++++++++++++++'

Post_API = 'https://api.twitter.com/1.1/statuses/update.json'
tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)

@app.route('/')
def index():
    if 'username' in session:
        return render_template('index.html')
    return '''
        <p>Veuillez vous connecter</p>
    '''

@app.route('/login', methods=['GET', 'POST'])
def login():
    if request.method == 'POST':
        username = request.form['username']
        if username == 'admin':
            session['username'] = request.form['username']
            return redirect(url_for('index'))
        else:
            return '''<p>Le nom d'utilisateur est différent</p>'''
    return '''
        <form action="" method="post">
            <p><input type="text" name="username">
            <p><input type="submit" value="Login">
        </form>
    '''

@app.route('/logout')
def logout():
    session.pop('username', None)
    return redirect(url_for('index'))

@app.route('/send', methods=['GET', 'POST'])
def send():
    if request.method == 'POST':
        msg = request.form['msg']
        url = Post_API
        params = {'status': msg,'lang': 'ja'}
        req = tw.post(url, params = params)

        return render_template('index.html', msg=msg)

if __name__ == '__main__':
    app.debug = True
    app.run()

Contrôle de fonctionnement

(flaskworks)$ python tweet.py
スクリーンショット 2017-05-18 10.47.35.png

C'est tout.

C'est un livre mince, mais c'est résumé https://www.amazon.co.jp/dp/B0714D1VGP

Recommended Posts

Client de publication Twitter créé avec Flask avec une fonction de connexion simple
Application de publication sur Twitter réalisée avec Django
Client de recherche Twitter fait avec bouteille
Votre propre client Twitter réalisé avec Django
Client API Slack simple réalisé avec Python
Exploration avec Python et Twitter API 1 - Fonction de recherche simple
Implémenter la fonction de connexion avec django-allauth
J'ai créé une application de livre simple avec python + Flask ~ Introduction ~
[Connexion LINE] Vérifier l'état avec Flask
Bases de SNS Python faites avec Flask
Fonction de téléchargement d'image avec Vue.js + Flask
Exécutez avec un navigateur. Client Twitter réalisé avec une bouteille (POST uniquement
Lecteur RSS simple réalisé avec Django
J'ai fait un simple blackjack avec Python
Créez un simple générateur d'images par points avec Flask
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
J'ai fait un simple portefeuille de Bitcoin avec pycoin