From b46447afedcf9ffb2a208bcb779998b0b60c6b90 Mon Sep 17 00:00:00 2001 From: Migatu Date: Mon, 8 Apr 2024 18:48:43 +0200 Subject: [PATCH 01/53] Bot side --- bot.py | 261 ++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 186 insertions(+), 75 deletions(-) diff --git a/bot.py b/bot.py index a047655..c817213 100644 --- a/bot.py +++ b/bot.py @@ -17,15 +17,16 @@ import random import re import shutil import sys -import uuid import threading +import uuid from datetime import datetime from logging import handlers from pathlib import Path, PurePath from platform import uname +from queue import Empty, Queue from sys import platform from typing import List, Optional, TypedDict -from queue import Queue, Empty + # *==============Imported libraries import discord import eyed3 @@ -37,16 +38,14 @@ import requests import spotipy import tiktoken from discord.ext import commands, tasks +from flask import Flask, jsonify, request from spotipy.oauth2 import SpotifyClientCredentials +from waitress import serve import yt_dlp from spotify_dl import spotify from spotify_dl import youtube as youtube_download -from flask import Flask, jsonify, request -from waitress import serve - - COMM_Q = Queue() Music_Config = TypedDict( "Music_Config", @@ -56,13 +55,17 @@ Music_Config = TypedDict( "requester": List[str], }, ) -class QueryControl(): + + +class QueryControl: def __init__(self, query_author, query_uuid, query_content, uplogger) -> None: self.author = query_author self.uuid = query_uuid self.content = query_content self.logger = uplogger - self.logger.info(f"Created Query control for {self.author}, {self.uuid}: {self.content}") + self.logger.info( + f"Created Query control for {self.author}, {self.uuid}: {self.content}" + ) self.replies = [] @@ -285,6 +288,8 @@ logger.info("Done") logger.info("Creating flask app") app = Flask(__name__) logger.info("Done") + + # *=========================================== Define Events @client.event async def on_ready(): @@ -406,36 +411,59 @@ async def on_message(message): logger.debug("Wywolanie obrazka: %s", message.content) try: response = await openAIClient.images.generate( - model="dall-e-3", - prompt=message.content, - size="1024x1024", - quality="standard", - n=1, + model="dall-e-3", + prompt=message.content, + size="1024x1024", + quality="standard", + n=1, ) except openai.APITimeoutError as e: - #Handle timeout error, e.g. retry or log - await message.reply (f"*Kondziu patrzy na terminal, czeka, czeka, czeka,.... Jeszcze chwile czeka Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai spróbuj od nowa. *Na ekranie pojawia się*: {e}") + # Handle timeout error, e.g. retry or log + await message.reply( + f"*Kondziu patrzy na terminal, czeka, czeka, czeka,.... Jeszcze chwile czeka Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai spróbuj od nowa. *Na ekranie pojawia się*: {e}" + ) except openai.APIConnectionError as e: - await message.reply(f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai. *Na ekranie pojawia się*: {e}") + await message.reply( + f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai. *Na ekranie pojawia się*: {e}" + ) except openai.BadRequestError as e: - #Handle invalid request error, e.g. validate parameters or log + # Handle invalid request error, e.g. validate parameters or log if message.author.nick: username = message.author.nick else: username = message.author.name - resp, _ = await handle_response(f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie '{message.content}'",True,True,MESSAGE_TABLE,username,"RANDOM") - await message.reply(f"Sorki, cenzura: {resp}. Jak chcesz to są kanały na nudle #sexy-foteczky i #kanal-do-fapania *Na ekranie pojawia się: {e}") + resp, _ = await handle_response( + f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie '{message.content}'", + True, + True, + MESSAGE_TABLE, + username, + "RANDOM", + ) + await message.reply( + f"Sorki, cenzura: {resp}. Jak chcesz to są kanały na nudle #sexy-foteczky i #kanal-do-fapania *Na ekranie pojawia się: {e}" + ) except openai.AuthenticationError as e: - #Handle authentication error, e.g. check credentials or log - await message.reply(f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z hasłem zjebało. *Na terminalu pojawia się:* {e}") + # Handle authentication error, e.g. check credentials or log + await message.reply( + f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z hasłem zjebało. *Na terminalu pojawia się:* {e}" + ) except openai.PermissionDeniedError as e: - #Handle permission error, e.g. check scope or log - await message.reply((f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z uprawnieniami zjebało. *Na terminalu pojawia się:* {e}")) + # Handle permission error, e.g. check scope or log + await message.reply( + ( + f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z uprawnieniami zjebało. *Na terminalu pojawia się:* {e}" + ) + ) except openai.RateLimitError as e: - await message.reply(f"*Kondziu patrzy na terminal* Wołaj szefa. Zapłacić rachunki za AI trzeba. Jak chcesz to się na #zebranie dorzuć. {e}") + await message.reply( + f"*Kondziu patrzy na terminal* Wołaj szefa. Zapłacić rachunki za AI trzeba. Jak chcesz to się na #zebranie dorzuć. {e}" + ) except openai.APIError as e: - #Handle API error, e.g. retry or log - await message.reply(f"*Kondziu nurkuje za bar, terminal wybucha. Przed tobą ląduje pergamin zapisany pięknym gotykiem a na nim*: {e}") + # Handle API error, e.g. retry or log + await message.reply( + f"*Kondziu nurkuje za bar, terminal wybucha. Przed tobą ląduje pergamin zapisany pięknym gotykiem a na nim*: {e}" + ) if response: logger.info(response) image_url = response.data[0].url @@ -452,7 +480,7 @@ async def on_message(message): fnord = discord.File( temp_file_name, spoiler=False, description=message.content ) - await message.reply(f"{image_desc}",file=fnord) + await message.reply(f"{image_desc}", file=fnord) # *=========================================== Define Functions @@ -658,7 +686,7 @@ async def check_data(): in a Discord channel. """ # trunk-ignore(codespell/misspelled) - #logger.info("Heartbeat of cleanup proc") + # logger.info("Heartbeat of cleanup proc") channel = client.get_channel(1062047367337095268) messages = [message async for message in channel.history(limit=1)] for mess in messages: @@ -680,7 +708,7 @@ async def check_data(): "*Conjurer porządkuje bar, wypala szklanki do czysta miotaczem płomieni ze swojej zbroi i ogólnie wygląda na zajętego....*" ) async with channel.typing(): - #TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna + # TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna path_newfile = f"{LOGSTORE}pamiec_muzyki{datetime.now()}.json" logger.info(path_newfile) with open(MEMORY_FIVE_MUZYKA, "r+", encoding=ENCODING) as file_music_memory: @@ -700,7 +728,7 @@ async def check_data(): "*Przeciąga się za barem* No dobra - porobione to można dalej pi... *Zauważa spojrzenie Hammera* ...sać powieści o naszym wspaniałym barze SZEFIE!" ) if os.path.getsize(MEMORY_FIVE_SIARA) > 3000000: - #TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna + # TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna path_newfile = "{LOGSTORE}pamiec_rozmow{datetime.now()}.json" logger.info(path_newfile) await channel.send( @@ -910,33 +938,46 @@ async def handle_response( model=algorithm, messages=history ) except openai.APITimeoutError as e: - #Handle timeout error, e.g. retry or log - result = f"*Kondziu patrzy na terminal, czeka, czeka, czeka,.... Jeszcze chwile czeka Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai spróbuj od nowa. *Na ekranie pojawia się*: {e}" + # Handle timeout error, e.g. retry or log + result = f"*Kondziu patrzy na terminal, czeka, czeka, czeka,.... Jeszcze chwile czeka Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai spróbuj od nowa. *Na ekranie pojawia się*: {e}" except openai.APIConnectionError as e: result = f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Nie mogę się połączyć z Openai. *Na ekranie pojawia się*: {e}" except openai.BadRequestError as e: - #Handle invalid request error, e.g. validate parameters or log - resp, _ = await handle_response(f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie 'prompt'",True,True,MESSAGE_TABLE,username,"RANDOM") + # Handle invalid request error, e.g. validate parameters or log + resp, _ = await handle_response( + f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie 'prompt'", + True, + True, + MESSAGE_TABLE, + username, + "RANDOM", + ) result = f"Sorki, cenzura: {resp}. Jak chcesz to są kanały na nudle #sexy-foteczky i #kanal-do-fapania *Na ekranie pojawia się: {e}" except openai.APIResponseValidationError as e: - #Handle invalid request error, e.g. validate parameters or log - resp, _ = await handle_response(f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie 'prompt'",True,True,MESSAGE_TABLE,username,"RANDOM") + # Handle invalid request error, e.g. validate parameters or log + resp, _ = await handle_response( + f"Wytlumacz jakie sa zasady dotyczące treści które możesz generować używając Dalle. Wytłumacz błąd {e} prostym językiem. Przeproś za nadmierną cenzurę. Wytłumacz co mogło być nie tak w prompcie 'prompt'", + True, + True, + MESSAGE_TABLE, + username, + "RANDOM", + ) result = f"Sorki, cenzura: {resp}. Jak chcesz to są kanały na nudle #sexy-foteczky i #kanal-do-fapania *Na ekranie pojawia się: {e}" except openai.AuthenticationError as e: - #Handle authentication error, e.g. check credentials or log + # Handle authentication error, e.g. check credentials or log result = f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z hasłem zjebało. *Na terminalu pojawia się:* {e}" except openai.PermissionDeniedError as e: - #Handle permission error, e.g. check scope or log + # Handle permission error, e.g. check scope or log result = f"*Kondziu patrzy na terminal, chwile się zastanawia. Przypierdala w niego pięścią....* Wołaj szefa - coś się z uprawnieniami zjebało. *Na terminalu pojawia się:* {e}" except openai.RateLimitError as e: result = f"*Kondziu patrzy na terminal* Wołaj szefa. Zapłacić rachunki za AI trzeba. Jak chcesz to się na #zebranie dorzuć. {e}" except openai.UnprocessableEntityError as e: result = f"*Kondziu patrzy na terminal. Potem na to co każesz mu wysłać....* Ja wiem że jesteśmy w barze BDSM - ale nie da się włożyć TEGO w TO. *Za jego plecami na terminalu pojawia się:* {e}" except openai.APIError as e: - #Handle API error, e.g. retry or log + # Handle API error, e.g. retry or log result = f"*Kondziu nurkuje za bar, terminal wybucha. Przed tobą ląduje pergamin zapisany pięknym gotykiem a na nim*: {e}" - logger.info("Historia wysłana:") logger.info(history) await asyncio.sleep(15) @@ -1008,7 +1049,8 @@ async def get_file(ctx, source, link): url_dict["songs"] = file_list url_data["urls"].append(url_dict.copy()) file_name_f = youtube_download.default_filename - coro = asyncio.to_thread(youtube_download.download_songs, + coro = asyncio.to_thread( + youtube_download.download_songs, songs=url_data, output_dir=MUSIC_FOLDER, format_str="bestaudio/best", @@ -1131,6 +1173,7 @@ async def get_file(ctx, source, link): file_list.append("wiadomo co wiadomo gdzie") return dir_path, file_list + # define an asynchronous generator async def async_iterator_generator(range_of_iterable): """ @@ -1212,8 +1255,17 @@ async def wyszukaj(ctx, how_many=0, slowa_kluczowe=None): else: word_list = ctx.message.content.split() logger.info("Wyszukuje") - jrequest = {"lista_slow" : word_list, "dlugosc_plejlisty" : how_many, "UUID": str(uuid.uuid4())} - coroutine = asyncio.to_thread(requests.post, f"{FILE_SERVICE_ADDRESS}{GET_PLAYLIST}", json=jrequest, timeout=360) + jrequest = { + "lista_slow": word_list, + "dlugosc_plejlisty": how_many, + "UUID": str(uuid.uuid4()), + } + coroutine = asyncio.to_thread( + requests.post, + f"{FILE_SERVICE_ADDRESS}{GET_PLAYLIST}", + json=jrequest, + timeout=360, + ) return_data = await coroutine if not return_data.status_code == 200: await ctx.send("Wołaj szefa - coś się wyjebało") @@ -1221,6 +1273,7 @@ async def wyszukaj(ctx, how_many=0, slowa_kluczowe=None): logger.info(return_data.json()["data"]) return return_data.json()["data"] + async def remove_characters(string, character): """ The `remove_characters` function removes all occurrences of a specified character from a given @@ -1852,6 +1905,7 @@ async def get_image_stable_diffusion(ctx): if ctx: pass + @client.hybrid_command( name="zagraj_muzyke_mego_ludu", description="Gra muzyke wyszukana na bazie tematow konwersacji na kanale NZ", @@ -1890,7 +1944,9 @@ async def zagraj_muzyke_mego_ludu(ctx): final_key_words.extend(key_words[-MUZYKA_MOJEGO_LUDU_SLOWA_KLUCZOWE:]) reply = "Wygenerowana plejlista:\n" async with ctx.typing(): - logger.info("Zagraj muzyke mego ludu:Zaczynam szukać timestamp %s", datetime.now()) + logger.info( + "Zagraj muzyke mego ludu:Zaczynam szukać timestamp %s", datetime.now() + ) search_time_glob = datetime.now() file = await wyszukaj( ctx=ctx, @@ -1999,31 +2055,43 @@ async def parametry_muzyki_mego_ludu( ctx.send("Spierdalaj") logger.info(exce) + class DoSearchView(discord.ui.View): def __init__(self, uuid, result_list, *args, **kwargs) -> None: super().__init__(*args, **kwargs) self.uuid = uuid self.result_list = result_list - @discord.ui.button(label="Nastepna strona", style=discord.ButtonStyle.primary, row=0) + + @discord.ui.button( + label="Nastepna strona", style=discord.ButtonStyle.primary, row=0 + ) async def next_callback(self, interaction, button): - #emoji = await ctx.guild.fetch_emoji(id) - #button.emoji=1102174413887111189 + # emoji = await ctx.guild.fetch_emoji(id) + # button.emoji=1102174413887111189 logger.info("Pressed") - await interaction.response.edit_message(content = "You clicked the button!") # Send a message when the button is clicked + await interaction.response.edit_message( + content="You clicked the button!" + ) # Send a message when the button is clicked @discord.ui.button(label="Wyszukaj wiecej", style=discord.ButtonStyle.danger, row=0) async def reset_callback(self, interaction, button): - #emoji = await ctx.guild.fetch_emoji(id) - #button.emoji=1102174413887111189 + # emoji = await ctx.guild.fetch_emoji(id) + # button.emoji=1102174413887111189 logger.info("Pressed") - await interaction.response.edit_message(content = "You clicked the button!") # Send a message when the button is clicked + await interaction.response.edit_message( + content="You clicked the button!" + ) # Send a message when the button is clicked - @discord.ui.button(label="Poprzednia Strona", style=discord.ButtonStyle.primary, row=0) + @discord.ui.button( + label="Poprzednia Strona", style=discord.ButtonStyle.primary, row=0 + ) async def perv_callback(self, interaction, button): - #emoji = await ctx.guild.fetch_emoji(id) - #button.emoji=1102174413887111189 + # emoji = await ctx.guild.fetch_emoji(id) + # button.emoji=1102174413887111189 logger.info("Pressed") - await interaction.response.edit_message(content = "You clicked the button!") # Send a message when the button is clicked + await interaction.response.edit_message( + content="You clicked the button!" + ) # Send a message when the button is clicked @client.hybrid_command( @@ -2034,22 +2102,53 @@ class DoSearchView(discord.ui.View): async def wyszukaj_linki_do_dokumentow(ctx): query = ctx.message.content query_uuid = uuid.uuid4() - #query_uuid = "test" - #3 wyslij Librariana - json_query = {"UUID" : str(query_uuid), "query" : str(query)[30:], "page" : 1} - coroutine = asyncio.to_thread(requests.post, f"{LIBRARIAN_SERVICE_ADDRESS}{SEND_QUERY}", json=json_query, timeout=360) - #query_response = await requests.post(f"{LIBRARIAN_SERVICE_ADDRESS}{SEND_QUERY}", json=json_query, timeout=360) + # query_uuid = "test" + # 3 wyslij Librariana + json_query = {"UUID": str(query_uuid), "query": str(query)[30:], "page": 1} + coroutine = asyncio.to_thread( + requests.post, + f"{LIBRARIAN_SERVICE_ADDRESS}{SEND_QUERY}", + json=json_query, + timeout=360, + ) + await ctx.send( + "*Conjurer powoli notuje podane przez Ciebie. Podchodzi do sprytnie ukrytej przy barze rury od poczty pneumatycznej i" + + " wrzuca twój liścik do środka* To teraz trza poczekać kilka godzin. Biblioteka to te 3/4 stacji."+ + " A przecież pół stacji to browar, motelik dla zabaw cielesnych i ten Bar. Więc te 12/8 stacji teraz będzie ciężko pracować" + ) query_response = await coroutine - #TODO: tutaj jest informacja UUID o requescie zapisywana w queue i konczymy - #TODO: response'y idą do serwera, serwer sobie je mieli i potem wysyła do nas posta albo response - if not query_response.status_code == 200: - await ctx.send("Wołaj szefa - coś się wyjebało") + await ctx.send("*Z rury wydobywa się dym. Conjurer łapie pierwszą ciecz pod ręką i pryska na rurę. Następuje drobna eksplozja i wszystko zaczyna się palić."+ + " Conjurer jest skonfundowany..* Wołaj szefa - mam nieodparte wrażenie że się coś wyjebało") return - #4 zwroc 4 wyniki od librariana - #5 przyciski przy każdym wierszu pozwalają sprawdzić czy plik istnieje na scihubie - jeśli tak podaje link do sciagniecia - #6 ostatni wiersz to dalej, wróć, skasuj, zaciagnij kolejne wyniki (jeśli jest ich więcej niż 1000) - result_view = DoSearchView(uuid=str(query_uuid), result_list=query_response.json()["data"]) + + query, query_uuid, queue_size = ( + query_response.json()["data"][0], + query_response.json()["data"][1], + query_response.json()["data"][2], + ) + if ctx.message.author.nick: + username = ctx.message.author.nick + else: + username = ctx.message.author.name + + query_object = QueryControl(username, query_uuid, query, logger) + + COMM_Q.put() + # TODO: tutaj jest informacja UUID o requescie zapisywana w queue i konczymy + # TODO: response'y idą do serwera, serwer sobie je mieli i potem wysyła do nas posta albo response + await ctx.send(f"No dobra poszło. Zapamiętaj proszę {query_uuid} - to identyfikator twojego zapytania. Jesteś {queue_size} w kolejce."+ + " Zapytania obsługuje algorytm zasilany czterema chomikami zapierdalającymi w kołowrotku - więc wyniki najwcześniej za kilka godzi - ale mogą być też dni.") + +''' +async def wyswietl_wyniki_wyszukiwania(ctx): + + # 4 zwroc 4 wyniki od librariana + # 5 przyciski przy każdym wierszu pozwalają sprawdzić czy plik istnieje na scihubie - jeśli tak podaje link do sciagniecia + # 6 ostatni wiersz to dalej, wróć, skasuj, zaciagnij kolejne wyniki (jeśli jest ich więcej niż 1000) + result_view = DoSearchView( + uuid=str(query_uuid), result_list=query_response.json()["data"] + ) resulttab = [] resultlink = [] hit, fetched, total, _ = query_response.json()["data"][0] @@ -2060,7 +2159,7 @@ async def wyszukaj_linki_do_dokumentow(ctx): item_link = "https://sci-hub.se/" + str(item["DOI"]) resultlink.append(item_link) logger.info(len(resulttab)) - for i in range(0, min(4,len(resulttab))): + for i in range(0, min(4, len(resulttab))): logger.info(i) logger.info(resulttab[i]) logger.info(resultlink[i]) @@ -2068,10 +2167,19 @@ async def wyszukaj_linki_do_dokumentow(ctx): logger.info(url) temp_label = str(resulttab[i]) temp_label = temp_label.strip("[']") - result_view.add_item(discord.ui.Button(label = str(temp_label[0:79]), row = i+1,url=url)) + result_view.add_item( + discord.ui.Button(label=str(temp_label[0:79]), row=i + 1, url=url) + ) - labelka = "Wyniki wyszukiwania dla: " + str(query)[30:] + f'\nWszystkich {total} sprawdzonych: {fetched} znalezionych: {hit} '# ile znaleziono artykułów w ogóle, ile zostało po refine - await ctx.send(labelka, view=result_view) # Send a message with our View class that contains the button + labelka = ( + "Wyniki wyszukiwania dla: " + + str(query)[30:] + + f"\nWszystkich {total} sprawdzonych: {fetched} znalezionych: {hit} " + ) # ile znaleziono artykułów w ogóle, ile zostało po refine + await ctx.send( + labelka, view=result_view + ) # Send a message with our View class that contains the button +''' @client.hybrid_command( name="krecimy_pornola", @@ -2106,6 +2214,7 @@ async def krecimy_pornola(ctx): else: ctx.reply("Jak ładnie szefa poprosisz.") + @app.route("/", methods=["POST"]) def answer_external_command(): record = json.loads(request.data) @@ -2119,6 +2228,7 @@ def answer_external_command(): ) return return_data + def flask_debug(): """ The `flask_debug` function starts a Flask application in debug mode without using the reloader. @@ -2127,6 +2237,7 @@ def flask_debug(): # trunk-ignore(bandit/B201) app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) + def waitress_run(): """ The `waitress_run` function serves the `app` on host "0.0.0.0" @@ -2137,7 +2248,7 @@ def waitress_run(): # *================================== Run if __name__ == "__main__": - #TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim + # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) @@ -2146,9 +2257,9 @@ if __name__ == "__main__": for worker in threads: worker.join() -#widok - generuje się 5 stron po 4 linki +# widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów # po wyslaniu czekamy na odbior i dodajemy UUID oraz nick poszukiwacza do queue ktora jest sprawdzana # flask sobie chodzi i jak dostaje posta z wynikami to wyciaga z queue UUID i odpowiada że znalazła # po samym wyszukaniu dajemy info że "Zaczynam szukać ale pare godzin to potrwa." -# OPCJONALNIE: Dosyłamy znalezione wyniki na bieżąco - wtedy wkładamy do queue dla UUID wyniki \ No newline at end of file +# OPCJONALNIE: Dosyłamy znalezione wyniki na bieżąco - wtedy wkładamy do queue dla UUID wyniki From e11ed40a57049b9da048826c22300125271daba2 Mon Sep 17 00:00:00 2001 From: Migatu Date: Mon, 8 Apr 2024 18:49:44 +0200 Subject: [PATCH 02/53] QUick fix --- bot.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index c817213..296689e 100644 --- a/bot.py +++ b/bot.py @@ -2128,13 +2128,12 @@ async def wyszukaj_linki_do_dokumentow(ctx): query_response.json()["data"][2], ) if ctx.message.author.nick: - username = ctx.message.author.nick - else: - username = ctx.message.author.name - + username = ctx.message.author.nick + else: + username = ctx.message.author.name query_object = QueryControl(username, query_uuid, query, logger) - COMM_Q.put() + COMM_Q.put(query_object) # TODO: tutaj jest informacja UUID o requescie zapisywana w queue i konczymy # TODO: response'y idą do serwera, serwer sobie je mieli i potem wysyła do nas posta albo response await ctx.send(f"No dobra poszło. Zapamiętaj proszę {query_uuid} - to identyfikator twojego zapytania. Jesteś {queue_size} w kolejce."+ From e1b8a90a49f9912e202394b40852ca313860c2d6 Mon Sep 17 00:00:00 2001 From: Migatu Date: Mon, 8 Apr 2024 23:37:13 +0200 Subject: [PATCH 03/53] Adding flask to bo main --- bot.py | 2 ++ requirements_bot.txt | 4 +++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 296689e..42c726b 100644 --- a/bot.py +++ b/bot.py @@ -2250,6 +2250,8 @@ if __name__ == "__main__": # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] + #threads.append(threading.Thread(target=waitress_run)) + threads.append(threading.Thread(target=flask_debug)) threads.append(threading.Thread(target=client.run, args=(TOKEN,))) for worker in threads: worker.start() diff --git a/requirements_bot.txt b/requirements_bot.txt index 8a646b2..e4d9ba0 100644 --- a/requirements_bot.txt +++ b/requirements_bot.txt @@ -10,4 +10,6 @@ PyPDF2 requests spotipy tiktoken -PyNaCl \ No newline at end of file +PyNaCl +flask +waitress \ No newline at end of file From f1940007f62fb68c674516420982f61873a93303 Mon Sep 17 00:00:00 2001 From: Migatu Date: Mon, 8 Apr 2024 23:58:52 +0200 Subject: [PATCH 04/53] FIx host address --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 42c726b..016f744 100644 --- a/bot.py +++ b/bot.py @@ -95,7 +95,7 @@ LIBRARIAN_SERVICE_ADDRESS = "http://192.168.1.192:5001" SEND_QUERY = "/query" TIME_BETWEEN_CALLS = 100000 LAST_SPONTANEOUS_CALL = datetime.now() -HOST_ADDRESS = "http://192.168.1.192" +HOST_ADDRESS = "http://192.168.1.191" PORT_ADDRESS = "5000" # *=========================================== Platform Specific Predefines From 51e68a77ab0d47818ed51e7c24f3a5e100e9b23b Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:01:19 +0200 Subject: [PATCH 05/53] Test --- bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 016f744..81824a0 100644 --- a/bot.py +++ b/bot.py @@ -2214,11 +2214,11 @@ async def krecimy_pornola(ctx): ctx.reply("Jak ładnie szefa poprosisz.") -@app.route("/", methods=["POST"]) +@app.route("/", methods=["GET"]) def answer_external_command(): record = json.loads(request.data) logger.info(record) - answer_data = None + answer_data = "TXT" if "UUID" in record and "QUERY" in record and "AUTHOR" in record: answer_data = "Query logged" return_data = ( From e01fd928ca2a0d7e3675eef5ff480674861951a6 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:02:18 +0200 Subject: [PATCH 06/53] Txt --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 81824a0..8e6a92f 100644 --- a/bot.py +++ b/bot.py @@ -2252,7 +2252,7 @@ if __name__ == "__main__": threads = [] #threads.append(threading.Thread(target=waitress_run)) threads.append(threading.Thread(target=flask_debug)) - threads.append(threading.Thread(target=client.run, args=(TOKEN,))) + #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) for worker in threads: worker.start() for worker in threads: From 5e1b962ac039d114789b3aac4fea93acfae8b698 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:04:35 +0200 Subject: [PATCH 07/53] Testing --- bot.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/bot.py b/bot.py index 8e6a92f..c58b146 100644 --- a/bot.py +++ b/bot.py @@ -2228,13 +2228,13 @@ def answer_external_command(): return return_data -def flask_debug(): +def flask_debug(logger): """ The `flask_debug` function starts a Flask application in debug mode without using the reloader. Do not use for production for fucks sake. """ # trunk-ignore(bandit/B201) - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=) def waitress_run(): @@ -2251,7 +2251,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] #threads.append(threading.Thread(target=waitress_run)) - threads.append(threading.Thread(target=flask_debug)) + threads.append(threading.Thread(target=flask_debug, args=(logger))) #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) for worker in threads: worker.start() From 07f1575f96a4e1e8f028a77d11c365a815dd5a5e Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:05:34 +0200 Subject: [PATCH 08/53] Fix --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index c58b146..eedaea9 100644 --- a/bot.py +++ b/bot.py @@ -2234,7 +2234,7 @@ def flask_debug(logger): Do not use for production for fucks sake. """ # trunk-ignore(bandit/B201) - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=logger) def waitress_run(): From d7b379d29e112765e6d1779d507477242399242c Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:07:18 +0200 Subject: [PATCH 09/53] Fix --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index eedaea9..1a37b7e 100644 --- a/bot.py +++ b/bot.py @@ -2251,7 +2251,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] #threads.append(threading.Thread(target=waitress_run)) - threads.append(threading.Thread(target=flask_debug, args=(logger))) + threads.append(threading.Thread(target=flask_debug, args=(logger,))) #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) for worker in threads: worker.start() From 14f35542e48a2fd1434c11af8da19f17906ce4eb Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:09:12 +0200 Subject: [PATCH 10/53] FIx --- bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 1a37b7e..b395465 100644 --- a/bot.py +++ b/bot.py @@ -2228,13 +2228,13 @@ def answer_external_command(): return return_data -def flask_debug(logger): +def flask_debug(_logger): """ The `flask_debug` function starts a Flask application in debug mode without using the reloader. Do not use for production for fucks sake. """ # trunk-ignore(bandit/B201) - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=logger) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) def waitress_run(): From 286fcd92ce219e156674b9a00e66f2f2d74cd99c Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:12:27 +0200 Subject: [PATCH 11/53] Troubleshooting --- bot.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/bot.py b/bot.py index b395465..ae97076 100644 --- a/bot.py +++ b/bot.py @@ -2253,10 +2253,15 @@ if __name__ == "__main__": #threads.append(threading.Thread(target=waitress_run)) threads.append(threading.Thread(target=flask_debug, args=(logger,))) #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) + i = 0 for worker in threads: + print(i) worker.start() + i+=1 for worker in threads: + print(i) worker.join() + i+=1 # widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów From e5f26566ca36cba6bfa64834f19c1f219561e5c2 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:13:20 +0200 Subject: [PATCH 12/53] Troubleshooting --- bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index ae97076..09e846c 100644 --- a/bot.py +++ b/bot.py @@ -2255,11 +2255,11 @@ if __name__ == "__main__": #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) i = 0 for worker in threads: - print(i) + logger.info(i) worker.start() i+=1 for worker in threads: - print(i) + logger.info(i) worker.join() i+=1 From 3b32cdc4e717d1240261275c3e7b115a7ce8addd Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:16:08 +0200 Subject: [PATCH 13/53] Fix? --- bot.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/bot.py b/bot.py index 09e846c..c773edd 100644 --- a/bot.py +++ b/bot.py @@ -2214,19 +2214,19 @@ async def krecimy_pornola(ctx): ctx.reply("Jak ładnie szefa poprosisz.") -@app.route("/", methods=["GET"]) +@app.route("/conjurer", methods=["GET"]) def answer_external_command(): - record = json.loads(request.data) - logger.info(record) - answer_data = "TXT" - if "UUID" in record and "QUERY" in record and "AUTHOR" in record: - answer_data = "Query logged" - return_data = ( - jsonify(isError=False, message="Success", statusCode=200, data=answer_data), - 200, - ) - return return_data - + #record = json.loads(request.data) + #logger.info(record) + #answer_data = "TXT" + #if "UUID" in record and "QUERY" in record and "AUTHOR" in record: + # answer_data = "Query logged" + #return_data = ( + # jsonify(isError=False, message="Success", statusCode=200, data=answer_data), + # 200, + #) + #return return_data + return jsonify("SUCCESS") def flask_debug(_logger): """ From 1b62d5ce3f337c1e21a12b58fdddc30acc8be401 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:20:15 +0200 Subject: [PATCH 14/53] I'm a dum dum --- bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index c773edd..e9d3789 100644 --- a/bot.py +++ b/bot.py @@ -95,8 +95,8 @@ LIBRARIAN_SERVICE_ADDRESS = "http://192.168.1.192:5001" SEND_QUERY = "/query" TIME_BETWEEN_CALLS = 100000 LAST_SPONTANEOUS_CALL = datetime.now() -HOST_ADDRESS = "http://192.168.1.191" -PORT_ADDRESS = "5000" +HOST_ADDRESS = "192.168.1.191" +PORT_ADDRESS = 5000 # *=========================================== Platform Specific Predefines From bef2aa100ec1bc5aa1b6c6f5d9f885e3c2265424 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:24:15 +0200 Subject: [PATCH 15/53] Attempt 3 --- bot.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/bot.py b/bot.py index e9d3789..76a7d74 100644 --- a/bot.py +++ b/bot.py @@ -2237,12 +2237,12 @@ def flask_debug(_logger): app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) -def waitress_run(): +def waitress_run(_logger): """ The `waitress_run` function serves the `app` on host "0.0.0.0" and port 5000 using the Waitress WSGI server. """ - serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) + serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) # *================================== Run @@ -2250,9 +2250,9 @@ if __name__ == "__main__": # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] - #threads.append(threading.Thread(target=waitress_run)) - threads.append(threading.Thread(target=flask_debug, args=(logger,))) - #threads.append(threading.Thread(target=client.run, args=(TOKEN,))) + threads.append(threading.Thread(target=waitress_run, args=(logger,))) + #threads.append(threading.Thread(target=flask_debug, args=(logger,))) + threads.append(threading.Thread(target=client.run, args=(TOKEN,))) i = 0 for worker in threads: logger.info(i) From f0084445d3dd1d4234d0b132d8edf1069d1cab93 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:26:02 +0200 Subject: [PATCH 16/53] Fix --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 76a7d74..9b3ad1e 100644 --- a/bot.py +++ b/bot.py @@ -2250,9 +2250,9 @@ if __name__ == "__main__": # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] + threads.append(threading.Thread(target=client.run, args=(TOKEN,))) threads.append(threading.Thread(target=waitress_run, args=(logger,))) #threads.append(threading.Thread(target=flask_debug, args=(logger,))) - threads.append(threading.Thread(target=client.run, args=(TOKEN,))) i = 0 for worker in threads: logger.info(i) From 73033da2d5c373fbee17e711bbb7c954f1a5be5a Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:31:30 +0200 Subject: [PATCH 17/53] FIX? --- bot.py | 4 ---- file_webservice/conjurer_musician.py | 1 - 2 files changed, 5 deletions(-) diff --git a/bot.py b/bot.py index 9b3ad1e..4182a5e 100644 --- a/bot.py +++ b/bot.py @@ -2257,11 +2257,7 @@ if __name__ == "__main__": for worker in threads: logger.info(i) worker.start() - i+=1 - for worker in threads: - logger.info(i) worker.join() - i+=1 # widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów diff --git a/file_webservice/conjurer_musician.py b/file_webservice/conjurer_musician.py index 340408a..2b12709 100644 --- a/file_webservice/conjurer_musician.py +++ b/file_webservice/conjurer_musician.py @@ -266,7 +266,6 @@ if __name__ == "__main__": threads = [] threads.append(threading.Thread(target=waitress_run)) threads.append(threading.Thread(target=thread_rescan)) - #threads.append(threading.Thread(target=flask_debug)) for worker in threads: worker.start() From 217060de6c676d2187b1b9835aeccc41e112972d Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:33:48 +0200 Subject: [PATCH 18/53] Fix --- bot.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/bot.py b/bot.py index 4182a5e..1ee3279 100644 --- a/bot.py +++ b/bot.py @@ -2250,14 +2250,12 @@ if __name__ == "__main__": # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] - threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - threads.append(threading.Thread(target=waitress_run, args=(logger,))) - #threads.append(threading.Thread(target=flask_debug, args=(logger,))) - i = 0 - for worker in threads: - logger.info(i) - worker.start() - worker.join() + t1 = threading.Thread(target=client.run, args=(TOKEN,)) + t2 = threading.Thread(target=waitress_run, args=(logger,)) + t2.start() + t2.join() + t1.start() + t1.join() # widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów From 8d0aae225cc9582d69f043250082a47f073ceac8 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:36:43 +0200 Subject: [PATCH 19/53] Fix ? --- bot.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bot.py b/bot.py index 1ee3279..5b5de5a 100644 --- a/bot.py +++ b/bot.py @@ -2234,6 +2234,7 @@ def flask_debug(_logger): Do not use for production for fucks sake. """ # trunk-ignore(bandit/B201) + _logger.info("Attempt") app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) @@ -2242,6 +2243,7 @@ def waitress_run(_logger): The `waitress_run` function serves the `app` on host "0.0.0.0" and port 5000 using the Waitress WSGI server. """ + _logger.info("Attempt") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) From 3c42fb49c328952f32e2918edbfac16cde4b779f Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:38:15 +0200 Subject: [PATCH 20/53] Logging fix --- bot.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 5b5de5a..797657e 100644 --- a/bot.py +++ b/bot.py @@ -2234,7 +2234,7 @@ def flask_debug(_logger): Do not use for production for fucks sake. """ # trunk-ignore(bandit/B201) - _logger.info("Attempt") + _logger.info("Attempt debug") app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) @@ -2243,7 +2243,7 @@ def waitress_run(_logger): The `waitress_run` function serves the `app` on host "0.0.0.0" and port 5000 using the Waitress WSGI server. """ - _logger.info("Attempt") + _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) From 1bcb2aacc28a12f8cb9d72ca9cf29135f8d86163 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:39:23 +0200 Subject: [PATCH 21/53] DBG --- bot.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 797657e..e251d6c 100644 --- a/bot.py +++ b/bot.py @@ -2253,7 +2253,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] t1 = threading.Thread(target=client.run, args=(TOKEN,)) - t2 = threading.Thread(target=waitress_run, args=(logger,)) + t2 = threading.Thread(target=flask_debug, args=(logger,)) t2.start() t2.join() t1.start() From 5d8b5b0de0415d0342ab1e47c3389a53a741d634 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:44:42 +0200 Subject: [PATCH 22/53] test --- bot.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index e251d6c..b52fe51 100644 --- a/bot.py +++ b/bot.py @@ -286,7 +286,6 @@ logger.info("Creating discord bot") client = commands.Bot(intents=intents, command_prefix="$") logger.info("Done") logger.info("Creating flask app") -app = Flask(__name__) logger.info("Done") @@ -2213,6 +2212,15 @@ async def krecimy_pornola(ctx): else: ctx.reply("Jak ładnie szefa poprosisz.") +app = Flask(__name__) +@app.route("/mp3", methods=["GET"]) +def get_music_list(): + """ + The function `get_music_list` returns a JSON object containing a list of music files. + :return: A JSON response containing a key "music_file_list" with the value of the variable + `music_file_list`. + """ + return jsonify({"music_file_list": MASTER_TIMEOUT}) @app.route("/conjurer", methods=["GET"]) def answer_external_command(): @@ -2249,7 +2257,7 @@ def waitress_run(_logger): # *================================== Run if __name__ == "__main__": - # TODO: wpakowac kondzia w wąteki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim + # TODO: wpakowac kondzia w wątki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] t1 = threading.Thread(target=client.run, args=(TOKEN,)) From 54f74907e828fe96b019369c48e2780fe1a81a04 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:49:04 +0200 Subject: [PATCH 23/53] aaa --- bot.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/bot.py b/bot.py index b52fe51..eb4c05b 100644 --- a/bot.py +++ b/bot.py @@ -2253,7 +2253,9 @@ def waitress_run(_logger): """ _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) - +t2 = threading.Thread(target=flask_debug, args=(logger,)) +t2.start() +t2.join() # *================================== Run if __name__ == "__main__": @@ -2261,9 +2263,6 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] t1 = threading.Thread(target=client.run, args=(TOKEN,)) - t2 = threading.Thread(target=flask_debug, args=(logger,)) - t2.start() - t2.join() t1.start() t1.join() From e186c81be75777e1d4786b9ddbcb794595280aa3 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:53:50 +0200 Subject: [PATCH 24/53] test --- bot.py | 50 ++--------------------------- communication_subroutine.py | 64 +++++++++++++++++++++++++++++++++++++ 2 files changed, 66 insertions(+), 48 deletions(-) create mode 100644 communication_subroutine.py diff --git a/bot.py b/bot.py index eb4c05b..1075378 100644 --- a/bot.py +++ b/bot.py @@ -38,9 +38,7 @@ import requests import spotipy import tiktoken from discord.ext import commands, tasks -from flask import Flask, jsonify, request from spotipy.oauth2 import SpotifyClientCredentials -from waitress import serve import yt_dlp from spotify_dl import spotify @@ -2212,59 +2210,15 @@ async def krecimy_pornola(ctx): else: ctx.reply("Jak ładnie szefa poprosisz.") -app = Flask(__name__) -@app.route("/mp3", methods=["GET"]) -def get_music_list(): - """ - The function `get_music_list` returns a JSON object containing a list of music files. - :return: A JSON response containing a key "music_file_list" with the value of the variable - `music_file_list`. - """ - return jsonify({"music_file_list": MASTER_TIMEOUT}) -@app.route("/conjurer", methods=["GET"]) -def answer_external_command(): - #record = json.loads(request.data) - #logger.info(record) - #answer_data = "TXT" - #if "UUID" in record and "QUERY" in record and "AUTHOR" in record: - # answer_data = "Query logged" - #return_data = ( - # jsonify(isError=False, message="Success", statusCode=200, data=answer_data), - # 200, - #) - #return return_data - return jsonify("SUCCESS") - -def flask_debug(_logger): - """ - The `flask_debug` function starts a Flask application in debug mode without using the reloader. - Do not use for production for fucks sake. - """ - # trunk-ignore(bandit/B201) - _logger.info("Attempt debug") - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) - - -def waitress_run(_logger): - """ - The `waitress_run` function serves the `app` on host "0.0.0.0" - and port 5000 using the Waitress WSGI server. - """ - _logger.info("Attempt waitress") - serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) -t2 = threading.Thread(target=flask_debug, args=(logger,)) -t2.start() -t2.join() # *================================== Run if __name__ == "__main__": # TODO: wpakowac kondzia w wątki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] - t1 = threading.Thread(target=client.run, args=(TOKEN,)) - t1.start() - t1.join() + threads.append(threading.Thread(target=client.run, args=(TOKEN,))) + # widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów diff --git a/communication_subroutine.py b/communication_subroutine.py new file mode 100644 index 0000000..dc06483 --- /dev/null +++ b/communication_subroutine.py @@ -0,0 +1,64 @@ +import logging +import threading + +from flask import Flask, jsonify, request +from waitress import serve + + + +app = Flask(__name__) +@app.route("/mp3", methods=["GET"]) +def get_music_list(): + """ + The function `get_music_list` returns a JSON object containing a list of music files. + :return: A JSON response containing a key "music_file_list" with the value of the variable + `music_file_list`. + """ + return jsonify({"music_file_list": MASTER_TIMEOUT}) + +@app.route("/conjurer", methods=["GET"]) +def answer_external_command(): + #record = json.loads(request.data) + #logger.info(record) + #answer_data = "TXT" + #if "UUID" in record and "QUERY" in record and "AUTHOR" in record: + # answer_data = "Query logged" + #return_data = ( + # jsonify(isError=False, message="Success", statusCode=200, data=answer_data), + # 200, + #) + #return return_data + return jsonify("SUCCESS") + + +def flask_debug(_logger): + """ + The `flask_debug` function starts a Flask application in debug mode without using the reloader. + Do not use for production for fucks sake. + """ + # trunk-ignore(bandit/B201) + _logger.info("Attempt debug") + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + + +def waitress_run(_logger): + """ + The `waitress_run` function serves the `app` on host "0.0.0.0" + and port 5000 using the Waitress WSGI server. + """ + _logger.info("Attempt waitress") + serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + +if __name__ == "__main__": + logger = logging.getLogger('conjurer_musician') + logger.setLevel(logging.DEBUG) + logger.info("Started") + threads = [] + threads.append(threading.Thread(target=waitress_run)) + #threads.append(threading.Thread(target=thread_rescan)) + + for worker in threads: + worker.start() + + for worker in threads: + worker.join() From 0714c1e2f68a3c33927ca11a9e7979132f38f6c1 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:56:35 +0200 Subject: [PATCH 25/53] testing --- communication_subroutine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index dc06483..e18f958 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -54,8 +54,8 @@ if __name__ == "__main__": logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - threads.append(threading.Thread(target=waitress_run)) - #threads.append(threading.Thread(target=thread_rescan)) + threads.append(threading.Thread(target=waitress_run, logger=logger)) + #threads.append(threading.Thread(target=flask_debug, logger=logger)) for worker in threads: worker.start() From e303f9b59836cfc782a637680f40f42e2ac86048 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:57:43 +0200 Subject: [PATCH 26/53] fix --- communication_subroutine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index e18f958..dd46789 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -38,7 +38,7 @@ def flask_debug(_logger): """ # trunk-ignore(bandit/B201) _logger.info("Attempt debug") - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) def waitress_run(_logger): @@ -47,7 +47,7 @@ def waitress_run(_logger): and port 5000 using the Waitress WSGI server. """ _logger.info("Attempt waitress") - serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) if __name__ == "__main__": logger = logging.getLogger('conjurer_musician') From 564dd09df1ae37d2f0a4cd3363ca33a4f0348e16 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 00:59:32 +0200 Subject: [PATCH 27/53] fix --- communication_subroutine.py | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index dd46789..3484a32 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -5,6 +5,8 @@ from flask import Flask, jsonify, request from waitress import serve +HOST_ADDRESS = "192.168.1.191" +PORT_ADDRESS = 5000 app = Flask(__name__) @app.route("/mp3", methods=["GET"]) @@ -14,7 +16,7 @@ def get_music_list(): :return: A JSON response containing a key "music_file_list" with the value of the variable `music_file_list`. """ - return jsonify({"music_file_list": MASTER_TIMEOUT}) + return jsonify({"music_file_list": "MASTER_TIMEOUT"}) @app.route("/conjurer", methods=["GET"]) def answer_external_command(): @@ -38,7 +40,7 @@ def flask_debug(_logger): """ # trunk-ignore(bandit/B201) _logger.info("Attempt debug") - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) def waitress_run(_logger): @@ -47,15 +49,15 @@ def waitress_run(_logger): and port 5000 using the Waitress WSGI server. """ _logger.info("Attempt waitress") - serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) + serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) if __name__ == "__main__": logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - threads.append(threading.Thread(target=waitress_run, logger=logger)) - #threads.append(threading.Thread(target=flask_debug, logger=logger)) + threads.append(threading.Thread(target=waitress_run, args=(logger,))) + #threads.append(threading.Thread(target=flask_debug, logger)) for worker in threads: worker.start() From a484b792ea2bb14bb4133acb9b497f61e88ce097 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:00:41 +0200 Subject: [PATCH 28/53] fx --- communication_subroutine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 3484a32..846c000 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -40,7 +40,7 @@ def flask_debug(_logger): """ # trunk-ignore(bandit/B201) _logger.info("Attempt debug") - app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) def waitress_run(_logger): @@ -49,7 +49,7 @@ def waitress_run(_logger): and port 5000 using the Waitress WSGI server. """ _logger.info("Attempt waitress") - serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS, logger=_logger) + serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) if __name__ == "__main__": logger = logging.getLogger('conjurer_musician') From 55fc5cc16facf6427f6c27313b6dba9c6e1b5188 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:06:03 +0200 Subject: [PATCH 29/53] FIx att 4 --- bot.py | 8 +++++++- communication_subroutine.py | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 1075378..1784ee1 100644 --- a/bot.py +++ b/bot.py @@ -44,6 +44,8 @@ import yt_dlp from spotify_dl import spotify from spotify_dl import youtube as youtube_download +import communication_subroutine + COMM_Q = Queue() Music_Config = TypedDict( "Music_Config", @@ -2218,7 +2220,11 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - + communication_subroutine.comm_subroutine() + for worker in threads: + worker.start() + for worker in threads: + worker.join() # widok - generuje się 5 stron po 4 linki # odśwież - zamienić na "dalej" - zaciąga kolejne 20 rezultatów diff --git a/communication_subroutine.py b/communication_subroutine.py index 846c000..9285988 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -51,7 +51,7 @@ def waitress_run(_logger): _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) -if __name__ == "__main__": +def comm_subroutine(): logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) logger.info("Started") From 4c915ebdba802f3b86df1d4fc1779fbbcb28c9b1 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:15:12 +0200 Subject: [PATCH 30/53] Test communication --- bot.py | 12 ++++++------ communication_subroutine.py | 29 ++++++++++++++--------------- 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/bot.py b/bot.py index 1784ee1..cd51e34 100644 --- a/bot.py +++ b/bot.py @@ -46,7 +46,9 @@ from spotify_dl import youtube as youtube_download import communication_subroutine -COMM_Q = Queue() +OUT_COMM_Q = Queue() +IN_COMM_Q = Queue() + Music_Config = TypedDict( "Music_Config", { @@ -63,6 +65,7 @@ class QueryControl: self.uuid = query_uuid self.content = query_content self.logger = uplogger + self.stop = False self.logger.info( f"Created Query control for {self.author}, {self.uuid}: {self.content}" ) @@ -2131,10 +2134,7 @@ async def wyszukaj_linki_do_dokumentow(ctx): else: username = ctx.message.author.name query_object = QueryControl(username, query_uuid, query, logger) - - COMM_Q.put(query_object) - # TODO: tutaj jest informacja UUID o requescie zapisywana w queue i konczymy - # TODO: response'y idą do serwera, serwer sobie je mieli i potem wysyła do nas posta albo response + OUT_COMM_Q.put(query_object) await ctx.send(f"No dobra poszło. Zapamiętaj proszę {query_uuid} - to identyfikator twojego zapytania. Jesteś {queue_size} w kolejce."+ " Zapytania obsługuje algorytm zasilany czterema chomikami zapierdalającymi w kołowrotku - więc wyniki najwcześniej za kilka godzi - ale mogą być też dni.") @@ -2220,7 +2220,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - communication_subroutine.comm_subroutine() + communication_subroutine.comm_subroutine(OUT_COMM_Q) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index 9285988..9313305 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -1,5 +1,6 @@ import logging import threading +import json from flask import Flask, jsonify, request from waitress import serve @@ -9,20 +10,11 @@ HOST_ADDRESS = "192.168.1.191" PORT_ADDRESS = 5000 app = Flask(__name__) -@app.route("/mp3", methods=["GET"]) -def get_music_list(): - """ - The function `get_music_list` returns a JSON object containing a list of music files. - :return: A JSON response containing a key "music_file_list" with the value of the variable - `music_file_list`. - """ - return jsonify({"music_file_list": "MASTER_TIMEOUT"}) -@app.route("/conjurer", methods=["GET"]) +@app.route("/conjurer", methods=["POST"]) def answer_external_command(): - #record = json.loads(request.data) - #logger.info(record) - #answer_data = "TXT" + record = json.loads(request.data) + app.logger.info(record) #if "UUID" in record and "QUERY" in record and "AUTHOR" in record: # answer_data = "Query logged" #return_data = ( @@ -38,8 +30,8 @@ def flask_debug(_logger): The `flask_debug` function starts a Flask application in debug mode without using the reloader. Do not use for production for fucks sake. """ - # trunk-ignore(bandit/B201) _logger.info("Attempt debug") + # trunk-ignore(bandit/B201) app.run(debug=True, use_reloader=False, host=HOST_ADDRESS, port=PORT_ADDRESS) @@ -51,13 +43,20 @@ def waitress_run(_logger): _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) -def comm_subroutine(): +def scan_queue(comm_q): + while True: + data = comm_q.get() + print(data) + + +def comm_subroutine(comm_q): + queue = comm_q logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] threads.append(threading.Thread(target=waitress_run, args=(logger,))) - #threads.append(threading.Thread(target=flask_debug, logger)) + threads.append(threading.Thread(target=scan_queue, args=(queue,))) for worker in threads: worker.start() From ee0836ed7ec43514854a0a25f3752d25d0267a22 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:22:08 +0200 Subject: [PATCH 31/53] aaa --- communication_subroutine.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 9313305..faf18fb 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -61,5 +61,4 @@ def comm_subroutine(comm_q): for worker in threads: worker.start() - for worker in threads: - worker.join() + return threads From b43321d36ef6160864d2a5a57b2cb5cd4d19d11e Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:27:14 +0200 Subject: [PATCH 32/53] FIX???? --- bot.py | 2 +- communication_subroutine.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index cd51e34..e0814da 100644 --- a/bot.py +++ b/bot.py @@ -2220,7 +2220,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - communication_subroutine.comm_subroutine(OUT_COMM_Q) + threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index faf18fb..31d72da 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -60,5 +60,6 @@ def comm_subroutine(comm_q): for worker in threads: worker.start() + for worker in threads: + worker.join() - return threads From a75daccf9fcd0ae498fb5308e1acda76216a0b9d Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:34:24 +0200 Subject: [PATCH 33/53] Ok. Fixed? --- communication_subroutine.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 31d72da..2323543 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -23,7 +23,9 @@ def answer_external_command(): #) #return return_data return jsonify("SUCCESS") - +@app.route("/conjurer", methods=["GET"]) +def check_alive(): + return jsonify("SUCCESS") def flask_debug(_logger): """ From 660e2a264a0ef321ec72fa28b205b3168efdd253 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:38:10 +0200 Subject: [PATCH 34/53] Fixed! --- bot.py | 2 +- communication_subroutine.py | 13 ++++++++----- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bot.py b/bot.py index e0814da..da8189a 100644 --- a/bot.py +++ b/bot.py @@ -2220,7 +2220,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,))) + threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index 2323543..0298974 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -23,9 +23,10 @@ def answer_external_command(): #) #return return_data return jsonify("SUCCESS") + @app.route("/conjurer", methods=["GET"]) def check_alive(): - return jsonify("SUCCESS") + return jsonify("ALIVE") def flask_debug(_logger): """ @@ -45,20 +46,22 @@ def waitress_run(_logger): _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) -def scan_queue(comm_q): +def scan_queue(comm_q,out_queue): while True: data = comm_q.get() print(data) + out_queue.put("Test") -def comm_subroutine(comm_q): - queue = comm_q +def comm_subroutine(in_comm_q, out_com_q): + in_queue = in_comm_q + out_queue = out_com_q logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] threads.append(threading.Thread(target=waitress_run, args=(logger,))) - threads.append(threading.Thread(target=scan_queue, args=(queue,))) + threads.append(threading.Thread(target=scan_queue, args=(in_queue,out_queue))) for worker in threads: worker.start() From 0a85c6148e1a6dfbd4e5e5814e2ddf4fef1585ee Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 01:43:35 +0200 Subject: [PATCH 35/53] test --- bot.py | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index da8189a..b8cebe2 100644 --- a/bot.py +++ b/bot.py @@ -299,7 +299,7 @@ async def on_ready(): logger.debug("%s has connected to Discord!", client.user) await client.change_presence(activity=discord.Game(name="Axe Throwing Darts")) await client.tree.sync() - check_data.start() + check_self.start() @client.event @@ -679,10 +679,19 @@ async def check_music(): await play(MUZYKA["ctx"], MUZYKA["requester"]) await asyncio.sleep(2) +@tasks.loop(seconds=3) +# trunk-ignore(pylint/R0915) +async def check_data_q(): + channel = client.get_channel(1062047367337095268) + try: + data = IN_COMM_Q.get(block=False) + await channel.send("O. A tak będzie wyglądało coś ciekawego w przyszłości: {data}") + except Empty: + pass @tasks.loop(seconds=120) # trunk-ignore(pylint/R0915) -async def check_data(): +async def check_self(): """ The function `check_data` periodically checks for conditions to send messages and manage log files in a Discord channel. From d5684a43360da4041a8186d1b8199df16d88a5b3 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 12:32:05 +0200 Subject: [PATCH 36/53] Testing --- bot.py | 2 +- communication_subroutine.py | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/bot.py b/bot.py index b8cebe2..4f21cf5 100644 --- a/bot.py +++ b/bot.py @@ -2229,7 +2229,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) + #threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index 0298974..c254ee3 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -4,7 +4,7 @@ import json from flask import Flask, jsonify, request from waitress import serve - +from bot import IN_COMM_Q, OUT_COMM_Q HOST_ADDRESS = "192.168.1.191" PORT_ADDRESS = 5000 @@ -22,6 +22,7 @@ def answer_external_command(): # 200, #) #return return_data + IN_COMM_Q.put("Test") return jsonify("SUCCESS") @app.route("/conjurer", methods=["GET"]) @@ -46,22 +47,20 @@ def waitress_run(_logger): _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) -def scan_queue(comm_q,out_queue): +def scan_queue(): while True: - data = comm_q.get() + data = OUT_COMM_Q.get() print(data) - out_queue.put("Test") + IN_COMM_Q.put("Test") -def comm_subroutine(in_comm_q, out_com_q): - in_queue = in_comm_q - out_queue = out_com_q +def comm_subroutine(): logger = logging.getLogger('conjurer_musician') logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] threads.append(threading.Thread(target=waitress_run, args=(logger,))) - threads.append(threading.Thread(target=scan_queue, args=(in_queue,out_queue))) + threads.append(threading.Thread(target=scan_queue,)) for worker in threads: worker.start() From dcfffd9602e6816d78c7eb7cfde398285e215361 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 12:42:59 +0200 Subject: [PATCH 37/53] Tak --- bot.py | 8 +++----- communication_subroutine.py | 5 +++-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/bot.py b/bot.py index 4f21cf5..1dd91d4 100644 --- a/bot.py +++ b/bot.py @@ -44,10 +44,8 @@ import yt_dlp from spotify_dl import spotify from spotify_dl import youtube as youtube_download -import communication_subroutine +from communication_subroutine import comm_subroutine, IN_COMM_Q, OUT_COMM_Q -OUT_COMM_Q = Queue() -IN_COMM_Q = Queue() Music_Config = TypedDict( "Music_Config", @@ -685,7 +683,7 @@ async def check_data_q(): channel = client.get_channel(1062047367337095268) try: data = IN_COMM_Q.get(block=False) - await channel.send("O. A tak będzie wyglądało coś ciekawego w przyszłości: {data}") + await channel.send(f"O. A tak będzie wyglądało coś ciekawego w przyszłości: {data}") except Empty: pass @@ -2229,7 +2227,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - #threads.append(threading.Thread(target=communication_subroutine.comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) + #threads.append(threading.Thread(target=comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index c254ee3..0e56c47 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -1,13 +1,14 @@ import logging import threading import json - +from queue import Queue from flask import Flask, jsonify, request from waitress import serve -from bot import IN_COMM_Q, OUT_COMM_Q HOST_ADDRESS = "192.168.1.191" PORT_ADDRESS = 5000 +OUT_COMM_Q = Queue() +IN_COMM_Q = Queue() app = Flask(__name__) From 58899d57383a747b1b9cea650998c2f936747350 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 12:44:23 +0200 Subject: [PATCH 38/53] Test --- communication_subroutine.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/communication_subroutine.py b/communication_subroutine.py index 0e56c47..378c76a 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -68,3 +68,5 @@ def comm_subroutine(): for worker in threads: worker.join() +if __name__ == "__main__": + comm_subroutine() \ No newline at end of file From 1a9ae1caa1e7a86c3e4eee6ca9e5d149395329dd Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 12:46:39 +0200 Subject: [PATCH 39/53] fix --- communication_subroutine.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 378c76a..4956a9b 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -60,7 +60,8 @@ def comm_subroutine(): logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - threads.append(threading.Thread(target=waitress_run, args=(logger,))) + threads.append(threading.Thread(target=flask_debug, args=(logger,))) + #threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,)) for worker in threads: From 33600ac7f766e11a0cdce01bbb0b83e8a0532b20 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:01:30 +0200 Subject: [PATCH 40/53] Test 2 --- bot.py | 2 +- communication_subroutine.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/bot.py b/bot.py index 1dd91d4..9e09db0 100644 --- a/bot.py +++ b/bot.py @@ -2227,7 +2227,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - #threads.append(threading.Thread(target=comm_subroutine, args=(OUT_COMM_Q,IN_COMM_Q))) + threads.append(threading.Thread(target=comm_subroutine, args=(logger))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index 4956a9b..ba9d91c 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -55,8 +55,7 @@ def scan_queue(): IN_COMM_Q.put("Test") -def comm_subroutine(): - logger = logging.getLogger('conjurer_musician') +def comm_subroutine(logger): logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] From a8cbee0a6b71ed027893daa0b9005888d37d39e0 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:12:45 +0200 Subject: [PATCH 41/53] test --- communication_subroutine.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index ba9d91c..6f4b570 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -59,8 +59,8 @@ def comm_subroutine(logger): logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - threads.append(threading.Thread(target=flask_debug, args=(logger,))) - #threads.append(threading.Thread(target=waitress_run, args=(logger,))) + #threads.append(threading.Thread(target=flask_debug, args=(logger,))) + threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,)) for worker in threads: @@ -69,4 +69,5 @@ def comm_subroutine(logger): worker.join() if __name__ == "__main__": - comm_subroutine() \ No newline at end of file + logging_client = logging.getLogger(__name__) + comm_subroutine(logging_client) \ No newline at end of file From f30fee78bf8eeac0177cc9388bb91754ac80a9cf Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:15:59 +0200 Subject: [PATCH 42/53] Back to flask --- bot.py | 2 +- communication_subroutine.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/bot.py b/bot.py index 9e09db0..0d75cd5 100644 --- a/bot.py +++ b/bot.py @@ -2227,7 +2227,7 @@ if __name__ == "__main__": logger.info("Starting discord bot") threads = [] threads.append(threading.Thread(target=client.run, args=(TOKEN,))) - threads.append(threading.Thread(target=comm_subroutine, args=(logger))) + threads.append(threading.Thread(target=comm_subroutine, args=(logger,))) for worker in threads: worker.start() for worker in threads: diff --git a/communication_subroutine.py b/communication_subroutine.py index 6f4b570..0e41a39 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -59,8 +59,8 @@ def comm_subroutine(logger): logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - #threads.append(threading.Thread(target=flask_debug, args=(logger,))) - threads.append(threading.Thread(target=waitress_run, args=(logger,))) + threads.append(threading.Thread(target=flask_debug, args=(logger,))) + #threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,)) for worker in threads: From a18cc43fa69afb58314c7a7c688953d61968080a Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:17:16 +0200 Subject: [PATCH 43/53] Comm check --- communication_subroutine.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 0e41a39..6f4b570 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -59,8 +59,8 @@ def comm_subroutine(logger): logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - threads.append(threading.Thread(target=flask_debug, args=(logger,))) - #threads.append(threading.Thread(target=waitress_run, args=(logger,))) + #threads.append(threading.Thread(target=flask_debug, args=(logger,))) + threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,)) for worker in threads: From 562de83a16fcb3267db772e29609f8e32ddfaee9 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:19:43 +0200 Subject: [PATCH 44/53] more logging --- bot.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/bot.py b/bot.py index 0d75cd5..cb86740 100644 --- a/bot.py +++ b/bot.py @@ -23,7 +23,7 @@ from datetime import datetime from logging import handlers from pathlib import Path, PurePath from platform import uname -from queue import Empty, Queue +from queue import Empty from sys import platform from typing import List, Optional, TypedDict @@ -2226,11 +2226,20 @@ if __name__ == "__main__": # TODO: wpakowac kondzia w wątki odpalic asynchronicznie rownolegle z flaskiem do sterowania nim logger.info("Starting discord bot") threads = [] + logger.info("Starting discord bot: Creating threads") threads.append(threading.Thread(target=client.run, args=(TOKEN,))) threads.append(threading.Thread(target=comm_subroutine, args=(logger,))) + logger.info("Starting discord bot: Starting threads") + i = 0 for worker in threads: + i+=1 + logger.info("Starting discord bot: Starting thread {i}") worker.start() + logger.info("Starting discord bot: Joining threads") + i=0 for worker in threads: + i+=1 + logger.info("Starting discord bot: Joining thread {i}") worker.join() # widok - generuje się 5 stron po 4 linki From ed2167eae1b16afc0850f4a26038fcfda5873f76 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:22:10 +0200 Subject: [PATCH 45/53] More logging --- communication_subroutine.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 6f4b570..9992b6c 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -23,6 +23,7 @@ def answer_external_command(): # 200, #) #return return_data + app.logger.info("DATA RECEIVED") IN_COMM_Q.put("Test") return jsonify("SUCCESS") @@ -48,10 +49,10 @@ def waitress_run(_logger): _logger.info("Attempt waitress") serve(app, host=HOST_ADDRESS, port=PORT_ADDRESS) -def scan_queue(): +def scan_queue(_logger): while True: data = OUT_COMM_Q.get() - print(data) + _logger.info(data) IN_COMM_Q.put("Test") @@ -61,7 +62,7 @@ def comm_subroutine(logger): threads = [] #threads.append(threading.Thread(target=flask_debug, args=(logger,))) threads.append(threading.Thread(target=waitress_run, args=(logger,))) - threads.append(threading.Thread(target=scan_queue,)) + threads.append(threading.Thread(target=scan_queue,args=(logger,))) for worker in threads: worker.start() From 6292cf26b7ed67dbf5b3219fe57122ce15cfcf97 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:26:44 +0200 Subject: [PATCH 46/53] More logging --- bot.py | 1 + communication_subroutine.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/bot.py b/bot.py index cb86740..edd7910 100644 --- a/bot.py +++ b/bot.py @@ -681,6 +681,7 @@ async def check_music(): # trunk-ignore(pylint/R0915) async def check_data_q(): channel = client.get_channel(1062047367337095268) + logger.info("Scan queue") try: data = IN_COMM_Q.get(block=False) await channel.send(f"O. A tak będzie wyglądało coś ciekawego w przyszłości: {data}") diff --git a/communication_subroutine.py b/communication_subroutine.py index 9992b6c..f061ac5 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -71,4 +71,4 @@ def comm_subroutine(logger): if __name__ == "__main__": logging_client = logging.getLogger(__name__) - comm_subroutine(logging_client) \ No newline at end of file + comm_subroutine(logging_client) From 8abad9b862b88679ebd8dc9d924f4c403c00b4c9 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:30:12 +0200 Subject: [PATCH 47/53] KURWA!!!!!!! --- bot.py | 1 + 1 file changed, 1 insertion(+) diff --git a/bot.py b/bot.py index edd7910..4244e2a 100644 --- a/bot.py +++ b/bot.py @@ -298,6 +298,7 @@ async def on_ready(): await client.change_presence(activity=discord.Game(name="Axe Throwing Darts")) await client.tree.sync() check_self.start() + check_data_q.start() @client.event From 9c5173d2c79948623faa2910525b38940279449d Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:32:14 +0200 Subject: [PATCH 48/53] Finally! THis is my final form! --- bot.py | 1 - 1 file changed, 1 deletion(-) diff --git a/bot.py b/bot.py index 4244e2a..f8041b8 100644 --- a/bot.py +++ b/bot.py @@ -682,7 +682,6 @@ async def check_music(): # trunk-ignore(pylint/R0915) async def check_data_q(): channel = client.get_channel(1062047367337095268) - logger.info("Scan queue") try: data = IN_COMM_Q.get(block=False) await channel.send(f"O. A tak będzie wyglądało coś ciekawego w przyszłości: {data}") From 89c0cc68d8caf999f2043733141713d7231c43d6 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:32:59 +0200 Subject: [PATCH 49/53] Too much logging --- communication_subroutine.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index f061ac5..9146530 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -24,7 +24,6 @@ def answer_external_command(): #) #return return_data app.logger.info("DATA RECEIVED") - IN_COMM_Q.put("Test") return jsonify("SUCCESS") @app.route("/conjurer", methods=["GET"]) @@ -53,8 +52,6 @@ def scan_queue(_logger): while True: data = OUT_COMM_Q.get() _logger.info(data) - IN_COMM_Q.put("Test") - def comm_subroutine(logger): logger.setLevel(logging.DEBUG) From 1ee475fc74814faf48f07628dccbe9cdda1173cd Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 13:47:44 +0200 Subject: [PATCH 50/53] fix --- communication_subroutine.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index 9146530..deb790e 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -54,7 +54,7 @@ def scan_queue(_logger): _logger.info(data) def comm_subroutine(logger): - logger.setLevel(logging.DEBUG) + #logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] #threads.append(threading.Thread(target=flask_debug, args=(logger,))) From 0584df91439817542000abc088429849fcdfbd77 Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 16:23:12 +0200 Subject: [PATCH 51/53] FIxed logging issue --- bot.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/bot.py b/bot.py index f8041b8..0dc0b61 100644 --- a/bot.py +++ b/bot.py @@ -718,7 +718,6 @@ async def check_self(): "*Conjurer porządkuje bar, wypala szklanki do czysta miotaczem płomieni ze swojej zbroi i ogólnie wygląda na zajętego....*" ) async with channel.typing(): - # TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna path_newfile = f"{LOGSTORE}pamiec_muzyki{datetime.now()}.json" logger.info(path_newfile) with open(MEMORY_FIVE_MUZYKA, "r+", encoding=ENCODING) as file_music_memory: @@ -738,8 +737,7 @@ async def check_self(): "*Przeciąga się za barem* No dobra - porobione to można dalej pi... *Zauważa spojrzenie Hammera* ...sać powieści o naszym wspaniałym barze SZEFIE!" ) if os.path.getsize(MEMORY_FIVE_SIARA) > 3000000: - # TODO: Tu jest błąd. Ścieżka MEMORY_FIVE_MUZYKA jest absolutna a nie względna - path_newfile = "{LOGSTORE}pamiec_rozmow{datetime.now()}.json" + path_newfile = f"{LOGSTORE}pamiec_rozmow{datetime.now()}.json" logger.info(path_newfile) await channel.send( "*Conjurer porządkuje bar, ścina lekkim laserem pulsacyjnym powierzchnie baru o grubości kilku mikronów i ogólnie wygląda na zajętego....*" From 95785199c0262a27156b80af8b88105e9138aadf Mon Sep 17 00:00:00 2001 From: Migatu Date: Tue, 9 Apr 2024 19:21:06 +0200 Subject: [PATCH 52/53] Drmf --- bot.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/bot.py b/bot.py index 0dc0b61..859f03c 100644 --- a/bot.py +++ b/bot.py @@ -58,12 +58,13 @@ Music_Config = TypedDict( class QueryControl: - def __init__(self, query_author, query_uuid, query_content, uplogger) -> None: + def __init__(self, query_author, query_uuid, query_content, uplogger, ctx) -> None: self.author = query_author self.uuid = query_uuid self.content = query_content self.logger = uplogger self.stop = False + self.ctx = ctx self.logger.info( f"Created Query control for {self.author}, {self.uuid}: {self.content}" ) @@ -2139,7 +2140,7 @@ async def wyszukaj_linki_do_dokumentow(ctx): username = ctx.message.author.nick else: username = ctx.message.author.name - query_object = QueryControl(username, query_uuid, query, logger) + query_object = QueryControl(username, query_uuid, query, logger, ctx) OUT_COMM_Q.put(query_object) await ctx.send(f"No dobra poszło. Zapamiętaj proszę {query_uuid} - to identyfikator twojego zapytania. Jesteś {queue_size} w kolejce."+ " Zapytania obsługuje algorytm zasilany czterema chomikami zapierdalającymi w kołowrotku - więc wyniki najwcześniej za kilka godzi - ale mogą być też dni.") From db46aea55bbf98163908253b5ad40c59ba0843e7 Mon Sep 17 00:00:00 2001 From: Migatu Date: Wed, 10 Apr 2024 13:16:32 +0200 Subject: [PATCH 53/53] Start work on views --- communication_subroutine.py | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/communication_subroutine.py b/communication_subroutine.py index deb790e..7e24705 100644 --- a/communication_subroutine.py +++ b/communication_subroutine.py @@ -1,7 +1,7 @@ import logging import threading import json -from queue import Queue +from queue import Queue, Empty from flask import Flask, jsonify, request from waitress import serve @@ -9,21 +9,24 @@ HOST_ADDRESS = "192.168.1.191" PORT_ADDRESS = 5000 OUT_COMM_Q = Queue() IN_COMM_Q = Queue() - +internal_q = Queue() app = Flask(__name__) @app.route("/conjurer", methods=["POST"]) def answer_external_command(): record = json.loads(request.data) app.logger.info(record) - #if "UUID" in record and "QUERY" in record and "AUTHOR" in record: - # answer_data = "Query logged" - #return_data = ( - # jsonify(isError=False, message="Success", statusCode=200, data=answer_data), - # 200, - #) - #return return_data app.logger.info("DATA RECEIVED") + + + while True: + try: + q_data = internal_q.get(block=False) + except Empty: + break + if q_data.uuid in record: + pass + return jsonify("SUCCESS") @app.route("/conjurer", methods=["GET"]) @@ -52,13 +55,15 @@ def scan_queue(_logger): while True: data = OUT_COMM_Q.get() _logger.info(data) + internal_q.put(data) + query_list.append(data) def comm_subroutine(logger): #logger.setLevel(logging.DEBUG) logger.info("Started") threads = [] - #threads.append(threading.Thread(target=flask_debug, args=(logger,))) - threads.append(threading.Thread(target=waitress_run, args=(logger,))) + threads.append(threading.Thread(target=flask_debug, args=(logger,))) + #threads.append(threading.Thread(target=waitress_run, args=(logger,))) threads.append(threading.Thread(target=scan_queue,args=(logger,))) for worker in threads: