Deuxième moitié de la première journée d'étude de Python Essayez d'utiliser l'API Twitter avec Bottle

Étude de cas

Python3.4 Bottle IntelliJ Faites quelque chose sur Twitter

Synopsis jusqu'à la dernière fois

python3.4, construction de l'environnement Intellij Étudier l'utilisation de base de la bouteille Modèle jinja2 facile à utiliser modularisation

Chronologie des publications sur Twitter

Utiliser Requests-OAuthlib

Du résultat, il a échoué

Il existe de nombreuses bibliothèques Twitter, mais l'API Web n'envoie que du JSON Seul Auth se fait dans la librairie, et le reste consiste à faire une requête HTTP directement Contrairement à la bibliothèque Twitter, elle peut également être utilisée pour d'autres autorisations telles que Facebook et Google+

J'ai donc décidé d'utiliser Requests-OAuthlib

Comme d'habitude,

import requests_oauthlib

Et importez avec IntelliJ Non trouvé et ne peut pas être résolu!

J'ai essayé diverses choses, mais j'ai finalement renoncé à l'utiliser avec IntelliJ Pour installer avec pip et démarrer à partir de la ligne de commande

Tout d'abord, inscrivez-vous à l'API Twitter et consumer_key, consumer_secret, access_token, access_token_secret Veuillez obtenir et régler

python


import os
import bottle
import jinja2
import requests_oauthlib
from requests_oauthlib import OAuth1Session

from bottle import route, post, request, run
from bottle import TEMPLATE_PATH, jinja2_template as template

base_url = "https://api.twitter.com/1.1/"
update_url="statuses/update.json"


consumer_key="hoge"
consumer_secret="hoge"
access_token="hoge"
access_token_secret="hoge"


TEMPLATE_PATH.append("./template")



class Twitter:
    def __init__(self, consumer_key, consumer_secret, access_token, access_token_secret):
        self.twitter_ = OAuth1Session(consumer_key, consumer_secret, access_token, access_token_secret)

    def update(self, msg):
        param="{'status:': '" + msg + "'}"
        return(self.twitter_.post(base_url+update_url, param))


@route('/')
def HomeHandler_():
    return template("home.j2", posts="Obtenez bientôt la chronologie")

@post('/1/twitter/post')
def UpdateHandler_():
    global twitter_
    msg = request.forms.get('status')
    print("post:"+msg)
    req = twitter_.update(msg)
    return template("home.j2", posts="Obtenez bientôt la chronologie")


twitter_ = Twitter(secret.consumer_key, secret.consumer_secret, secret.access_token, secret.access_token_secret)


if __name__ == "__main__":
    run(host='localhost', port=1046, debug=True, reloader=True)


home.j2


{% extends "base.j2" %}

{% block content %}
  <div id="postform">
    <form method="POST" action="/1/twitter/post">
      <table>
        <tr><td><textarea cols="70" rows="3" name="status"></textarea></td></tr>
        <tr><td align="right"><input type="submit" name="doit" value="Update"></td></tr>
      </table>
    </form>
  </div>

<h2>Timeline</h2>
<i>aaa</i><br>
{% for post in posts %}
{{ post }}
{% endfor %}

{% endblock %}

J'ai l'impression que le code est fait correctement. Ça ne marche pas. ..

J'ai fait de mon mieux pendant environ 2 heures, mais je ne pouvais pas bien tweeter, alors j'abandonne

Tweepy Vous pouvez facilement changer de bibliothèque. J'ai beaucoup rencontré, mais d'une manière ou d'une autre J'ai opté pour une bibliothèque appelée Tweepy. Je n'ai pas de raison Au fait, il sera modulaire

Le nom du module sera Twitter.py le principal est

import Twitter

Ajouter

Ajoutez l'espace de noms du nom du module à la partie Twitter.hoge Changez pour Twitter.Twitter.hoge

Twitter.py


# -*- encoding: utf-8 -*-
import tweepy



__author__ = 'miyatake_y'

base_url = "https://api.twitter.com/1.1/"
update_url="statuses/update.json"



class Twitter:
    def __init__(self, consumer_key, consumer_secret, access_token, access_token_secret):
        self.auth_ = tweepy.OAuthHandler(consumer_key,consumer_secret)
        self.auth_.set_access_token(access_token,access_token_secret)
        self.twitter_ = tweepy.API(self.auth_)

    def update(self, msg):
        print("Twitter.update:" + msg)
        return(self.twitter_.update_status(status=msg))

Vous pouvez maintenant POSTER depuis le formulaire! De plus, il peut être utilisé depuis IntelliJ! Mais le japonais est brouillé. La prochaine fois, je traiterai de ça

Localisation japonaise

C'était très simple. Tout ce que vous avez à faire est d'appeler decode () sur demande

msg = request.forms.decode().get('status')

Vous pouvez désormais publier en japonais!

Acquisition et affichage de la chronologie

