import concurrent.futures
import time
import miniflux
from markdownify import markdownify as md
import markdown
from openai import OpenAI
from yaml import load, Loader
config = load(open('config.yml', encoding='utf8'), Loader=Loader)
miniflux_client = miniflux.Client(config['miniflux']['base_url'], api_key=config['miniflux']['api_key'])
llm_client = OpenAI(base_url=config['llm']['base_url'], api_key=config['llm']['api_key'])
def process_entry(entry):
llm_result = ''
start_with_list = [name[1]['title'] for name in config['agents'].items()]
style_block = [name[1]['style_block'] for name in config['agents'].items()]
[start_with_list.append('
\n'
+ agent[1]['title'] + ':'
+ response_content.replace('\n', '').replace('\r', '')
+ '\n
')
else:
llm_result = llm_result + f"{agent[1]['title']}:{markdown.markdown(response_content)}
"
if len(llm_result) > 0:
miniflux_client.update_entry(entry['id'], content= llm_result + entry['content'])
while True:
entries = miniflux_client.get_entries(status=['unread'], limit=10000)
start_time = time.time()
print(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()), 'Fetched unread entries: ' + str(len(entries['entries']))) if len(entries['entries']) > 0 else print(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()), 'No new entries')
with concurrent.futures.ThreadPoolExecutor() as executor:
futures = [executor.submit(process_entry, i) for i in entries['entries']]
for future in concurrent.futures.as_completed(futures):
try:
data = future.result()
except Exception as e:
print('generated an exception: %s' % e)
if len(entries['entries']) > 0 and time.time() - start_time >= 3:
print(time.strftime("%Y/%m/%d %H:%M:%S", time.localtime()), 'Done')
time.sleep(60)