View file chomik/grab.php

File size: 7.78Kb
<head>
<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
</head><body>

<?php
$ident = $_GET['id'];

function connect_curl($url)
{
	$curl = curl_init();
	curl_setopt($curl, CURLOPT_URL, $url);
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
	$strona = curl_exec($curl);
	curl_close($curl);
	return $strona;
}

	function Konwertuj_Date($data) {
		$formatowanie = explode(" ", $data);
		
		// no i teraz tak :
		// formatowanie[0] -> dzień tygodnia
		// formatowanie[1] -> nazwa miesiąca
		// formatowanie[2] -> rok dodania
		// formatowanie[3] -> olać
		// formatowanie[4] -> godzinka
		
		if (strlen($formatowanie[0]) == 1) { 
			$dzien = "0$formatowanie[0]"; } 
		else { $dzien = $formatowanie[0]; }
		
		if ($formatowanie[1] == "sty") { $miesiac = "01"; } else
		if ($formatowanie[1] == "lut") { $miesiac = "02"; } else
		if ($formatowanie[1] == "mar") { $miesiac = "03"; } else
		if ($formatowanie[1] == "kwi") { $miesiac = "04"; } else
		if ($formatowanie[1] == "maj") { $miesiac = "05"; } else
		if ($formatowanie[1] == "cze") { $miesiac = "06"; } else
		if ($formatowanie[1] == "lip") { $miesiac = "07"; } else
		if ($formatowanie[1] == "sie") { $miesiac = "08"; } else
		if ($formatowanie[1] == "wrz") { $miesiac = "09"; } else
		if ($formatowanie[1] == "lis") { $miesiac = "11"; } else
		if ($formatowanie[1] == "gru") { $miesiac = "12"; } else { $miesiac = "10";}
		
		$rok = "20$formatowanie[2]";
		
		// jezeli godzina ma tylko 4 znaki, to nie ma zera na początku i trzeba dodać
		if (strlen($formatowanie[4]) == 4) { $godzina = "0$formatowanie[4]"; } else $godzina = $formatowanie[4];
		
		$txt = "$rok-$miesiac-$dzien $godzina";
		
		return $txt;
	}
	
	function Konwertuj_Rozmiar($rozmiar) {
		if (strpos($rozmiar, 'kB') > 0) {
			$rozmiar1 = explode(" ", $rozmiar);
			$rozmiar = $rozmiar1[0];
		} else {
			$rozmiar1 = explode(",", $rozmiar);
			$rozmiar2 = explode(" ", $rozmiar1[1]);
			$rozmiar2[0] = $rozmiar2[0] . "00";
			$rozmiar = ($rozmiar1[0] * 1024) + $rozmiar2[0];
		}
		
		return $rozmiar;
	}
	
// pobieramy stronkę do zmiennej
$strona = connect_curl("http://chomikuj.pl/$ident");

/* ta krótka procedurka jest stworzona, aby wylistować wszystkie katalogi z danego chomika no i przy okazji pliki w każdym katalogu*/
$poz1 = strpos($strona, 'CT_TW_TreeUpdatePanel">') + strlen('CT_TW_TreeUpdatePanel">');
$poz2 = strpos($strona, 'CT_TW_NewFolderLink');
$wynik = substr($strona, $poz1, $poz2-$poz1);

$katalogi = explode('<a href=', $wynik);

for ($i = 1 ; $i < sizeof($katalogi) ; $i++) {
	$poz1 = strpos($katalogi[$i], '"') + 1;
	$poz2 = strpos($katalogi[$i], '" onclick="return');
	$tmp = substr($katalogi[$i], $poz1, $poz2-$poz1);
	if ($tmp != '') { #echo "$tmp <br />"; 
	ListujKatalog($tmp, $ident); 
	}
}
/* koniec procedurek listujących */

