From d0a0d9e70b92e25ebcf9fc7851fb5b44030faa6f Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Mon, 17 Sep 2012 09:43:06 +0000
Subject: [PATCH] 1. Usunięcie pliku upgrade.php i przeniesienie jego funkcjonalności do pliku BotSession. 2. Uwzględnienie w/w zmiany w plikach INSTALL, UPGRADE, .htaccess 3. Usunięcie z pliku BUILD wzmianki o katalogu ./data/kino
---
data/lotto/pobierz.php | 138 +++++++++++++++++++++++++++++----------------
1 files changed, 89 insertions(+), 49 deletions(-)
diff --git a/data/lotto/pobierz.php b/data/lotto/pobierz.php
index 2260d8b..3130d07 100644
--- a/data/lotto/pobierz.php
+++ b/data/lotto/pobierz.php
@@ -2,25 +2,34 @@
echo STAR.'Pobieranie danych...';
class lotto {
+ // Zawartość strony http://lotto.pl/wyniki-gier
protected $strona = NULL;
+ // Lista gier.
protected $gry = array(
- 'lotto' => array(6, FALSE, 'dl'),
- 'mini-lotto' => array(5, FALSE, 'el'),
- 'kaskada' => array(12, FALSE, 'ka'),
- 'multi-multi' => array(20, TRUE, 'mm'),
- 'joker' => array(5, FALSE, 'jk')
+ // nazwa => array(ilość liczb, plus?, lottoplus?)
+ 'lotto' => array(6, FALSE, 6),
+ 'mini-lotto' => array(5, FALSE, 0),
+ 'kaskada' => array(12, FALSE, 0),
+ 'multi-multi' => array(20, TRUE, 0),
+ 'joker' => array(5, FALSE, 0)
);
+ // Spróbuj pobrać stronę http://lotto.pl/wyniki-gier
+ // do zmiennej $this->strona z użyciem pliku cache.
function __construct() {
$cache = 'lotto_cache.txt';
+ // Sprawdź, czy da się skorzystać z pliku cache.
if( ( !file_exists($cache) AND !is_writable(dirname($cache)) )
OR ( file_exists($cache) AND !(is_writable($cache)) ) ) {
+ // Nie, nie da się.
$cache = '';
}
else
{
+ // Tak, da się.
+ // Sprawdź, czy dane są aktualne.
if(@filemtime($cache)<strtotime('yesterday 22:45') && time()<=strtotime('14:30')) {
$recent = FALSE;
}
@@ -34,89 +43,117 @@
}
}
+ // Dane są nieaktualne, więc pobieramy je ponownie
if($cache == '' OR !$recent) {
$this->strona = @file_get_contents('http://lotto.pl/wyniki-gier');
if(!$this->strona) {
throw new Exception('Nie udało się pobrać wyników.');
}
+ // Można zapisać do cache'a...
if($cache != '') {
+ // ...więc zapamiętujemy arkusz.
file_put_contents($cache, $this->strona);
}
}
else
{
+ // Dane w cache są aktualne, więc załaduj je.
$this->strona = file_get_contents($cache);
}
}
- protected function szukaj_poczatku($tresc, $poczatek = 0) {
- return strpos($this->strona, $tresc, $poczatek);
- }
-
- protected function szukaj_konca($tresc, $poczatek = 0) {
- $pozycja = strpos($this->strona, $tresc, $poczatek);
-
- if($pozycja !== FALSE) {
- $pozycja += strlen($tresc);
+ // Znajduje w $gdzie ciągi $od i $do, po czym zwraca
+ // treść znajdującą się pomiędzy tymi wartościami.
+ protected function wytnij(&$gdzie, $od, $do, $blad = NULL, &$pozycja = NULL) {
+ if($blad === NULL) {
+ $blad = 'Nie znaleziono wymaganego elementu';
}
- return $pozycja;
+ $start = strpos($gdzie, $od, $pozycja);
+ if($start === FALSE) {
+ throw new Exception($blad);
+ }
+ $start += strlen($od);
+
+ $stop = strpos($gdzie, $do, $start);
+ if($stop === FALSE) {
+ throw new Exception($blad);
+ }
+
+ if($pozycja !== NULL) {
+ $pozycja = $stop + strlen($do);
+ }
+
+ return trim(substr($gdzie, $start, $stop-$start));
}
+ // Zwraca wynik gry (domyślnie lotto).
function wynik($gra = 'lotto') {
$wyniki = $this->wyniki($gra, 1);
return $wyniki[0];
}
- function wyniki($gra = 'lotto', $liczba = 100) {
+ // Zwraca $liczba ostatnich wyników gry (domyślnie lotto),
+ // jednak nie więcej niż 5 (tyle jest na stronie Totalizatora).
+ function wyniki($gra = 'lotto', $liczba = 1000) {
if(!isset($this->gry[$gra])) {
throw new Exception('Podana gra liczbowa nie jest obsługiwana.');
}
$wyniki = array();
- $poczatek = $this->szukaj_konca('<div class="start-wyniki_'.$gra.'">');
- if($poczatek === FALSE) {
- throw new Exception('Nie znaleziono wyników dla gry '.$gra.' na stronie.');
- }
+ $dane = $this->wytnij($this->strona, '<div class="start-wyniki_'.$gra,
+ '<div class="start-wyniki_', 'Nie znaleziono na stronie wyników dla gry '.$gra);
- for($l = 0; $l < $liczba; $l++) {
- $poczatek = $this->szukaj_konca('<div class="wyniki_data">', $poczatek);
- if($poczatek === FALSE) {
+ $poz_dane = 0;
+ for($l = 1; $l <= $liczba; $l++) {
+ $data = $this->wytnij($dane, '<div class="wyniki_data', '</div>',
+ 'Nie znaleziono '.$l.'-ej informacji o losowanu gry '.$gra, $poz_dane);
+
+ $pozycja = 0;
+ $wynik['data'] = $this->wytnij($data, '<strong>', '</strong>',
+ 'Nie znaleziono '.$l.'-ej daty losowania gry '.$gra, $pozycja);
+ $wynik['godzina'] = $this->wytnij($data, '<strong>', '</strong>',
+ 'Nie znaleziono '.$l.'-ej godziny losowania gry '.$gra, $pozycja);
+
+ try {
+ $liczby = $this->wytnij($dane, '<div class="glowna_wyniki_'.$gra, "\t".'</div>',
+ 'Nie znaleziono na stronie '.$l.'-ch wyników dla gry '.$gra, $poz_dane);
+ }
+ catch(Exception $e) {
break;
}
- $wynik = array();
-
- $poczatek = $this->szukaj_konca('<strong>', $poczatek);
- if($poczatek === FALSE) {
- break;
- }
- $koniec = $this->szukaj_poczatku('</strong>', $poczatek);
- $wynik['data'] = substr($this->strona, $poczatek, $koniec-$poczatek);
- if($poczatek === FALSE) {
- break;
- }
- $poczatek = $this->szukaj_konca('<strong>', $poczatek);
- $koniec = $this->szukaj_poczatku('</strong>', $poczatek);
- $wynik['godzina'] = substr($this->strona, $poczatek, $koniec-$poczatek);
-
- $poczatek = $this->szukaj_konca('<div class="glowna_wyniki_'.$gra.'">', $poczatek);
- if($poczatek === FALSE) {
- break;
- }
-
+ // Pobierz kolejne liczy zawarte pomiędzy <div class="wynik_NAZWAGRY"> a </div>
$wynik['liczby'] = array();
+ $pozycja = 0;
for($i = 0; $i < $this->gry[$gra][0]; $i++) {
- $poczatek = $this->szukaj_konca('<div class="wynik_'.$gra.'">', $poczatek);
- $koniec = $this->szukaj_poczatku('</div>', $poczatek);
- $wynik['liczby'][] = substr($this->strona, $poczatek, $koniec-$poczatek);
+ $wynik['liczby'][] = $this->wytnij($liczby, '<div class="wynik_'.$gra.'">',
+ '</div>', NULL, $pozycja);
}
+ // Szukamy plusa
if($this->gry[$gra][1]) {
- $poczatek = $this->szukaj_konca('<div class="wynik_'.$gra.'_plus">', $poczatek);
- $koniec = $this->szukaj_poczatku('</div>', $poczatek);
- $wynik['plus'] = substr($this->strona, $poczatek, $koniec-$poczatek);
+ $wynik['plus'] = $this->wytnij($dane, '<div class="wynik_'.$gra.'_plus">',
+ '</div>', NULL, $poz_dane);
+ }
+
+ // Szukamy lottoplusa
+ if($this->gry[$gra][2] > 0) {
+ try {
+ $liczby = $this->wytnij($dane, '<div class="glowna_wyniki_'.$gra.'plus">', "\t".'</div>',
+ 'Nie znaleziono na stronie '.$l.'-ch wyników dla gry '.$gra.'plus', $poz_dane);
+ }
+ catch(Exception $e) {
+ continue;
+ }
+
+ $pozycja = 0;
+ $wynik['plus'] = array();
+ for($i = 0; $i < $this->gry[$gra][2]; $i++) {
+ $wynik['plus'][] = $this->wytnij($liczby, '<div class="wynik_'.$gra.'plus">',
+ '</div>', 'Nie znaleziono wyników losowania '.$gra.'plus', $pozycja);
+ }
}
$wyniki[] = $wynik;
@@ -178,6 +215,9 @@
if($data[1]) {
$output['plus'] = $wynik['plus'];
}
+ if(($data[2] > 0) && isset($wynik['plus'])) {
+ $output['plus'] = $wynik['plus'];
+ }
file_put_contents('./last_'.$skrot.'.txt', $output['data']);
file_put_contents('./'.$skrot.'.txt', serialize($output));
file_put_contents('./archiwum/'.$skrot.'_'.date('j.m.Y', strtotime($output['data'])).'.txt', serialize($output));
--
Gitblit v1.9.1