2023-11-29 19:43:28 +01:00
import os
from rocketchat . api import RocketChatAPI
import configparser
import json
import requests
2023-12-07 21:14:13 +01:00
import yaml
2024-01-22 14:22:24 +01:00
import dateutil . parser
2023-12-07 21:14:13 +01:00
import subprocess
2023-11-29 19:43:28 +01:00
config = configparser . ConfigParser ( )
2023-12-06 16:20:48 +01:00
config . read ( ' config.ini ' )
2023-11-29 19:43:28 +01:00
botname = config [ ' Chat ' ] [ ' username ' ]
botpassword = config [ ' Chat ' ] [ ' password ' ]
server_url = config [ ' Chat ' ] [ ' URL ' ]
room_id = config [ ' Chat ' ] [ ' room_id ' ]
2023-11-29 19:54:43 +01:00
bot_user_id = config [ ' Chat ' ] [ ' bot_user_id ' ]
2023-12-06 16:20:48 +01:00
spider_directory = config [ ' Spider ' ] [ ' spider_directory ' ]
2023-11-29 19:43:28 +01:00
# 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__ ' :
2024-02-06 15:28:54 +01:00
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 ]
2024-02-06 15:37:59 +01:00
return str ( outputid )
2024-02-06 15:28:54 +01:00
2023-11-29 19:43:28 +01:00
api = RocketChatAPI ( settings = { ' username ' : botname , ' password ' : botpassword , ' domain ' : server_url } )
2023-12-05 17:18:48 +01:00
2023-11-29 19:54:43 +01:00
# api.send_message('Ciao, I am the fdb-spider', room_id)
2023-11-29 19:43:28 +01:00
2023-12-15 14:48:30 +01:00
#myinfo = api.get_my_info()
2023-11-29 19:54:43 +01:00
2023-12-16 17:36:40 +01:00
#room_history = api.get_private_room_history(room_id)
#print(room_history['messages'][0]['msg'])
2023-12-05 17:18:48 +01:00
# print(myinfo)
2023-12-16 17:36:40 +01:00
rooms = api . get_private_rooms ( )
2023-11-29 19:43:28 +01:00
2023-12-16 17:36:40 +01:00
print ( ' blubidab oioioi ' , rooms )
2023-11-29 19:43:28 +01:00
# api.send_message('Ole', room_id)
n = 0
2023-12-05 17:18:48 +01:00
2023-11-29 19:43:28 +01:00
import time
2023-12-06 16:20:48 +01:00
import schedule
2023-12-05 17:18:48 +01:00
2023-12-13 14:49:58 +01:00
#change to False here, if you want to have the update run at server start
already_updated = True
start = True
2023-12-07 21:14:13 +01:00
import datetime
from datetime import timedelta
while True :
2024-07-10 22:22:00 +02:00
time . sleep ( 3 )
2023-12-07 21:14:13 +01:00
#already_updated = True
now = datetime . datetime . now ( )
current_hour = now . strftime ( " % H " )
2023-12-13 14:49:58 +01:00
#print(current_hour)
2023-12-05 17:18:48 +01:00
2023-12-13 14:49:58 +01:00
# 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 ( ' § % § % ' )
2024-01-30 14:47:48 +01:00
#print(room_list)
#print(room)
#print(room_file_list)
2023-12-13 14:49:58 +01:00
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 :
2023-12-07 21:14:13 +01:00
aftersix = True
2023-12-05 17:18:48 +01:00
2023-12-13 14:49:58 +01:00
if int ( current_hour ) < = 11 :
2023-12-07 21:14:13 +01:00
aftersix = False
2023-12-13 14:49:58 +01:00
already_updated = False
2023-12-06 16:20:48 +01:00
2024-01-16 18:58:19 +01:00
if aftersix == True and already_updated == False and aftersix == False :
2023-12-06 16:20:48 +01:00
2023-12-07 21:14:13 +01:00
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 ( )
2023-12-06 16:20:48 +01:00
2023-12-07 21:14:13 +01:00
room_file_list = room_file_raw . split ( ' § % § % ' )
2024-01-22 16:05:21 +01:00
room_list . append ( [ room [ : - 4 ] , room_file_list [ 0 ] , room_file_list [ 1 ] , room_file_list [ 2 ] , room_file_list [ 3 ] ] )
2023-12-06 16:20:48 +01:00
2023-12-07 21:14:13 +01:00
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)
2023-12-05 17:18:48 +01:00
2023-12-07 21:14:13 +01:00
for key in config :
fdb_list . append ( key )
2023-12-05 17:18:48 +01:00
2023-12-07 21:14:13 +01:00
data = dict ( { } )
for room in room_list :
2024-01-30 14:47:48 +01:00
#print(room[0])
2023-12-07 21:14:13 +01:00
room_fdbs = room [ 2 ]
2023-12-08 14:33:01 +01:00
room_tags = room [ 3 ]
2024-01-22 16:05:21 +01:00
room_deadline_days = room [ 4 ]
2023-12-07 21:14:13 +01:00
#subprocess.run(["python", spider_directory + 'main.py', fdbs])
2023-12-18 22:17:23 +01:00
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 )
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
#date = datetime.datetime.now() - timedelta(days=3)
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
#room_history = api.get_room_history(room[0], oldest=date, latest=datetime.datetime.now())
2023-12-16 17:36:40 +01:00
2023-12-07 21:14:13 +01:00
for room_fdb in eval ( room_fdbs ) :
#print('room_fdb',room_fdb, 'fdb_list',fdb_list)
2023-12-12 12:27:28 +01:00
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 )
2023-12-08 14:33:01 +01:00
if room_fdb in fdb_list and room_fdb not in [ key for key in data ] :
2023-12-07 21:14:13 +01:00
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
2023-12-12 12:27:28 +01:00
for i in eval ( iteration_var_list ) :
try :
2024-01-30 14:47:48 +01:00
#print(room_fdb, i)
2023-12-12 12:27:28 +01:00
for key in data [ room_fdb ] [ i ] :
contains_tag = False
2024-01-22 14:22:24 +01:00
period_data_formatted = dateutil . parser . parse ( data [ room_fdb ] [ i ] [ key ] [ " period " ] )
2023-12-14 16:38:54 +01:00
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 ( ' ' ) ]
2024-02-13 14:38:47 +01:00
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 ' ]
2024-01-16 18:58:19 +01:00
tag_list = [ ]
2023-12-12 12:27:28 +01:00
for tag in eval ( room_tags ) :
2024-01-16 18:58:19 +01:00
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 ' )
2023-12-12 12:27:28 +01:00
if contains_tag == True :
try :
url = data [ room_fdb ] [ i ] [ key ] [ " domain " ]
except :
url = data [ room_fdb ] [ i ] [ key ] [ " link " ]
2023-12-08 14:33:01 +01:00
2024-01-22 14:22:24 +01:00
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 )
2023-12-18 22:17:23 +01:00
entry_message_identifier = ' < ' + url + ' | ' + data [ room_fdb ] [ i ] [ key ] [ " name " ] + ' > '
2023-12-16 17:36:40 +01:00
message_was_already_there = False
2023-12-18 22:17:23 +01:00
for message in room_history_list :
2024-01-30 14:47:48 +01:00
#print('message that gets checked with identifier ', message[:-1])
#print('the entry message identifier is:', entry_message_identifier)
2024-01-16 18:58:19 +01:00
if url in message [ : - 1 ] or data [ room_fdb ] [ i ] [ key ] [ " name " ] in message :
2023-12-16 17:36:40 +01:00
message_was_already_there = True
2023-12-08 14:33:01 +01:00
2024-01-22 16:05:21 +01:00
now = datetime . datetime . now ( )
now_formatted = dateutil . parser . parse ( str ( now ) )
delta = period_data_formatted - now_formatted
2023-12-18 22:17:23 +01:00
2024-01-22 16:05:21 +01:00
if message_was_already_there == False and delta . days < int ( room_deadline_days ) :
2024-01-30 14:47:48 +01:00
#print('went into already there false')
2023-12-16 17:36:40 +01:00
api . send_message ( entry_message , room [ 0 ] )
2024-05-07 16:52:39 +02:00
#print('before writing')
2023-12-18 22:17:23 +01:00
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 ' )
2023-12-12 12:27:28 +01:00
except Exception as e :
print ( " probably i was not there in last page, original error is: " , e )
2023-12-07 21:14:13 +01:00
2023-12-08 14:33:01 +01:00
#print('data',data['giz'][2],'data')
2023-12-07 21:14:13 +01:00
already_updated = True
# if datestime.split over etc and updated= true etc
2023-11-29 19:43:28 +01:00
n + = 1
2024-01-16 18:58:19 +01:00
if n % 100 == 0 :
print ( n )
2023-11-29 19:43:28 +01:00
try :
2023-12-05 17:18:48 +01:00
#print('getting the room history')
2023-11-29 19:43:28 +01:00
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 )
2023-12-05 17:18:48 +01:00
if len ( messages_list ) > = 1 :
2023-11-29 19:43:28 +01:00
2023-12-05 17:18:48 +01:00
#print('blub', messages_list)
2023-11-29 19:43:28 +01:00
latest_message_user_id = messages_list [ 0 ] [ ' u ' ] [ ' _id ' ]
2023-12-05 17:18:48 +01:00
latest_message_user_username = messages_list [ 0 ] [ ' u ' ] [ ' username ' ]
2023-11-29 19:43:28 +01:00
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 ( ' § % § % ' )
2023-12-05 17:18:48 +01:00
#print(latest_message, new_message_list[0])
2023-11-29 19:43:28 +01:00
2023-11-29 19:54:43 +01:00
if new_message_list [ 0 ] != latest_message and new_message_list [ 1 ] != latest_message_id and latest_message_user_id != bot_user_id :
2023-11-29 19:43:28 +01:00
2023-12-05 17:18:48 +01:00
answer = ' Ich habe kein Kommando erhalten. '
2023-11-29 19:43:28 +01:00
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
2023-12-05 17:18:48 +01:00
user_input_list = user_input . split ( ' ' )
2023-12-13 14:49:58 +01:00
if user_input_list [ 0 ] == ' addtags ' :
try :
2024-02-06 15:28:54 +01:00
room_name_add_tags = user_input_list [ 1 ]
room_id_add_tags = name2id ( room_name_add_tags )
2024-05-07 16:52:39 +02:00
#print(room_id_add_tags)
2023-12-13 14:49:58 +01:00
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 '
2024-02-06 15:35:21 +01:00
if room_id_add_tags != ' NONE ' and len ( new_tags ) > = 1 and thirdarg == ' NONE ' :
2023-12-13 14:49:58 +01:00
try :
2024-02-06 15:35:21 +01:00
room_file_add_tags = open ( ' rooms/ ' + room_id_add_tags + ' .txt ' , ' r ' )
2023-12-13 14:49:58 +01:00
room_info_raw = room_file_add_tags . read ( )
room_file_add_tags . close ( )
room_info = room_info_raw . split ( ' § % § % ' )
2024-02-06 15:54:02 +01:00
tag_list = eval ( room_info [ - 2 ] )
2023-12-13 14:49:58 +01:00
for tag in eval ( user_input_list [ 2 ] ) :
if tag not in tag_list :
tag_list . append ( tag )
2024-02-06 15:35:21 +01:00
room_file_add_tags = open ( ' rooms/ ' + room_id_add_tags + ' .txt ' , ' w ' )
2024-02-06 15:54:02 +01:00
room_file_add_tags . write ( str ( room_info [ 0 ] ) + ' § % § % ' + str ( room_info [ 1 ] ) + ' § % § % ' + str ( tag_list ) + ' § % § % ' + str ( room_info [ - 1 ] ) )
2023-12-13 14:49:58 +01:00
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 "
2024-07-10 22:22:00 +02:00
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 "
2023-12-13 14:49:58 +01:00
if user_input_list [ 0 ] == ' printtags ' :
2023-12-14 17:17:58 +01:00
try :
2024-02-06 16:29:47 +01:00
room_name_add_tags = user_input_list [ 1 ]
room_id_to_print_tags = name2id ( room_name_add_tags )
2023-12-14 17:17:58 +01:00
except :
2024-02-06 16:29:47 +01:00
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 "
2023-12-14 17:17:58 +01:00
room_id_to_print_tags = ' NONE '
2023-12-14 17:31:46 +01:00
if room_id_to_print_tags != ' NONE ' :
2023-12-13 14:49:58 +01:00
try :
2023-12-14 17:17:58 +01:00
room_file = open ( ' rooms/ ' + room_id_to_print_tags + ' .txt ' , ' r ' )
2023-12-13 14:49:58 +01:00
room_info_raw = room_file . read ( )
room_file . close ( )
room_info = room_info_raw . split ( ' § % § % ' )
2024-02-06 16:34:49 +01:00
tag_list = eval ( room_info [ - 2 ] )
2023-12-13 14:49:58 +01:00
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
2023-12-14 17:28:34 +01:00
command : ` printrooms `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-12-13 14:49:58 +01:00
To print all available fdbs , use
2023-12-15 12:51:00 +01:00
command : ` printfdbs `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-12-13 14:49:58 +01:00
To update all rooms use
2024-01-23 18:00:24 +01:00
command : ` updaterooms all `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2024-02-06 17:01:14 +01:00
To update one room use the name of the room from the output of printrooms :
command : ` updaterooms < room - name > `
example : ` updaterooms test42 `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2024-01-22 14:22:24 +01:00
To create a room use following command , but be sure to * * not have spaces * * in your lists ,
2023-12-14 17:28:34 +01:00
as a space indicates a new command argument :
2024-01-22 16:05:21 +01:00
command : ` createroom < room - name > < list - fdbs > < list - tags > < days - to - deadline > `
example : ` createroom room - test - 1 [ ' giz ' , ' fdb2 ' ] [ ' tag1 ' , ' tag2 ' , ' tag3 ' ] 7 `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-12-13 14:49:58 +01:00
To delete a room use
2024-02-06 17:12:08 +01:00
command : ` deleteroom < room - name > `
example : ` deleteroom test42 `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-12-14 17:28:34 +01:00
To print the tags of a room use
2024-02-06 16:29:47 +01:00
command : ` printtags < room - name > `
example : ` printtags test42 `
2023-12-14 17:31:46 +01:00
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
2023-12-14 17:28:34 +01:00
To add tags to the existing tags use
2024-02-06 16:29:47 +01:00
command : ` addtags < room - name > < tag - list - without - spaces > `
example : ` addtags test42 [ ' tag1 ' , ' tag2 ' , ' tag3 ' ] `
2023-12-13 14:49:58 +01:00
"""
2023-12-05 17:18:48 +01:00
if user_input_list [ 0 ] == ' printrooms ' :
2023-12-12 13:07:05 +01:00
room_was_found = False
2023-12-06 16:20:48 +01:00
# 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 ( ' § % § % ' )
2024-01-22 16:07:45 +01:00
room_list . append ( [ room [ : - 4 ] , room_file_list [ 0 ] , room_file_list [ 1 ] , room_file_list [ 2 ] , room_file_list [ 3 ] ] )
2023-12-06 16:20:48 +01:00
2024-01-22 14:22:24 +01:00
room_list_string = ' '
for room in room_list :
room_list_string + = str ( room ) + ' \n ' + ' ------------------------------------------------------------------------------ ' + ' \n '
2023-12-06 16:20:48 +01:00
#print(room_list)
2024-01-22 14:22:24 +01:00
answer = room_list_string
2023-12-05 17:18:48 +01:00
2023-12-12 12:41:50 +01:00
if user_input_list [ 0 ] == ' updaterooms ' :
2023-12-14 17:17:58 +01:00
try :
if len ( user_input_list [ 1 ] ) > = 1 :
2024-02-06 16:29:47 +01:00
room_name_to_update = user_input_list [ 1 ]
room_to_update = name2id ( room_name_to_update )
#room_to_update = user_input_list[1]
2023-12-14 17:17:58 +01:00
except Exception as e :
2023-12-13 14:49:58 +01:00
room_to_update = ' NONE '
2023-12-12 13:07:05 +01:00
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 ( ' § % § % ' )
2024-01-22 16:05:21 +01:00
room_list . append ( [ room [ : - 4 ] , room_file_list [ 0 ] , room_file_list [ 1 ] , room_file_list [ 2 ] , room_file_list [ 3 ] ] )
2023-12-12 13:07:05 +01:00
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 )
2023-12-12 12:41:50 +01:00
answer = " Ich update die Rooms auf Basis der Daten von heute morgen um 6 Uhr.. "
2023-12-12 13:07:05 +01:00
2023-12-12 12:41:50 +01:00
data = dict ( { } )
for room in room_list :
2024-01-23 18:00:24 +01:00
if room [ 0 ] == room_to_update or room_to_update == ' all ' :
2023-12-12 13:07:05 +01:00
room_was_found = True
2024-07-10 22:22:00 +02:00
print ( ' oioioiOI ' , room [ 0 ] )
2023-12-12 13:07:05 +01:00
room_fdbs = room [ 2 ]
room_tags = room [ 3 ]
2024-01-22 16:05:21 +01:00
room_deadline_days = room [ 4 ]
2023-12-18 22:17:23 +01:00
# not running get_rooms because disfunctional
2023-12-12 13:07:05 +01:00
#subprocess.run(["python", spider_directory + 'main.py', fdbs])
2023-12-12 12:41:50 +01:00
2023-12-16 17:36:40 +01:00
#myinfo = api.get_room_info(room[0])
#print(myinfo)
2023-12-18 22:17:23 +01:00
#roomid = "'657cbeccebb39dd248d38ec3'"
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
#roomoioioi = api.get_user_info(bot_user_id)
#print(roomoioioi)
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
#room_history_updateroom = api.get_private_room_history(room[0])
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
# reading from txt state history instead
2023-12-16 17:36:40 +01:00
2023-12-18 22:17:23 +01:00
try :
room_history_file = open ( ' roomhistories/ ' + room [ 0 ] + ' .txt ' , ' x ' )
room_history_file . close ( )
except :
2024-01-16 18:58:19 +01:00
print ( ' reading from roomhistory which is already there ' )
2023-12-18 22:17:23 +01:00
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)
2023-12-16 17:36:40 +01:00
2023-12-12 13:07:05 +01:00
for room_fdb in eval ( room_fdbs ) :
2024-07-10 22:22:00 +02:00
print ( ' room_fdb ' , room_fdb , ' fdb_list ' , fdb_list )
2023-12-12 13:07:05 +01:00
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 )
2023-12-12 12:41:50 +01:00
2023-12-12 13:07:05 +01:00
iterdict [ i ] = dictionary_entry_list
2023-12-12 12:41:50 +01:00
2023-12-12 13:07:05 +01:00
data [ room_fdb ] = iterdict
2023-12-12 12:41:50 +01:00
2023-12-12 13:07:05 +01:00
for i in eval ( iteration_var_list ) :
try :
2024-07-10 22:22:00 +02:00
print ( ' roomfdb and i ' , room_fdb , i )
2024-05-07 16:52:39 +02:00
#print('oioioioioiOIOIOI')
2023-12-12 13:07:05 +01:00
for key in data [ room_fdb ] [ i ] :
2024-07-10 22:22:00 +02:00
#print('the fdb', roomfdb, ' is getting searched')
2023-12-12 13:07:05 +01:00
contains_tag = False
2024-01-23 18:00:24 +01:00
try :
period_data_formatted = dateutil . parser . parse ( data [ room_fdb ] [ i ] [ key ] [ " period " ] )
except Exception as e :
period_data_formatted = ' NONE '
2024-05-07 16:52:39 +02:00
#print('getting the period did not work for', room_fdb, i, key, ' ori err is:', e)
2023-12-14 16:38:54 +01:00
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 ( ' ' ) ]
2024-02-13 14:38:47 +01:00
try :
text_data_lower = [ word . lower ( ) for word in data [ room_fdb ] [ i ] [ key ] [ " text " ] . split ( ' ' ) ]
except Exception as e :
2024-07-10 22:22:00 +02:00
#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')
2024-02-13 14:38:47 +01:00
text_data_lower = [ ' NONE ' ]
2024-05-07 16:52:39 +02:00
#print('got until ONE')
2024-01-16 18:58:19 +01:00
tag_list = [ ]
2024-07-10 22:22:00 +02:00
#print(str(name_data_lower) + ' is getting searched..')
2023-12-12 13:07:05 +01:00
for tag in eval ( room_tags ) :
2024-07-10 22:22:00 +02:00
#print('the tag ' + tag + ' is getting searched')
2024-01-16 18:58:19 +01:00
if ' _ ' in tag :
ntags = tag . split ( ' _ ' )
ntags_length = len ( ntags )
2024-05-07 16:52:39 +02:00
#print(ntags)
2024-01-16 18:58:19 +01:00
ntag_count = 0
2024-01-16 22:23:18 +01:00
for ntag in ntags :
2024-05-07 16:52:39 +02:00
#print('searching for ntag: ', ntag)
2024-01-16 22:43:08 +01:00
2024-01-16 22:23:18 +01:00
for nword in name_data_lower :
if ntag . lower ( ) in nword :
if nword != ' ' :
ntag_count + = 1
2024-07-10 22:22:00 +02:00
#print(ntag, ' ntag was found in name')
2024-01-16 22:23:18 +01:00
break
2024-05-07 16:52:39 +02:00
#print('ntag count is ', ntag_count, 'ntag_length is ', ntags_length)
2024-01-16 18:58:19 +01:00
if ntag_count == ntags_length :
contains_tag = True
2024-01-16 22:43:08 +01:00
tag_list . append ( ' _ ' . join ( ntags ) + ' in name ' )
2024-01-16 18:58:19 +01:00
ntag_count = 0
2024-01-16 22:23:18 +01:00
for ntag in ntags :
for iword in info_data_lower :
if ntag . lower ( ) in iword :
if iword != ' ' :
ntag_count + = 1
2024-07-10 22:22:00 +02:00
#print(ntag, ' ntag was found in info')
2024-01-16 22:23:18 +01:00
break
2024-01-16 18:58:19 +01:00
if ntag_count == ntags_length :
contains_tag = True
2024-01-16 22:43:08 +01:00
tag_list . append ( ' _ ' . join ( ntags ) + ' in info ' )
2024-01-16 18:58:19 +01:00
ntag_count = 0
2024-01-16 22:23:18 +01:00
for ntag in ntags :
for tword in text_data_lower :
if ntag . lower ( ) in tword :
if tword != ' ' :
ntag_count + = 1
break
2024-01-16 18:58:19 +01:00
if ntag_count == ntags_length :
contains_tag = True
2024-01-16 22:43:08 +01:00
tag_list . append ( ' _ ' . join ( ntags ) + ' in text ' )
2024-01-16 18:58:19 +01:00