finished the standalone twitter bot!
This commit is contained in:
parent
f181545f14
commit
eb811bb148
|
@ -35,15 +35,15 @@ $ pip3 install Mastodon.py pytoml
|
||||||
- [x] How to crawl mentions with the mastodon API
|
- [x] How to crawl mentions with the mastodon API
|
||||||
- [x] How to boost people with the mastodon API
|
- [x] How to boost people with the mastodon API
|
||||||
- [x] How to access the twitter API
|
- [x] How to access the twitter API
|
||||||
- [ ] How to crawl mentions with the twitter API
|
- [x] How to crawl mentions with the twitter API
|
||||||
- [ ] How to retweet people with the twitter API
|
- [x] How to retweet people with the twitter API
|
||||||
|
|
||||||
## to do
|
## to do
|
||||||
|
|
||||||
- [ ] Twitter: Crawl mentions
|
- [x] Twitter: Crawl mentions
|
||||||
- [ ] Mastodon: Crawl mentions
|
- [ ] Mastodon: Crawl mentions
|
||||||
- [ ] Write toots/tweets to database
|
- [ ] Write toots/tweets to database
|
||||||
- [ ] Twitter: retweet people
|
- [x] Twitter: retweet people
|
||||||
- [ ] Mastodon: boost people
|
- [ ] Mastodon: boost people
|
||||||
- [ ] Mastodon: toot who has been retweeted on twitter
|
- [ ] Mastodon: toot who has been retweeted on twitter
|
||||||
- [ ] Twitter: tweet who has been boosted on mastodon
|
- [ ] Twitter: tweet who has been boosted on mastodon
|
||||||
|
|
24
triggerwords
24
triggerwords
|
@ -0,0 +1,24 @@
|
||||||
|
kontrolle
|
||||||
|
ticketfrei
|
||||||
|
konti
|
||||||
|
db
|
||||||
|
zivil
|
||||||
|
sicherheit
|
||||||
|
uniform
|
||||||
|
station
|
||||||
|
bus
|
||||||
|
bahn
|
||||||
|
tram
|
||||||
|
linie
|
||||||
|
nuernberg
|
||||||
|
nbg
|
||||||
|
nürnberg
|
||||||
|
s1
|
||||||
|
s2
|
||||||
|
s3
|
||||||
|
u1
|
||||||
|
u2
|
||||||
|
u3
|
||||||
|
s4
|
||||||
|
u21
|
||||||
|
u11
|
|
@ -13,8 +13,8 @@ After you received keys, store them in ../../api_keys, one at a line.
|
||||||
"""
|
"""
|
||||||
with open("../appkeys/ticketfrei@twitter.com", "r") as file:
|
with open("../appkeys/ticketfrei@twitter.com", "r") as file:
|
||||||
keys = file.readlines()
|
keys = file.readlines()
|
||||||
for i in keys:
|
for status in keys:
|
||||||
print i,
|
print status,
|
||||||
|
|
||||||
|
|
||||||
# create an Api object
|
# create an Api object
|
||||||
|
@ -25,58 +25,61 @@ api = twitter.Api(consumer_key = keys[0].strip(),
|
||||||
|
|
||||||
|
|
||||||
# This counter is needed to keep track which was the last tweet you retweeted
|
# This counter is needed to keep track which was the last tweet you retweeted
|
||||||
|
# ACTUALLY it keeps track of the last mention, whether you retweeted it or not.
|
||||||
with open("../last_rt", "r+") as file:
|
with open("../last_rt", "r+") as file:
|
||||||
last_rt = file.read()
|
last_rt = file.read()
|
||||||
|
|
||||||
|
|
||||||
# Words which have to be included into the tweets for the tweet to get retweeted
|
# Words which have to be included into the tweets for the tweet to get retweeted
|
||||||
with open("../triggerwords", "r") as file:
|
with open("../triggerwords", "r") as file:
|
||||||
triggers = file.readlines()
|
triggers = [s.strip() for s in file.readlines()]
|
||||||
|
|
||||||
try:
|
try:
|
||||||
while 1:
|
while 1:
|
||||||
sleep(1)
|
sleep(1)
|
||||||
|
|
||||||
# Store all mentions in a list of Status Objects
|
# Store all mentions in a list of Status Objects
|
||||||
try:
|
done = False
|
||||||
mentions = api.GetMentions(since_id=last_rt)
|
while not done:
|
||||||
except requests.exceptions.ConnectionError:
|
try:
|
||||||
done = False
|
mentions = api.GetMentions(since_id=last_rt)
|
||||||
while done == False:
|
done = True
|
||||||
try:
|
except requests.exceptions.ConnectionError:
|
||||||
mentions = api.GetMentions(since_id=last_rt)
|
print("[ERROR] Bad Connection.")
|
||||||
done = True
|
sleep(10)
|
||||||
except:
|
|
||||||
sleep(10)
|
|
||||||
|
|
||||||
print mentions
|
print mentions # debug
|
||||||
for i in mentions:
|
for status in mentions:
|
||||||
print i.user.name, i.user.id, i.text # debug
|
|
||||||
|
|
||||||
# Is the Text of the Tweet in the triggerlist?
|
# Is the Text of the Tweet in the triggerlist?
|
||||||
for j in triggers:
|
should_retweet = False
|
||||||
if i.text.lower().find(j):
|
for triggerword in triggers:
|
||||||
|
if status.text.lower().find(triggerword):
|
||||||
|
should_retweet = True
|
||||||
|
break
|
||||||
|
|
||||||
# Retweet status
|
# Retweet status
|
||||||
|
if should_retweet:
|
||||||
|
done = False
|
||||||
|
while not done:
|
||||||
try:
|
try:
|
||||||
api.PostRetweet(i.id)
|
api.PostRetweet(status.id)
|
||||||
|
done = True
|
||||||
|
|
||||||
# This is an Error we need to get rid of. Why are tweets RTed twice?
|
# This is an Error we need to get rid of. Why are tweets RTed twice?
|
||||||
except twitter.error.TwitterError:
|
# except twitter.error.TwitterError:
|
||||||
print("[ERROR] probably you already retweeted this tweet.")
|
# print("[ERROR] probably you already retweeted this tweet.")
|
||||||
|
# done = True
|
||||||
except requests.exceptions.ConnectionError:
|
except requests.exceptions.ConnectionError:
|
||||||
done = False
|
print("[ERROR] Bad Connection.")
|
||||||
while done == False:
|
sleep(10)
|
||||||
try:
|
|
||||||
api.PostRetweet(i.id)
|
# save the id so it doesn't get crawled again
|
||||||
done = True
|
last_rt = status.id
|
||||||
except:
|
print last_rt
|
||||||
sleep(10)
|
|
||||||
|
|
||||||
# save the id so it doesn't get crawled again
|
|
||||||
last_rt = i.id
|
|
||||||
break
|
|
||||||
except:
|
except:
|
||||||
api.PostDirectMessage("Help! I broke down. restart me pls :$", "801098086005243904", "links_tech")
|
print "[ERROR] Shit went wrong, closing down."
|
||||||
with open("../last_rt", "w") as file:
|
with open("../last_rt", "w") as file:
|
||||||
file.write(last_rt)
|
file.write(str(last_rt))
|
||||||
|
api.PostDirectMessage("Help! I broke down. restart me pls :$", "801098086005243904", "links_tech")
|
Loading…
Reference in a new issue