Update plugin suite au passage en obsolète

Helloo,

Suite à l’annonce du passage en obsolète du plugin horoscope ( Info Plugin Horoscope : Actualité ), après avoir joué avec gemini,

je propose le remplacement des 2 méthodes du fichier /plugins/horoscope/core/class/horoscope.class.php du plugin ci-dessous.

Au lieu de récupérer directement les données générées sur le github, les fonctions récupèrent directement les données du site pour renseigner les commandes des équipements du plugin.

Les données devraient donc être identiques au fonctionnement précédent.

  public static function getHoroscopeForSigne_Day($signe_zodiaque, $name, $horo_type)
    {
        $horoscope['signe'] = $signe_zodiaque;
        
        if ($horo_type == 'astro_jour' || $horo_type == 'astro_jour_hebdo') {
            $url = "https://www.astroo.com/horoscope.php";
            $options = [
                'http' => [
                    'method' => 'GET',
                    'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\r\n"
                ]
            ];
            $context = stream_context_create($options);
            
            log::add('horoscope', 'debug', '│┌── :fg-info:' . __('Info requête directe pour l\'horoscope du jour', __FILE__) . ':/fg: ──');
            log::add('horoscope', 'debug', '││ :fg-info:URL : :/fg:' . $url);
            
            $html = file_get_contents($url, false, $context);
            
            if ($html === FALSE) {
                log::add('horoscope', 'debug', '││:fg-danger:' . __('Erreur de chargement du site Astroo', __FILE__) . ':/fg:');
                return false;
            }

            try {
                $html = html_entity_decode($html, ENT_QUOTES, 'UTF-8');
                $signe_majuscule = strtoupper($signe_zodiaque);
                
                preg_match('/' . $signe_majuscule . '<\/a>\s*<\/span>\s*(.*?)\s*<br/si', $html, $matches);
                
                $horoscope['date'] = date('Y-m-d');

                if (isset($matches[1])) {
                    $texte = trim(strip_tags($matches[1]));                    
                    $texte_nettoye = preg_replace('/Cette semaine\s*\.\.\.\s*$/i', '', $texte);
                    
                    $horoscope['horoscope'] = trim($texte_nettoye);
                    
                    log::add('horoscope', 'debug', '││ :fg-info:' . __('Texte récupéré avec succès pour', __FILE__) . ' ' . $signe_majuscule);
                } else {
                    log::add('horoscope', 'error', '││ :fg-danger:' . __('Structure HTML modifiée ou signe introuvable', __FILE__) . ':/fg:');
                    $horoscope['horoscope'] = __('Données indisponibles', __FILE__);
                }

            } catch (Exception $exc) {
                log::add('horoscope', 'error', __('Erreur pour la récupération des données pour l\'horoscope du jour sur le site internet pour', __FILE__) . ' ' . $name . ' : ' . $exc->getMessage());
            }
            log::add('horoscope', 'debug', '│└─────────');
        }

        if ($horo_type == 'astro_hebdo' || $horo_type == 'astro_jour_hebdo') {
            $horoscope = self::getHoroscopeForSigne_Hebdo($signe_zodiaque, $name, $horoscope);
        }
        
        return $horoscope;
    }
public static function getHoroscopeForSigne_hebdo($signe_zodiaque, $name, $horoscope)
    {
        $signe_clean = strtolower($signe_zodiaque);
        $url = "https://www.astroo.com/horoscopes/horoscope_hebdo_" . $signe_clean . ".php";
        
        $options = [
            'http' => [
                'method' => 'GET',
                'header' => "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36\r\n"
            ]
        ];
        $context = stream_context_create($options);
        
        log::add('horoscope', 'debug', '│┌── :fg-info:' . __('Info requête directe pour l\'horoscope hebdomadaire', __FILE__) . ':/fg: ──');
        log::add('horoscope', 'debug', '││ :fg-info:URL : :/fg:' . $url);
        
        $html = file_get_contents($url, false, $context);
        
        if ($html === FALSE) {
            log::add('horoscope', 'debug', '││:fg-danger:' . __('Erreur de chargement du site Astroo (Hebdo)', __FILE__) . ':/fg:');
            return $horoscope;
        }

        try {
            $html = html_entity_decode($html, ENT_QUOTES, 'UTF-8');
            $horoscope['date_hebdo'] = date('Y-m-d');
            
            preg_match_all('/<td class="hhte" valign="top">(.*?)<\/td>/si', $html, $matches);
            
            $decans = [];
            if (isset($matches[1]) && count($matches[1]) >= 3) {
                for ($i = 0; $i < 3; $i++) {
                    $texte = trim(strip_tags($matches[1][$i]));
                    $texte = preg_replace('/\s+/', ' ', $texte);
                    $texte = preg_replace('/Cette semaine\s*\.\.\.\s*$/i', '', $texte);
                    $decans[] = trim($texte);
                }
                
                $horoscope['1_DECAN'] = $decans[0];
                $horoscope['2_DECAN'] = $decans[1];
                $horoscope['3_DECAN'] = $decans[2];
                
                log::add('horoscope', 'debug', '││ :fg-info:' . __('Décans hebdo récupérés avec succès pour', __FILE__) . ' ' . $signe_zodiaque);
            } else {
                log::add('horoscope', 'error', '││ :fg-danger:' . __('Impossible de trouver les 3 blocs de décans dans le HTML', __FILE__) . ':/fg:');
                $horoscope['1_DECAN'] = __('Données indisponibles', __FILE__);
                $horoscope['2_DECAN'] = __('Données indisponibles', __FILE__);
                $horoscope['3_DECAN'] = __('Données indisponibles', __FILE__);
            }
            
        } catch (Exception $exc) {
            log::add('horoscope', 'error', __('Erreur pour la récupération des données pour l\'horoscope hebdomadaire sur le site internet pour', __FILE__) . ' ' . $name . ' : ' . $exc->getMessage());
        }
        
        log::add('horoscope', 'debug', '│└─────────');
        return $horoscope;
    }

Testé avec le signe du verseau :

2 « J'aime »

Merci
Je n ai même pas eu le temps de m y pencher dessus
Que tu as trouvé une solution

Je regarde dans le week-ends

Merci en tout cas

1 « J'aime »

bonsoir
je viens de pousser sur la beta
si ok je pousserai en stable rapidement
merci de ton boulot

2 « J'aime »

Hello,
Sauf erreur de ma part il est toujours en privé donc on ne peu pas mettre à jour et tester

Cela doit être bon

1 « J'aime »

Merci à vous deux :waving_hand:

Bonjour, je vois que dans la doc du plugin c’est indiqué maj le 07/07/2026 par contre pas de mise à jour visible dans Jeedom, normal ou non :wink:

Je me répond à moi même, il fallait installer la Beta (que je suis)

Salut
J avais oublié de faire la stable
Elle est disponible maintenant

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.