From aef09041ea206df45d681d08a396ef5fd7442bc0 Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 21 Dec 2022 19:43:00 +0100 Subject: [PATCH 1/5] :construction: build /piste build command for italian go kart tracks #102 --- modules/pistekart.py | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 modules/pistekart.py diff --git a/modules/pistekart.py b/modules/pistekart.py new file mode 100644 index 0000000..83a3cf4 --- /dev/null +++ b/modules/pistekart.py @@ -0,0 +1,45 @@ +from utils.get_config import sendMessage,get_chat,get_id_msg +from pyrogram import Client,filters,errors +from pyrogram.types import InlineKeyboardButton,InlineKeyboardMarkup +from pyrogram.handlers import CallbackQueryHandler +import re +import requests +from bs4 import BeautifulSoup + + + +""" + Restituisce i dati di tutte le piste in una regione o provincia se specificata + Nel formato /piste oppure /piste +""" +def get_piste_region(query,client,message): + if " " in query: + splitted = query.split(" ") + url ="https://pistekartitalia.it/piste/" + splitted[0] + "/" + splitted[1] + else: + url = "https://pistekartitalia.it/piste/" + query + resp = requests.get(url) + zuppa = BeautifulSoup(resp.text,"html.parser") + tags = zuppa.find_all(("div","h2"),attrs={"class":"field-content"}) + results = [tag.getText() for tag in tags if tag.getText() != ""] + + pista = "" + piste = [] + result = "" + for i in range(len(results)): + if "\n\n" in results[i] : + continue + if len(results[i].replace(" ","")) == 5 and results[i].replace(" ","").isdigit(): + pista += results[i] + "\n" + piste.append(pista) + result += pista + "\n\n" + pista = "" + else: + pista += results[i] + "\n" + + try: + return sendMessage(client,message,result) + except errors.exceptions.bad_request_400.MessageEmpty: + return sendMessage(client,message,"__Pagina non trovata__") + + From a6366de7693f1892f51bcd624527d856fc584dbc Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 21 Dec 2022 19:43:11 +0100 Subject: [PATCH 2/5] Add route /piste --- utils/controller.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/controller.py b/utils/controller.py index 7a799f0..7e7ecbd 100644 --- a/utils/controller.py +++ b/utils/controller.py @@ -11,6 +11,7 @@ import modules.urban import modules.tper import modules.viaggiatreno +import modules.pistekart import utils.dbfunctions as udb import utils.sysfunctions as usys import utils.get_config as ugc @@ -35,6 +36,7 @@ '/mystat' : udb.show_stats, '/tper' : modules.tper.send_tper_stop, '/tpershop' : modules.tper.get_tper_edicola, + '/piste' : modules.pistekart.get_piste_region, '/helprob' : usys.help} dictionary_admin = {'/getmessage' : usys.get_message, From 9d5cc6538ab2b2595759302fb2dc854333ab84ae Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 21 Dec 2022 22:41:53 +0100 Subject: [PATCH 3/5] :rocket: /infopista works Fetch info about a specific track #102 --- modules/pistekart.py | 31 ++++++++++++++++++++++++++----- 1 file changed, 26 insertions(+), 5 deletions(-) diff --git a/modules/pistekart.py b/modules/pistekart.py index 83a3cf4..9e4ffc9 100644 --- a/modules/pistekart.py +++ b/modules/pistekart.py @@ -1,8 +1,5 @@ -from utils.get_config import sendMessage,get_chat,get_id_msg -from pyrogram import Client,filters,errors -from pyrogram.types import InlineKeyboardButton,InlineKeyboardMarkup -from pyrogram.handlers import CallbackQueryHandler -import re +from utils.get_config import sendMessage,get_chat,get_id_msg,sendPhoto +from pyrogram import Client,errors import requests from bs4 import BeautifulSoup @@ -42,4 +39,28 @@ def get_piste_region(query,client,message): except errors.exceptions.bad_request_400.MessageEmpty: return sendMessage(client,message,"__Pagina non trovata__") +""" + restituisce informazioni dettagliate sulla pista scelta, inclusa la foto del tracciato +""" +def get_info_pista(query,client,message): + url = "https://www.pistekartitalia.it/" + query.replace(" ","-") + resp = requests.get(url) + + #recupero della foto del tracciato + zuppa = BeautifulSoup(resp.text,"html.parser") + images = zuppa.select('div img') + img_url = images[len(images)-1]['src'] + + #recupero descrizione pista + try: + info_track = zuppa.find_all("div",attrs={"class":"circuit-information"}) + info_track = [tag.getText() for tag in info_track] + info_track = info_track[0].rsplit('Mappa',1) + info_track = info_track[0] + except IndexError: + info_track = "__Descrizione pista non disponibile__" + + #invio messaggio con descrizione pista e foto tracciato + sendMessage(client,message,"__" + info_track+ "__") + sendPhoto(client,message,img_url,"__Foto del tracciato__") From a563af185d225825e53b6723207c18ff03ebbe2d Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 21 Dec 2022 22:42:03 +0100 Subject: [PATCH 4/5] Add route --- utils/controller.py | 1 + 1 file changed, 1 insertion(+) diff --git a/utils/controller.py b/utils/controller.py index 7e7ecbd..351b3c7 100644 --- a/utils/controller.py +++ b/utils/controller.py @@ -36,6 +36,7 @@ '/mystat' : udb.show_stats, '/tper' : modules.tper.send_tper_stop, '/tpershop' : modules.tper.get_tper_edicola, + '/infopista' : modules.pistekart.get_info_pista, '/piste' : modules.pistekart.get_piste_region, '/helprob' : usys.help} From b175a0827cf6a20885e416e97877aa199165002a Mon Sep 17 00:00:00 2001 From: Roberto Date: Wed, 21 Dec 2022 22:47:29 +0100 Subject: [PATCH 5/5] Update help --- help.json | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/help.json b/help.json index e25b73e..c239775 100644 --- a/help.json +++ b/help.json @@ -23,6 +23,10 @@ "treni": "**/treni 'partenza','arrivo'** => restituisce le soluzioni di treni(è possibile inserire anche la data specifica).\n\n__Esempio: /treni milano centrale, bologna centrale\nOppure: /treni milano centrale, bologna centrale, 2022-12-06__\nInoltre se aggiungete l'opzione '-price' è possibile consultare anche i prezzi.\n__Esempio: /treni -price milano centrale, bologna centrale__\n\n", "infotreno":"**/infotreno 'numero-treno'** ==> restituisce informazioni sul treno richiesto(andamento, ultimo rilevamento, ritardo etc.etc.)" }, + "kart":{ + "piste":"**/piste 'regione'** => restituisce elenco delle piste nella regione.\n/piste 'regione' 'cod-provincia' per avere solo la provincia.\nEsempio /piste lombardia cr-cremona.\n\n", + "infopista":"**/infopista 'nome pista'** => restituisce informazioni dettagliate sulla pista(se disponibili) e la foto del tracciato." + }, "mappe":{ "map":"**/map ' place'** => restituisce la posizione del luogo richiesto.\nAggiungi l'opzione -i se vuoi solo sapere informazioni sul luogo e il valore di importanza. __Esempio: /map __**-i**__ Piazza del duomo Milano__\n\n", "km":"**/km 'place1', 'place2'** => restituisce la distanza in linea d'aria tra i due luoghi in km.\n"