Ich lese oft Kinderbetreuungs-Comics auf Twitter. Es ist ärgerlich, andere Tweets als Cartoons auf der Timeline zu sehen Über die Twitter-API werden nur Manga-Tweets (= Bild-Tweets) erfasst.
Auf diese Weise können Sie, wenn Sie Ihre Zeitleiste anzeigen, nur die Tweets des Bildes gleichzeitig anzeigen.
API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET wurden unter Bezugnahme auf die folgende Site erhalten. Detaillierte Erklärung vom Beispielsatz der Twitter-API-Verwendungsanwendung der Version 2020 bis zum Erwerb des API-Schlüssels
python
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
Ermitteln Sie zunächst den Benutzernamen (um genau zu sein den Bildschirmnamen) des Benutzers, dem Sie folgen. Der Endpunkt verwendet https://api.twitter.com/1.1/friends/list.json. Bis zu 200 Personen scheinen API-Grenzwerte zu sein. Geben Sie Ihren eigenen Bildschirmnamen für das Argument Bildschirmname an. (Sie können es auch mit dem Bildschirmnamen einer anderen Person erhalten)
get_follow_screen_name
def get_follow_screen_name(screen_name):
#Bereiten Sie eine leere Liste vor
follow_list = []
#Authentifizierung
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
#Erfassungsendpunkt
url = "https://api.twitter.com/1.1/friends/list.json"
#Parameter
params = {"screen_name": screen_name, "count": 200}
#Anfrage
res = twitter.get(url, params=params)
if res.status_code == 200:
result_json = json.loads(res.text)
#Follower zur Liste hinzufügen
for i in range(0, len(result_json["users"]), 1):
follow_list.append(result_json["users"][i]["screen_name"])
#Gibt eine Liste zurück
return follow_list
else:
return None
Verwenden Sie den Bildschirmnamen jedes in 1 erhaltenen Benutzers, um die Zeitleiste abzurufen und im JSON-Format zurückzugeben. Ich möchte diesmal die neuesten Tweets, also setze ich count = 1.
get_user_timeline
def get_user_timeline(screen_name):
#Authentifizierungsprozess
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
#Endpunkt der Zeitleistenerfassung
url = "https://api.twitter.com/1.1/statuses/user_timeline.json"
#Parameter
params = {
"count": 1,
"screen_name": screen_name,
"include_entities": True,
"exclude_replies": False,
"include_rts": False,
}
#Abrufen der Zeitleistenliste aus der Antwort
res = twitter.get(url, params=params)
if res.status_code == 200:
return json.loads(res.text)
else:
return None
Erstellen Sie zunächst die in 2 gespeicherte JSON-Datei in der folgenden Klasse.
python
class Tweet:
def __init__(self, json_file):
self.created_at = json_file[0]["created_at"]
self.tweet_id = json_file[0]["id"]
self.text = json_file[0]["text"]
self.user_name = json_file[0]["user"]["name"]
self.user_screen_name = json_file[0]["user"]["screen_name"]
self.user_mention = json_file[0]["entities"]["user_mentions"]
self.image_urls_list = []
#Wenn eine angehängte Datei vorhanden ist
if "extended_entities" in json_file[0]:
self.media_number = len(json_file[0]["extended_entities"]["media"])
self.content_type = json_file[0]["extended_entities"]["media"][0]["type"]
for i in range(0, self.media_number, 1):
self.image_urls_list.append(
json_file[0]["extended_entities"]["media"][i]["media_url"]
)
else:
self.media_number = 0
self.content_type = ""
Schauen Sie sich self.media_number = len an (json_file [0] ["extended_entities"] ["media"]) Unterscheiden Sie, ob ein Bild gepostet wurde.
is_content_type
def is_content_type(obj_tweet, expect_type):
if obj_tweet.content_type == expect_type:
return True
else:
return False
Wenn das Bild gepostet wurde, klicken Sie wie unten gezeigt auf die API, um sie zu mögen und zu retweeten. Sie müssen lediglich die Tweet-ID angeben.
push_favorite
def push_favorite(tweet_id):
#Authentifizierung
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
#Anfrage
url = "https://api.twitter.com/1.1/favorites/create.json"
params = {"id": tweet_id}
req = twitter.post(url, params=params)
req_json = json.loads(req.text)
if req.status_code == 200:
return True
#Wenn es dir schon gefallen hat
elif req.status_code == 403 and req_json["errors"][0]["code"] == 139:
return True
else:
return False
retweet
def retweet(tweetId):
twitter = OAuth1Session(API_KEY, API_SECRET_KEY, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)
url = "https://api.twitter.com/1.1/statuses/retweet/%d.json" % tweetId
res = twitter.post(url)
res_json = json.loads(res.text)
if res.status_code == 200:
return True
#Bereits retweetet
elif res.status_code == 403 and res_json["errors"][0]["code"] == 327:
return True
else:
return False
Recommended Posts