Linktipps von del.icio.us mit PHP erstellen

Wie man schon einmal beobachten konnte, habe ich nun auch meine delicious Links in meinem Blog. Allerdings werden die Links nur jede Woche angezeigt. Dazu habe ich selber ein kleines Script geschrieben.
Das Script wird täglich durch einen Cronjob aufgerufen und liest die Links aus dem RSS Feed von delicious und schreibt sie in eine Datenbank. Dort werden sie aufbewahrt, bis sie von einem anderen Script ausgelesen und auf die Webseite geschreiben werden. Das passiert bei mir wöchentlich.

Für die Technik-Interessierten habe ich hier die Datenbankstruktur und den Code des Scriptes, welches die Links ausliest. Das schreiben der Links in den Blog sollte ja nicht so schwierig sein.
Bei Gelegenheit werde ich die Daten nicht mehr aus dem Feed, sondern aus der API nehmen. Aber so funktionierts ja auch.
Ach ja: Das Script verwendet MagpieRSS um die RSS Datei zu parsen.

Die Tabellenstruktur
mysql> describe delicious;
+----------------+--------------+------+-----+---------+----------------+
| Field          | Type         | Null | Key | Default | Extra          |
+----------------+--------------+------+-----+---------+----------------+
| delID          | int(11)      |      | PRI | NULL    | auto_increment |
| delTitle       | varchar(200) |      |     |         |                |
| delLink        | varchar(200) |      |     |         |                |
| delTags        | varchar(200) |      |     |         |                |
| delDescription | text         |      |     |         |                |
| delLang        | char(2)      |      |     |         |                |
| delDate        | int(11)      |      |     | 0       |                |
| delActive      | tinyint(4)   |      |     | 0       |                |
+----------------+--------------+------+-----+---------+----------------+
Wenn delActive auf 1 ist, bedeutet das, dass der Link schon auf der Homepage angezeigt wird.

Der PHP Code
#!/usr/bin/php
<?
// abstand machen, damits auch schoen aussieht
function space($lenght)
{
    
$count=100-$lenght;
    for(
$i=0;$i<$count;$i++)
    {
        echo 
" ";
    }
}

// alle klassen, funktionen usw einbinden
require_once("/home/t-error/public_html/includes/_head.inc.php");

// magpie einbinden
require("magpierss/rss_fetch.inc");

// rss daten herunterladen und parsen
$data=fetch_rss("http://del.icio.us/rss/blacklord");
$data=$data->items;

// los gehts
foreach($data AS $item)
{
    
// die daten in verstaendliche variabeln schreiben
    
$title=        addSlashes($item['title']);
    
$link=         $item['link'];
    
$date=         intVal($item['date_timestamp']);
    
    
// tags als array speichern
    
$tags=         explode(" ",strToLower($item['dc']['subject']));
    
$description=  NULL;

    
// wenn eine beschreibung geschreiben worden ist
    
if(isSet($item['description']))
    {
        
$description=addSlashes($item['description']);
    }

    
// den lang: tag rausfiltern und die richtige sprache in $lang schreiben
    
$tags_arr=array();
    foreach(
$tags AS $tag)
    {
        if(
preg_match("/^lang:([a-z]{2}$)/",$tag,$result))
        {
            
$lang=$result[1];
        }
        else
        {
            
$tags_arr[]=$tag;
        }
    }

    
// tags wieder zusammensetzten
    
$tags=implode(" ",$tags_arr);

    
// ueberpruefen, ob der link schon in der datenbank ist
    
$res=$db->query("
                SELECT
                    delActive
                FROM
                    "
.TBL_PREFIX.TBL_DELICIOUS."
                WHERE
                    delDate="
.$date." AND
                    delLink='"
.$link."'");

    
// wenn nein: einfuegen. los!
    
if($db->num_rows($res)==0)
    {
        
$db->query("
                INSERT INTO
                    "
.TBL_PREFIX.TBL_DELICIOUS."
                    (
                        `delTitle`,
                        `delLink`,
                        `delDate`,
                        `delTags`,
                        `delDescription`,
                        `delLang`
                    )
                VALUES
                    (
                        '"
.$title."',
                        '"
.$link."',
                        '"
.$date."',
                        '"
.$tags."',
                        '"
.$description."',
                        '"
.$lang."'
                    )"
);
                    
        
// noch eine kleine ausgabe
        
echo $title;
        
space(strLen($title));
        echo 
"[ inserted ]\n";
    }
    
    
// wenn ja: nur aendern, man weiss ja nie
    
else
    {
        if(
$db->result($res,0,"delActive")==0)
        {
            
$db->query("
                    UPDATE
                        "
.TBL_PREFIX.TBL_DELICIOUS."
                    SET
                        `delTitle`='"
.$title."',
                        `delLink`='"
.$link."',
                        `delDate`='"
.$date."',
                        `delTags`='"
.$tags."',
                        `delDescription`='"
.$description."',
                        `delLang`='"
.$lang."'
                    WHERE
                        delDate="
.$date." AND
                        delLink='"
.$link."'");
        }
    }
}
?>

