Jak wstawić losowy cytat via program fortune opisano na tej
stronie. Jeżeli podpis ma być generowany a nie wklejany z pliku, to
w konfiguracji Pine (setup -> config)
literal-signature
ma mieć wartość No Value Set
a w signature-file
należy wstawić (na końcu obowiązkowo
znak ,,|
''):
ścieżka-do-skryptu/skrypt |
No i dobrze. A ja chciałem w swojej sygnaturze losowy URL do
mojego zbioru zdjęć na www.flickr.com/.
Do tego zaadaptowałem następujący skrypcik, który ściąga informacje na
temat n (konkretnie $max_photos
) ostatnio umieszczonych
na koncie flickr zdjęć i z tej n-ki losowo drukuje jedno:
#!/usr/bin/perl -s # The program prints URL of random image out of $max_photos photos ... use LWP::Simple; my $my_flickr_id='20425995@N00'; # insert your ID my $my_flickr_dir='http://www.flickr.com/photos/tprzechlewski'; my $max_photos = '20'; my $api_key = '????????????????'; # insert your API key here my $method = 'flickr.people.getPublicPhotos'; my $url = "http://www.flickr.com/services/rest/?method=$method&" . "api_key=$api_key&user_id=$my_flickr_id&per_page=$max_photos"; my $xml = get $url; if ($xml =~ m/rsp stat=[ \t]*[\`\"]ok/) {# no errors so print while ($xml =~ m/id=[ \t]*[\`\"]([^\"\']+)[\`\"]/g) { push @Photos, $1; } } else { die "** Problems fetching $max_photos of $my_flickr_id **"; } print "$my_flickr_dir/" . $Photos[ int(rand($max_photos)) . "\n";
Skrypcik jest specjalnie odchudzony, tak że korzysta wyłącznie
z LWP::Simple
i dzięki temu ma większe szanse działania
w sytuacjach kiedy dociągnięcie tego czy tamtego modułu jest
kłopotliwe. Z tego samego powodu do wyłuskania odpowiednich
informacji nie parsuję pliku XML (posługując się
np. XML::Simple
), a używam wyrażeń regularnych
(regułowych?).