Hallo, ich hoffe ihr könnt mir weiterhelfen. Ich versuche ein Script zu bauen, welches neue Tweets des Benutzers xy auf Twitter retweetet. Allerdings funktioniert dieses Script was ich mir zusammengestellt habe nicht. Könntet ihr mir da evtl helfen das Script zum laufen zu bekommen oder etwas zu entwickeln was das tut was ich vor habe?
Das ist der Code welchen ich gerade benutze:
[codebox=python file=Unbenannt.txt]from twython import Twython, TwythonError
apiKey = '###############'
apiSecret = '###############'
accessToken = '###############'
accessTokenSecret = '###############'
twitter = Twython(apiKey,apiSecret,accessToken,accessTokenSecret)
user_timeline = twitter.get_user_timeline(screen_name='###', count=2)
try:
for tweet in user_timeline["statuses"]:
try:
twitter.retweet(id = tweet["id_str"])
except TwythonError as e:
print ("e")
except TwythonError as e:
print ("e") [/code]
Automatische Retweets via Twython
@horstexplorer: Was heisst „funktioniert nicht“ denn genau? Gibt es eine Fehlermeldung? Wenn ja welche? Traceback bitte 1:1 kopieren. Verhält es sich nicht so wie Du erwartest? An welcher Stelle? Und wie verhält es sich stattdessen?
-
- User
- Beiträge: 3
- Registriert: Dienstag 14. Februar 2017, 23:11
Bis jetzt gibt es mir diese Fehlermeldung aus mit der ich wenig anfangen kann.
Traceback (most recent call last):
File "retweet.py", line 11, in <module>
for tweet in user_timeline["statuses"]:
TypeError: list indices must be integers, not str
Traceback (most recent call last):
File "retweet.py", line 11, in <module>
for tweet in user_timeline["statuses"]:
TypeError: list indices must be integers, not str
@horstexplorer: Die Meldung sagt Dir das man Listen nur mit Zahlen indexieren kann und nicht mit Zeichenketten. Und zeigt Dir die Zeile in der das passiert. Da gibt es nur einen Indexzugriff. Und Du verwendest dort eine Zeichenkette. Was bei Listen aus hoffentlich offensichtlichen Gründen nicht geht. Wie kommst Du darauf das die `get_user_timeline()`-Methode etwas zurück gibt das den Zugriff 'statuses' als Schlüssel erlaubt?
Code: Alles auswählen
In [1]: a = [1, 2, 3]
In [2]: a['hallo']
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-2-3a437f2c5b1c> in <module>()
----> 1 a['hallo']
TypeError: list indices must be integers, not str
In [3]: a[0]
Out[3]: 1
Du hast da bereits eine Liste, du denkst wahrscheinlich, dass da ein Dictionary zurück kommt, dem ist aber nicht so.
ist eine Liste von Dictionaries.
Anders verhält es sich z.B., wenn du die Suche benutzt, da dort einmal die Tweets und die Metadaten der Suche enthalten sind:
Code: Alles auswählen
user_timeline
Anders verhält es sich z.B., wenn du die Suche benutzt, da dort einmal die Tweets und die Metadaten der Suche enthalten sind:
Code: Alles auswählen
popular_python_tweets = twitter.search(q='python', result_type='popular')
for tweets in popular_python_tweets['statuses']
[...]
“Clean code always looks like it was written by someone who cares.” (Michael Feathers)
Check out: https://awesome-python.com/
Check out: https://awesome-python.com/
-
- User
- Beiträge: 3
- Registriert: Dienstag 14. Februar 2017, 23:11
Und wie müsste der Code dann aussehen?
Ich möchte ja von bestimmten Nutzern retweetet und nicht Tweets in denen bestimmte Benutzer genannt werden.
Ich möchte ja von bestimmten Nutzern retweetet und nicht Tweets in denen bestimmte Benutzer genannt werden.
@horstexplorer: Arbeite am besten mal ein Grundlagentutorial für Python durch, dann weisst Du was man mit den Grunddatentypen machen kann. In der Python-Dokumentation gibt es beispielsweise ein Tutorial.