Artykuły na każdy temat
[PHP] Ściąganie demotywatorów na dysk
http://demotywatory.pl/page/
na
http://demotywatory.pl/poczekalnia/page/
Myślałem także by przerobić skrypt tak aby ściągał amerykańską wersję demotywatorów lecz sobie darowałem! A przynajmniej nie na tą noc rezerwuje sobie tą operacje
CREATE TABLE `graphic` (
`address` varchar(100) collate utf8_polish_ci NOT NULL default '',
PRIMARY KEY (`address`),
UNIQUE KEY `address` (`address`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci;
config.php to chyba wiadomo do czego służy bo nazwa mówi sama za siebie?
<?php
#--------------------------------------------+
# Author: CapaciousCore |
# Website: CapaciousCore.pl |
# |
# Wszystkie prawa zastrzeżone! |
#--------------------------------------------+
# Dir
$cfg['dir']['img'] = './graphic/'; // Naturalnie możemy podać ścieżkę do innej partycji włącznie
# MySQL
$cfg['mysql']['host'] = 'localhost'; // Host of database
$cfg['mysql']['database'] = 'demotywatory'; // Name of database
$cfg['mysql']['login'] = ''; // Login to database
$cfg['mysql']['password'] = ''; // Password to database
# Other
$cfg['url_name'] = 'http://demotywatory.pl/page/'; // Adres, z którego będziemy indeksować
// Łączenie z baza danych
mysql_connect($cfg['mysql']['host'], $cfg['mysql']['login'], $cfg['mysql']['password']);
mysql_select_db($cfg['mysql']['database']);
mysql_query("SET NAMES 'latin2'");
?>
indexing.php czyli plik odpowiedzialny za zaindeksowanie adresów obrazków graficznych
<?php
#--------------------------------------------+
# Author: CapaciousCore |
# Website: CapaciousCore.pl |
# |
# Wszystkie prawa zastrzeżone! |
#--------------------------------------------+
include('./config.php');
/***********************************************************************************************
* W dniu 16-11-2009 było 723 podstron demotywatorów, *
* patrz na dół Demotywatory.pl i sprawdź ostatnią zastronicowaną stronę *
* dodałem kilka podstron (patrz warunek pętli głównej) celem wyeliminowania marginesu błędu *
***********************************************************************************************/
for($h = 1; $h < 730; ++$h)
{
$tmp['url_address'] = $cfg['url_name'].$h;
$content = file_get_contents($tmp['url_address']);
if(!empty($content))
{
// Wyciąganie adresów grafiki _^_
preg_match_all('/<img.*src=\"(.*)\".*>/iU', $content, $catch);
for($i = 0, $tmp['how'] = count($catch[1]); $i < $tmp['how']; ++$i)
{
$result = mysql_query("SELECT address FROM graphic WHERE address = '".$catch[1][$i]."'");
if(mysql_num_rows($result) === 0)
{
mysql_query("INSERT INTO graphic VALUES ('".$catch[1][$i]."')");
}
}
}
}
echo 'finished step 1';
?>
download.php czyli plik odpowiedzialny za ściąganie grafiki na podstawie zaindeksowanych adresów
<?php
#--------------------------------------------+
# Author: CapaciousCore |
# Website: CapaciousCore.pl |
# |
# Wszystkie prawa zastrzeżone! |
#--------------------------------------------+
include('./config.php');
// Pobieramy listę plików
$result = mysql_query("SELECT address FROM graphic");
for($h = 0, $tmp['how'] = mysql_num_rows($result); $h < $tmp['how']; ++$h)
{
$row = mysql_fetch_assoc($result);
$tmp['file_name'] = explode('/', $row['address']);
$tmp['file_location'] = $cfg['dir']['img'].end($tmp['file_name']);
if(substr($row['address'], 0, 7) == 'http://' && !file_exists($tmp['file_location']))
{
$content = file_get_contents($row['address']);
file_put_contents($tmp['file_location'], $content);
}
}
echo 'finished step 2';
?>
Komentarze
<?php
#--------------------------------------------+
# Author: CapaciousCore |
# Website: CapaciousCore.pl |
# |
# Wszystkie prawa zastrzeżone! |
#--------------------------------------------+
include('./config.php');
// Pobieramy listę plików
$result = mysql_query("SELECT address FROM graphic");
for($h = 0, $tmp['how'] = mysql_num_rows($result); $h < $tmp['how']; ++$h)
{
$row = mysql_fetch_assoc($result);
$tmp['file_location'] = $cfg['dir']['img'].md5($row['address']).'.jpg';
if(substr($row['address'], 0, 7) == 'http://')
{
$content = file_get_contents($row['address']);
file_put_contents($tmp['file_location'], $content);
}
}
echo 'finished step 2';
?>
Dodaj komentarz
CapaciousCore
Chodziło o to, że nazwy plików powtarzały się, stąd taka a nie inna ilość ściągniętej grafiki.