Zweite Hälfte des ersten Tages des Python-Studiums Versuchen Sie, die Twitter-API mit Bottle zu erreichen

Fallstudie

Python3.4 Bottle IntelliJ Mach etwas auf Twitter

Synopse bis zum letzten Mal

python3.4, Intellij-Umgebungskonstruktion Studieren Sie die grundlegende Verwendung der Flasche Einfach zu bedienende jinja2 Vorlage Modularisierung

Auf Twitter posten

Verwenden Sie Requests-OAuthlib

Aufgrund des Ergebnisses ist es fehlgeschlagen

Es gibt viele Twitter-Bibliotheken, aber die Web-API sendet nur JSON In der Bibliothek wird nur Auth ausgeführt, und der Rest besteht darin, eine HTTP-Anforderung direkt zu stellen Im Gegensatz zur Twitter-Bibliothek kann sie auch für andere Autoren wie Facebook und Google+ verwendet werden

Also habe ich mich für Requests-OAuthlib entschieden

Wie gewöhnlich,

import requests_oauthlib

Und mit IntelliJ importieren Nicht gefunden und kann nicht gelöst werden!

Ich habe verschiedene Dinge ausprobiert, aber schließlich aufgegeben, sie mit IntelliJ zu verwenden So installieren Sie mit pip und starten über die Befehlszeile

Registrieren Sie sich zunächst für die Twitter API und consumer_key, consumer_secret, access_token, access_token_secret Bitte holen und einstellen

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="Holen Sie sich bald Timeline")

@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="Holen Sie sich bald Timeline")


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 %}

Ich habe das Gefühl, dass der Code richtig gemacht wurde. Es funktioniert nicht. ..

Ich habe ungefähr 2 Stunden lang mein Bestes versucht, aber ich konnte nicht gut twittern ich gebe auf

Tweepy Sie können die Bibliothek einfach ändern. Ich habe viel getroffen, aber irgendwie Ich entschied mich für eine Bibliothek namens Tweepy. Ich habe keinen Grund Es wird übrigens modularisiert

Der Modulname lautet Twitter.py. Haupt ist

import Twitter

Hinzufügen

Fügen Sie den Modulnamen-Namespace zum Twitter.hoge-Teil hinzu Wechseln Sie zu 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))

Sie können jetzt aus dem Formular POST! Darüber hinaus kann es von IntelliJ aus bedient werden! Aber Japanisch ist verstümmelt. Das nächste Mal werde ich mich darum kümmern

Japanische Lokalisierung

Es war sehr einfach. Alles was Sie tun müssen, ist decode () auf Anfrage aufzurufen

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

Jetzt können Sie auf Japanisch posten!

Timeline-Erfassung und -Anzeige

Das Abrufen der Zeitleiste ist einfach Sofort mit Tweepy

twitter_.home_timeline()

Anschließend wird eine Liste der Statusobjekte zurückgegeben. Argumente sind, wie viele Tweets von welcher Anzahl abgerufen werden usw. Standardmäßig werden 20 ab dem neuesten Stand gebracht

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

In diesem Fall wird der neueste Tweet-Text angezeigt Neben Text enthält das Statusobjekt auch andere Daten wie die Zeit.

Diesmal habe ich eine Liste mit Zeitplänen bekommen Übergeben Sie die Liste an die jinja2 Template Engine In der Vorlage schleifen

Methode zur Twitter-Klasse hinzugefügt. Jetzt, wo ich darüber nachdenke, dachte ich, es wäre einfacher, Tweepy live zu nutzen.

Twitter.py


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

Geben Sie der Vorlage eine Statusliste als Argument

main.py


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

Und drehen Sie die Vorlage mit für

home.j2


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

Jetzt können Sie die Zeitleiste sehen! !!

Funktionen, die ich hinzufügen möchte

Zeigen Sie Ihren POST an. Vorlage Ich möchte die API erweitern, also ist es ein Freund. Holen Sie sich den Zugriffstoken programmgesteuert

Recommended Posts

