diff --git a/raspberry_pi/config.json b/raspberry_pi/config.json index e368e3c..4cc58b1 100644 --- a/raspberry_pi/config.json +++ b/raspberry_pi/config.json @@ -13,7 +13,7 @@ "token_secret": "fill in your data!" }, "mastodon_api": { - "caccess_token": "fill in your data!", + "access_token": "fill in your data!", "api_base_url": "fill in your data!" } } \ No newline at end of file diff --git a/raspberry_pi/main.py b/raspberry_pi/main.py index cccde65..165ab7b 100644 --- a/raspberry_pi/main.py +++ b/raspberry_pi/main.py @@ -1,6 +1,4 @@ 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) @@ -12,7 +10,9 @@ import time import urllib.request, json import datetime import tweepy +from mastodon import Mastodon import random +import time def textselect(min, max): @@ -35,15 +35,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,6 +57,7 @@ state_b4 = 1 while True: + if GPIO.input(12) == GPIO.HIGH: #print("button was pushed:") @@ -60,12 +67,10 @@ while True: if GPIO.input(12) == GPIO.LOW: #print("button was not pushed:") 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 +82,49 @@ 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) + + time_opening = datetime.datetime.fromtimestamp(int(time_now)).strftime('%Y-%m-%d %H:%M:%S') + texts = data_status["opening_text"][number]["text"] + + if texts.get("twitter") != None: + text = texts["twitter"] + " [OPEN:" + time_opening + "]" + + else: + text = texts["universal"] + " [OPEN:" + time_opening + "]" + + + print("twitter text:", text) + try: - api.update_status(text) + twitter_api.update_status(text) # same text as before cannot be posted! except: - print(time_now, "did not tweet closing status") - + print(time_now, "did not tweet opening status") + + + + 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) + + 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 closing status", time_closing) + + + if state == 0 and state_b4 == 1: #print("closed") @@ -103,22 +135,47 @@ 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 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) + print("Twitter Text:", text) + try: - api.update_status(text) + twitter_api.update_status(text) # same text as before cannot be posted! except: print(time_now, "did not tweet closing status") - + + + + 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) + + 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 closing status", time_closing) + + state_b4 = state time.sleep(10) \ No newline at end of file diff --git a/raspberry_pi/status.json b/raspberry_pi/status.json index 563454a..9a52faf 100644 --- a/raspberry_pi/status.json +++ b/raspberry_pi/status.json @@ -1,282 +1,310 @@ { "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 exepriments 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! Thank you community https://discord.gg/bJvqnhg, get the code @github https://github.com/tweepy/tweepy"} } ], "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@mastodon.social, @OSM_to & 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 an @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! Thank you community https://discord.gg/bJvqnhg, get the code @github https://github.com/tweepy/tweepy"} } ], "uncertain_text": [ { - "text": "people in #krautspace want their privacy." + "text": {"universal" : "people in #krautspace want their privacy."} } ] }