Python3.4 Bottle IntelliJ Mach etwas auf Twitter
python3.4, Intellij-Umgebungskonstruktion Studieren Sie die grundlegende Verwendung der Flasche Einfach zu bedienende jinja2 Vorlage Modularisierung
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
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!
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! !!
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