PARTAGE prévisions nombres d'heures de soleil sur 7 jours Script Python3

Bravo le plus difficile est pas de recuperer les données mais de les présentées dans de beau widgets :slight_smile:

1 « J'aime »

Cela fonctionne après la mise à jour de mon système c’est parfait

1 « J'aime »

Du coup j’ai commencé à jouer un peu avec maintenant que j’ai tout comme il faut.
J’ai d’abord suivi pas à pas pour les heures de soleil : Top cela fonctionne super bien et j’ai pris peur car mes panneaux solaires ne vont pas me chauffer la piscine cette semaine :rofl:

ensuite j’ai fait un soupe2 pour jouer avec le vent et cela remonte bien mais j’ai juste un problème sur l’orientation du vent en plus de l’affichage interne du widget compass qui sera le problème suivant pour que je puisse voir le texte comme il faut.
A partir de J+4 je n’ai plus les mêmes orientations !

Je ne dois pas faire comme il faut, ne connaissant pas trop le python.

Mon soupe 2 ressemble à ça :

#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
res = requests.get(argv[2])
soupe2=BeautifulSoup(res.content, "html.parser")
print(int(soupe2.find_all(class_ = "wind")[int(argv[1])].text[33:36]))

Alors attention le script tel qu’il est ne récupère qu’une info a la fois …

Pour le vent il faut ce méfier lorsqu’il y a des rafales c’est une tranche qui est indiquée
genre 50-70 ce qui peut fausser l’info.

pour ce qui est des direction elle ne sont pas en valeurs °

N NE NO E SE SO O .... etc 

et n’apparaissent pas dans la partie text mais dans la classe …

c’est donc la qu’il faudra chercher l’information (autre) et pas numérique

regarde l’exemple qu’a fait @Bben

subData['direction']=soupe.find_all(class_="wind")[i].span['class'][2].strip()

Tu a pratiquement déjà la, la solution

Salut @jerome6994

La tu récupère la vitesse du vent, et les 2 images sont cohérentes

Il faut chopper la direction dans la classe de la balise span dans la div de class wind.

A propos de .split() et .strip()
Ces 2 commandes peuvent vous faciliter la récupération de données.

Résumé et reprise du contexte sous python3

au prompt python copiez ces lignes avant de tester la suite

import requests
from bs4 import BeautifulSoup
res = requests.get("https://www.meteoblue.com/fr/meteo/semaine/paris_france_2988507")
soupe=BeautifulSoup(res.content, "html.parser")

Rappelez-vous pour récupérer la vitesse du vent dans la partie text

>>> soupe.find_all(class_="wind")[0].text
'\n\n                                35 km/h  

on ajoutait text[33:36] pour aller chercher la valeur a une position …

Voici 2 autres méthode :
split() nous renvoie une liste des éléments

>>> soupe.find_all(class_="wind")[0].text.split()
['35', 'km/h']

il nous suffit de récuperer soit le 1er élément

>>> soupe.find_all(class_="wind")[0].text.split()[0]
'35'

ou le 2ieme

>>> soupe.find_all(class_="wind")[0].text.split()[1]
'km/h'

Passons a strip() (c’est pratiquement l’inverse )

>>> soupe.find_all(class_="wind")[0].text.strip()
'35 km/h'

La on récupère les 2 infos en 1 seule

Attention toute fois au type de votre virtuel binaire/numérique/autre qui doit correspondre au type d’information que vous récuperez …

Voilà je vous laisse faire bon usage et améliorer vos script

Bien je suis sur mon téléphone mais j’ai le cerveau qui a bien chauffé quand même :stuck_out_tongue_winking_eye:

Je comprends un peu quand on explique comme ça en introduisant les éléments et je vais tenter de faire un petit quelque chose quand même.

Merci de vos indications

Tout le tutoriel ici n’est qu’une invitation a apprendre Python
et le scramping est un bon appât :wink:

