Merge pull request #2 from HackspaceJena/mastodon

adds Mastodon features and testmode
This commit is contained in:
bernd2k 2020-01-06 14:34:55 +01:00 committed by GitHub
commit 5f70629f75
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 280 additions and 149 deletions

View file

@ -11,5 +11,9 @@
"consumer_secret": "fill in your data!", "consumer_secret": "fill in your data!",
"token": "fill in your data!", "token": "fill in your data!",
"token_secret": "fill in your data!" "token_secret": "fill in your data!"
},
"mastodon_api": {
"access_token": "fill in your data!",
"api_base_url": "fill in your data!"
} }
} }

View file

@ -1,18 +1,22 @@
import RPi.GPIO as GPIO
import time
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
import json import json
import os import os
import time import time
import urllib.request, json import urllib.request, json
import datetime import datetime
import tweepy import tweepy
from mastodon import Mastodon
import random import random
import time
testmode = False
if testmode != True:
import RPi.GPIO as GPIO
GPIO.setwarnings(False)
GPIO.setmode(GPIO.BOARD)
GPIO.setup(12, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
print("Mode: operational")
else:
print("Mode: test")
def textselect(min, max): def textselect(min, max):
@ -24,6 +28,25 @@ def textselect(min, max):
return random.randint(min, max) return random.randint(min, max)
def send_tweet(twitter_api, text, time_now, status):
try:
twitter_api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet", status, "status")
def send_toot(MASTODON_ACCESS_TOKEN, MASTODON_API_BASE_URL, text, time_now, status):
try:
mastodon = Mastodon(
access_token=MASTODON_ACCESS_TOKEN,
api_base_url=MASTODON_API_BASE_URL
)
mastodon.toot(text)
except:
print(time_now, "did not toot", status," status")
path = os.path.abspath(__file__) path = os.path.abspath(__file__)
dir_path = os.path.dirname(path) dir_path = os.path.dirname(path)
print("dir path is", dir_path) print("dir path is", dir_path)
@ -35,15 +58,21 @@ with open(file_configure_path, 'r') as f:
path = data_config["path"] path = data_config["path"]
CONSUMER_KEY = data_config["twitter_api"]["consumer_key"]
CONSUMER_SECRET = data_config["twitter_api"]["consumer_secret"]
ACCESS_KEY = data_config["twitter_api"]["token"]
ACCESS_SECRET = data_config["twitter_api"]["token_secret"]
print(CONSUMER_KEY)
auth = tweepy.OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) TWITTER_CONSUMER_KEY = data_config["twitter_api"]["consumer_key"]
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET) TWITTER_CONSUMER_SECRET = data_config["twitter_api"]["consumer_secret"]
api = tweepy.API(auth) TWITTER_ACCESS_KEY = data_config["twitter_api"]["token"]
TWITTER_ACCESS_SECRET = data_config["twitter_api"]["token_secret"]
twitter_auth = tweepy.OAuthHandler(TWITTER_CONSUMER_KEY, TWITTER_CONSUMER_SECRET)
twitter_auth.set_access_token(TWITTER_ACCESS_KEY, TWITTER_ACCESS_SECRET)
twitter_api = tweepy.API(twitter_auth)
MASTODON_ACCESS_TOKEN = data_config["mastodon_api"]["access_token"]
MASTODON_API_BASE_URL = data_config["mastodon_api"]["api_base_url"]
state = 1 state = 1
@ -51,6 +80,8 @@ state_b4 = 1
while True: while True:
if testmode != True:
if GPIO.input(12) == GPIO.HIGH: if GPIO.input(12) == GPIO.HIGH:
#print("button was pushed:") #print("button was pushed:")
@ -60,13 +91,17 @@ while True:
if GPIO.input(12) == GPIO.LOW: if GPIO.input(12) == GPIO.LOW:
#print("button was not pushed:") #print("button was not pushed:")
state = 0 state = 0
else:
# just toggles the states for test mode!
if state == 0:
state = 1
else:
state = 0
time_now = time.time() time_now = time.time()
file_status_path = dir_path + os.sep + "status.json" file_status_path = dir_path + os.sep + "status.json"
#print(file_status_path)
if state == 1 and state_b4 == 0: if state == 1 and state_b4 == 0:
@ -77,21 +112,40 @@ while True:
number = len(data_status["opening_text"]) number = len(data_status["opening_text"])
number = textselect(0, number - 1) number = textselect(0, number - 1)
text = data_status["opening_text"][number]["text"] + " [OPEN:" + datetime.datetime.fromtimestamp(
int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + "]"
print("Text:", text) time_opening = datetime.datetime.fromtimestamp(int(time_now)).strftime('%Y-%m-%d %H:%M:%S')
texts = data_status["opening_text"][number]["text"]
if TWITTER_ACCESS_KEY != "fill in your data!":
if texts.get("twitter") != None:
text = texts["twitter"] + " [OPEN:" + time_opening + "]"
else:
text = texts["universal"] + " [OPEN:" + time_opening + "]"
print("twitter text:", text)
if testmode != True:
send_tweet(twitter_api, text, time_now, "opening")
if MASTODON_ACCESS_TOKEN != "fill in your data!":
if texts.get("mastodon") != None:
text = texts["mastodon"] + " [OPEN:" + time_opening + "]"
else:
text = texts["universal"] + " [OPEN:" + time_opening + "]"
print("mastodon text:", text)
if testmode != True:
send_toot(MASTODON_ACCESS_TOKEN, MASTODON_API_BASE_URL, text, time_now, "opening")
#print("opened")
#text = "#Krautspace was opened. testmode (if you think I am wrong, report to me this bug/observation!) " + datetime.datetime.fromtimestamp(
# int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + ""
#print("Text:", text)
try:
api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet closing status")
if state == 0 and state_b4 == 1: if state == 0 and state_b4 == 1:
#print("closed") #print("closed")
@ -103,21 +157,38 @@ while True:
number = len(data_status["closing_text"]) number = len(data_status["closing_text"])
number = textselect(0, number - 1) number = textselect(0, number - 1)
text = data_status["closing_text"][number]["text"] + " [CLOSED:" + datetime.datetime.fromtimestamp(
int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + "]"
print("Text:", text) time_closing = datetime.datetime.fromtimestamp(int( time_now )).strftime('%Y-%m-%d %H:%M:%S')
texts = data_status["closing_text"][number]["text"]
if TWITTER_ACCESS_KEY != "fill in your data!":
if texts.get("twitter") != None:
text = texts["twitter"] + " [CLOSED:" + time_closing + "]"
else:
text = texts["universal"] + " [CLOSED:" + time_closing + "]"
#text = "#Krautspace was closed. testmode (if you think I am wrong, report to me this bug/observation!) " + datetime.datetime.fromtimestamp( print("twitter text:", text)
# int( time_now )).strftime('%Y-%m-%d %H:%M:%S') + ""
if testmode != True:
send_tweet(twitter_api, text, time_now, "closing")
if MASTODON_ACCESS_TOKEN != "fill in your data!":
if texts.get("mastodon") != None:
text = texts["mastodon"] + " [CLOSED:" + time_closing + "]"
else:
text = texts["universal"] + " [CLOSED:" + time_closing + "]"
print("mastodon text:", text)
if testmode != True:
send_toot(MASTODON_ACCESS_TOKEN, MASTODON_API_BASE_URL, text, time_now, "closing")
#print("Text:", text)
try:
api.update_status(text)
# same text as before cannot be posted!
except:
print(time_now, "did not tweet closing status")
state_b4 = state state_b4 = state

View file

@ -1 +1,2 @@
tweepy tweepy
mastodon.py

View file

@ -1,282 +1,337 @@
{ {
"name": "Krautspace space status", "name": "Krautspace space status",
"text_mode" : {"universal" : 0, "twitter" : 1, "mastodon" : 2},
"closing_text": [ "closing_text": [
{ {
"text": "Krautspace ist geschlossen." "text": {"universal" : "Krautspace ist geschlossen."}
}, },
{ {
"text": "#krautspace is closed." "text": {"universal" : "#krautspace is closed."}
}, },
{ {
"text": "Last person left #krautspace" "text": {"universal" : "Last person left #krautspace"}
}, },
{ {
"text": "Closing #krautspace. We're sorry you need to wait outside, but there is always @freifunkjena to distract you." "text": {"universal" : "Closing #krautspace. We're sorry you need to wait outside, but there is always @freifunkjena to distract you."}
}, },
{ {
"text": "Currently, there is no light in #krautspace, so why not walk the beautiful @jenalichtstadt?" "text": {"universal" : "Currently, there is no light in #krautspace, so why not walk the beautiful @jenalichtstadt?"}
}, },
{ {
"text": "#krautspace is zu, aber @offenesjena ist immer offen." "text": {"universal" : "#krautspace is zu, aber @offenesjena ist immer offen."}
}, },
{ {
"text": "The space is closed, but our chat https://kraut.space/chat/ is always there for you!" "text": {"universal" : "The space is closed, but our chat https://kraut.space/chat/ is always there for you!"}
}, },
{ {
"text": "#Krautspace ist zu, aber andere St\u00e4dte haben auch sch\u00f6ne #hackerspaces." "text": {"universal" : "#Krautspace ist zu, aber andere St\u00e4dte haben auch sch\u00f6ne #hackerspaces."}
}, },
{ {
"text": "Dave Bowman: \"Open the Krautspace doors, HAL.\" | HAL9000: \" I'm sorry, Dave. I'm afraid I can't do that.\"" "text": {"universal" : "Dave Bowman: \"Open the Krautspace doors, HAL.\" | HAL9000: \" I'm sorry, Dave. I'm afraid I can't do that.\""}
}, },
{ {
"text": "Der Krautspace hat zu. Aber ihr k\u00f6nnt ja unsere Nachbarn, den @maschinenrauM18, in #Weimar besuchen, w\u00e4hrend ihr wartet." "text": {
"universal" : "Der Krautspace hat zu. Aber ihr k\u00f6nnt ja unsere Nachbarn, den @maschinenrauM18, in #Weimar besuchen, w\u00e4hrend ihr wartet.",
"mastodon" : "Der Krautspace hat zu. Aber ihr k\u00f6nnt ja unsere Nachbarn, den @maschinenraum@social.bau-ha.us, in #Weimar besuchen, w\u00e4hrend ihr wartet."
}
}, },
{ {
"text": "Der Krautspace wurde geschlossen. Mitglieder sind wohl nach Hause oder auf den Weg zum @bytespeicher_ef in #Erfurt." "text": {
"universal" : "Der Krautspace wurde geschlossen. Mitglieder sind wohl nach Hause oder auf den Weg zum @bytespeicher_ef in #Erfurt.",
"mastodon" : "Der Krautspace wurde geschlossen. Mitglieder sind wohl nach Hause oder auf den Weg zum @bytespeicher@social.bau-ha.us in #Erfurt."
}
}, },
{ {
"text": "Wir sind jetzt leider zu. Sollen wir euch die Horden an Hackern zum @ebkhalle nach #Halle r\u00fcberschicken?" "text": {"universal" : "Wir sind jetzt leider zu. Sollen wir euch die Horden an Hackern zum @ebkhalle nach #Halle r\u00fcberschicken?"}
}, },
{ {
"text": "Wir sind nun zu. Wie sieht es bei euch aus im C3D2 @pentafnord? #Dresden" "text": {
"universal" : "Wir sind nun zu. Wie sieht es bei euch aus im C3D2 @pentafnord? #Dresden.",
"mastodon" : "Wir sind nun zu. Wie sieht es bei euch aus im C3D2 @c3d2@bots.tinysubversions.com? #Dresden."
}
}, },
{ {
"text": "...aaaaand it's gone! Krautspace is closed https://www.youtube.com/watch?v=DNLob2E_Q5s" "text": {"universal" : "...aaaaand it's gone! Krautspace is closed https://www.youtube.com/watch?v=DNLob2E_Q5s"}
}, },
{ {
"text": "Lichter im Krautspace sind nun aus. F\u00fcr mehr Lichter kann man auch gut in die @LichtwerkstattJ gehen." "text": {"universal" : "Lichter im Krautspace sind nun aus. F\u00fcr mehr Lichter kann man auch gut in die @LichtwerkstattJ gehen."}
}, },
{ {
"text": "Heut is nicht alle Tage, Krautspace kommt wieder keine Frage!! https://www.youtube.com/watch?v=JRL5Z1k60tg" "text": {"universal" : "Heut is nicht alle Tage, Krautspace kommt wieder keine Frage!! https://www.youtube.com/watch?v=JRL5Z1k60tg"}
}, },
{ {
"text": "Du musst was reparieren? Krautspace ist nun leider zu, aber schau doch mal beim @RepairCafe_Jena vorbei." "text": {"universal" : "Du musst was reparieren? Krautspace ist nun leider zu, aber schau doch mal beim @RepairCafe_Jena vorbei."}
}, },
{ {
"text": "Der Space ist jetzt zu und du kannst weiterhin neue \"Wir sind zu\" Spr\u00fcche zu unserem Twitter Bot auf @Github hinzuf\u00fcgen https://github.com/HackspaceJena/space_status " "text": {"universal" : "Der Space ist jetzt zu und du kannst weiterhin neue \"Wir sind zu\" Spr\u00fcche zu unserem Twitter Bot auf @Github hinzuf\u00fcgen https://github.com/HackspaceJena/space_status "}
}, },
{ {
"text": "Brautkleid bleibt Brautkleid, und Krautspace bleibt Krautspace, auch wenn er zu ist, wie jetzt..." "text": {"universal" : "Brautkleid bleibt Brautkleid, und Krautspace bleibt Krautspace, auch wenn er zu ist, wie jetzt..."}
}, },
{ {
"text": "Der Krautspace ist zu und du weisst nicht, was du tun kannst? Lies doch mal ein Buch im @EAB_Jena?" "text": {"universal" : "Der Krautspace ist zu und du weisst nicht, was du tun kannst? Lies doch mal ein Buch im @EAB_Jena?"}
}, },
{ {
"text": "BEE DOO BEE DOO BEE DOO - space is closed. https://www.youtube.com/watch?v=ZvvF_N2XD8w " "text": {"universal" : "BEE DOO BEE DOO BEE DOO - space is closed. https://www.youtube.com/watch?v=ZvvF_N2XD8w "}
}, },
{ {
"text": "Krautspace is closed and before you intend to defy the weather outside while reaching us, check our @SenseBox_De https://opensensemap.org/explore/59d7de4c66f66a0010797868 " "text": {"universal" : "Krautspace is closed and before you intend to defy the weather outside while reaching us, check our @SenseBox_De https://opensensemap.org/explore/59d7de4c66f66a0010797868 "}
}, },
{ {
"text": "Why not leaving Krautspace with an earworm?! Bye Bye bye....! https://www.youtube.com/watch?v=Eo-KmOd3i7s " "text": {"universal" : "Why not leaving Krautspace with an earworm?! Bye Bye bye....! https://www.youtube.com/watch?v=Eo-KmOd3i7s "}
}, },
{ {
"text": "Matelos, durch die Nacht.... *singend beim Zuschlie\u00dfen des Krautspaces." "text": {"universal" : "Matelos, durch die Nacht.... *singend beim Zuschlie\u00dfen des Krautspaces."}
}, },
{ {
"text": "Krautspace 503 - Service Unavailable." "text": {"universal" : "Krautspace 503 - Service Unavailable."}
}, },
{ {
"text": "member: \"shutdown\". krautspace: \"no\". member: \"sudo shutdown\". krautspace: \"ok, shutting down, bye!\"" "text": {"universal" : "member: \"shutdown\". krautspace: \"no\". member: \"sudo shutdown\". krautspace: \"ok, shutting down, bye!\""}
}, },
{ {
"text": "Wir sind nun zu, aber wenn du eine Projektidee f\u00fcr zu hause brauchst, warum nicht einen weiteren @airrohr Feinstaubsensor f\u00fcr #Jena aufstellen? @luftdaten #Feinstaubalarm #PM10 http://deutschland.maps.luftdaten.info/#13/50.9294/11.5825" "text": {
"universal" : "Wir sind nun zu, aber wenn du eine Projektidee f\u00fcr zu hause brauchst, warum nicht einen weiteren @airrohr Feinstaubsensor f\u00fcr #Jena aufstellen? @luftdaten #Feinstaubalarm #PM10 http://deutschland.maps.luftdaten.info/#13/50.9294/11.5825",
"mastodon" : "Wir sind nun zu, aber wenn du eine Projektidee f\u00fcr zu hause brauchst, warum nicht einen weiteren @airrohr Feinstaubsensor f\u00fcr #Jena aufstellen? @luftdaten@mastodon.social #Feinstaubalarm #PM10 http://deutschland.maps.luftdaten.info/#13/50.9294/11.5825"
}
}, },
{ {
"text": "Krautspace ist nun zu. Nein? Doch! Oh!" "text": {"universal" : "Krautspace ist nun zu. Nein? Doch! Oh!"}
}, },
{ {
"text": "-.- .-. .- ..- - ... .--. .- -.-. . / .. ... / -.-. .-.. --- ... . -.. .-.-.-" "text": {"universal" : "-.- .-. .- ..- - ... .--. .- -.-. . / .. ... / -.-. .-.. --- ... . -.. .-.-.-"}
}, },
{ {
"text": "Krautspace ist zu und du hast noch (k)eine Idee f\u00fcr ein Projekt? Frag auf unserer Emailliste nach. Die ist immer auf und Leute helfen dir dort gerne. https://lstsrv.org/mailman/listinfo/hackspace-jena" "text": {"universal" : "Krautspace ist zu und du hast noch (k)eine Idee f\u00fcr ein Projekt? Frag auf unserer Emailliste nach. Die ist immer auf und Leute helfen dir dort gerne. https://lstsrv.org/mailman/listinfo/hackspace-jena"}
}, },
{ {
"text": "Sie verlassen jetzt den Krautspace, n\u00e4chster Ort auf Ihrer Reise ist Bad Gateway - Internetkurort." "text": {"universal" : "Sie verlassen jetzt den Krautspace, n\u00e4chster Ort auf Ihrer Reise ist Bad Gateway - Internetkurort."}
}, },
{ {
"text": "Ich bin jetzt zu. Solange keiner da ist schaue ich den Reisenden in der Gegend zu und versuche sie sirenenhaft hierhin zu locken... Kraft meiner Gedanken... und Funk! https://aprs.fi/#!addr=jena @APRSFI" "text": {"universal" : "Ich bin jetzt zu. Solange keiner da ist schaue ich den Reisenden in der Gegend zu und versuche sie sirenenhaft hierhin zu locken... Kraft meiner Gedanken... und Funk! https://aprs.fi/#!addr=jena @APRSFI"}
}, },
{ {
"text": "Wir sind dann mal weg!" "text": {"universal" : "Wir sind dann mal weg!"}
}, },
{ {
"text": "Waren Sie schon mal in #Jena? Dort ist es schön. Wir sind nun auch dort zu finden." "text": {"universal" : "Waren Sie schon mal in #Jena? Dort ist es schön. Wir sind nun auch dort zu finden."}
}, },
{ {
"text": "Keine Neuigkeiten aus dem Krautspace? Was gibt's denn sonst so in Jena? Schaut doch mal auf @Jenaertweets vorbei!" "text": {
"universal" : "Keine Neuigkeiten aus dem Krautspace? Was gibt's denn sonst so in Jena? Schaut doch mal auf @Jenaertweets vorbei!",
"mastodon" : "Keine Neuigkeiten aus dem Krautspace? Was gibt's denn sonst so in Jena? Schaut doch mal auf @Jenaertoots@mastodon.social vorbei!"
}
}, },
{ {
"text": "Der Maschinenkraut ist GESCHLOSSEN... No. 1337" "text": {"universal" : "Der Maschinenkraut ist GESCHLOSSEN... No. 1337"}
}, },
{ {
"text": "Nach der Hackarbeit ist vor der @AfterWorkPartyJ" "text": {"universal" : "Nach der Hackarbeit ist vor der @AfterWorkPartyJ"}
}, },
{ {
"text": "Es ist zwar jetzt zu, aber vielleicht sind wir nur kurz zum Einkaufen in der @goethegalerie. Schaut bitte nochmal auf den Status in 30 Minuten." "text": {"universal" : "Es ist zwar jetzt zu, aber vielleicht sind wir nur kurz zum Einkaufen in der @goethegalerie. Schaut bitte nochmal auf den Status in 30 Minuten."}
}, },
{ {
"text": "We are outside smelling the roses... and using @Flora_Incognita on our smartphones to identify wild flowers!" "text": {"universal" : "We are outside smelling the roses... and using @Flora_Incognita on our smartphones to identify wild flowers!"}
}, },
{ {
"text": "E-DOOR says: Space is CLOSED!" "text": {"universal" : "E-DOOR says: Space is CLOSED!"}
}, },
{ {
"text": "Der @HackspaceJena beendet die #Spacetime!" "text": {
"universal" : "Der @HackspaceJena beendet die #Spacetime!",
"mastodon" : "Der @krautspace@chaos.social beendet die #Spacetime!"
}
}, },
{ {
"text": "You can't Hack this (oh-oh oh oh-oh-oh) \n Break it down (Oh-oh-oh-oh-oh-oh-oh-oh-oh oh-oh) \n (Oh-oh-oh-oh-oh-oh-oh-oh-oh oh-oh) Stop Hacker time. https://www.youtube.com/watch?v=otCpCn0l4Wo" "text": {"universal" : "You can't Hack this (oh-oh oh oh-oh-oh) \n Break it down (Oh-oh-oh-oh-oh-oh-oh-oh-oh oh-oh) \n (Oh-oh-oh-oh-oh-oh-oh-oh-oh oh-oh) Stop Hacker time. https://www.youtube.com/watch?v=otCpCn0l4Wo"}
}, },
{ {
"text": "Spaaaaaaaaaaaaaaaaaaaaaaaaace is closed :(" "text": {"universal" : "Spaaaaaaaaaaaaaaaaaaaaaaaaace is closed :("}
}, },
{ {
"text": "Alle Mitglieder sind ausgeflogen. Wahrscheinlich fliegen auch einige Mitglieder ihre @Mastodrone #Drohnen draußen bei schoenem Wetter." "text": {"universal" : "Alle Mitglieder sind ausgeflogen. Wahrscheinlich fliegen auch einige Mitglieder ihre @Mastodrone #Drohnen draußen bei schoenem Wetter."}
}, },
{ {
"text": "Ihr wisst schon... abschalten! https://www.youtube.com/watch?v=1RpuTQS4hWw " "text": {"universal" : "Ihr wisst schon... abschalten! https://www.youtube.com/watch?v=1RpuTQS4hWw "}
}, },
{ {
"text": "Hackerspace #Krautspace is closed. But there is more open-source in #Jena. Hack #space for the #NASA #SpaceApps challenge with @SpaceAppsJena!" "text": {"universal" : "Hackerspace #Krautspace is closed. But there is more open-source in #Jena. Hack #space for the #NASA #SpaceApps challenge with @SpaceAppsJena!"}
}, },
{ {
"text": "Rien ne va plus!" "text": {"universal" : "Rien ne va plus!"}
}, },
{ {
"text": "Alle Leute sind draussen, denn draussen in #Jena ist es spektakul\u00e4r! Auch dank dem @spektartulum!" "text": {"universal" : "Alle Leute sind draussen, denn draussen in #Jena ist es spektakul\u00e4r! Auch dank dem @spektartulum!"}
}, },
{ {
"text": "We ended our expriments of today. We have done cool experiments in #Krautspace, but not as cool as the @jena_experiment!" "text": {"universal" : "We ended our experiments of today. We have done cool experiments in #Krautspace, but not as cool as the @jena_experiment!"}
}, },
{ {
"text": "De hackerspace @HackspaceJena is gesloten." "text": {
"universal" : "De hackerspace @HackspaceJena is gesloten.",
"mastodon" : "De hackerspace @krautspace@chaos.social is gesloten."
}
}, },
{ {
"text": "Space is closed. You can see what will happen next on @HackspaceJena @Twitter or on https://chaos.social/@krautspace #Mastodon." "text": {"universal" : "Space is closed. You can see what will happen next on @HackspaceJena @Twitter or on https://chaos.social/@krautspace #Mastodon."}
}, },
{ {
"text": "This closing tweet has been presented by #tweepy! Thank you community https://discord.gg/bJvqnhg, get the code @github https://github.com/tweepy/tweepy" "text": {
"universal" : "This closing tweet has been presented by #tweepy + #mastodon.py! Thank you communities (https://discord.gg/bJvqnhg), get the code @github https://github.com/tweepy/tweepy and https://github.com/halcy/Mastodon.py",
"mastodon" : "This clsoing toott has been presented by mastodon.py! Thank you community, get the code @github https://github.com/halcy/Mastodon.py"
}
},
{
"text": {"universal" : "Der #Krautspace ist zu!"}
},
{
"text": {"universal" : "#Krautspace est fermée. "}
},
{
"text": {
"universal" : "Krautspace is closed. You can also find our status service on #mastodon under https://chaos.social/@kraut_status and on on #twitter under https://twitter.com/ksraumstatus",
"twitter" : "Krautspace is closed. You can also find our status service on #mastodon under https://chaos.social/@kraut_status",
"mastodon" : "Krautspace is closed. You can also find our status service on #twitter under https://twitter.com/ksraumstatus"
}
} }
], ],
"opening_text": [ "opening_text": [
{ {
"text": "Krautspace ist besetzt." "text": {"universal" : "Krautspace ist besetzt."}
}, },
{ {
"text": "#krautspace is open." "text": {"universal" : "#krautspace is open."}
}, },
{ {
"text": "At least one person is in #krautspace and invites you to come and join hacking!" "text": {"universal" : "At least one person is in #krautspace and invites you to come and join hacking!"}
}, },
{ {
"text": "One Ping Only! .... Ping, #krautspace is open." "text": {"universal" : "One Ping Only! .... Ping, #krautspace is open."}
}, },
{ {
"text": "Booting up #krautspace.... space is open!" "text": {"universal" : "Booting up #krautspace.... space is open!"}
}, },
{ {
"text": "The space is open, let's hack together." "text": {"universal" : "The space is open, let's hack together."}
}, },
{ {
"text": "Did you miss me? Don't cry, I am open again!" "text": {"universal" : "Did you miss me? Don't cry, I am open again!"}
}, },
{ {
"text": "Today is a good day to DIY! Krautspace is open." "text": {"universal" : "Today is a good day to DIY! Krautspace is open."}
}, },
{ {
"text": "Want to learn how to hack hardware? Come to Krautspace now and start by taking things apart." "text": {"universal" : "Want to learn how to hack hardware? Come to Krautspace now and start by taking things apart."}
}, },
{ {
"text": "Come to Krautspace, we're open." "text": {"universal" : "Come to Krautspace, we're open."}
}, },
{ {
"text": "Der Space ist jetzt offen und du kannst weitere \"Wir sind offen\" Spr\u00fcche zu unserem Twitter Bot auf @Github hinzuf\u00fcgen auf https://github.com/HackspaceJena/space_status " "text": {"universal" : "Der Space ist jetzt offen und du kannst weitere \"Wir sind offen\" Spr\u00fcche zu unserem Twitter Bot auf @Github hinzuf\u00fcgen auf https://github.com/HackspaceJena/space_status "}
}, },
{ {
"text": "Hackers gonna hack, now in open Krautspace again." "text": {"universal" : "Hackers gonna hack, now in open Krautspace again."}
}, },
{ {
"text": "Come on over and have some fun! The space is open." "text": {"universal" : "Come on over and have some fun! The space is open."}
}, },
{ {
"text": "The more you know! Krautspace is open. http://i3.kym-cdn.com/photos/images/newsfeed/000/620/434/f9e.gif" "text": {"universal" : "The more you know! Krautspace is open. http://i3.kym-cdn.com/photos/images/newsfeed/000/620/434/f9e.gif"}
}, },
{ {
"text": "Come to the Krautspace now, we have Mate!" "text": {"universal" : "Come to the Krautspace now, we have Mate!"}
}, },
{ {
"text": "A Wild Hacker Appears! Opening Krautspace now..." "text": {"universal" : "A Wild Hacker Appears! Opening Krautspace now..."}
}, },
{ {
"text": "You can turn your soldering irons up to eleven again, Krautspace is open." "text": {"universal" : "You can turn your soldering irons up to eleven again, Krautspace is open."}
}, },
{ {
"text": "Blinken um dich rum genug bunte Lichter? Nein? Der Krautspace ist jetzt offen, komm vorbei, mach mehr blink!" "text": {"universal" : "Blinken um dich rum genug bunte Lichter? Nein? Der Krautspace ist jetzt offen, komm vorbei, mach mehr blink!"}
}, },
{ {
"text": "The krautspace is open, come on over for a cold #ClubMate. https://matemonkey.com/map/dealer/krautspace?@=17,50.928943,11.586419 @matemonkeycom" "text": {"universal" : "The krautspace is open, come on over for a cold #ClubMate. https://matemonkey.com/map/dealer/krautspace?@=17,50.928943,11.586419 @matemonkeycom"}
}, },
{ {
"text": "Beep beep, I'm open for hacking visitors!" "text": {"universal" : "Beep beep, I'm open for hacking visitors!"}
}, },
{ {
"text": "Welcome to Krautspace, your #Jena hackerspace!" "text": {"universal" : "Welcome to Krautspace, your #Jena hackerspace!"}
}, },
{ {
"text": "Hello member, I missed you." "text": {"universal" : "Hello member, I missed you."}
}, },
{ {
"text": "Heute im #Krautspace >> https://kraut.space" "text": {"universal" : "Heute im #Krautspace >> https://kraut.space"}
}, },
{ {
"text": "-.- .-. .- ..- - ... .--. .- -.-. . / .. ... / --- .--. . -. .-.-.-" "text": {"universal" : "-.- .-. .- ..- - ... .--. .- -.-. . / .. ... / --- .--. . -. .-.-.-"}
}, },
{ {
"text": "Der Maschinenkraut ist OFFEN... No. 4223" "text": {"universal" : "Der Maschinenkraut ist OFFEN... No. 4223"}
}, },
{ {
"text": "E-DOOR says: Space is OPEN!" "text": {"universal" : "E-DOOR says: Space is OPEN!"}
}, },
{ {
"text": "#Spacetime im @HackspaceJena!" "text": {
"universal" : "#Spacetime im @HackspaceJena!",
"mastodon" : "#Spacetime im @Krautspace@chaos.social!"
}
}, },
{ {
"text": "#Krautspace is offen. Wir machen hier vieles, auch Workshops. Vielleicht auch irgendwann das HACKERMAN'S HACKING TUTORIALS - How To Hack Time https://www.youtube.com/watch?v=KEkrWRHCDQU" "text": {"universal" : "#Krautspace is offen. Wir machen hier vieles, auch Workshops. Vielleicht auch irgendwann das HACKERMAN'S HACKING TUTORIALS - How To Hack Time https://www.youtube.com/watch?v=KEkrWRHCDQU"}
}, },
{ {
"text": "Spaaaaaaaaaaaaaaaaaaaaaaaaace is open :)" "text": {"universal" : "Spaaaaaaaaaaaaaaaaaaaaaaaaace is open :)"}
}, },
{ {
"text": "NOTENOUGHBLINKENLIGHTS: Please visit the (now open) krautspace to make more blinkenlights." "text": {"universal" : "NOTENOUGHBLINKENLIGHTS: Please visit the (now open) krautspace to make more blinkenlights."}
}, },
{ {
"text": "Der Krautspace ist auf. Vielleicht wird nun an unseren Projekten wie @Mastodrone, @Jenaertweets, @RasPowermeter, @repaircafe_jena, @OSM_to & an mir gewerkelt. Findet es heraus. Kommt vorbei!" "text": {
"universal" : "Der Krautspace ist auf. Vielleicht wird nun an unseren Projekten wie @Mastodrone, @Jenaertweets, @RasPowermeter, @repaircafe_jena, @OSM_to & an mir gewerkelt. Findet es heraus. Kommt vorbei!",
"mastodon" : "Der Krautspace ist auf. Vielleicht wird nun an unseren Projekten wie @Mastodrone, @Jenaertoots@mastodon.social, @RasPowermeter, @repaircafe_jena, @OSM_to@mastodon.social & an mir gewerkelt. Findet es heraus. Kommt vorbei!"
}
}, },
{ {
"text": "This hacking time notice has been presented by an @Raspberry_Pi and an @Arduino!" "text": {"universal" : "This hacking time notice has been presented by a @Raspberry_Pi and an @Arduino!"}
}, },
{ {
"text": "Our heroes are leaving the hackerspace catacombs. Ah, Venice! https://youtu.be/eTTgusoFHhI" "text": {"universal" : "Our heroes are leaving the hackerspace catacombs. Ah, Venice! https://youtu.be/eTTgusoFHhI"}
}, },
{ {
"text": "Open Sesame!" "text": {"universal" : "Open Sesame!"}
}, },
{ {
"text": "Sesam \u00f6ffne dich!" "text": {"universal" : "Sesam \u00f6ffne dich!"}
}, },
{ {
"text": "Mr. Gorbachev, open this gate! --US-President Ronald Reagan in Berlin in 1987-06-12" "text": {"universal" : "Mr. Gorbachev, open this gate! --US-President Ronald Reagan in Berlin in 1987-06-12"}
}, },
{ {
"text": "Space is open. Now go to @HackspaceJena @Twitter or on https://chaos.social/@krautspace #Mastodon and see the project-magic gonna happen! If it happened, we will tweet and toot about it." "text": {"universal" : "Space is open. Now go to @HackspaceJena @Twitter or on https://chaos.social/@krautspace #Mastodon and see the project-magic gonna happen! If it happened, we will tweet and toot about it."}
}, },
{ {
"text": "This opening tweet is presented by #tweepy! Thank you community https://discord.gg/bJvqnhg, get the code @github https://github.com/tweepy/tweepy" "text": {
"universal" : "This opening tweet is presented by #tweepy + #mastodon.py! Thank you communities (https://discord.gg/bJvqnhg), get the code @github https://github.com/tweepy/tweepy and https://github.com/halcy/Mastodon.py",
"mastodon" : "This opening tweet is presented by mastodon.py! Thank you community, get the code @github https://github.com/halcy/Mastodon.py"
}
},
{
"text": {
"universal" : "Krautspace is open. You can also find our status service on #mastodon under https://chaos.social/@kraut_status and on on #twitter under https://twitter.com/ksraumstatus",
"twitter" : "Krautspace is open. You can also find our status service on #mastodon under https://chaos.social/@kraut_status",
"mastodon" : "Krautspace is open. You can also find our status service on #twitter under https://twitter.com/ksraumstatus"
}
} }
], ],
"uncertain_text": [ "uncertain_text": [
{ {
"text": "people in #krautspace want their privacy." "text": {"universal" : "people in #krautspace want their privacy."}
} }
] ]
} }