
vznikla mi potreba mit kdykoliv dostupny aspon trochu aktualni kalendar z korganizeru.
v prve rade bylo potreba vyresit export dat. to jednoduse resi utilita konsolekalendar s exportem do .csv
$ konsolekalendar --view --event --all --export-type CSV | ./parse_kalendar.pl 'change_date_format();' > calendar.csv
kalendar exportuje cas ve formatu: Monday 26 January 2009, ktery se spatne porovnava.
proto jsem pouzil funkci change_date_format() kterra ho prevede do snadneji porovnavatelneho formatu:
sub change_date_format {
while (<STDIN>) {
if (/^"([^"]*)","([^"]*)","([^"]*)",(.*)/) {
my $new_date_start = `date -d '$1' +%Y-%m-%d`;
chomp($new_date_start);
my $new_date_end = `date -d '$3' +%Y-%m-%d`;
chomp($new_date_end);
print "\"$new_date_start\",\"$2\",\"$new_date_end\",$4\n";
}
}
}
nasledne je potreba pushnout .csv na server. na to staci jednoduche scp s klicem:
$ scp -P $port calendar.csv $user@$host:public_html/auth
na serveru je jednoduchy perlovy CGI skript ktery pomoci modulu DBI a AnyData vybira data:
sub print_event_html {
my $event = shift;
my $location = $event->{'location'};
$location =~ s/ / /g;
format =
<div style="border: 1px dotted;">
@* @* - @* @* [@*]<br/>
$event->{'date_start'}, $event->{'time_start'}, $event->{'date_end'}, $event->{'time_end'}, $location
<b>@*</b><br/>
$event->{'summary'}
^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<~~<br/>
$event->{'description'}
</div>
.
write;
}
use DBI;
use AnyData;
use CGI qw/:standard/;
...
if ($query->param('show')) {
my $dbh = DBI->connect('dbi:AnyData(RaiseError=>1):');
$dbh->func( 'calendar', 'CSV', 'calendar.csv', {
cols=>'date_start,time_start,date_end,time_end,summary,location,description,uid'},
'ad_catalog');
my $sth = $dbh->prepare("SELECT date_start,time_start,date_end,time_end,summary,location,description,uid FROM calendar WHERE date_start >= ? AND date_start <= ? ORDER BY date_start LIMIT $limit");
$sth->execute($date_from, $date_to);
print $query->h1("$date_from - $date_to");
while (my $h_r = $sth->fetchrow_hashref) {
print_event_html($h_r);
}
}
takze asi tak
kdyz bude zajem, zverejnim git repo s kompletnim kodem
Komentáře
C++
ahoj. schanim nekoho, kdo by mi naprogramoval, respektive znovunaprogramoval starickou DOSovou hru achtung die kurve s nekolika zmenama a upravama. pokud by jste to nekdo umel, tak mi prosim napiste na veen (at) email.cz .zaplatim, urcite se dohodnem. Dik