Archive for the ‘scripts’ Category

Uni Podcasts WS08

27. Nov 2008

Zwar etwas spät, aber ich möchte mal wieder auf meine Uni-Podcasts für dieses Semester hinweisen:

http://uni.saerdnaer.de

Im Prinzip werden die entsprechenden Webseiten ausgelesen und daraus ein Podcasts Feed erzeugt, wodurch man sich die Übungsblätter und Folien mithilfe eines Podcatchers (wie z.b. iTunes) automatisch auf den Rechner laden lassen kann, ohne jede Woche die Vorlesungsseiten besuchen zu müssen.

Von der Technik her war es diesesmal eigentlich fast das gleiche wie immer. Bei den Info2 Dingern musste ich sogar nur die URL der alten Scripts für Info1 ändern. 😉 Probleme macht nur die GBS Downloads. Die verwenden da irgend nen PHP Script und keinen direkten Verweis auf das PDF. Dadurch mag iTunes die Dateien nicht so wirklich gern (das will irgendwie das die mit .pdf enden). Das Problem habe ich dann über eine rewrite Regel für Apache auf meinem Webserver auf den des entspechenden Lehrstuhls gelöst.

Der Quelltext befindet sich jeweils in den entsprechenden .phps Dateien.

Bei Fragen und Problemen einfach per Mail/Jabber/Twitter oder hier in den Kommentaren melden.

Shoutbox to Twitter Bot

15. Mai 2008

Hi,

heute mal wieder ein kleines aber evtl. fuer dich hilfreiches Script. Dieses mal geht es darum die Nachrichten einer sogenannten Shoutbox, wie sie z.B. auf der Seite meines Jugentreffs benutzt wird per SMS aufs Handy zubekommen. Ich nutze dazu einfach Twitter. Aber seht selbst:

<?php
// Created 2007 by andi@saerdnaer.de
// Licenced under GPLv2
setlocale(LC_ALL, 'de_DE@euro', 'de_DE', 'de', 'ge');

//$path = '/home/user/dir/';
$path = dirname(__FILE__);

function post_to_twitter($username, $password, $message)
{
    // The twitter API address
    $url = 'http://twitter.com/statuses/update.xml';
    // Alternative JSON version
    // $url = 'http://twitter.com/statuses/update.json';
    // Set up and execute the curl process
    $curl_handle = curl_init();
    curl_setopt($curl_handle, CURLOPT_URL, "$url");
    curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
    curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl_handle, CURLOPT_POST, 1);
    curl_setopt($curl_handle, CURLOPT_POSTFIELDS, "status=$message");
    curl_setopt($curl_handle, CURLOPT_USERPWD, "$username:$password");
    $buffer = curl_exec($curl_handle);
    curl_close($curl_handle);
    // check for success or failure
    return !empty($buffer);
}

$url = 'http://1234567.shoutbox.de/';
$twitter_username = 'nutzername';
$twitter_password = 'passwort';

$file = implode('', file($url));
$file = utf8_encode($file);
$file = preg_replace('#­<img[^>]+>#is', '', $file);
$file = preg_replace('#<a[^>]+HREF="./go/\?u=([^"]+)"[^>]+>(?:.+?)</a>#is', '\1', $file);

if ( !preg_match_all('#<table (?:.+?)<font class="SB_shoutbox">([0-9\.]+) ([0-9\.]+)</font></div><b>(.+?)</b>:<br>(.+?)<script>(?:.+?)</table>#is', $file, $regs))
    die('No entry matches!');

$i = count($regs[0])-1;
$latest_time = strtotime($regs[1][$i] . " " . $regs[2][$i]); 

$last_update_time = intval(implode('', file($path.'last_update_time')));

if ( $latest_time > $last_update_time )
{
    $fp = fopen($path.'last_update_time', 'w');
    fwrite($fp, $latest_time);
    fclose($fp);
}
else
{
    exit;
}

for ( $i = 0; $i < count($regs[0]); $i++ )
{
    $item_time = strtotime($regs[1][$i] . " " . $regs[2][$i]);
    if ( $item_time <= $last_update_time )
    {
    continue;
    }

    $item_author = $regs[3][$i];
    $item_message = $regs[4][$i];
    $item_date = date('G:i', $item_time);

    post_to_twitter($twitter_username, $twitter_password, $item_author . ' ' . $item_date . ': ' . $item_message);
}
?>

URL zur Shootbox, Twitter Username und Passwort muessen natuerlich angepasst werden. Ich lasse das Script via Cronjob alle 5 Minuten laufen.

Vorlesungsfolien und Übungsblätter als Podcast

24. Jan 2008

Ich habe vor ein paar Wochen einige PHP Scripte geschrieben, die Webseiten der Lehrstühle besuchen und aus den Tabellen und Listen mit ein paar regulären Ausdrücken einen Podcast machen, den man dann mit einem beliebigen Podcatcher z.B. iTunes eintragen kann.

Dadruch landen die Folien immer automatisch auf meinem Rechner, und ich muss sie nicht mehr manuell herunterladen.

Die Scripts finden sich unter http://uni.saerdnaer.de, die Podcats sind die .php Dateien. Den Code findest du jeweils in den .phps Dateien. Bis auf die DS Folien funktioniert alles. Evtl. gehen die dann auch demnächst, muss mir heute Abend mal Zeit dazu nehmen. Jetzt gehen die DS Folien auch.

MfG Andi

DS Übungen herunterladen und auf ein DinA4 ausdrucken

24. Jan 2008

Hi,

das kleine Script hier läd sich die als Parameter angegebene DS Übungsblatt herunter, verkleiner es so, das alle Seiten auf ein Blatt passen, macht daraus eine PS Datei und druckt es aus.

wget http://www14.in.tum.de/lehre/2007WS/ds/uebung/ue${1}.pdf && pdf2ps ue${1}.pdf – | psnup -2 > ue${1}.ps && rm ue${1}.pdf && gs ue${1}.ps
echo „Drucken?“
read
lp -d ljfs -c ue${1}.ps
rm ue${1}.ps

Verwendung:

dsue 12

wobei dsue der Dateiname und 12 die Nummer des Übungsblatts ist.