Aspirateur d'etajv

Contenu du snippet

J'ai fait ce script il y a quelques temps (license gnu gpl), simplement pour m'entrainer et apprendre, il sert à télécharger toutes les pages de tips de l'etajv ( www.etajv.com ) pour une console donnée. Inutile de préciser qu'il faut éxécuter ce script en mode ligne de commande =)

Source / Exemple :


<?
error_reporting(E_ALL);
///////////////////////// Tips Downloader //
///////// Da Aspirateur d'ETAJV [ www.etajv.com ]
/////////////////////////////////////// v0.1 Alpha
// get_file($file) // retourne le fichier distant $file
////////////////////////////////////////////////
// wh_console($console) // retourne le nom d'une console à partir de son code 'etajv' $console
////////////////////////////////////////////////
// get_tips_index($console,$page) // retourne dans une chaine de caractères un index de tips de jeux en fonction des variables $console et $page
// La chaine retournée est de la forme : "url|jeu\n"
////////////////////////////////////////////////
// get_all_tips_index($console) // retourne dans une chaine de cracatères tous les index de tips de jeux en fonction de la variable $console
////////////////////////////////////////////////
// save_games_tips($all_tips_index, $console) // enregistre dans un fichier par jeu dans le répertoire du même nom que la console $console tous les tips de chaque jeu à partir de la variable $all_tips_index (de la même forme que celle retournée par get_all_tips_index et get_tips_index)
////////////////////////////////////////////////
// get_one_game_tips($game_url) // retourne une chaine de caractères contenant les tips de la page $game_url
////////////////////////////////////////////////
// write($console, $tips, $name) // crée le fichier $name dans le répertoire $console et écrit $tips dans ce fichier
// Tips Downloader /////////////////////////////

function get_file($file)
{
	settype($content, "string");
	$fp = fsockopen("www.jeuxvideo.com", "80", $errno, $errstr, 10);
	
	if (!$fp) {
	
		echo "ERREUR: $errno - $errstr<br>\n";
		exit();
	
	} else {
		$server_file = eregi_replace("http://www.jeuxvideo.com","",$file);
		$string = "GET ".$server_file." HTTP/1.1\r\n".
		"Host: www.jeuxvideo.com\r\n".
		"Mozilla/5.0 (X11; U; OpenBSD i686; en-US; rv:1.5) Gecko/20031007\r\n".
		"Accept: application/x-shockwave-flash,text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,*/*;q=0.1\r\n".
		"Accept-Language: en-us,en;q=0.5\r\n".
		"Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\r\n".
		"Keep-Alive: 300\r\n".
		"Connection: keep-alive\r\n".
		"Referer: http://www.jeuxvideo.com/cheats.htm\r\n\r\n";
	     
		fputs($fp, $string);
		while(!feof($fp)) $content .=  fgets($fp,1024);
		fclose($fp);

		return explode("\n",$content);
	
	}
}

function wh_console($console)
{
	// OK
	if ($console == "001") return "PC";
	if ($console == "002") return "Playstation";
	if ($console == "015") return "Playstation 2";
	if ($console == "021") return "X-Box";
	if ($console == "017") return "NGC";
	if ($console == "022") return "N64";
	if ($console == "018") return "GBA";
	if ($console == "012") return "GB";
	if ($console == "014") return "DreamCast";
	if ($console == "004") return "Super Nintendo";
	if ($console == "005") return "Megadrive";
	if ($console == "013") return "Nes";
	if ($console == "010") return "Mac";
	if ($console == "003") return "Saturn";
	if ($console == "019") return "Neo Geo";
	if ($console == "002") return "MasterSystem";
	if ($console == "008") return "Amiga";
}

function get_tips_index($console,$page)
{
	// OK
	$file = "http://www.jeuxvideo.com/btajv99/etajvndx/".$console.$page.".htm";
	$html = get_file($file);
	
	settype($line, "string"); 
	settype($games_url, "string");
	$i = 0;
	while ($i != count($html))
	{
		if (ereg("<a href=\"http://www.jeuxvideo.com/btajv99/etajvhtm",$html[$i]) && ereg("</a> <br>",$html[$i]))
		{
			$line = $html[$i];
			$line = eregi_replace("<a href=\"","",$line);
			$line = eregi_replace("\">","|",$line);
			$line = eregi_replace("</a> <br>","",$line);
			$games_url .= $line."\n";
			echo $line;
		}
		$i++;
	}
	return $games_url;
}

function get_all_tips_index($console)
{
	// OK
	$i = 0;
	settype($all_tips_index, "string");
	$page = array("00","01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26");
	while ($i != 26)
	{
		$all_tips_index .= get_tips_index($console,$page[$i]);
		$i++;
	}
	
	return $all_tips_index;
	
}

function save_games_tips($all_tips_index,$console)
{
	// OK
	$i = 0;
	$game_line_in_index = explode("\n",$all_tips_index);
	$count = count($game_line_in_index);
	
	while ($i != $count)
	{			
		$game_url = explode("|",$game_line_in_index[$i]);

		write(wh_console($console), get_one_game_tips($game_url[0]), trim($game_url[1]));

		$i++;
	}
	return true;
}

function write($console, $tips, $name)
{
	// OK
	
	if (!is_dir($console)) mkdir($console);
	
	$file = $console."/".$name.".html";
	
	$fp = fopen($file,"a");
	fputs($fp,$tips);
	fclose($fp);
	
	return true;

}

function get_one_game_tips($game_url)
{
	// A finir =)
	$i = 0;
	$html = get_file($game_url);
	settype($game_tips, "string");
	while ($i != count($html))
	{
		$current_line = $html[$i];
		
		if ($current_line)
		{
			$game_tips .= $current_line;
		}
		
		$i++;

	}
	return $game_tips;
}

function make_all($console)
{
	set_time_limit("0");
	echo "Tips Downloader\n\n";
	save_games_tips(get_all_tips_index($console),$console);
	return true;
}

$console = "008"; // Amiga
$page = "06"; // f

$test_index = "http://www.jeuxvideo.com/btajv99/etajvhtm/00102036.htm|AFRICAN SAFARI
http://www.jeuxvideo.com/btajv99/etajvhtm/00100002.htm|AFTER THE WAR
http://www.jeuxvideo.com/btajv99/etajvhtm/00100491.htm|AFTERBURNER
http://www.jeuxvideo.com/btajv99/etajvhtm/00100793.htm|AFTERLIFE";

//get_file("http://www.jeuxvideo.com/btajv99/etajvhtm/00801096.htm");
//get_tips_index($console,$page); // ok
//wh_console("003"); // ok
//write("008", "megatest", "test"); // ok
//get_one_game_tips("http://www.jeuxvideo.com/btajv99/etajvhtm/00100793.htm"); // A finir, mais ok
//get_all_tips_index($console); // ok
//save_games_tips($test_index,"001"); // ok
make_all($console); // Aspirer tous les tips d'une console =) // ok

?>

Conclusion :


Il suffit d'utiliser la fonction make_all avec comme seul argument le bon code/numéro de la console (que vous pourrez trouver ds la fonction wh_console() )

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.