=?utf-8?q?Jakpos=C3=ADl=C3=A1te fotky do online sb=C4=9Brny?=
Václav Ovsík
vaclav.ovsik na i.cz
Pondělí Prosinec 4 12:56:24 CET 2006
On Thu, Nov 30, 2006 at 10:54:12AM +0000, tom.hubalek na gmail.com wrote:
> Zdar,
>
> hledám nějaký způsob jak poslat větší množství fotek do online
> sběrny na Linuxu.
>
> Zkoušel jsem Zoner Photo Client 3 pod wine, ale skončil jsem na tom, že
> stahoval nějaké soubory pro providery, stáhnul cca 300 kB a skončil.
> Nevím jestli je problém u Zoneru nebo ve wine.
>
> Uvítám jakýkoliv fungující způsob jak poslat fotky ke zpracování
> (na sběrně tak moc nezáleží).
Ja jsem si napsal skriptik pro fotostar. Je to v perlu a musite mit
prislusne moduly (lwp).
Vlezete na jejich fotosbernu a date ze chcete delat upload a pak tomu
skriptu predhodite URL s tim ilikephoto cislem a soubory.
Prubezne muzete pres web koukat na nahledy.
Nakonec to potvrdite pres prohlizec.
Je to takove provizorium, ale me to zacim stacilo.
--
Zito
------------- další část ---------------
#!/usr/bin/perl
use strict;
use Carp;
use LWP::UserAgent;
use HTTP::Request::Common;
my $url_static_part = 'http://sberna.fotostar.cz/vlozit-fotografie/'
.'?ilikephoto=';
sub usage
{
croak <<EOF;
usage: fotostar-upload <URL> <file1.jpg>...
where URL is fotostar URL for uploading photos in the format:
${url_static_part}<sessionid>
EOF
}
my $url = shift @ARGV;
if ( substr($url, 0, length($url_static_part)) ne $url_static_part )
{
warn "fotostar-upload: url format error\n";
usage();
}
my ($sessionid) = $url =~ m/ilikephoto=(.*)/;
if ( $sessionid !~ m/^[[:xdigit:]]{32}$/ )
{
warn "fotostar-upload: sessionid don't have 32 hexaciphers\n";
usage();
}
my $ua = LWP::UserAgent->new(env_proxy => 1, keep_alive => 1, timeout => 300);
foreach my $f ( @ARGV )
{
if ( $f !~ m/\.jpg$/ )
{
warn "arg \`$f' has bad extension, ignoring\n";
next;
}
upload_img($ua, $sessionid, $f);
}
exit(0);
sub upload_img
{
my ($ua, $sessionid, $f) = @_;
my $upurl="http://sberna.fotostar.cz/vlozit-fotografie/upload.php?ilikephoto=${sessionid}&verze=sberna&kam=0";
my $request = POST($upurl,
Content_Type => 'form-data',
Content => [
ilikephoto => $sessionid,
sessionid => $sessionid,
f1 => [ $f ],
pokracovat => 'Nahrát a vložit další',
],
);
my $response = $ua->request($request);
if ( $response->is_success )
{
print "file `$f' ok\n";
return 0;
}
else
{
warn "file `$f' " . $response->status_line . "\n";
return -1;
}
}
Další informace o konferenci Linux