X-Git-Url: https://git.sesse.net/?p=pr0n;a=blobdiff_plain;f=perl%2Fpr0n-upload.pl;h=4cde1f7398f168f9546346095a42b9314336c1d8;hp=6d5aacc9d898039e8cf8e0c731ba5bc6075d2b2c;hb=aeb95e559e5d54b0bcd86b46281735f86fb82610;hpb=773d6cc9629e119b2bdc0ea8849aefccc29ffc8b diff --git a/perl/pr0n-upload.pl b/perl/pr0n-upload.pl index 6d5aacc..4cde1f7 100755 --- a/perl/pr0n-upload.pl +++ b/perl/pr0n-upload.pl @@ -15,9 +15,11 @@ use HTTP::DAV; use threads; use Thread::Queue; -my $threads = 16; +my $threads = 40; my $running_threads :shared = 0; my $queue :shared = Thread::Queue->new; +my @succeeded :shared = (); +my @failed :shared = (); # Enqueue all the images. my $url = shift @ARGV; @@ -26,10 +28,6 @@ $queue->enqueue(@ARGV); # Fetch username and password, and check that they actually work. my ($user, $pass) = get_credentials(); my $dav = init_dav($url, $user, $pass); -my $r = $dav->propfind(-url => $url, -depth => 0); -if ($r == 0) { - die "Couldn't open $url: " . $dav->message . "\n"; -} # Fire up the worker threads, and wait for them to finish. my @threads = (); @@ -44,13 +42,22 @@ for my $thread (@threads) { $thread->join(); } +if (scalar @failed != 0 && scalar @succeeded != 0) { + # Output failed files in an easily-pastable format. + print "\nFailed files: ", join(' ', @failed), "\n"; +} + sub upload_thread { $running_threads++; my $dav = init_dav($url, $user, $pass); while (my $filename = $queue->dequeue_nb) { - $dav->put(-local => $filename, -url => $url) - or warn "Couldn't upload $filename: " . $dav->message . "\n"; + if ($dav->put(-local => $filename, -url => $url)) { + push @succeeded, $filename; + } else { + push @failed, $filename; + warn "Couldn't upload $filename: " . $dav->message . "\n"; + } } $running_threads--; @@ -61,7 +68,7 @@ sub init_dav { my $ua = HTTP::DAV::UserAgent->new(); $ua->agent('pr0n-uploader/v1.0 (perldav)'); my $dav = HTTP::DAV->new(-useragent=>$ua); - $dav->credentials(-user=>$user, -pass=>$pass, -url=>$url); + $dav->credentials(-user=>$user, -pass=>$pass, -url=>$url, -realm=>'pr0n.sesse.net'); $dav->open(-url => $url) or die "Couldn't open $url: " . $dav->message . "\n"; return $dav;