TP Underground Lounge 07/08
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 19.06.2007, 08:26   #1
TP-Veteran
 
Benutzerbild von Dittboy
 
Registriert seit: Jan 2003
Ort: Goch
Dittboy hilft, wo's gehtDittboy hilft, wo's gehtDittboy hilft, wo's geht
Arrow

[PHP] Eigene flickr-Bilder automatisch herunterladen


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>
Miniaturansicht angehängter Grafiken
php-eigene-flickr-bilder-automatisch-flickr_grasr.jpg  
__________________
muh!
Dittboy ist offline   Mit Zitat antworten
Linktipp

Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik > Traum-Scripts
[PHP] Eigene flickr-Bilder automatisch herunterladen [PHP] Eigene flickr-Bilder automatisch herunterladen
« Zip-Klasse | paging - objekt »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


Alle Zeitangaben in WEZ +2. Es ist jetzt 12:48 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 RC7 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67