Add recursive enumeration of images
cleaned up some comments and one typo in ARG parsing
This commit is contained in:
parent
f1f94b6df4
commit
aa70b984c3
|
@ -42,6 +42,8 @@ are currently enabled will be set.\n
|
||||||
--verbose=N Define minimum log level. Counting from 1: LOG_DEBUG, LOG_INFO,
|
--verbose=N Define minimum log level. Counting from 1: LOG_DEBUG, LOG_INFO,
|
||||||
-v N LOG_NOTICE, LOG_WARNING, LOG_ERR, LOG_CRIT, LOG_ALERT, LOG_EMERG
|
-v N LOG_NOTICE, LOG_WARNING, LOG_ERR, LOG_CRIT, LOG_ALERT, LOG_EMERG
|
||||||
Default: 5; If provided without a value for N then all (1).
|
Default: 5; If provided without a value for N then all (1).
|
||||||
|
--recursive=N Enumerate images recursively through directories in the path.
|
||||||
|
-r N N indicates the directory depth, unlimited if no N is provided.
|
||||||
--help This menu
|
--help This menu
|
||||||
-h\n
|
-h\n
|
||||||
You can send SIGUSR1 to force the daemon to reload immediately. Rotation timer
|
You can send SIGUSR1 to force the daemon to reload immediately. Rotation timer
|
||||||
|
@ -168,14 +170,41 @@ sub clean
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub dig_dirs
|
||||||
|
{
|
||||||
|
my $self = shift;
|
||||||
|
my $paths_ref = shift;
|
||||||
|
my $path = shift;
|
||||||
|
my $depth = shift || 0;
|
||||||
|
unless (-e $path) {
|
||||||
|
return(undef);
|
||||||
|
}
|
||||||
|
if ($path =~ m/\/\.\.?$/) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
foreach (glob("$path/*"), glob("$path/.*")) {
|
||||||
|
if ($path =~ m/\/\.\.?$/) {
|
||||||
|
next();
|
||||||
|
} elsif (-l $_) {
|
||||||
|
push(@$paths_ref, $_);
|
||||||
|
} elsif (-d $_ && ($self->{recursive} == '-1' || $depth < $self->{recursive})) {
|
||||||
|
$self->dig_dirs($paths_ref,$_,$depth+1);
|
||||||
|
} else {
|
||||||
|
push(@$paths_ref, $_);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub choose_image
|
sub choose_image
|
||||||
{
|
{
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my @w = glob($self->{'path'}."/*");
|
|
||||||
return undef unless (scalar(@w));
|
|
||||||
$self->do_log("LOG_DEBUG", "Found ".scalar(@w)." files in $self->{path}");
|
|
||||||
|
|
||||||
my @i;
|
my @i;
|
||||||
|
my $depth = 0;
|
||||||
|
my @w;
|
||||||
|
$self->dig_dirs(\@w,$self->{path});
|
||||||
|
return undef unless (scalar(@w));
|
||||||
|
$self->do_log("LOG_DEBUG", "Found ".scalar(@w)." files in $self->{path} up to depth $self->{recursive}");
|
||||||
foreach (@w) {
|
foreach (@w) {
|
||||||
if (-d $_) {
|
if (-d $_) {
|
||||||
$self->do_log("LOG_DEBUG", "Ignoring sub-directory $_");
|
$self->do_log("LOG_DEBUG", "Ignoring sub-directory $_");
|
||||||
|
@ -218,10 +247,8 @@ sub crop
|
||||||
$x = int(rand($iw-$ow));
|
$x = int(rand($iw-$ow));
|
||||||
$y = int(rand($ih-$oh));
|
$y = int(rand($ih-$oh));
|
||||||
|
|
||||||
print "Cropping $image ${ow}x${oh}+${x}+${y}\n";
|
|
||||||
my $err = $im->Crop(geometry=>"${ow}x${oh}+${x}+${y}");
|
my $err = $im->Crop(geometry=>"${ow}x${oh}+${x}+${y}");
|
||||||
die "$err" if ($err);
|
die "$err" if ($err);
|
||||||
print "Writing $cropped\n";
|
|
||||||
$err = $im->Write($cropped);
|
$err = $im->Write($cropped);
|
||||||
die "$err" if ($err);
|
die "$err" if ($err);
|
||||||
return $cropped if ( -e $cropped );
|
return $cropped if ( -e $cropped );
|
||||||
|
@ -351,6 +378,7 @@ my $delay;
|
||||||
my $crop;
|
my $crop;
|
||||||
my $path;
|
my $path;
|
||||||
my $verbose;
|
my $verbose;
|
||||||
|
my $recursive = 0;
|
||||||
while (my $arg = shift(@ARGV)) {
|
while (my $arg = shift(@ARGV)) {
|
||||||
if ($arg eq '-h' || $arg eq '--help') {
|
if ($arg eq '-h' || $arg eq '--help') {
|
||||||
$wp->usage();
|
$wp->usage();
|
||||||
|
@ -376,11 +404,21 @@ while (my $arg = shift(@ARGV)) {
|
||||||
} elsif ($arg =~ m/^\-\-verbose=?(.+)?$/) {
|
} elsif ($arg =~ m/^\-\-verbose=?(.+)?$/) {
|
||||||
die "Redundant argument '$arg'. Verbosity already set.\n" if ($verbose);
|
die "Redundant argument '$arg'. Verbosity already set.\n" if ($verbose);
|
||||||
$verbose = $1 || 1;
|
$verbose = $1 || 1;
|
||||||
} elsif ($arg eq '-p') {
|
} elsif ($arg eq '-v') {
|
||||||
die "Redundant argument '$arg'. Verbosity already set.\n" if ($verbose);
|
die "Redundant argument '$arg'. Verbosity already set.\n" if ($verbose);
|
||||||
if (scalar(@ARGV) && $ARGV[0] =~ m/^\d$/) {
|
if (scalar(@ARGV) && $ARGV[0] =~ m/^\d$/) {
|
||||||
$verbose = shift(@ARGV);
|
$verbose = shift(@ARGV);
|
||||||
}
|
}
|
||||||
|
} elsif ($arg =~ m/^\-\-recursive=?(.+)?$/) {
|
||||||
|
die "Redundant argument '$arg'. Recursive search already set.\n" unless ($recursive == 0);
|
||||||
|
$recursive = $1 || -1;
|
||||||
|
} elsif ($arg eq '-r') {
|
||||||
|
die "Redundant argument '$arg'. Recursive search already set.\n" unless ($recursive == 0);
|
||||||
|
if (scalar(@ARGV) && $ARGV[0] =~ m/^\d+$/) {
|
||||||
|
$recursive = shift(@ARGV);
|
||||||
|
} else {
|
||||||
|
$recursive = -1;
|
||||||
|
}
|
||||||
} elsif ($arg =~ m/^-/) {
|
} elsif ($arg =~ m/^-/) {
|
||||||
die "Unrecognized argument: $arg\n";
|
die "Unrecognized argument: $arg\n";
|
||||||
} else {
|
} else {
|
||||||
|
@ -404,6 +442,7 @@ $wp->{path} = $path || "$ENV{HOME}/wallpapers";
|
||||||
$wp->{crop} = $crop || 1;
|
$wp->{crop} = $crop || 1;
|
||||||
$wp->{delay} = $delay || 300;
|
$wp->{delay} = $delay || 300;
|
||||||
$wp->{verbose} = $verbose || 0;
|
$wp->{verbose} = $verbose || 0;
|
||||||
|
$wp->{recursive}= $recursive;
|
||||||
$wp->{error} = [];
|
$wp->{error} = [];
|
||||||
|
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
Loading…
Reference in New Issue