Hi!
Da ich 195 von 200 möglichen (kostenfrei) Bildern bei flickr hochgeladen habe und ich auch etwas gegen die Zensur habe, habe ich mir ein Skript geschrieben, das meine Bilder bei flickr automatisch herunterlädt und speichert. Außerdem hatte ich von den meisten Fotos nicht mehr die bearbeiteten Originale.
Zum Skript:
Ihr braucht erstmal einen flickr-API-Key, damit ihr die API von flickr benutzen könnt. Zusätzlich braucht ihr noch eure User-ID. Die Daten könnt ihr dann unter "Konfiguration" eintragen.
Die Bilder werden dann von alt nach neu mit einer aufsteigenden ID versehen. Wenn ihr möchtet könnt ihr die Bilder mit dieser ID oder der flickr-ID speichern und selbst definierte Anhängsel erstellen (_o, _klein etc.), damit ihr die Bilder in einem Ordner speichern könnt. Diesen Ordner könnt ihr auch noch definieren.
Es werden nicht alle Bilder auf einmal heruntergeladen, sondern schrittweise. Wenn ihr die Originalfotos kopieren wollt hat sich eine Größe von 10 Bildern pro Seite bewährt, da das Skript sonst recht lange braucht. Ihr könnt einfach auf die Seitenzahlen klicken um zwischen den Seiten zu wechseln.
Zusätzlich könnt ihr noch bestimmen, welche größen der Bilder ihr speichern wollt.
Wenn ihr das Skript ändern wollt könnt ihr es machen und auch hier reinstellen, wenn ihr möchtet. Es darf auch weitergegeben werden. Ihr dürft damit also machen was ihr wollt.
Fragen können auch gerne gestellt werden.
Mfg
Dittboy
PHP-Code:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; utf-8">
<title>flickr Fotos speichern</title>
</head>
<body>
<?php
############Konfiguration
#########################
#Benutzerdaten
$conf_api_key = 'foo'; #Dein API-Key (http://flickr.com/services/api/keys/)
$conf_user_id = 'bar'; #Deine User-ID (http://idgettr.com/)
#Welche Bilder speichern? (0=nein, 1=ja)
$save_o = '1'; #Originalbilder speichern
$save_75 = '1'; #75px Bilder speichern
$save_100 = '1'; #100px Bilder speichern
$save_240 = '1'; #240px Bilder speichern
$save_500 = '1'; #500px Bilder speichern
#Ordner
$folder_o = './fotos/original/'; #Ordner für die Originalbilder
$folder_75 = './fotos/75/'; #Ordner für die Icons (75x75)
$folder_100 = './fotos/100/'; #Ordner für die Thumbnails (100px)
$folder_240 = './fotos/240/'; #Ordner für die kleinen Bilder (240px)
$folder_500 = './fotos/500/'; #Ordner für die mittleren Bilder (500px)
#Dateinamen (id+ext+.jpg)
$ext_o = '_o'; #Dateiname für Originalbilder
$ext_75 = '_75'; #Dateiname für die Icons (75x75)
$ext_100 = '_100'; #Dateiname für die Thumbnails (100px)
$ext_240 = '_240'; #Dateiname für die kleinen Bilder (240px)
$ext_500 = '_500'; #Dateiname für die mittleren Bilder (500px)
$use_flickr_id = '0'; #flickr-id anstatt Durchnummerierung benutzen? (0=nein, 1=ja)
#Sonstiges
$conf_per_page = '10'; #Wie viele Bilder pro Seite, 10 ist empfohlen
$use_db = '0'; #Datenbank benuten? (0=nein, 1=ja)
#Datenbankdaten
$db_host = 'localhost'; #Datenbank Server (meist localhost)
$db_user = 'maxmuster'; #Benutzer
$db_pass = 'passwort'; #Passwort
$db_name = 'datenbank'; #Datenbank
$db_table = 'tabelle'; #Tabelle
############_GET-Parameter untersuchen
######################################
if($_GET['seite']) {
$get_seite = $_GET['seite'];
} else {
$get_seite = 1;
}
############Funktionen
######################
function url_exists($url) {
$AgetHeaders = @get_headers($url);
if (preg_match("|200|", $AgetHeaders[0])) {
return TRUE;
} else {
return FALSE;
}
}
function flickr_connect($params) {
$encoded_params = array();
foreach($params as $k => $v) {
$encoded_params[] = urlencode($k).'='.urlencode($v);
}
#API aufrufen und das empfangene dekodieren
$url = "http://api.flickr.com/services/rest/?".implode('&', $encoded_params);
$rsp = file_get_contents($url);
$rsp_obj = unserialize($rsp);
return $rsp_obj;
}
############API Parameter
#########################
$getPublicPhotos_params = array(
'api_key' => $conf_api_key,
'method' => 'flickr.people.getPublicPhotos',
'extras' => 'date_taken,tags',
'user_id' => $conf_user_id,
'per_page' => $conf_per_page,
'page' => $get_seite,
'format' => 'php_serial'
);
$getInfo_params = array (
'api_key' => $conf_api_key,
'method' => 'flickr.people.getInfo',
'user_id' => $conf_user_id,
'format' => 'php_serial'
);
############Seitenzahl berechnen
################################
$getInfo = flickr_connect($getInfo_params);
$anzahl_bilder = $getInfo['person']['photos']['count']['_content'];
$anzahl_seiten = ceil($anzahl_bilder / $conf_per_page);
$i = 1;
while($i <= $anzahl_seiten) {
if($i != $get_seite) {
$seitenzahlen .= "\t".'<a href="http://'.$_SERVER["HTTP_HOST"].$_SERVER["SCRIPT_NAME"].'?seite='.$i.'">'.$i."</a>\n";
} else {
$seitenzahlen .= "\t".$i."\n";
}
$i++;
}
$seitenzahlen = "<p>\n".$seitenzahlen.'</p>';
############Sonstiges
#####################
$realname = $getInfo['person']['realname']['_content'];
$username = $getInfo['person']['username']['_content'];
$flickr_profil = $getInfo['person']['profileurl']['_content'];
############Verbindung zur Datenbank
####################################
if($use_db) {
$connection = mysql_connect($db_host,$db_user,$db_pass) OR
die("Es konnte keine Verbindung zur Datenbank aufgenommen werden.\n\n");
mysql_select_db($db_name);
}
############Bilder herunterladen
################################
$getPublicPhotos = flickr_connect($getPublicPhotos_params);
if($getPublicPhotos['stat'] == 'ok') {
echo <<<TABELLENKOPF
<h2>Fotos von <a href="$flickr_profil">$realname ($username)</a></h2>
$seitenzahlen
<table border="1">
<tr>
<th>Bild</th>
<th>ID</th>
<th>Datum</th>
<th>Titel</th>
<th>Tags</th>
</tr>
TABELLENKOPF;
$photos_r = $getPublicPhotos['photos']['photo'];
$id = ($anzahl_bilder - (($get_seite-1) * $conf_per_page)) + 1;
foreach($photos_r as $image) {
############Variablen erzeugen
$titel = str_replace("'",'',$image['title']);
$tags = str_replace(' ', ',', $image['tags']);
$date = $image['datetaken'];
$id--;
if($use_flickr_id) {
$s_id = $image['id'];
} else {
$s_id = $id;
}
############URLs erzeugen + Bilder speichern
$url_75 = 'http://farm'.$image['farm'].'.static.flickr.com/'.$image['server'].'/'.$image['id'].'_'.$image['secret'].'_s.jpg';
if($save_75) {
copy($url_75, $folder_75.$s_id.$ext_75.'.jpg');
}
if($save_100) {
$url_100 = 'http://farm'.$image['farm'].'.static.flickr.com/'.$image['server'].'/'.$image['id'].'_'.$image['secret'].'_t.jpg';
copy($url_100, $folder_100.$s_id.$ext_100.'.jpg');
}
if($save_240) {
$url_240 = 'http://farm'.$image['farm'].'.static.flickr.com/'.$image['server'].'/'.$image['id'].'_'.$image['secret'].'_m.jpg';
copy($url_m, $folder_240.$s_id.$ext_240.'.jpg');
}
if($save_500) {
$url_500 = 'http://farm'.$image['farm'].'.static.flickr.com/'.$image['server'].'/'.$image['id'].'_'.$image['secret'].'.jpg';
copy($url_500, $folder_500.$s_id.$ext_500.'.jpg');
}
############Originabild-URL erzeugen + Bild speichern
if($save_o) {
$url_o = 'http://farm'.$image['farm'].'.static.flickr.com/'.$image['server'].'/'.$image['id'].'_'.$image['secret'].'_o.jpg';
if(!url_exists($url_o)) {
if(url_exists('http://flickr.com/photo_zoom.gne?id='.$image['id'].'&size=o')) {
$url_o2 = 'http://flickr.com/photo_zoom.gne?id='.$image['id'].'&size=o';
} else {
$url_o2 = 'http://flickr.com/photo_zoom.gne?id='.$image['id'].'&size=l';
}
$ausgabe = file($url_o2);
foreach($ausgabe as $key => $zeile) {
if(preg_match("#<p><img src=\"http://farm(.*).static.flickr.com/(.*)/".$image['id']."_(.*)_(.*).jpg\" /><br /></p>#Uis", $zeile, $treffer)) {
$url_o = 'http://farm'.$treffer[1].'.static.flickr.com/'.$treffer[2].'/'.$image['id'].'_'.$treffer[3].'_'.$treffer[4].'.jpg';
}
}
}
copy($url_o, $folder_o.$s_id.$ext_o.'.jpg');
}
############MySQL speichern
if($use_db) {
$sql = "INSERT INTO $db_table (
titel,
date,
tags
) VALUES (
'$titel',
'$date',
'$tags'
)";
mysql_db_query($db_name, $sql);
}
###### Tabelle ausgeben
echo <<<TABELLE
<tr>
<td><img src="$url_75"></td>
<td>$id</td>
<td>$date</td>
<td>$titel</td>
<td>$tags</td>
</tr>
TABELLE;
}
echo("\n</table>\n\n");
echo($seitenzahlen);
} else {
echo "\nDas hat nicht funktioniert!";
}
?>
</body>
</html>
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)