function ListujKatalog($nazwa_katalogu, $identyfikator) {
$strona = connect_curl("http://chomikuj.pl$nazwa_katalogu");

// teraz pobieramy tylko pliki znajdujące się w danym katalogu
$poz1 = strpos($strona, '<div class="navigation">');
$poz2 = strlen($strona);
// tutaj w wyniku mamy "zaszyfrowaną listę plików"
$wynik1 = substr($strona, $poz1, $poz2-$poz1);

$poz1 = strpos($wynik1, '<div class="fileItemEven">') + strlen('<div class="fileItemEven">');
$poz2 = strlen($wynik1);
$wynik1 = substr($wynik1, $poz1, $poz2-$poz1);

$info_o_pliku = explode('<table class="fileItemHd" cellspacing="0">', $wynik1);

for ($i = 1 ; $i < sizeof($info_o_pliku) ; $i++) {
	// pobieranie urla do pliku (dokladnego)
	$poz1 = strpos($info_o_pliku[$i], '<a href="') + strlen('<a href="');
	$poz2 = strpos($info_o_pliku[$i], '" id="FileNameAnchor');
	$odnosnik = addslashes(strip_tags(substr($info_o_pliku[$i], $poz1, $poz2-$poz1)));
	
	// pobieranie nazwy pliku
	$pos1 = strpos($info_o_pliku[$i], 'class="FileName" onclick="return ') + strlen('class="FileName" onclick="return ');
	$pos2 = strlen($info_o_pliku[$i]);
	$info_o_pliku[$i] = substr($info_o_pliku[$i], $pos1, $pos2-$pos1);
	
	$pos1 = strpos($info_o_pliku[$i], ');">') + strlen(');">');
	$pos2 = strpos($info_o_pliku[$i], '</a></td>');
	$nazwa_pliku = addslashes(strip_tags(substr($info_o_pliku[$i], $pos1, $pos2-$pos1)));
	
	// pobieranie rozmiaru pliku
	$pos1 = strpos($info_o_pliku[$i], '<div class="fInfoDiv">') + strlen('<div class="fInfoDiv">');
	$pos2 = strlen($info_o_pliku[$i]);
	$info_o_pliku[$i] = substr($info_o_pliku[$i], $pos1, $pos2-$pos1);
	$pos1 = 0;
	$pos2 = strpos($info_o_pliku[$i], '</div></td>');
	$rozmiar = strip_tags(Konwertuj_Rozmiar(substr($info_o_pliku[$i], $pos1, $pos2-$pos1)));
	
	// pobieranie ilosci pobrań :)
	$pos1 = strpos($info_o_pliku[$i], '<span class="dnCount">') + strlen('<span class="dnCount">');
	$pos2 = strpos($info_o_pliku[$i], '</span></div></td>');
	$pobrano = strip_tags(substr($info_o_pliku[$i], $pos1, $pos2-$pos1));
	
	// pobieranie daty dodania
	$pos1 = strpos($info_o_pliku[$i], '<span class="fileDate">') + strlen('<span class="fileDate">');
	$pos2 = strlen($info_o_pliku[$i]);
	$info_o_pliku[$i] = substr($info_o_pliku[$i], $pos1, $pos2-$pos1);
	
	$pos1 = 0;
	$pos2 = strpos($info_o_pliku[$i], '</span></div></td>');
	$data_dodania = substr($info_o_pliku[$i], $pos1, $pos2-$pos1);
	$data_dodania = str_replace('<b>', '', $data_dodania);
	$data_dodania = Konwertuj_Date(strip_tags($data_dodania));
	
	$pos1 = strpos($info_o_pliku[$i], 'style="display:none">') + strlen('style="display:none">');
	$pos2 = strlen($info_o_pliku[$i]);
	$info_o_pliku[$i] = substr($info_o_pliku[$i], $pos1, $pos2-$pos1);
	$pos1 = 0;	
	$pos2 = strpos($info_o_pliku[$i], '</div>');
	$opis = addslashes(strip_tags(substr($info_o_pliku[$i], $pos1, $pos2-$pos1)));
	
	if ($odnosnik != '') {
		#echo "--> Url : $odnosnik, $nazwa_pliku, $rozmiar kB, $pobrano razy, $data_dodania<br />\n-->Opis: $opis<br />";
		// tutaj jest zapisywanie aktualnego pliku do bazy danych :)
		require_once('mysql_connect.php');
		
		// najpierw musimy sprawdzic, czy juz taki plik istnieje. Jeżeli istnieje, to do bazy danych zapiszemy tylko informację,
		// że plik był niedawno sprawdzany i że istnieje, więc nie będzie go trzeba sprawdzać ponownie przez okreslony okres czasu
		#echo "pobiera ...";
		$query1 = "SELECT file_chomik_name, file_folder FROM chomik_file WHERE file_chomik_name = '$identyfikator' AND file_folder = '$odnosnik'";
		$result1 = mysql_query($query1);
		$row = mysql_fetch_array ($result1, MYSQL_NUM);
		if ($row) {
			// jeżeli znaleziono
			$query2 = "UPDATE `weer_weer`.`chomik_file` SET `last_checked` = NOW(), `file_downloads` = '$pobrano', `file_opis` = '$opis' WHERE file_chomik_name = '$identyfikator' AND file_folder = '$odnosnik'";
			$result2 = mysql_query($query2);
			echo "<font color = blue>Plik <b>$nazwa_pliku</b> już istnieje, aktualizacja pliku..</font><br />";
		} else {		
			// jeżeli natomiast jeszcze nie istnieje w naszej bazie danych, to go dodajemy
			$query = "INSERT INTO chomik_file (file_name, file_chomik_name, file_folder, file_size, file_downloads, file_added, file_opis) VALUES ('$nazwa_pliku', '$identyfikator', '$odnosnik', '$rozmiar', '$pobrano', '$data_dodania', '$opis')";
			$result = mysql_query ($query);
		
			if ($result) {
				echo "<font color = green>Plik <b>$nazwa_pliku</b> został dodany poprawnie</font><br />";
			} else {
				echo "<font color = red>Plik <b>$nazwa_pliku</b> nie mógł zostać dodany</font><br />";
			}
		}
		
		$odnosnik = '';
	}
}
}

/* Uwaga! Podczas dodawania są usuwane wszystkie tagi html, takie jak <B> <I> oraz wszystkie inne, i zastępowane są również znaki specjalne,
takie jak ' czy / , dzięki czemu będzie można to zapisać w bazie danych. Używana do tego jest metoda addslashes, natomiast aby to później odczytać
należy użyć stripslashes. Użyto na : opis, nazwa_pliku i odnosnik.
*/
?>