=?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