/** * Récupere les prévision de T°C de l'eau depuis www.meteocity.com sur les 7 prochains joursS */ static function getTempWater($tempWaterInfoURL, $output) { // $tempWaterInfoURL: http://www.meteocity.com/france/plage/dieppe_p76217/ // ajax pour avoir les infos: http://www.meteocity.com/ajax/Beach/ajaxChangeBeachView/?date=20151203+&citId=76217&modificateur=1 $ajaxUrlType = TempWaterGetData::buildMeteocityAjaxURL($tempWaterInfoURL); // ajaxURL avec "__date__" à remplacer par un truc du type 20151203 //$regExGetTempWater = '#([0-9]+)°C#'; $regExGetTempWater = '#([0-9]+)#'; $client = new Client(); $prevTempWater = array(); $day = new \DateTime("now"); // attention dû à une erreure coté meteocity, il faut mettre 20151128 pour avoir les infos du 29/11/2015 ... $inter1Day = new \DateInterval('P01D'); $inter1Day->invert = 1; $day->add($inter1Day); // enlever un jour $inter1Day->invert = 0; for ($numJour = 0; $numJour <= 5; $numJour++) { $ajaxUrl = str_replace("__date__", $day->format('Ymd'), $ajaxUrlType); $day->add($inter1Day); // ajout d'un jour $output->writeln('<info>url : ' . $ajaxUrl . '</info>'); $crawler = $client->request('GET', $ajaxUrl); /* <div class="data-temp-eau"> <div class="title"><h2>Température de l'eau</h2></div> <div class="data-number"><span class="icon"></span> 12°C</div> </div> */ $divWater = $crawler->filter(".data-temp-eau"); // get <div class="data-temp-eau" ...> $divTempsWater = $divWater->filter(".data-number"); // and <div class="data-number" ...> preg_match($regExGetTempWater, $divTempsWater->text(), $tempWater); $prevTempWater[$numJour] = $tempWater[1]; $output->writeln('<info>temperature de l eau pour le ' . $day->format('d/m/Y') . ': ' . $tempWater[1] . '</info>'); } return $prevTempWater; }
protected function execute(InputInterface $input, OutputInterface $output) { $em = $this->getContainer()->get('doctrine.orm.entity_manager'); // récupere tous les spots $listSpot = $em->getRepository('LaPoizWindBundle:Spot')->findAll(); foreach ($listSpot as $spot) { $output->writeln('<info>Note du Spot ' . $spot->getNom() . ' - </info>'); // On efface les vielles notes (avant aujourd'hui) ManageNote::deleteOldData($spot, $em); list($tabDataNbHoureNav, $tabDataMeteo) = NbHoureNav::createTabNbHoureNav($spot, $em); $tabNbHoureNav = NbHoureNav::calculateNbHourNav($tabDataNbHoureNav); $output->writeln('<info> *** Nb Heure nav ***</info>'); // Save nbHoure on spot foreach ($tabNbHoureNav as $keyDate => $tabWebSite) { $output->writeln('<info>' . $keyDate . ': '); $nbHoureNavCalc = 0; $nbSiteCalc = 0; foreach ($tabWebSite as $keyWebSite => $nbHoureNav) { $output->writeln('<info> ' . $keyWebSite . ' : ' . $nbHoureNav . '</info> '); $noteDates = ManageNote::getNotesDate($spot, \DateTime::createFromFormat('Y-m-d', $keyDate), $em); $nbHoureNavObj = ManageNote::getNbHoureNav($noteDates, $keyWebSite, $em); $nbHoureNavObj->setNbHoure($nbHoureNav); $em->persist($nbHoureNavObj); $em->persist($noteDates); if ($nbHoureNav > 0) { $nbSiteCalc++; $nbHoureNavCalc += $nbHoureNav; } } if ($nbSiteCalc > 0) { $output->writeln('<info> ' . $keyDate . ' : ' . $nbHoureNavCalc . ' / ' . $nbSiteCalc . ' = ' . $nbHoureNavCalc / $nbSiteCalc . '</info> '); $noteDates->setNbHoureNavCalc($nbHoureNavCalc / $nbSiteCalc); $em->persist($noteDates); } } $output->writeln('<info> *** Meteo ***</info>'); // Save meteo $tabMeteo = NbHoureMeteo::calculateMeteoNav($tabDataMeteo); foreach ($tabMeteo as $keyDate => $tabMeteoDay) { $output->writeln('<info> Calcule Meteo of ' . $keyDate . '</info> '); $noteDates = ManageNote::getNotesDate($spot, \DateTime::createFromFormat('Y-m-d', $keyDate), $em); $noteDates->setTempMax($tabMeteoDay["tempMax"]); $noteDates->setTempMin($tabMeteoDay["tempMin"]); $noteDates->setMeteoBest($tabMeteoDay["meteoBest"]); $noteDates->setMeteoWorst($tabMeteoDay["meteoWorst"]); $em->persist($noteDates); } $output->writeln('<info> *** T C de l eau ***</info>'); //********** Température de l'eau ********** try { $tabTempWater = null; $tabTempWater = TempWaterGetData::getTempWaterFromSpot($spot, $output); } catch (\Exception $e) { $output->writeln('<warn>' . $e->getMessage() . '</warn>'); $output->writeln('<warn> * End Warn * </warn>'); } if ($tabTempWater != null) { $currentDay = new \DateTime("now"); foreach ($tabTempWater as $numJourFromToday => $tempWater) { $noteDates = ManageNote::getNotesDate($spot, clone $currentDay, $em); $noteDates->setTempWater($tempWater); $em->persist($noteDates); $currentDay = date_add($currentDay, new \DateInterval('P1D')); // Jour suivant } } $output->writeln('<info>******************************</info>'); } $em->flush(); }
/** * @Template() * Efface les prévisions de T°C de l'eau * http://localhost/Wind/web/app_dev.php/admin/BO/ajax/spot/tempwater/delete/1 */ public function tempWaterDeleteAction($id) { $em = $this->container->get('doctrine.orm.entity_manager'); $spot = $em->find('LaPoizWindBundle:Spot', $id); if (!$spot) { return $this->container->get('templating')->renderResponse('LaPoizWindBundle:Default:errorBlock.html.twig', array('errMessage' => "Spot not find !")); } $tempWaterURL = $spot->getTempWaterURL(); if (!empty($tempWaterURL)) { TempWaterGetData::deleteTempWater($spot, $em, new NullOutput()); } $previsionDate = $em->getRepository('LaPoizWindBundle:PrevisionDate')->findLastPrev(10, $spot); return $this->container->get('templating')->renderResponse('LaPoizWindBundle:BackOffice/Spot/Ajax/TempWater:tempWaterSaveResult.html.twig', array('previsionDateDB' => $previsionDateDB, 'spot' => $spot, 'message' => "", 'saveSuccess' => true)); }