From c786da8a3b563ab75859ebf29779ec9648762973 Mon Sep 17 00:00:00 2001
From: Jacek Kowalski <Jacek@jacekk.info>
Date: Sun, 08 Jul 2012 22:21:32 +0000
Subject: [PATCH] Zmiana instrukcji aktualizacji (./data/tv) oraz zmiany redakcyjne w kodzie.
---
data/lotto/pobierz.php | 344 +++++++++++++++++++++++++++++++++-----------------------
1 files changed, 203 insertions(+), 141 deletions(-)
diff --git a/data/lotto/pobierz.php b/data/lotto/pobierz.php
index cf8aa83..625d9c2 100644
--- a/data/lotto/pobierz.php
+++ b/data/lotto/pobierz.php
@@ -2,147 +2,209 @@
echo STAR.'Pobieranie danych...';
class lotto {
- // Zawartość strony http://lotto.pl/wyniki-gier
- protected $strona = NULL;
-
- // Lista gier.
- protected $gry = array(
- // nazwa => array(ilość liczb, plus?)
- 'lotto' => array(6, FALSE),
- 'mini-lotto' => array(5, FALSE),
- 'kaskada' => array(12, FALSE),
- 'multi-multi' => array(20, TRUE),
- 'joker' => array(5, FALSE)
- );
-
- // 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;
- }
- elseif( ( time()>=strtotime('14:30') && @filemtime($cache)<strtotime('14:30') )
- OR ( time()>=strtotime('22:45') && @filemtime($cache)<strtotime('22:45') ) ) {
- $recent = FALSE;
- }
- else
- {
- $recent = TRUE;
- }
- }
-
- // 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);
- }
- }
-
- // 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';
- }
-
- $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];
- }
-
- // 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();
- $dane = $this->wytnij($this->strona, '<div class="start-wyniki_'.$gra.'">',
- '<div class="start-wyniki_', 'Nie znaleziono na stronie wyników dla gry '.$gra);
-
- $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;
- }
-
- // 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++) {
- $wynik['liczby'][] = $this->wytnij($liczby, '<div class="wynik_'.$gra.'">',
- '</div>', NULL, $pozycja);
- }
-
- // Szukamy plusa
- if($this->gry[$gra][1]) {
- $wynik['plus'] = $this->wytnij($dane, '<div class="wynik_'.$gra.'_plus">',
- '</div>', NULL, $poz_dane);
- }
-
- $wyniki[] = $wynik;
- }
-
- return $wyniki;
- }
+ // Zawartość strony http://lotto.pl/wyniki-gier
+ protected $strona = NULL;
+
+ // Lista gier.
+ protected $gry = array(
+ // nazwa => array(ilość liczb, plus?)
+ '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')
+ );
+
+ // 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;
+ }
+ elseif( ( time()>=strtotime('14:30') && @filemtime($cache)<strtotime('14:30') )
+ OR ( time()>=strtotime('22:45') && @filemtime($cache)<strtotime('22:45') ) ) {
+ $recent = FALSE;
+ }
+ else
+ {
+ $recent = TRUE;
+ }
+ }
+
+ // 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);
+ }
+ }
+
+ // 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';
+ }
+
+ $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];
+ }
+
+ // 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();
+ $dane = $this->wytnij($this->strona, '<div class="start-wyniki_'.$gra.'">',
+ '<div class="start-wyniki_', 'Nie znaleziono na stronie wyników dla gry '.$gra);
+
+ $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;
+ }
+
+ // 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++) {
+ $wynik['liczby'][] = $this->wytnij($liczby, '<div class="wynik_'.$gra.'">',
+ '</div>', NULL, $pozycja);
+ }
+
+ // Szukamy plusa
+ if($this->gry[$gra][1]) {
+ $wynik['plus'] = $this->wytnij($dane, '<div class="wynik_'.$gra.'_plus">',
+ '</div>', NULL, $poz_dane);
+ }
+
+ $wyniki[] = $wynik;
+ }
+
+ return $wyniki;
+ }
+
+ function pobierz() {
+ foreach($this->gry as $gra => $data) {
+ echo STAR.'Wyniki gry '.$gra.'...';
+ if($gra == 'multi-multi') {
+ $wyniki = $this->wyniki($gra, 2);
+ $wynik = $wyniki[0];
+ $skrot = $data[2].substr($wynik['godzina'], 0, 2);
+ $last_data = @file_get_contents('./last_'.$skrot.'.txt');
+ if($last_data != $wynik['data']) {
+ $output = array();
+ $output['data'] = $wynik['data'];
+ for($i = 0; $i < $data[0]; $i++) {
+ $output[$i+1] = $wynik['liczby'][$i];
+ }
+ if($data[1]) {
+ $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));
+ }
+
+ $wynik = $wyniki[1];
+ $skrot = $data[2].substr($wynik['godzina'], 0, 2);
+ $last_data = @file_get_contents('./last_'.$skrot.'.txt');
+ if($last_data != $wynik['data']) {
+ $output = array();
+ $output['data'] = $wynik['data'];
+ for($i = 0; $i < $data[0]; $i++) {
+ $output[$i+1] = $wynik['liczby'][$i];
+ }
+ if($data[1]) {
+ $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));
+ }
+ }
+ else
+ {
+ $wynik = $this->wynik($gra);
+ $skrot = $data[2];
+ $last_data = @file_get_contents('./last_'.$skrot.'.txt');
+ if($last_data != $wynik['data']) {
+ $output = array();
+ $output['data'] = $wynik['data'];
+ for($i = 0; $i < $data[0]; $i++) {
+ $output[$i+1] = $wynik['liczby'][$i];
+ }
+ if($data[1]) {
+ $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));
+ }
+ }
+ echo OK;
+ }
+ }
}
$lotto = new lotto();
--
Gitblit v1.9.1