Joerg Johannes wrote:
I use Korganizer which stores in .ics files. I wrote this Perl script to do exactly that for .ics files. Since ics files are not in date order it sorts the data into date order. Maybe it will help.Hi everybody
Does anybody use the calendar function of evolution? I do, and I like it, but I'm missing one feature. I'd like to let the program make a list of dates such as:
2004/06/05 10:30 Choir rehearsal in Neustadt 2004/07/02 20:00 Heather Nova Concert in Freiburg 2004/07/08 19:00 Jan Garbarek Concert in Freiburg ...
I poked around in the menus, but did not find such a list-making
function. Maybe I can somehow grep dates out and sort/format them with
some perl hack... I'm just not skilled enough to get that done by myself
:(. Any ideas or pointers would be great.
usage: portcal.pl <file.ics>
Paul Scott
#! /usr/bin/perl
use strict;
my $in; my @event;
#if( $ARGV[0] ) { # print "$ARGV[0]\n"; # if( $ARGV[1] ) { # $in = $ARGV[1]; # } #}
$in = $ARGV[0];
my $isEvent = 0; my $eventNumber = 0; my $i; my $j; my $j2; my $tmp; my @event; my $zone = 7;
sub HourFix { my ( $hour, $zone ) = @_; $hour -= $zone; if( $hour < 0 ) { $hour += 24; } return $hour; }
open( IN, $in ) or die "Can't open $in"; while( <IN> ) { if( /BEGIN:VEVENT/ ) { $isEvent = 1; ++$eventNumber; next; } if( $isEvent ) { if( /END:VEVENT/ ) { $isEvent = 0; next; } SWITCH: { if( /SUMMARY:(.*)/ ) { $event[$eventNumber]{summary} = $1; next; } if( /DTSTART:(.*)/ ) { $event[$eventNumber]{start} = $1; next; } if( /DTEND:(.*)/ ) { $event[$eventNumber]{end} = $1; next; } if( /LOCATION:(.*)/ ) { $event[$eventNumber]{location} = $1; next; } } } }
for $i ( 0 .. $#event ) { $j2 = $#event - 1; for $j ( 0 .. $j2 ) { if( $event[$j+1]{start} < $event[$j]{start} ) { $tmp = @event[$j]; @event[$j] = @event[$j+1]; @event[$j+1] = $tmp; } } }
print "\nNumber of events: $#event\n"; for my $row ( @event ) { my $xx = $row->{start}; my $year = substr( $xx, 0, 4 ); my $month = substr( $xx, 4, 2 ); my $day = substr( $xx, 6, 2 ); my $hour = substr( $xx, 9, 2 ); my $startHour = HourFix( $hour, $zone ); my $startAMPM = "am"; if( $startHour > 12 ) { $startHour -= 12; $startAMPM = "pm"; } my $startMinute = substr( $xx, 11, 2 ); $hour = substr( $row->{end}, 9, 2 ); my $endHour = HourFix( $hour , $zone ); my $endAMPM = "am"; if( $endHour > 12 ) { $endHour -= 12; $endAMPM = "pm"; } my $endMinute = substr( $row->{end}, 11, 2 ); print "$month/$day/$year - $startHour:$startMinute$startAMPM -"; print "$endHour:$endMinute$endAMPM - "; print "$row->{summary}"; my $location = $row->{location}; if( $location ) { print " - $location"; } print "\n"; }
--
To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]