From 12474ad114ed0c86cc34cd0f68e96512dd821f28 Mon Sep 17 00:00:00 2001 From: alpcentaur Date: Wed, 10 Jul 2024 22:22:00 +0200 Subject: [PATCH] added addfdbs --- fdb_spider_interface.py | 74 +- fdb_spider_interface.py.save | 832 +++++ interface.log | 1297 ++++++++ new_message_file.txt | 2 +- roomhistories/657c97e5ebb39dd248d38d51.txt | 18 + roomhistories/65818946ebb39dd248d44c69.txt | 932 ++++++ roomhistories/65cb6a3954f8a2bb1a3a8f43.txt | 9 + roomhistories/65cb86d354f8a2bb1a3a9c6c.txt | 3424 ++++++++++++++++++++ roomhistories/65dcc11f54f8a2bb1a425d57.txt | 1078 ++++++ roomhistories/662ba9342e91ccc9afcc8dd1.txt | 0 10 files changed, 7653 insertions(+), 13 deletions(-) create mode 100644 fdb_spider_interface.py.save create mode 100644 interface.log create mode 100644 roomhistories/662ba9342e91ccc9afcc8dd1.txt diff --git a/fdb_spider_interface.py b/fdb_spider_interface.py index 5e46697..551d127 100644 --- a/fdb_spider_interface.py +++ b/fdb_spider_interface.py @@ -87,7 +87,7 @@ if __name__ == '__main__': import datetime from datetime import timedelta while True: - time.sleep(2) + time.sleep(3) #already_updated = True now = datetime.datetime.now() @@ -214,7 +214,6 @@ if __name__ == '__main__': text_data_lower = ['none'] tag_list = [] for tag in eval(room_tags): - if '_' in tag: ntags = tag.split('_') ntags_length = len(ntags) @@ -402,6 +401,45 @@ if __name__ == '__main__': print('error opening, original error is:', e) answer = "The room_id to update the tags was not found" + if user_input_list[0] == 'addfdbs': + print('oi') + print(user_input_list) + try: + room_name_add_fdbs = user_input_list[1] + print(room_name_add_fdbs) + room_id_add_fdbs = name2id(room_name_add_fdbs) + print(room_name_add_fdbs) + print(room_id_add_fdbs) + except Exception as e: + room_id_add_fdbs = 'NONE' + print(e, 'did not work') + try: + new_fdbs = user_input_list[2] + except: + new_fdbs = 'NONE' + try: + thirdarg = user_input_list[3] + except: + thirdarg = 'NONE' + if room_id_add_fdbs != 'NONE' and len(new_fdbs) >= 1 and thirdarg == 'NONE': + try: + room_file_add_fdbs = open('rooms/' + room_id_add_fdbs + '.txt', 'r') + room_info_raw = room_file_add_fdbs.read() + room_file_add_fdbs.close() + room_info = room_info_raw.split('§%§%') + fdb_list = eval(room_info[-3]) + for fdb in eval(user_input_list[2]): + if fdb not in fdb_list: + fdb_list.append(fdb) + room_file_add_fdbs = open('rooms/' + room_id_add_fdbs + '.txt', 'w') + room_file_add_fdbs.write( str(room_info[0]) + '§%§%' + str(fdb_list) + '§%§%' + str(room_info[2]) + '§%§%' + str(room_info[-1])) + room_file_add_fdbs.close() + answer = 'the updated fdb list is' + str(fdb_list) + + except Exception as e: + print('error opening, original error is:', e) + answer = "The room_id to update the fdbs was not found" + if user_input_list[0] == 'printtags': try: room_name_add_tags = user_input_list[1] @@ -521,7 +559,7 @@ if __name__ == '__main__': for room in room_list: if room[0] == room_to_update or room_to_update == 'all': room_was_found = True - print(room[0]) + print('oioioiOI', room[0]) room_fdbs = room[2] room_tags = room[3] room_deadline_days = room[4] @@ -557,7 +595,7 @@ if __name__ == '__main__': # print(message) for room_fdb in eval(room_fdbs): - #print('room_fdb',room_fdb, 'fdb_list',fdb_list) + print('room_fdb',room_fdb, 'fdb_list',fdb_list) try: iteration_var_list = config.get(room_fdb).get("entry-list").get("iteration-var-list") except Exception as e: @@ -576,9 +614,10 @@ if __name__ == '__main__': for i in eval(iteration_var_list): try: - #print(room_fdb, i) + print('roomfdb and i', room_fdb, i) #print('oioioioioiOIOIOI') for key in data[room_fdb][i]: + #print('the fdb', roomfdb, ' is getting searched') contains_tag = False try: period_data_formatted = dateutil.parser.parse(data[room_fdb][i][key]["period"]) @@ -590,12 +629,18 @@ if __name__ == '__main__': try: text_data_lower = [word.lower() for word in data[room_fdb][i][key]["text"].split(' ')] except Exception as e: - print(e) + #print(e, 'there was an exception converting to lowercase') + #try: + # print(data[room_fdb][i][key]["text"].split(' ')) + #except Exception as e: + # print(e, 'even printing the data was not possible') + text_data_lower = ['NONE'] #print('got until ONE') tag_list = [] + #print(str(name_data_lower) + ' is getting searched..') for tag in eval(room_tags): - #print('got until TWO') + #print('the tag ' + tag + ' is getting searched') if '_' in tag: ntags = tag.split('_') ntags_length = len(ntags) @@ -608,7 +653,7 @@ if __name__ == '__main__': if ntag.lower() in nword: if nword != '': ntag_count += 1 - #print(ntag, ' ntag was found') + #print(ntag, ' ntag was found in name') break #print('ntag count is ', ntag_count, 'ntag_length is ', ntags_length) if ntag_count == ntags_length: @@ -621,6 +666,7 @@ if __name__ == '__main__': if ntag.lower() in iword: if iword != '': ntag_count += 1 + #print(ntag, ' ntag was found in info') break if ntag_count == ntags_length: contains_tag = True @@ -645,6 +691,8 @@ if __name__ == '__main__': for nword in name_data_lower: #print(tag.lower(), nword) if tag.lower() in nword: + if tag == 'senegal': + print(tag.lower(), nword) #print('goooot heeeere') #print(nword) if nword != '': @@ -672,7 +720,7 @@ if __name__ == '__main__': tag_list.append(tag + ' in text') #print('got until THREE') if contains_tag == True: - #print('------------------') + print('------------------> the tag list is', str(tag_list)) #print(name_data_lower, info_data_lower, text_data_lower) try: url = data[room_fdb][i][key]["domain"] @@ -684,13 +732,15 @@ if __name__ == '__main__': entry_message = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' + '\n' + data[room_fdb][i][key]["info"] + '\n' + 'The period of the entry is:' + str(period_data_formatted) + '\n' + str(tag_list) entry_message_identifier = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' - + print(entry_message , ' is the entrymessage that will be sent to the room') message_was_already_there = False for message in room_history_list: #print('message', message[:-1], 'identifier', entry_message_identifier) - if url in message[:-1] or data[room_fdb][i][key]["name"] in message: + #if url in message[:-1] or data[room_fdb][i][key]["name"] in message: + if data[room_fdb][i][key]["name"] in message: message_was_already_there = True + print('message_was_already_there set to true') now = datetime.datetime.now() now_formatted = dateutil.parser.parse(str(now)) @@ -700,7 +750,7 @@ if __name__ == '__main__': except Exception as e: days_to_check = int(room_deadline_days) - 1 print('calc of delta did now work, original error is:', e) - #print('delta', delta, int(delta.days)) + print('delta', days_to_check, int(room_deadline_days)) if message_was_already_there == False and int(days_to_check) > int(room_deadline_days): diff --git a/fdb_spider_interface.py.save b/fdb_spider_interface.py.save new file mode 100644 index 0000000..44e7fb7 --- /dev/null +++ b/fdb_spider_interface.py.save @@ -0,0 +1,832 @@ +import os +from rocketchat.api import RocketChatAPI +import configparser +import json +import requests +import yaml +import dateutil.parser +import subprocess + +config = configparser.ConfigParser() +config.read('config.ini') + +botname = config['Chat']['username'] +botpassword = config['Chat']['password'] +server_url = config['Chat']['URL'] +room_id = config['Chat']['room_id'] +bot_user_id = config['Chat']['bot_user_id'] +spider_directory = config['Spider']['spider_directory'] + +# here comes the functions to talk to gpt + + +# For local streaming, the websockets are hosted without ssl - http:// +HOST = 'localhost:5000' +URI = f'http://{HOST}/api/v1/chat' +#URI = f'http://{HOST}/api' + +# http://192.168.9.197:5000/api/v1/chat + +# For reverse-proxied streaming, the remote will likely host with ssl - https:// +# URI = 'https://your-uri-here.trycloudflare.com/api/v1/chat' + + +if __name__ == '__main__': + + + + + def name2id(name): + # get all the rooms + import os + + room_list = [] + rooms = os.listdir('rooms') + for room in rooms: + room_file = open('rooms/' + room, 'r') + room_file_raw = room_file.read() + room_file.close() + + room_file_list = room_file_raw.split('§%§%') + room_list.append([room[:-4], room_file_list[0], room_file_list[1], room_file_list[2], room_file_list[3]]) + + outputid = 'NONE' + for roo in room_list: + if roo[1] == name: + outputid = roo[0] + return str(outputid) + + + + api = RocketChatAPI(settings={'username': botname, 'password': botpassword, 'domain': server_url}) + + + # api.send_message('Ciao, I am the fdb-spider', room_id) + + #myinfo = api.get_my_info() + + #room_history = api.get_private_room_history(room_id) + + #print(room_history['messages'][0]['msg']) + + # print(myinfo) + rooms = api.get_private_rooms() + + print('blubidab oioioi', rooms) + + # api.send_message('Ole', room_id) + + n = 0 + + import time + import schedule + + #change to False here, if you want to have the update run at server start + already_updated = True + start = True + import datetime + from datetime import timedelta + while True: + time.sleep(3) + #already_updated = True + now = datetime.datetime.now() + + current_hour = now.strftime("%H") + #print(current_hour) + + # run variable update and creation at start + if start == True: + room_list = [] + rooms = os.listdir('rooms') + for room in rooms: + room_file = open('rooms/' + room, 'r') + room_file_raw = room_file.read() + room_file.close() + + + room_file_list = room_file_raw.split('§%§%') + #print(room_list) + #print(room) + #print(room_file_list) + room_list.append([room[:-4], room_file_list[0], room_file_list[1], room_file_list[2]]) + + with open(spider_directory + '/spiders/config.yaml' , "r") as stream: + try: + config = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + fdb_list = [] + #print(config) + + for key in config: + fdb_list.append(key) + + start = False + + + + + + if int(current_hour) > 11: + aftersix = True + + if int(current_hour) <= 11: + aftersix = False + already_updated = False + + if aftersix == True and already_updated == False and aftersix == False: + + room_list = [] + rooms = os.listdir('rooms') + for room in rooms: + room_file = open('rooms/' + room, 'r') + room_file_raw = room_file.read() + room_file.close() + + room_file_list = room_file_raw.split('§%§%') + room_list.append([room[:-4], room_file_list[0], room_file_list[1], room_file_list[2], room_file_list[3]]) + + with open(spider_directory + '/spiders/config.yaml' , "r") as stream: + try: + config = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + fdb_list = [] + #print(config) + + for key in config: + fdb_list.append(key) + + + + data = dict({}) + for room in room_list: + #print(room[0]) + room_fdbs = room[2] + room_tags = room[3] + room_deadline_days = room[4] + #subprocess.run(["python", spider_directory + 'main.py', fdbs]) + room_history_list = [] + try: + room_history_file = open('roomhistories/' + room[0] + '.txt', 'x') + room_history_file.close() + except: + print('reading from roomhistory') + with open('roomhistories/' + room[0] + '.txt') as room_history_file: + lines = room_history_file.readlines() + for line in lines: + room_history_list.append(line) + + #date = datetime.datetime.now() - timedelta(days=3) + + #room_history = api.get_room_history(room[0], oldest=date, latest=datetime.datetime.now()) + + for room_fdb in eval(room_fdbs): + #print('room_fdb',room_fdb, 'fdb_list',fdb_list) + try: + iteration_var_list = config.get(room_fdb).get("entry-list").get("iteration-var-list") + except Exception as e: + print('there was an error with the entry-list parameter in the config regarding the fdb ', room_fdb) + if room_fdb in fdb_list and room_fdb not in [key for key in data]: + iterdict = {} + for i in eval(iteration_var_list): + f = open(spider_directory + "/spiders/output/" + room_fdb + str(i) + "entryList.txt") + text = f.read() + + dictionary_entry_list = eval(text) + + iterdict[i] = dictionary_entry_list + + data[room_fdb] = iterdict + + for i in eval(iteration_var_list): + try: + #print(room_fdb, i) + for key in data[room_fdb][i]: + contains_tag = False + period_data_formatted = dateutil.parser.parse(data[room_fdb][i][key]["period"]) + name_data_lower = [word.lower() for word in data[room_fdb][i][key]["name"].split(' ')] + info_data_lower = [word.lower() for word in data[room_fdb][i][key]["info"].split(' ')] + try: + text_data_lower = [word.lower() for word in data[room_fdb][i][key]["text"].split(' ')] + except Exception as e: + print(e) + text_data_lower = ['none'] + tag_list = [] + for tag in eval(room_tags): + + if '_' in tag: + ntags = tag.split('_') + ntags_length = len(ntags) + + ntag_count = 0 + for nword in name_data_lower: + for ntag in ntags: + if ntag.lower() in nword: + ntag_count += 1 + if ntag_count == ntags_length: + contains_tag = True + tag_list.append(tag + ' in name') + + ntag_count = 0 + for iword in info_data_lower: + for ntag in ntags: + if ntag.lower() in iword: + ntag_count += 1 + if ntag_count == ntags_length: + contains_tag = True + tag_list.append(tag + ' in info') + + ntag_count = 0 + for tword in text_data_lower: + ntag_count = 0 + for ntag in ntags: + if ntag.lower() in tword: + ntag_count += 1 + if ntag_count == ntags_length: + contains_tag = True + tag_list.append(tag + ' in text') + + else: + for nword in name_data_lower: + if tag.lower() in nword: + contains_tag = True + tag_list.append(tag + ' in name') + for iword in info_data_lower: + if tag.lower() in iword: + contains_tag = True + tag_list.append(tag + ' in info') + for tword in text_data_lower: + if tag.lower() in tword: + contains_tag = True + tag_list.append(tag + ' in text') + + if contains_tag == True: + try: + url = data[room_fdb][i][key]["domain"] + except: + url = data[room_fdb][i][key]["link"] + + entry_message = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' + '\n' + data[room_fdb][i][key]["info"] + '\n' + 'The period of the entry is:' + str(period_data_formatted) + '\n' + str(tag_list) + entry_message_identifier = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' + + message_was_already_there = False + for message in room_history_list: + #print('message that gets checked with identifier ', message[:-1]) + #print('the entry message identifier is:', entry_message_identifier) + if url in message[:-1] or data[room_fdb][i][key]["name"] in message: + message_was_already_there = True + + now = datetime.datetime.now() + now_formatted = dateutil.parser.parse(str(now)) + delta = period_data_formatted - now_formatted + + + if message_was_already_there == False and delta.days < int(room_deadline_days): + #print('went into already there false') + api.send_message(entry_message, room[0]) + #print('before writing') + try: + room_file = open('roomhistories/' + room[0] + '.txt', 'x') + room_file.close() + except: + print('appending to roomhistory') + room_file = open('roomhistories/' + room[0] + '.txt', 'a') + room_file.write(entry_message_identifier + '\n') + room_file.close() + print('after writing') + + except Exception as e: + print("probably i was not there in last page, original error is:", e) + + + + + #print('data',data['giz'][2],'data') + already_updated = True + + + + + + # if datestime.split over etc and updated= true etc + + + n += 1 + if n%100 == 0: + print(n) + + try: + #print('getting the room history') + date = datetime.datetime.now() - timedelta(days=3) + room_history = api.get_private_room_history(room_id, oldest=date) + except Exception as e: + time.sleep(10) + api = RocketChatAPI(settings={'username': botname, 'password': botpassword, 'domain': server_url}) + time.sleep(5) + room_history = api.get_private_room_history(room_id, oldest=date) + print('got a connection error, original message is:',e) + + + + messages_list = [] + + + for message in room_history['messages']: + messages_list.append(message) + + if len(messages_list) >= 1: + + #print('blub', messages_list) + + latest_message_user_id = messages_list[0]['u']['_id'] + + latest_message_user_username = messages_list[0]['u']['username'] + + latest_message = messages_list[0]['msg'] + + latest_message_id = messages_list[0]['_id'] + + new_message_file = open('new_message_file.txt', 'r') + new_message = new_message_file.read() + new_message_file.close() + + new_message_list = new_message.split('§%§%') + #print(latest_message, new_message_list[0]) + + if new_message_list[0] != latest_message and new_message_list[1] != latest_message_id and latest_message_user_id != bot_user_id: + + answer = 'Ich habe kein Kommando erhalten.' + + new_message_file = open('new_message_file.txt', 'w') + new_message_file.write(latest_message + '§%§%' + latest_message_id) + new_message_file.close() + + + user_input = latest_message + user_input_list = user_input.split(' ') + + + + if user_input_list[0] == 'addtags': + try: + room_name_add_tags = user_input_list[1] + room_id_add_tags = name2id(room_name_add_tags) + #print(room_id_add_tags) + except: + room_id_add_tags = 'NONE' + try: + new_tags = user_input_list[2] + except: + new_tags = 'NONE' + try: + thirdarg = user_input_list[3] + except: + thirdarg = 'NONE' + if room_id_add_tags != 'NONE' and len(new_tags) >= 1 and thirdarg == 'NONE': + try: + room_file_add_tags = open('rooms/' + room_id_add_tags + '.txt', 'r') + room_info_raw = room_file_add_tags.read() + room_file_add_tags.close() + room_info = room_info_raw.split('§%§%') + tag_list = eval(room_info[-2]) + for tag in eval(user_input_list[2]): + if tag not in tag_list: + tag_list.append(tag) + room_file_add_tags = open('rooms/' + room_id_add_tags + '.txt', 'w') + room_file_add_tags.write( str(room_info[0]) + '§%§%' + str(room_info[1]) + '§%§%' + str(tag_list) + '§%§%' + str(room_info[-1])) + room_file_add_tags.close() + answer = 'the updated tag list is' + str(tag_list) + + except Exception as e: + print('error opening, original error is:', e) + answer = "The room_id to update the tags was not found" + + if user_input_list[0] == 'printtags': + try: + room_name_add_tags = user_input_list[1] + room_id_to_print_tags = name2id(room_name_add_tags) + except: + answer = "after the command printtags, the second argument has to be the room name.. use printrooms and look up the id of the room you want to print the tags" + room_id_to_print_tags = 'NONE' + if room_id_to_print_tags != 'NONE': + try: + + room_file = open('rooms/' + room_id_to_print_tags + '.txt', 'r') + room_info_raw = room_file.read() + room_file.close() + room_info = room_info_raw.split('§%§%') + tag_list = eval(room_info[-2]) + answer = tag_list + + + + except Exception as e: + print('error opening, original error is:', e) + answer = "The room_id to get the tags was not found" + + + if user_input_list[0] == 'printcommands': + answer = """ + To print all available rooms and their configuration, use + command : `printrooms` + ----------------------------------------------------------------------------------------- + To print all available fdbs, use + command : `printfdbs` + ----------------------------------------------------------------------------------------- + To update all rooms use + command : `updaterooms all` + ----------------------------------------------------------------------------------------- + To update one room use the name of the room from the output of printrooms: + command : `updaterooms ` + example : `updaterooms test42` + ----------------------------------------------------------------------------------------- + To create a room use following command, but be sure to **not have spaces** in your lists, + as a space indicates a new command argument: + command : `createroom ` + example : `createroom room-test-1 ['giz','fdb2'] ['tag1','tag2','tag3'] 7` + ----------------------------------------------------------------------------------------- + To delete a room use + command : `deleteroom ` + example : `deleteroom test42` + ----------------------------------------------------------------------------------------- + To print the tags of a room use + command : `printtags ` + example : `printtags test42` + ----------------------------------------------------------------------------------------- + To add tags to the existing tags use + command : `addtags ` + example : `addtags test42 ['tag1','tag2','tag3']` +""" + + + if user_input_list[0] == 'printrooms': + + room_was_found = False + # get all the rooms + import os + + room_list = [] + rooms = os.listdir('rooms') + for room in rooms: + room_file = open('rooms/' + room, 'r') + room_file_raw = room_file.read() + room_file.close() + + room_file_list = room_file_raw.split('§%§%') + room_list.append([room[:-4], room_file_list[0], room_file_list[1], room_file_list[2], room_file_list[3]]) + + room_list_string = '' + for room in room_list: + room_list_string += str(room) + '\n' + '------------------------------------------------------------------------------' + '\n' + + #print(room_list) + answer = room_list_string + + if user_input_list[0] == 'updaterooms': + try: + if len(user_input_list[1]) >= 1: + room_name_to_update = user_input_list[1] + room_to_update = name2id(room_name_to_update) + #room_to_update = user_input_list[1] + except Exception as e: + room_to_update = 'NONE' + room_list = [] + rooms = os.listdir('rooms') + for room in rooms: + room_file = open('rooms/' + room, 'r') + room_file_raw = room_file.read() + room_file.close() + + room_file_list = room_file_raw.split('§%§%') + room_list.append([room[:-4], room_file_list[0], room_file_list[1], room_file_list[2], room_file_list[3]]) + + with open(spider_directory + '/spiders/config.yaml' , "r") as stream: + try: + config = yaml.safe_load(stream) + except yaml.YAMLError as exc: + print(exc) + fdb_list = [] + #print(config) + + for key in config: + fdb_list.append(key) + + + + + answer = "Ich update die Rooms auf Basis der Daten von heute morgen um 6 Uhr.." + + data = dict({}) + for room in room_list: + if room[0] == room_to_update or room_to_update == 'all': + room_was_found = True + print('oioioiOI', room[0]) + room_fdbs = room[2] + room_tags = room[3] + room_deadline_days = room[4] + # not running get_rooms because disfunctional + + #subprocess.run(["python", spider_directory + 'main.py', fdbs]) + + #myinfo = api.get_room_info(room[0]) + #print(myinfo) + #roomid = "'657cbeccebb39dd248d38ec3'" + + #roomoioioi = api.get_user_info(bot_user_id) + + #print(roomoioioi) + + #room_history_updateroom = api.get_private_room_history(room[0]) + + # reading from txt state history instead + + try: + room_history_file = open('roomhistories/' + room[0] + '.txt', 'x') + room_history_file.close() + except: + print('reading from roomhistory which is already there') + + room_history_list = [] + with open('roomhistories/' + room[0] + '.txt') as room_history_file: + lines = room_history_file.readlines() + for line in lines: + room_history_list.append(line) + # + #for message in room_history_raw: + # print(message) + + for room_fdb in eval(room_fdbs): + print('room_fdb',room_fdb, 'fdb_list',fdb_list) + try: + iteration_var_list = config.get(room_fdb).get("entry-list").get("iteration-var-list") + except Exception as e: + print('there was an error with the entry-list parameter in the config regarding the fdb ', room_fdb) + if room_fdb in fdb_list and room_fdb not in [key for key in data]: + iterdict = {} + for i in eval(iteration_var_list): + f = open(spider_directory + "/spiders/output/" + room_fdb + str(i) + "entryList.txt") + text = f.read() + + dictionary_entry_list = eval(text) + + iterdict[i] = dictionary_entry_list + + data[room_fdb] = iterdict + + for i in eval(iteration_var_list): + try: + print('roomfdb and i', room_fdb, i) + #print('oioioioioiOIOIOI') + for key in data[room_fdb][i]: + #print('the fdb', roomfdb, ' is getting searched') + contains_tag = False + try: + period_data_formatted = dateutil.parser.parse(data[room_fdb][i][key]["period"]) + except Exception as e: + period_data_formatted = 'NONE' + #print('getting the period did not work for', room_fdb, i, key, ' ori err is:', e) + name_data_lower = [word.lower() for word in data[room_fdb][i][key]["name"].split(' ')] + info_data_lower = [word.lower() for word in data[room_fdb][i][key]["info"].split(' ')] + try: + text_data_lower = [word.lower() for word in data[room_fdb][i][key]["text"].split(' ')] + except Exception as e: + #print(e, 'there was an exception converting to lowercase') + #try: + # print(data[room_fdb][i][key]["text"].split(' ')) + #except Exception as e: + # print(e, 'even printing the data was not possible') + + text_data_lower = ['NONE'] + #print('got until ONE') + tag_list = [] + #print(str(name_data_lower) + ' is getting searched..') + for tag in eval(room_tags): + #print('the tag ' + tag + ' is getting searched') + if '_' in tag: + ntags = tag.split('_') + ntags_length = len(ntags) + #print(ntags) + ntag_count = 0 + for ntag in ntags: + #print('searching for ntag: ', ntag) + + for nword in name_data_lower: + if ntag.lower() in nword: + if nword != '': + ntag_count += 1 + #print(ntag, ' ntag was found in name') + break + #print('ntag count is ', ntag_count, 'ntag_length is ', ntags_length) + if ntag_count == ntags_length: + contains_tag = True + tag_list.append('_'.join(ntags) + ' in name') + + ntag_count = 0 + for ntag in ntags: + for iword in info_data_lower: + if ntag.lower() in iword: + if iword != '': + ntag_count += 1 + #print(ntag, ' ntag was found in info') + break + if ntag_count == ntags_length: + contains_tag = True + tag_list.append('_'.join(ntags) + ' in info') + + ntag_count = 0 + for ntag in ntags: + for tword in text_data_lower: + if ntag.lower() in tword: + if tword != '': + ntag_count += 1 + break + if ntag_count == ntags_length: + contains_tag = True + tag_list.append('_'.join(ntags) + ' in text') + + + else: + #print('------------------') + #print(name_data_lower, info_data_lower, text_data_lower, room[0], room_tags) + nword_contains_tag = False + for nword in name_data_lower: + #print(tag.lower(), nword) + if tag.lower() in nword: + if tag == 'senegal': + print(tag.lower(), nword) + #print('goooot heeeere') + #print(nword) + if nword != '': + #print('goot behind nword check') + nword_contains_tag = True + if nword_contains_tag == True: + contains_tag = True + tag_list.append(tag + ' in name') + iword_contains_tag = False + for iword in info_data_lower: + if tag.lower() in iword: + if iword != '': + iword_contains_tag = True + #print('oioiOIOIOIoioioiOIOIword', iword) + if iword_contains_tag == True: + contains_tag = True + tag_list.append(tag + ' in info') + tword_contains_tag = False + for tword in text_data_lower: + if tag.lower() in tword: + if tword != '': + tword_contains_tag = True + if tword_contains_tag == True: + contains_tag = True + tag_list.append(tag + ' in text') + #print('got until THREE') + if contains_tag == True: + print('------------------> the tag list is', str(tag_list)) + #print(name_data_lower, info_data_lower, text_data_lower) + try: + url = data[room_fdb][i][key]["domain"] + except: + url = data[room_fdb][i][key]["link"] + + #print('101110001101010010010101000111') + + entry_message = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' + '\n' + data[room_fdb][i][key]["info"] + '\n' + 'The period of the entry is:' + str(period_data_formatted) + '\n' + str(tag_list) + entry_message_identifier = '<' + url + '|' + data[room_fdb][i][key]["name"]+ '>' + + print(entry_message , ' is the entrymessage that will be sent to the room') + message_was_already_there = False + for message in room_history_list: + #print('message', message[:-1], 'identifier', entry_message_identifier) + + #if url in message[:-1] or data[room_fdb][i][key]["name"] in message: + if data[room_fdb][i][key]["name"] in message: + message_was_already_there = True + print('message_was_already_there set to true') + + now = datetime.datetime.now() + now_formatted = dateutil.parser.parse(str(now)) + try: + delta = period_data_formatted - now_formatted + days_to_check = delta.days + except Exception as e: + days_to_check = int(room_deadline_days) - 1 + print('calc of delta did now work, original error is:', e) + print('delta', days_to_check, int(room_deadline_days)) + if message_was_already_there == False and int(days_to_check) > int(room_deadline_days): + + + + api.send_message(entry_message, room[0]) + + + try: + room_file = open('roomhistories/' + room[0] + '.txt', 'x') + room_file.close() + except: + print('appending to roomhistory') + + room_file = open('roomhistories/' + room[0] + '.txt', 'a') + room_file.write(entry_message_identifier + '\n') + room_file.close() + + + except Exception as e: + print("probably i was not there in last page, original error is:", e) + if room_to_update == 'all': + answer = 'I am updating all rooms based on the data in fdb-spider/spiders/output..' + if room_was_found == False or room_to_update == 'NONE': + answer = 'The room you specified does not exist, or there are no rooms configured, try printcommands or contact the administrator' + if room_was_found == True and room_to_update != 'NONE': + answer = "I am updating the specified room based on the data in fdb-spider/spiders/output.." + + + if user_input_list[0] == 'printfdbs': + + answer = str(fdb_list) + + if len(user_input_list) > 1: + answer = 'Die Syntax zum Ausgeben der konfigurierten Förderdatenbanken hat einen Fehler. Versuche es erneut, mit -> printfdbs' + + if user_input_list[0] == 'deleteroom': + try: + room_name_del = user_input_list[1] + room_id_del = name2id(room_name_del) + #room_id_del = user_input_list[1] + except Exception as e: + room_id_del = 'NONE' + print(e) + os.remove("rooms/" + room_id_del + ".txt") + + answer = 'deleting the requested room..' + + if len(user_input_list) > 2: + answer = 'Die Syntax zum Löschen eines Raumes hat einen Fehler. Versuche es erneut, nach dem Muster -> deleteroom ' + + + if user_input_list[0] == 'createroom': + try: + room_name_from_input = user_input_list[1] + room_id_check = name2id(room_name_from_input) + if room_id_check == 'NONE': + room_name = user_input_list[1] + else: + if len(room_id_check) > 8: + room_name = 'NONE' + + except Exception as e: + room_name = 'NONE' + print(e) + try: + databases = user_input_list[2] + except Exception as e: + databases = 'NONE' + print(e) + try: + filters = user_input_list[3] + except Exception as e: + filters = 'NONE' + print(e) + try: + days_to_deadline = user_input_list[4] + except Exception as e: + days_to_deadline = 'NONE' + print(e) + + + if len(user_input_list) > 4: + answer = 'Die Syntax hat einen Fehler. Wahrscheinlich sind Leerzeichen in den Listen. Leerzeichen definieren die Syntax. Versuche es erneut, nach dem Muster -> createroom room1 ["fdb1","fdb2"] ["tag1","tag2"]' + + if room_name == 'NONE' or databases == 'NONE' or filters == 'NONE' or days_to_deadline == 'NONE': + answer = 'Um einen Raum zu erstellen, in dem neueste Einträge geteilt werden, lautet die Syntax: createroom \n Dabei darf der Name noch nicht vergeben sein. Im Zweifel einfach nochmal printrooms ausgeben lassen..' + + else: + try: + new_room = api.create_public_room(room_name, + members=[latest_message_user_username], + read_only=False) + new_room_id = new_room['channel']['_id'] + room_file = open('rooms/' + new_room_id + '.txt', 'w') + room_file.write( room_name + '§%§%' + databases + '§%§%' + filters + '§%§%' + days_to_deadline) + room_file.close() + answer = 'Der Command wurde übermittelt' + + except Exception as e: + print('it was not able to create the room, the original error message is:', e) + answer = 'There was an error creating the room, look up the logs.. the original error was: ' + str(e) + + + #print('oi', user_input) + api.send_message('Die Anfrage wird bearbeitet..', room_id) + + # here comes the code interacting with the spiders output json + + + + + #answer = 'the up to date entries are: oi Oi Oi!' + + api.send_message(answer, room_id) + time.sleep(1) + api.send_message('Ich bin wieder bereit für Konfigurationsinput : )', room_id) + time.sleep(1) diff --git a/interface.log b/interface.log new file mode 100644 index 0000000..cca0f37 --- /dev/null +++ b/interface.log @@ -0,0 +1,1297 @@ +blubidab oioioi [{'name': 'bliblablub', 'id': '657cbeccebb39dd248d38ec3'}, {'name': 'fdb-spider-terminal', 'id': '65677c99f324fb30d5de08bc'}] +100 +200 +300 +400 +500 +600 +700 +800 +900 +1000 +1100 +1200 +1300 +1400 +1500 +1600 +1700 +1800 +1900 +2000 +2100 +2200 +2300 +2400 +2500 +2600 +2700 +2800 +2900 +3000 +3100 +3200 +3300 +3400 +3500 +3600 +3700 +3800 +3900 +4000 +4100 +4200 +4300 +4400 +4500 +4600 +4700 +4800 +4900 +5000 +5100 +5200 +5300 +5400 +5500 +5600 +5700 +5800 +5900 +6000 +6100 +6200 +6300 +6400 +6500 +6600 +6700 +6800 +6900 +7000 +7100 +7200 +7300 +7400 +7500 +7600 +7700 +7800 +7900 +8000 +8100 +8200 +8300 +8400 +8500 +8600 +8700 +8800 +8900 +9000 +9100 +9200 +9300 +9400 +9500 +9600 +9700 +9800 +9900 +10000 +10100 +10200 +10300 +10400 +10500 +10600 +10700 +10800 +10900 +11000 +11100 +11200 +11300 +11400 +11500 +11600 +11700 +11800 +11900 +12000 +12100 +12200 +12300 +12400 +12500 +12600 +12700 +12800 +12900 +13000 +13100 +13200 +13300 +13400 +13500 +13600 +13700 +13800 +13900 +14000 +14100 +14200 +14300 +14400 +14500 +14600 +14700 +14800 +14900 +15000 +15100 +15200 +15300 +15400 +15500 +15600 +15700 +15800 +15900 +16000 +16100 +16200 +16300 +16400 +16500 +16600 +16700 +16800 +16900 +17000 +17100 +17200 +17300 +17400 +17500 +17600 +17700 +17800 +17900 +18000 +18100 +18200 +18300 +18400 +18500 +18600 +18700 +18800 +18900 +19000 +19100 +19200 +19300 +19400 +19500 +19600 +19700 +19800 +19900 +20000 +20100 +20200 +20300 +20400 +20500 +20600 +20700 +20800 +20900 +21000 +21100 +21200 +21300 +21400 +21500 +21600 +21700 +21800 +21900 +22000 +22100 +22200 +22300 +22400 +22500 +22600 +22700 +22800 +22900 +23000 +23100 +23200 +23300 +23400 +23500 +23600 +23700 +23800 +23900 +24000 +24100 +24200 +24300 +24400 +24500 +24600 +24700 +24800 +24900 +25000 +25100 +25200 +25300 +25400 +25500 +25600 +25700 +25800 +25900 +26000 +26100 +26200 +26300 +26400 +26500 +26600 +26700 +26800 +26900 +27000 +27100 +27200 +27300 +27400 +27500 +27600 +27700 +27800 +27900 +28000 +28100 +28200 +28300 +28400 +28500 +28600 +28700 +28800 +28900 +29000 +29100 +29200 +29300 +29400 +29500 +29600 +29700 +29800 +29900 +30000 +30100 +30200 +30300 +30400 +30500 +30600 +30700 +30800 +30900 +31000 +31100 +31200 +31300 +31400 +31500 +31600 +31700 +31800 +31900 +32000 +32100 +32200 +32300 +32400 +32500 +32600 +32700 +32800 +32900 +33000 +33100 +33200 +33300 +33400 +33500 +33600 +33700 +33800 +33900 +34000 +34100 +34200 +34300 +34400 +34500 +34600 +34700 +34800 +34900 +35000 +35100 +35200 +35300 +35400 +35500 +35600 +35700 +35800 +35900 +36000 +36100 +36200 +36300 +36400 +36500 +36600 +36700 +36800 +36900 +37000 +37100 +37200 +37300 +37400 +37500 +37600 +37700 +37800 +37900 +38000 +38100 +38200 +38300 +38400 +38500 +38600 +38700 +38800 +38900 +39000 +39100 +39200 +39300 +39400 +39500 +39600 +39700 +39800 +39900 +40000 +40100 +40200 +40300 +40400 +40500 +40600 +40700 +40800 +40900 +41000 +41100 +41200 +41300 +41400 +41500 +41600 +41700 +41800 +41900 +42000 +42100 +42200 +42300 +42400 +42500 +42600 +42700 +42800 +42900 +43000 +43100 +43200 +43300 +43400 +43500 +43600 +43700 +43800 +43900 +44000 +44100 +44200 +44300 +44400 +44500 +44600 +44700 +44800 +44900 +45000 +45100 +45200 +45300 +45400 +45500 +45600 +45700 +45800 +45900 +46000 +46100 +46200 +46300 +46400 +46500 +46600 +46700 +46800 +46900 +47000 +47100 +47200 +47300 +47400 +47500 +47600 +47700 +47800 +47900 +48000 +48100 +48200 +48300 +48400 +48500 +48600 +48700 +48800 +48900 +49000 +49100 +49200 +49300 +49400 +49500 +49600 +49700 +49800 +49900 +50000 +50100 +50200 +50300 +50400 +50500 +50600 +50700 +50800 +50900 +51000 +51100 +51200 +51300 +51400 +51500 +51600 +51700 +51800 +51900 +52000 +52100 +52200 +52300 +52400 +52500 +52600 +52700 +52800 +52900 +53000 +53100 +53200 +53300 +53400 +53500 +53600 +53700 +53800 +53900 +54000 +54100 +54200 +54300 +54400 +54500 +54600 +54700 +54800 +54900 +55000 +55100 +55200 +55300 +55400 +55500 +55600 +55700 +55800 +55900 +56000 +56100 +56200 +56300 +56400 +56500 +56600 +56700 +56800 +56900 +57000 +57100 +57200 +57300 +57400 +57500 +57600 +57700 +57800 +57900 +58000 +58100 +58200 +58300 +58400 +58500 +58600 +58700 +58800 +58900 +59000 +59100 +59200 +59300 +59400 +59500 +59600 +59700 +59800 +59900 +60000 +60100 +60200 +60300 +60400 +60500 +60600 +60700 +60800 +60900 +61000 +61100 +61200 +61300 +61400 +61500 +61600 +61700 +61800 +61900 +62000 +62100 +62200 +62300 +62400 +62500 +62600 +62700 +62800 +62900 +63000 +63100 +63200 +63300 +63400 +63500 +63600 +63700 +63800 +63900 +64000 +64100 +64200 +64300 +64400 +64500 +64600 +64700 +64800 +64900 +65000 +65100 +65200 +65300 +65400 +65500 +65600 +65700 +65800 +65900 +66000 +66100 +66200 +66300 +66400 +66500 +66600 +66700 +66800 +66900 +67000 +67100 +67200 +67300 +67400 +67500 +67600 +67700 +67800 +67900 +68000 +68100 +68200 +68300 +68400 +68500 +68600 +68700 +68800 +68900 +69000 +69100 +69200 +69300 +69400 +69500 +69600 +69700 +69800 +69900 +70000 +70100 +70200 +70300 +70400 +70500 +70600 +70700 +70800 +70900 +71000 +71100 +71200 +71300 +71400 +71500 +71600 +71700 +71800 +71900 +72000 +72100 +72200 +72300 +72400 +72500 +72600 +72700 +72800 +72900 +73000 +73100 +73200 +73300 +73400 +73500 +73600 +73700 +73800 +73900 +74000 +74100 +74200 +74300 +74400 +74500 +74600 +74700 +74800 +74900 +75000 +75100 +75200 +75300 +75400 +75500 +75600 +75700 +75800 +75900 +76000 +76100 +76200 +76300 +76400 +76500 +76600 +76700 +76800 +76900 +77000 +77100 +77200 +77300 +77400 +77500 +77600 +77700 +77800 +77900 +78000 +78100 +78200 +78300 +78400 +78500 +78600 +78700 +78800 +78900 +79000 +79100 +79200 +79300 +79400 +79500 +79600 +79700 +79800 +79900 +80000 +80100 +80200 +80300 +80400 +80500 +80600 +80700 +80800 +80900 +81000 +81100 +81200 +81300 +81400 +81500 +81600 +81700 +81800 +81900 +82000 +82100 +82200 +82300 +82400 +82500 +82600 +82700 +82800 +82900 +83000 +83100 +83200 +83300 +83400 +83500 +83600 +83700 +83800 +83900 +84000 +84100 +84200 +84300 +84400 +84500 +84600 +84700 +84800 +84900 +85000 +85100 +85200 +85300 +85400 +85500 +85600 +85700 +85800 +85900 +86000 +86100 +86200 +86300 +86400 +86500 +86600 +86700 +86800 +86900 +87000 +87100 +87200 +87300 +87400 +87500 +87600 +87700 +87800 +87900 +88000 +88100 +88200 +88300 +88400 +88500 +88600 +88700 +88800 +88900 +89000 +89100 +89200 +89300 +89400 +89500 +89600 +89700 +89800 +89900 +90000 +90100 +90200 +90300 +90400 +90500 +90600 +90700 +90800 +90900 +91000 +91100 +91200 +91300 +91400 +91500 +91600 +91700 +91800 +91900 +92000 +92100 +92200 +92300 +92400 +92500 +92600 +92700 +92800 +92900 +93000 +93100 +93200 +93300 +93400 +93500 +93600 +93700 +93800 +93900 +94000 +94100 +94200 +94300 +94400 +94500 +94600 +94700 +94800 +94900 +95000 +95100 +95200 +95300 +95400 +95500 +95600 +95700 +95800 +95900 +96000 +96100 +96200 +96300 +96400 +96500 +96600 +96700 +96800 +96900 +97000 +97100 +97200 +97300 +97400 +97500 +97600 +97700 +97800 +97900 +98000 +98100 +98200 +98300 +98400 +98500 +98600 +98700 +98800 +98900 +99000 +99100 +99200 +99300 +99400 +99500 +99600 +99700 +99800 +99900 +100000 +100100 +100200 +100300 +100400 +100500 +100600 +100700 +100800 +100900 +101000 +101100 +101200 +101300 +101400 +101500 +101600 +101700 +101800 +101900 +102000 +102100 +102200 +102300 +102400 +102500 +102600 +102700 +102800 +102900 +103000 +103100 +103200 +103300 +103400 +103500 +103600 +103700 +103800 +103900 +104000 +104100 +104200 +104300 +104400 +104500 +104600 +104700 +104800 +104900 +105000 +105100 +105200 +105300 +105400 +105500 +105600 +105700 +105800 +105900 +106000 +106100 +106200 +106300 +106400 +106500 +106600 +106700 +106800 +106900 +107000 +107100 +107200 +107300 +107400 +107500 +107600 +107700 +107800 +107900 +108000 +108100 +108200 +108300 +108400 +108500 +108600 +108700 +108800 +108900 +109000 +109100 +109200 +109300 +109400 +109500 +109600 +109700 +109800 +109900 +110000 +110100 +110200 +110300 +110400 +110500 +110600 +110700 +110800 +110900 +111000 +111100 +111200 +111300 +111400 +111500 +111600 +111700 +111800 +111900 +112000 +112100 +112200 +112300 +112400 +112500 +112600 +112700 +112800 +112900 +113000 +113100 +113200 +113300 +113400 +113500 +113600 +113700 +113800 +113900 +114000 +114100 +114200 +114300 +114400 +114500 +114600 +114700 +114800 +114900 +115000 +115100 +115200 +115300 +115400 +115500 +115600 +115700 +115800 +115900 +116000 +116100 +116200 +116300 +116400 +116500 +116600 +116700 +116800 +116900 +117000 +117100 +117200 +117300 +117400 +117500 +117600 +117700 +117800 +117900 +118000 +118100 +118200 +118300 +118400 +118500 +118600 +118700 +118800 +118900 +119000 +119100 +119200 +119300 +119400 +119500 +119600 +119700 +119800 +119900 +120000 +120100 +120200 +120300 +120400 +120500 +120600 +120700 +120800 +120900 +121000 +121100 +121200 +121300 +121400 +121500 +121600 +121700 +121800 +121900 +122000 +122100 +122200 +122300 +122400 +122500 +122600 +122700 +122800 +122900 +123000 +123100 +123200 +123300 +123400 +123500 +123600 +123700 +123800 +123900 +124000 +124100 +124200 +124300 +124400 +124500 +124600 +124700 +124800 +124900 +125000 +125100 +125200 +125300 +125400 +125500 +125600 +125700 +125800 +125900 +126000 +126100 +126200 +126300 +126400 +126500 +126600 +126700 +126800 +126900 +127000 +127100 +127200 +127300 +127400 +127500 +127600 +127700 +127800 +127900 +128000 +128100 +128200 +128300 +128400 +128500 +128600 +128700 +128800 +128900 +129000 +129100 +129200 +got a connection error, original message is: Expecting value: line 1 column 1 (char 0) +129300 +129400 +129500 diff --git a/new_message_file.txt b/new_message_file.txt index 13cce48..6edaa3f 100644 --- a/new_message_file.txt +++ b/new_message_file.txt @@ -1 +1 @@ -updaterooms spider-teo§%§%sXJpNp5yxQymiZhMq \ No newline at end of file +updaterooms test42§%§%zC6zTvFi6o7GFNCdk \ No newline at end of file diff --git a/roomhistories/657c97e5ebb39dd248d38d51.txt b/roomhistories/657c97e5ebb39dd248d38d51.txt index 45d620a..ae82808 100644 --- a/roomhistories/657c97e5ebb39dd248d38d51.txt +++ b/roomhistories/657c97e5ebb39dd248d38d51.txt @@ -20,3 +20,21 @@ + + + + + + + + + + + + diff --git a/roomhistories/65818946ebb39dd248d44c69.txt b/roomhistories/65818946ebb39dd248d44c69.txt index 229b54d..9894ffe 100644 --- a/roomhistories/65818946ebb39dd248d44c69.txt +++ b/roomhistories/65818946ebb39dd248d44c69.txt @@ -1190,3 +1190,935 @@ Leistungsbild: Technische Ausrüstung nach HOAI § 53 ff., AG 4, 5, HZ II, LPH + + += 75kW) + > + + + + + + + + + + += 75kW) + > + + + + + + + + + + + + += 75kW) + > + + + + + + + + + + + + + + + + + + + + + + + + + + += 75kW)> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/roomhistories/65cb6a3954f8a2bb1a3a8f43.txt b/roomhistories/65cb6a3954f8a2bb1a3a8f43.txt index 8b443b3..d9c9c84 100644 --- a/roomhistories/65cb6a3954f8a2bb1a3a8f43.txt +++ b/roomhistories/65cb6a3954f8a2bb1a3a8f43.txt @@ -1,3 +1,12 @@ + + + + + + + + + diff --git a/roomhistories/65cb86d354f8a2bb1a3a9c6c.txt b/roomhistories/65cb86d354f8a2bb1a3a9c6c.txt index 687519a..3e0a9e1 100644 --- a/roomhistories/65cb86d354f8a2bb1a3a9c6c.txt +++ b/roomhistories/65cb86d354f8a2bb1a3a9c6c.txt @@ -2782,3 +2782,3427 @@ Bereich Südwest + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/roomhistories/65dcc11f54f8a2bb1a425d57.txt b/roomhistories/65dcc11f54f8a2bb1a425d57.txt index bca6fec..322e2bc 100644 --- a/roomhistories/65dcc11f54f8a2bb1a425d57.txt +++ b/roomhistories/65dcc11f54f8a2bb1a425d57.txt @@ -546,3 +546,1081 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/roomhistories/662ba9342e91ccc9afcc8dd1.txt b/roomhistories/662ba9342e91ccc9afcc8dd1.txt new file mode 100644 index 0000000..e69de29