Domanda

Ho diversi calendari di Google che vorrei unire e posizionare sul desktop di Windows usando Samurize . Ho provato a utilizzare il plug-in Page Scraper di Samurize, ma non sembra essere all'altezza dell'attività.

Posso far eseguire a Samurize uno script e posizionarne l'output sul desktop, ma non ne sono sicuro quali sono gli strumenti migliori per farlo.

Tutti gli URL che ho sono nel formato:

http://www.google.com/calendar/feeds/example%40gmail.com/private-REMOVED/basic?futureevents=true&orderby=starttime&sortorder=ascending&singleevents=true

Quindi potrei recuperarli usando il ricciolo, ma poi devo filtrarli.

Voglio qualcosa che assomigli a:

2009 12 02  Event from calendar 1's description 
2009 12 03  Event from calendar 2's description 
2009 12 04  Event from calendar 1's description 
2009 12 05  Event from calendar 3's description 
2009 12 06  Event from calendar 1's description 

Tuttavia le date nei feed del calendario sono formattate in questo modo:

<title type='html'>Event from calendar 1's description</title><summary type='html'>When: Fri 5 Dec 2008&lt;br&gt;

Quindi, come posso filtrare le date e le descrizioni e convertire le date?

(Ho installato cygwin in modo che qualcosa usando perl o sed / awk sarebbe perfetto dato che ho abbastanza familiarità con loro che sarei sicuro di alterarli in futuro, ma sono aperto ai suggerimenti.)

È stato utile?

Soluzione 3

Basandomi sulla sceneggiatura di John W questo è quello che sto usando

#!c:\cygwin\bin\perl.exe -w
use strict;
use LWP::Simple qw(get);

my %calendars = ( "Sam Hasler", "http://www.google.com/calendar/feeds/blah/blah/basic"
                , "Family    ", "http://www.google.com/calendar/feeds/blah/blah/basic"
                , "Work      ", "http://www.google.com/calendar/feeds/blah/blah/basic"
                );

my $params = "?futureevents=true&orderby=starttime&sortorder=ascending&singleevents=true";

my %months = ( "Jan", "01", "Feb", "02", "Mar", "03", "Apr", "04"
             , "May", "05", "Jun", "06", "Jul", "07", "Aug", "08"
             , "Sep", "09", "Oct", "10", "Nov", "11", "Dec", "12");

my $calendar_name;
my $calendar_url;
my @lines;

while (($calendar_name, $calendar_url) = each(%calendars)){
    my $calendar_data = get "$calendar_url$params";
    @lines = split(/\n/, $calendar_data);

    foreach (@lines) {
        if (/<title type='html'>([\d\D]*)<\/title><summary type='html'>When: (\S+) (\S+) (\S+) (\S+)&lt;br&gt;/)
        {
            my $day = "$3";
            if ($3 < 10 ) {
                $day = "0$3";
            }

            print "$5 $months{$4} $day\t$calendar_name\t$1\n";
        }
    }

}

Ho semplicemente reindirizzato l'output attraverso sort per ottenerlo in ordine di data.

Aggiornamento: ho convertito il mio script in un plug-in e l'ho inviato al sito Web Samurize: Unisci feed di Google Calendar .

Altri suggerimenti

Sto imparando il perl, quindi per favore non ridere troppo, ma ecco qualcosa che potrebbe portarti molto avanti verso l'analisi:

#!C:\Perl\bin -w
use strict;

my %months = ("Jan", "01", "Feb", "02", "Mar", "03", ... etc. etc. ... "Dec", "12");

Sto imparando il perl, quindi per favore non ridere troppo, ma ecco qualcosa che potrebbe portarti molto avanti verso l'analisi:

<*> = "<title type='html'>Event from calendar 1's description</title><summary type='html'>When: Fri 5 Dec 2008<br>"; if (/<title type='html'>([\d\D]*)<\/title><summary type='html'>When: (\S+) (\S+) (\S+) (\S+)<br>/) { print "$5 $months{$4} $3 $1\n"; }

Due idee.

Puoi usare Yahoo Pipes (vedi questo articolo .)

Oppure, se non vuoi aspettare che Yahoo aggiorni i suoi dati, qui è uno script Python in fase di sviluppo per unire i file ICAL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top