Zugriff auf die Twitter-API von Python. Unterstützt sowohl Python 2 als auch 3.
Es gibt auch python-twitter, aber im Grunde senden Sie einfach eine HTTP-Anfrage und erhalten JSON. Verwenden Sie also die Bibliothek für Twitter. Ich dachte, es wäre nicht da, also habe ich es selbst geschrieben. Nur die OAuth-Authentifizierung verwendet eine separate Bibliothek.
Sie benötigen eine OAuth-Authentifizierung, um auf Twitter zugreifen zu können. Die Authentifizierungsmethode ist so kompliziert, dass normale Leute Bibliotheken verwenden.
Dieses Mal werde ich Requests-OAuthlib verwenden, das selbst als "OAuth für Menschen" identifiziert wird. Ich weiß nicht, welche Art von Kreaturen sich andere Bibliotheken vorstellen.
Für den Zugriff auf die Twitter-API ist eine Anwendungsregistrierung erforderlich. Wenn Sie damit fertig sind
Es werden zwei Schlüssel ausgegeben. Darüber hinaus für jeden Benutzer der App
Es werden zwei Schlüssel ausgegeben. Sie benötigen diese vier Schlüssel, um auf die Twitter-API zuzugreifen.
Wie man es bekommt [this](http://website-planner.com/twitter%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC % E3% 82% B7% E3% 83% A7% E3% 83% B3% E3% 81% AE% E4% BD% 9C% E6% 88% 90% EF% BC% 88Konsumentenschlüssel% E3% 80% 81Konsument -sehe geheim% E3% 80% 81access-token% E3% 80% 81access-token-secret /).
Die Registrierung der Anwendung selbst ist kostenlos, es scheint jedoch notwendig zu sein, die Handynummer ab etwa Februar 2014 zu registrieren. Ich kenne die Details nicht, also ggr.
Sobald Sie den Schlüssel erhalten haben, schreiben Sie den Code sofort.
Bitte ändern Sie die Teile von CK, CS, AT, AS
nach Bedarf in Ihren eigenen Schlüssel.
tweet.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session
CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key
CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret
AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token
AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert
#URL zum Posten von Tweets
url = "https://api.twitter.com/1.1/statuses/update.json"
#Tweet Körper
params = {"status": "Hello, World!"}
#Post-by-POST-Methode mit OAuth-Authentifizierung
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.post(url, params = params)
#Überprüfen Sie die Antwort
if req.status_code == 200:
print ("OK")
else:
print ("Error: %d" % req.status_code)
Die Grundlagen sind so. Wenn Sie ein Bild hinzufügen möchten, schreiben Sie den veröffentlichten Teil wie folgt um.
tweet_with_image.py
#Tweet Körper
files = {
"status": "Hello, World!",
"media[]": open("image.png ", "rb")
}
#Post-by-POST-Methode mit OAuth-Authentifizierung
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.post(url, files = files)
** * Hinzugefügt am 27.04.2015 ** Es scheint, dass sich die Spezifikationen für das Posten von Bildern geändert haben. Siehe hier → Tweet mit Bild in Python
Es gibt keinen großen Unterschied, außer dass sich die URL ändert und POST zu GET wird. Der Rückgabewert ist JSON und 20 Tweets sind im Listenformat. Hier wird nur der Text angezeigt, aber er enthält auch viele Metainformationen wie Benutzerinformationen, Tweet-Zeit und Anzahl der Favoriten.
timeline.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from requests_oauthlib import OAuth1Session
import json
CK = 'XXXXXXXXXXXXXXXXXXXXXX' # Consumer Key
CS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Consumer Secret
AT = 'XXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Access Token
AS = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX' # Accesss Token Secert
#URL zum Abrufen der Timeline
url = "https://api.twitter.com/1.1/statuses/home_timeline.json"
#Es gibt keine bestimmten Parameter
params = {}
#GET mit OAuth
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)
if req.status_code == 200:
#Da die Antwort im JSON-Format vorliegt, analysieren Sie sie
timeline = json.loads(req.text)
#Zeigen Sie den Text jedes Tweets an
for tweet in timeline:
print(tweet["text"])
else:
#Im Fehlerfall
print ("Error: %d" % req.status_code)
Es sind keine Parameter erforderlich, Sie können jedoch den Bereich der zu erfassenden Tweet-IDs (in chronologischer Reihenfolge zugewiesen) und die Anzahl der Tweets (Standard 20 Stück, maximal 200 Stück) festlegen.
Danach können Sie fast alles tun, indem Sie die URL und die Parameter neu schreiben. Klicken Sie hier, um eine Liste der bereitgestellten APIs anzuzeigen. (Englisch) https://dev.twitter.com/docs/api/1.1
Die "unfollow" API ist "Freundschaften / Zerstören", was ich schon oft gesehen habe.
Twitter verfügt über eine großzügige Menge an APIs, sodass es funktional fast genauso sein kann wie ein offizieller Client. Die Anzahl der Anforderungen ist jedoch begrenzt. Insbesondere ist die Home-Timeline sehr streng ** bis zu 15 Mal in 15 Minuten **, so dass es nicht möglich ist, die Timeline alle paar Sekunden zu aktualisieren.
Die verbleibende Anzahl von APIs und der Zeitpunkt der nächsten Aktualisierung werden im Anforderungsheader gespeichert.
#GET mit OAuth
twitter = OAuth1Session(CK, CS, AT, AS)
req = twitter.get(url, params = params)
if req.status_code == 200:
#API-Rest
limit = req.headers['x-rate-limit-remaining']
#Aktualisierungszeit für API-Limit(UNIX time)
reset = req.headers['x-rate-limit-reset']
print ("API remain: " + limit)
print ("API reset: " + reset)
Um API-Einschränkungen zu überwinden
Da ist so etwas.
Die Möglichkeiten sind endlos.
Recommended Posts