Man könnte alles auslesen indem man "jede" Url durchlaufen lässt.
Also nach dem Schema:
http://images.habbohotel.co.uk/c_images/album1584/{langkey}{counter}.gif
Allerdings dauert die Ausführung des Scripts dann auch locker ein paar Minuten,
was aber eine Möglichkeit wäre ... die Strings wo erreichbar sind in ne Datenbank zu schreiben und diese dann auslassen.
Ich hab dir hier mal das Script. Es funktioniert, ist ein wenig kommentiert, aber
wie oben erwähnt dauert die Ausführung etwas länger
PHP-Code:
<?php
// Hier wird das Array mit den Spachcodes gefüllt, kannst natürlich auch dementsprechend dann
// filtern und sie so nach Sprach-Kriterien sortieren.
$lang_arr = array('CN', 'DK', 'DE', 'FI', 'FR', 'UK', 'IT', 'JP', 'CA', 'NL', 'NO', 'RU', 'SE', 'CH', 'ES', 'COM', 'ACH_');
// Die Maximal-Zahl hinter dem Sprachcode.
$max_digit = 999;
// Sprachen werden durchlaufen
foreach($lang_arr as $lang) {
// Zahlen werden durchlaufen
for($x = 0; $x <= $max_digit; $x++) {
// Wenn nicht genügend nullen vor der Zahl sind wird eine oder zwei hinzugefügt
if(strlen($x) == 1) $x = "00" . $x;
else if(strlen($x) == 2) $x = "0" . $x;
// Der String mit der Url zum auslesen
$datei = "http://images.habbohotel.co.uk/c_images/album1584/".$lang.$x.".gif";
// Hier das @ vor der Funktion, damit keine Fehler geworfen werden
// Hier wird die Url geöffnet
$handle = @fopen($datei, "rb");
// Verbindung wird geschlossen
@fclose($handle);
// Wenn die Datei nicht vorhanden ist, dann wird die nächste Datei aufgerufen
if(!$handle) {
continue;
}
else
{
// Hier kannst du mit dem String (die Url) machen was du willst,
// in diesem Fall wird sie einfach mit Zeilenumbruch ausgegeben.
echo $datei . "<br />";
}
}
}
?>
Ich bin grad selbst am überlegen ob mir eine elegantere Lösung einfällt,
weil das einfach zu lange dauert!!
==> So hab den Post ja noch nicht abgeschickt gehabt ... hab dir nun auch
die Datenbank-Version gebastelt. Ist etwas schneller, weil eben vorhandene Einträge nicht nochmal ausgelesen werden.
Mysql-Dump der Tabelle:
===================
Code:
CREATE TABLE IF NOT EXISTS `habbo_images` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`url` varchar(255) NOT NULL,
`digit` varchar(5) NOT NULL,
`language_code` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0 ;
Und nun hier das angepasste Script:
PHP-Code:
<?php
// Hier wird die Datenbankverbindung aufgebaut
mysql_connect("localhost", "username", "passwort");
mysql_select_db("datenbankname");
// Hier werden die bisherigen Einträge ausgelesen
$sql = "SELECT * FROM `habbo_images`";
$query = mysql_query($sql) or die(mysql_error());
// Hier werden die Daten in ein Array gepackt
while($fetch = mysql_fetch_array($query)) {
$images[$fetch['language_code']][$fetch['digit']][] = $fetch['url'];
}
// Hier wird das Array mit den Spachcodes gefüllt, kannst natürlich auch dementsprechend dann
// filtern und sie so nach Sprach-Kriterien sortieren.
$lang_arr = array('CN', 'DK', 'DE', 'FI', 'FR', 'UK', 'IT', 'JP', 'CA', 'NL', 'NO', 'RU', 'SE', 'CH', 'ES', 'COM', 'ACH_');
// Die Maximal-Zahl hinter dem Sprachcode.
$max_digit = 999;
// Sprachen werden durchlaufen
foreach($lang_arr as $lang) {
// Zahlen werden durchlaufen
for($x = 0; $x <= $max_digit; $x++) {
// Wenn nicht genügend nullen vor der Zahl sind wird eine oder zwei hinzugefügt
if(strlen($x) == 1) $x = "00" . $x;
else if(strlen($x) == 2) $x = "0" . $x;
// Überprüft ob der Eintrag schon vorhanden ist,
// wenn ja dann wird das auslesen übersprungen.
if($images[$lang][$x][0] != "") continue;
// Der String mit der Url zum auslesen
$datei = "http://images.habbohotel.co.uk/c_images/album1584/".$lang.$x.".gif";
// Hier das @ vor der Funktion, damit keine Fehler geworfen werden
// Hier wird die Url geöffnet
$handle = @fopen($datei, "rb");
// Verbindung wird geschlossen
@fclose($handle);
// Wenn die Datei nicht vorhanden ist, dann wird die nächste Datei aufgerufen
if(!$handle) {
continue;
}
else
{
$sql = "INSERT INTO `habbo_images` SET `url` = '".$datei."', `digit` = '".$x."', `language_code` = '".$lang."'";
$query = mysql_query($sql) or die(mysql_error());
}
}
}
?>
So ich hoffe ich konnte dir helfen. Noch was zum Schluss. Lass das ganze
nicht bei jedem Aufruf durchlaufen, sondern leg dir einfach einen Cronjob/Crontab
an, dann hast es halt nicht LIVE aber immerhin kannst es jeden Tag ein paar Mal aktualisieren
Wie gesagt wenn mir was eleganteres einfällt, werde ichs posten.
Gruß & Gute Nacht,
Heavy
PS:
Ach verdammt, du wolltest die Bilder ja auf deinem Server speichern.
Ich werde schauen, vllt. pass ich das Script noch an, wobei du selber ja noch
etwas tun könntest
