Aspirateur d'etajv

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 539 fois - Téléchargée 27 fois

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

Ajouter un commentaire

Commentaires

Messages postés
198
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
14 novembre 2008

C'est normal que ça marche pas ?
Messages postés
198
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
14 novembre 2008

Euh comment ça a bien changé ?
Messages postés
198
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
14 novembre 2008

Ok ben je vais tenter... j'aime pas trop la ligne de commande
Messages postés
36
Date d'inscription
vendredi 28 mars 2003
Statut
Membre
Dernière intervention
12 novembre 2004

Parce que j'ai pas programmé d'interface. Si t'es motivé, fait en une mais apprête toi à revoir le code, jeuxvideo.com a bien changé depuis 2004. =]
Messages postés
198
Date d'inscription
lundi 28 février 2005
Statut
Membre
Dernière intervention
14 novembre 2008

J'ai jsute une question les gars : pourquoi ça marche que en ligne de commande ?
Afficher les 15 commentaires

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.