Merge branch 'master' of dl6tom.de:public/ticketfrei
This commit is contained in:
commit
2f3b3d27d4
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -1,4 +1,6 @@
|
|||
*.swp
|
||||
.idea/
|
||||
last_rt
|
||||
ticketfrei.cfg
|
||||
seen_toots.pickle
|
||||
seen_toots.pickle.part
|
||||
|
|
|
@ -35,15 +35,15 @@ $ pip3 install Mastodon.py pytoml
|
|||
- [x] How to crawl mentions with the mastodon API
|
||||
- [x] How to boost people with the mastodon API
|
||||
- [x] How to access the twitter API
|
||||
- [ ] How to crawl mentions with the twitter API
|
||||
- [ ] How to retweet people with the twitter API
|
||||
- [x] How to crawl mentions with the twitter API
|
||||
- [x] How to retweet people with the twitter API
|
||||
|
||||
## to do
|
||||
|
||||
- [ ] Twitter: Crawl mentions
|
||||
- [x] Twitter: Crawl mentions
|
||||
- [ ] Mastodon: Crawl mentions
|
||||
- [ ] Write toots/tweets to database
|
||||
- [ ] Twitter: retweet people
|
||||
- [x] Twitter: retweet people
|
||||
- [ ] Mastodon: boost people
|
||||
- [ ] Mastodon: toot who has been retweeted on twitter
|
||||
- [ ] 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
|
|
@ -1,7 +1,9 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
__author__ = "b3yond"
|
||||
|
||||
import twitter
|
||||
import requests
|
||||
from time import sleep
|
||||
|
||||
"""
|
||||
|
@ -9,10 +11,10 @@ How to get these keys is described in doc/twitter_api.md
|
|||
|
||||
After you received keys, store them in ../../api_keys, one at a line.
|
||||
"""
|
||||
with open("../../api_keys", "r") as file:
|
||||
with open("../appkeys/ticketfrei@twitter.com", "r") as file:
|
||||
keys = file.readlines()
|
||||
for i in keys:
|
||||
print i,
|
||||
for status in keys:
|
||||
print status,
|
||||
|
||||
|
||||
# create an Api object
|
||||
|
@ -23,32 +25,61 @@ api = twitter.Api(consumer_key = keys[0].strip(),
|
|||
|
||||
|
||||
# This counter is needed to keep track which was the last tweet you retweeted
|
||||
last_rt = ""
|
||||
# ACTUALLY it keeps track of the last mention, whether you retweeted it or not.
|
||||
with open("../last_rt", "r+") as file:
|
||||
last_rt = file.read()
|
||||
|
||||
|
||||
# Words which have to be included into the tweets for the tweet to get retweeted
|
||||
with open("../triggerwords.txt", "r") as file:
|
||||
triggers = file.readlines()
|
||||
with open("../triggerwords", "r") as file:
|
||||
triggers = [s.strip() for s in file.readlines()]
|
||||
|
||||
try:
|
||||
while 1:
|
||||
sleep(1)
|
||||
|
||||
while 1:
|
||||
sleep(1)
|
||||
# Store all mentions in a list of Status Objects
|
||||
done = False
|
||||
while not done:
|
||||
try:
|
||||
mentions = api.GetMentions(since_id=last_rt)
|
||||
done = True
|
||||
except requests.exceptions.ConnectionError:
|
||||
print("[ERROR] Bad Connection.")
|
||||
sleep(10)
|
||||
|
||||
# Store all mentions in a list of Status Objects
|
||||
mentions = api.GetMentions(since_id=last_rt)
|
||||
print mentions
|
||||
for i in mentions:
|
||||
print i.user.name, i.user.id, i.text # debug
|
||||
print mentions # debug
|
||||
for status in mentions:
|
||||
|
||||
# Is the Text of the Tweet in the triggerlist?
|
||||
for j in triggers:
|
||||
if i.text.lower().find(j):
|
||||
# Is the Text of the Tweet in the triggerlist?
|
||||
should_retweet = False
|
||||
for triggerword in triggers:
|
||||
if status.text.lower().find(triggerword):
|
||||
should_retweet = True
|
||||
break
|
||||
|
||||
# Retweet status, save the id so it doesn't get crawled again
|
||||
try:
|
||||
feedback = api.PostRetweet(i.id)
|
||||
print feedback
|
||||
except twitter.error.TwitterError:
|
||||
print("[ERROR] probably you already retweeted this tweet.")
|
||||
last_rt = i.id
|
||||
break
|
||||
# Retweet status
|
||||
if should_retweet:
|
||||
done = False
|
||||
while not done:
|
||||
try:
|
||||
api.PostRetweet(status.id)
|
||||
done = True
|
||||
|
||||
# This is an Error we need to get rid of. Why are tweets RTed twice?
|
||||
# except twitter.error.TwitterError:
|
||||
# print("[ERROR] probably you already retweeted this tweet.")
|
||||
# done = True
|
||||
except requests.exceptions.ConnectionError:
|
||||
print("[ERROR] Bad Connection.")
|
||||
sleep(10)
|
||||
|
||||
# save the id so it doesn't get crawled again
|
||||
last_rt = status.id
|
||||
print last_rt
|
||||
|
||||
except:
|
||||
print "[ERROR] Shit went wrong, closing down."
|
||||
with open("../last_rt", "w") as file:
|
||||
file.write(str(last_rt))
|
||||
api.PostDirectMessage("Help! I broke down. restart me pls :$", "801098086005243904", "links_tech")
|
Loading…
Reference in a new issue