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!",
"token": "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 os
import time
import urllib.request, json
import datetime
import tweepy
from mastodon import Mastodon
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):
@ -24,6 +28,25 @@ def textselect(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__)
dir_path = os.path.dirname(path)
print("dir path is", dir_path)
@ -35,15 +58,21 @@ with open(file_configure_path, 'r') as f:
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)
auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
api = tweepy.API(auth)
TWITTER_CONSUMER_KEY = data_config["twitter_api"]["consumer_key"]
TWITTER_CONSUMER_SECRET = data_config["twitter_api"]["consumer_secret"]
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
@ -51,22 +80,28 @@ state_b4 = 1
while True:
if GPIO.input(12) == GPIO.HIGH:
#print("button was pushed:")
if testmode != True:
if GPIO.input(12) == GPIO.HIGH:
#print("button was pushed:")
state = 1
state = 1
if GPIO.input(12) == GPIO.LOW:
#print("button was not pushed:")
state = 0
if GPIO.input(12) == GPIO.LOW:
#print("button was not pushed:")
state = 0
else:
# just toggles the states for test mode!
if state == 0:
state = 1
else:
state = 0
time_now = time.time()
file_status_path = dir_path + os.sep + "status.json"
#print(file_status_path)
if state == 1 and state_b4 == 0:
@ -77,22 +112,41 @@ while True:
number = len(data_status["opening_text"])
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)
#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")
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")
if state == 0 and state_b4 == 1:
#print("closed")
@ -103,22 +157,39 @@ while True:
number = len(data_status["closing_text"])
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') + "]"
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 + "]"
print("Text:", text)
#text = "#Krautspace was closed. 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")
print("twitter text:", text)
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")
state_b4 = state
time.sleep(10)

View file

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

View file

@ -1,282 +1,337 @@
{
"name": "Krautspace space status",
"text_mode" : {"universal" : 0, "twitter" : 1, "mastodon" : 2},
"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": [
{
"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": [
{
"text": "people in #krautspace want their privacy."
"text": {"universal" : "people in #krautspace want their privacy."}
}
]
}