Zweite Hälfte des ersten Tages des Python-Studiums Versuchen Sie, die Twitter-API mit Bottle zu erreichen
Versuchen Sie, mit Python schnell und einfach auf die Twitter-API zuzugreifen
Spielen Sie, indem Sie die Riot Games-API in Python First Half drücken
Treffen Sie eine Methode einer Klasseninstanz mit der Python Bottle Web API
Hinweis: So erhalten Sie den letzten Tag des Monats mit Python (hinzugefügt am ersten Tag des Monats)
Ich habe versucht, die API mit dem Python-Client von echonest zu erreichen
Verwenden Sie die Twitter-API mit Python
Versuchen Sie es mit der Twitter-API
Versuchen Sie es mit der Twitter-API
Rufen Sie die API mit python3 auf.
Versuchen Sie, COVID-19 Tokyo-Daten mit Python zu kratzen
Ein Hinweis zum Aufrufen der Facebook-API mit dem Python SDK
Die erste API, die mit dem Python Djnago REST-Framework erstellt wurde
Berühren wir die API der Netatmo Weather Station mit Python. #Python #Netatmo
Versuchen Sie, den Betrieb von Netzwerkgeräten mit Python zu automatisieren
Aggregieren Sie die täglichen Treffer pro Sekunde aus den Webserver-Protokollen in Python
Erster Python 3 ~ Der Beginn der Wiederholung ~
Der 14. März ist der Tag des Umfangsverhältnisses. Die Geschichte der Berechnung des Umfangsverhältnisses mit Python
Erste Python ② Versuchen Sie, Code zu schreiben, während Sie die Funktionen von Python untersuchen
Crawlen mit Python und Twitter API 2-Implementierung der Benutzersuchfunktion
Klicken Sie mit Python auf die Etherpad-Lite-API
Greifen Sie mit Python auf die Twitter-API zu
Liste der in Twitter verwendeten Sprachcodes (einschließlich API) (mit Python-Wörterbuch). Was ist die am häufigsten verwendete Sprache?
Versuchen Sie, die Höhendaten des National Land Research Institute mit Python abzubilden
Ich habe versucht, den Authentifizierungscode der Qiita-API mit Python abzurufen.
Holen Sie sich Artikelbesuche und Likes mit Qiita API + Python
Ich habe versucht, die Filminformationen der TMDb-API mit Python abzurufen
Sammeln von Informationen von Twitter mit Python (Twitter API)
Versuchen Sie es mit der Wunderlist-API in Python
Versuchen Sie, die Kraken-API mit Python zu verwenden
Überprüfen Sie die Existenz der Datei mit Python
Tweet mit der Twitter-API in Python
[Python] Probieren Sie pydash der Python-Version von lodash aus
Die zweite Nacht der Runde mit für
Versuchen Sie, die Spotify-API in Django zu aktivieren.
Ich bin ein Amateur am 14. Tag von Python, aber ich möchte maschinelles Lernen mit Scicit-Learn ausprobieren
Schreiben Sie den Stichproben-Knoten von SPSS Modeler mit Python neu First: Erste N Fälle, Zufallsstichprobe
Probieren Sie einen datengesteuerten Test mit Selenium Python Bindings und py.test aus
Test von emacs-org parser orgparse für Python
Bereiten Sie die Ausführungsumgebung von Python3 mit Docker vor
[Hinweis] Exportieren Sie das HTML der Site mit Python.
Versuchen Sie, das Mensch-Maschine-Diagramm mit Python zu lösen
Versuchen Sie es mit der BitFlyer Ligntning API in Python
Berechnen Sie die Gesamtzahl der Kombinationen mit Python
Überprüfen Sie das Datum der Flaggenpflicht mit Python
[Python] Lesen Sie den Quellcode von Flasche Teil 1
Probieren Sie Progate Free Edition [Python I]
Nachdem Sie mit Python auf die Qiita-API geklickt haben, um eine Liste mit Artikeln für Anfänger zu erhalten, werden wir die Artikel von God besuchen
Explosive Geschwindigkeit mit Python (Flasche)! Web-API-Entwicklung
Prognostizieren Sie die zweite Runde des Sommers 2016 mit scikit-learn
Versuchen Sie es mit dem Sammlungsmodul (ChainMap) von python3
Finden Sie den Tag nach Datum / Uhrzeit heraus
Konvertieren Sie den Zeichencode der Datei mit Python3
[Python] Holen Sie sich den Tag (Englisch & Japanisch)
Versuchen Sie, direkt von Python 3 aus auf die YQL-API zuzugreifen
[Python] Bestimmen Sie den Typ der Iris mit SVM
Versuchen Sie, die DropBox Core-API mit Python zu verwenden