Oui lais il y a trop de choses bien à faire je vais faire l’over dose :face_vomiting:

Création d’objet avec mon fils
Apprentissage code pour widget
Apprentissage python
Etc…

C’est top mais il va falloir se calmer Jérôme sinon le cerveau va griller :rofl::rofl::rofl:

Bonjour

Mise à jour ce jout du plingin script qui fait génére maintenant une erreur (qui n’existait pas)
Avez vous tous la même chose ?

Erreur sur /var/www/html/core/php/…/…/plugins/script/core/ressources/Soleil1 0 Météo Chennevières-sur-Marne - meteoblue 2>&1 valeur retournée : 127. Détails : sh: 1: /var/www/html/core/php/…/…/plugins/script/core/ressources/Soleil1: not found

Refait ton script il n’existe plus … merci jeedom (voir les sujet sur ce ploblème)

Merci
J’ai du supprimer toutes les lignes et les recréer
Je ne sais pas s’il y avait une méthode plus rapide

Mais pas de chance une autre mise à joru du plugin script qui arrive

Celle-la sera peut’être bonne je crois qu’il y a eu une correction … :thinking:

Bon pour ceux qui on envie de récupérer toutes les infos de prévision a 7 jours
je vous propose 1 script de type info autre
et une seule commande script autre (ne pas coché historique)
ce script ne prend qu’un paramètre, l’adresse correspondante a votre ville ex :

nomduscript https://www.meteoblue.com/fr/meteo/semaine/nancy_france_2990999

voila le résultat:
Capture d’écran du 2020-05-19 00-11-24

Le code
#! /usr/bin/env python3
import requests
from sys import argv
from bs4 import BeautifulSoup
res = requests.get(argv[1])
soupe=BeautifulSoup(res.content, "html.parser")

print("<table>", end = '')
  
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Jours: </td>", end = '')
for i in range(7):
    print("<td style='width: 30px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_day_short')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')      
  
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Vent: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'wind')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')  
      
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Direction: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'wind')[i].span['class'][2] +"</td>", end = '')
print("</tr>", end = '')     
      
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Tmax: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_temp_max')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
      
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Tmin: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_temp_min')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')     
          
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Pluie: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_precip')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')
      
print("<tr>", end = '')  
print("<td  style='width: 80px;border: 1px; border-collapse: collapse; color:white;height:20px;text-align:right;'>Soleil: </td>", end = '')
for i in range(7):
    print("<td style='width: 25px;border: 1px; border-collapse: collapse; color:red;height:20px;'>"+soupe.find_all(class_ = 'tab_sun')[i].text.split()[0] +"</td>", end = '')
print("</tr>", end = '')      
      
print("</table>", end = '')

2 « J'aime »

Salut Olive
J’ai testé ton script, mais j’ai toujours la même erreur

Pourtant j’ai utiliser putty pour installer la bibliothèque BeautifulSoup.
Elle a bien été téléchargée.
Merci de ton aide.
Boboss

dans ta console tu a bien taper :

sudo pip3 install beautifulsoup4

quel est la réponse a cette ligne de commande ?

puis toujours en console si tu tape

python3

tu devrais obtenir aprés la version de python le prompt suivant >>>
sur ce prompt si tu tape

from bs4 import BeautifulSoup

Y a t’il une erreur ou renvoi t’il le prompt python >>> ?

Fait moi une copie d’écran comme celle-ci :

Merci pour ta réponse
J’avais tapé
pip install beautifulsoup4
Ce qui est bizarre

Pourtant je suis bien connecté avec mon login et mdp.
Il ne veut pas installer quand je tape

C’est strange. une histoire de droit ?
Merci

alors fait la même chose en root avec un su

en root,je ne peux pas car lors de l’installation, il était conseillé de supprimer root de mémoire.
Il faudrait modifier le fichier sudoers
Boboss

Et tu n’a aucun utilisateur ayant des droits administrateur ?