Dieses Script kann, wenn die Zugriffsrechte korrekt gesetzt sind, über die Shell aufgerufen werden.

Verbesserungsvorschläge sind gerne Willkommen

Firefox Extensions 2

Ich habe eine kurze Beschreibung und einige Bilder von den Firefox Extensions zusammengestellt. Ergänzungen sind natürlich gerne in den Kommentaren willkommen.
Achtung: Die Extensions wurden unter Firefox 1.5 getestet. Die meisten funktionieren ohne Probleme auch im Firefox 2. Ich habe aber noch die Versionsangeben angegeben. Also vor dem Installieren darauf achten.

Eine Übersicht


Adblock

Adblock ist die wohl bekannteste Extension für Firefox, die unerwünschte Werbung blockt. Mit einfachen Regeln kann man Banner, JavaScripts usw. blockieren.


Versionen: alle
download

del.icio.us

del.icio.us ist ein Dienst mit dem man Bookmarks online speichern kann. Die Extension erlaubt einfaches hinzufügen von Seiten in diese Bookmarks.


Versionen: 1.07 oder neuer
download

FireFTP

Ein integrierter FTP-Client im Browser. So kann man, ohne eine zusätzliche Applikation zu starten Dateien auf/von FTP Server kopieren.


Versionen: 1.5 - 2.0.0.* ALL
download

GeoURL

Zeigt in der Statusleiste ein kleines Icon an, das aktiviert wird, wenn eine Webseite GeoTags gesetzt hat. Mit einem Klick auf das Icon kann man auswählen, wie man den Ort angezeigt haben will.



Versionen: 1.5 - 2.0.0.* ALL
download

Html Validator

Zeigt in der Statusleiste an, ob der Quellcode einer Webseite valide ist. Zudem werden bei der Ansicht des Sourcecodes die Fehler hervorgehoben.



Versionen: 1.0 - 2.0.0.* Linux, Windows
download

IE Tab

Ermögloch das wechseln der Browserengine innerhalb des Firefox Fensters. So kann man zum Beispiel mit dem Firefox Windowsupdates machen, oder testen wie die eigene Seite im IE aussieht.


Versionen: .5 - 3.0a2 Windows
download

LinkChecker

Mit einem Klick kann man überprüfen, ob die Links auf einer Webseite noch gültig sind oder ins leere führen.


Versionen: ???
download

Linkification

Wandelt nicht verlinkte Links automatisch in klickbare Links um. http://www.t-error.ch sieht mit Likification aus wie ein normaler Link.


Versionen: 1.0 - 3.0a2 ALL
download

Reveal

Reveal zeigt kleine Screenshots der Webseiten an, wenn man auf Zurück oder Weiter klickt. Dadurch findet man Webseiten, auf denen man schon war viel einfacher.


Versionen: 1.5 - 1.5.0.* ALL
download

Searchstatus

Zeigt in der Statusleiste den Googlepagerank und die Wertung von Alexa an.



Versionen: 1.0 - 2.0.0.* ALL
download

SessionSaver .2

Stellt alle Tabs wieder so her, wie man den Browser geschlossen hat. Auch bei einem Absturz sind alle Tabs wieder da.


Versionen: 0.9 - 1.6 ALL
download

Tails Export

Ermöglich das einfache Exportieren von Microformats auf Homepages.


Versionen: 1.5 - 1.5.0.* Windows
download

Layerblock

Neuerdings werden immer öfter Layers verwendet um Werbebotschaten an den Mann und die Frau zu bringen, da man dies nicht so einfach blockieren kann konnte. Mit Layerblock ist das kein Problem mehr. Installieren und man muss sich nicht mehr über die Lästige Layerwerbung ärgern.


Versionen: 1.5 oder neuer
download

Web Developer

Mit dieser Extension kann man ganz sich ganz einfach einen Überblick über den Aufbau einer Seite verschaffen. Man kann aber auch Bilder, Styles usw. ausblenden.



Versionen: 1.0 - 2.0.0.* ALL
download