Obtenir la chronologie est facile Immédiatement avec Tweepy

twitter_.home_timeline()

Ensuite, une liste d'objets d'état est renvoyée. Les arguments sont le nombre de tweets récupérés, à partir de quel numéro, etc. Par défaut, 20 seront importés du dernier

print(twitter_.home_timeline()[0].text)

Si tel est le cas, le dernier texte du Tweet sera affiché En plus du texte, l'objet d'état contient également d'autres données telles que l'heure.

Cette fois, j'ai une liste de délais Passer la liste au moteur de template jinja2 Pour boucler dans le modèle

Ajout d'une méthode à la classe Twitter. Maintenant que j'y pense, j'ai pensé que ce serait plus facile d'utiliser Tweepy live.

Twitter.py


    def home_timeline(self):
        return(self.twitter_.home_timeline())

Donner une liste de statuts comme argument au modèle

main.py


    return template("home.j2", posts=twitter_.home_timeline())

Et tournez le modèle avec pour

home.j2


{% for post in posts %}
{{ post.text }} <br><hr>
{% endfor %}

Vous pouvez maintenant voir la chronologie! !!

Fonctionnalités que je pense ajouter

Affichez votre POST. modèle Je veux augmenter l'API, donc c'est un ami. Obtenez ACCESS TOKEN par programmation

Recommended Posts

Deuxième moitié de la première journée d'étude de Python Essayez d'utiliser l'API Twitter avec Bottle
Essayez d'utiliser l'API Twitter rapidement et facilement avec Python
Jouez en accédant à l'API Riot Games en Python Première moitié
Hit une méthode d'une instance de classe avec l'API Web Python Bottle
Remarque: Comment obtenir le dernier jour du mois avec python (ajouté le premier jour du mois)
J'ai essayé de frapper l'API avec le client python d'echonest
Utiliser l'API Twitter avec Python
Essayez d'utiliser l'API Twitter
Essayez d'utiliser l'API Twitter
Appelez l'API avec python3.
Essayez de gratter les données COVID-19 Tokyo avec Python
Une note sur l'utilisation de l'API Facebook avec le SDK Python
La première API à créer avec le framework Python Djnago REST
Touchons l'API de Netatmo Weather Station avec Python. #Python #Netatmo
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
Agréger les appels quotidiens par seconde à partir des journaux du serveur Web en Python
First Python 3 ~ Le début de la répétition ~
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
Premier python ② Essayez d'écrire du code tout en examinant les fonctionnalités de python
Exploration avec Python et Twitter API 2-Implémentation de la fonction de recherche d'utilisateurs
Accédez à l'API Etherpad-lite avec Python
Accéder à l'API Twitter avec Python
Liste des codes de langue utilisés dans Twitter (y compris l'API) (avec dictionnaire Python). Quelle est la langue la plus couramment utilisée?
Essayez d'imaginer les données d'élévation du National Land Research Institute avec Python
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
J'ai essayé d'obtenir les informations sur le film de l'API TMDb avec Python
Collecter des informations sur Twitter avec Python (API Twitter)
Essayez d'utiliser l'API Wunderlist en Python
Essayez d'utiliser l'API Kraken avec Python
Vérifier l'existence du fichier avec python
Tweet à l'aide de l'API Twitter en Python
[Python] Essayez pydash de la version Python de lodash
La deuxième nuit de la boucle avec pour
Essayez d'accéder à l'API Spotify dans Django.
Je suis un amateur le 14e jour de python, mais je veux essayer l'apprentissage automatique avec scicit-learn
Réécrire le nœud d'échantillonnage de SPSS Modeler avec Python ①: N premiers cas, échantillonnage aléatoire
Essayez la touche d'un test basé sur les données avec Selenium Python Bindings et py.test
Essai du parseur d'emacs-org orgparse pour python
Préparer l'environnement d'exécution de Python3 avec Docker
[Note] Exportez le html du site avec python.
Essayez de résoudre le diagramme homme-machine avec Python
Essayez d'utiliser l'API BitFlyer Ligntning en Python
Calculez le nombre total de combinaisons avec python
Vérifiez la date du devoir de drapeau avec Python
[Python] Lire le code source de Bottle Part 1
Essayez Progate Free Edition [Python I]
Après avoir frappé l'API Qiita avec Python pour obtenir une liste d'articles pour les débutants, nous visiterons les articles divins
Vitesse explosive avec Python (bouteille)! Développement d'API Web
Prédisez le deuxième tour de l'été 2016 avec scikit-learn
Essayez d'utiliser le module de collections (ChainMap) de python3
Découvrez le jour par date / heure
Convertir le code de caractère du fichier avec Python3
[Python] Get the day (anglais et japonais)
Essayez d'accéder à l'API YQL directement depuis Python 3
[Python] Déterminez le type d'iris avec SVM
Essayez d'utiliser l'API DropBox Core avec Python