Skip to content

Commit

Permalink
Merge pull request #103 from MasterCruelty/develop2
Browse files Browse the repository at this point in the history
🚀 pistekart scraping
  • Loading branch information
MasterCruelty authored Dec 21, 2022
2 parents 7df2b50 + b175a08 commit 62047ae
Show file tree
Hide file tree
Showing 3 changed files with 73 additions and 0 deletions.
4 changes: 4 additions & 0 deletions help.json
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
66 changes: 66 additions & 0 deletions modules/pistekart.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
from utils.get_config import sendMessage,get_chat,get_id_msg,sendPhoto
from pyrogram import Client,errors
import requests
from bs4 import BeautifulSoup



"""
Restituisce i dati di tutte le piste in una regione o provincia se specificata
Nel formato /piste <region> <provincia> oppure /piste <region>
"""
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__")

"""
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__")

3 changes: 3 additions & 0 deletions utils/controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -35,6 +36,8 @@
'/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}

dictionary_admin = {'/getmessage' : usys.get_message,
Expand Down

0 comments on commit 62047ae

Please sign in to comment.