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 :

