Seite 1 von 1

Automatische Retweets via Twython

Verfasst: Dienstag 14. Februar 2017, 23:17
von horstexplorer
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]

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 00:07
von BlackJack
@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?

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 09:34
von horstexplorer
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

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 09:43
von BlackJack
@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

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 10:47
von Cronut
Du hast da bereits eine Liste, du denkst wahrscheinlich, dass da ein Dictionary zurück kommt, dem ist aber nicht so.

Code: Alles auswählen

user_timeline
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

popular_python_tweets = twitter.search(q='python', result_type='popular')

for tweets in popular_python_tweets['statuses']
    [...]

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 13:36
von horstexplorer
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.

Re: Automatische Retweets via Twython

Verfasst: Mittwoch 15. Februar 2017, 14:27
von BlackJack
@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.