mourningdove/bin/misc/mood-maker.pl

55 lines
1.6 KiB
Perl
Raw Permalink Normal View History

2026-05-24 01:03:05 +00:00
#!/usr/bin/perl
#
# mood-maker.pl -- Given a new moodset, outputs what should be placed into mood.dat
#
# Copyright (c) 2016 by Dreamwidth Studios, LLC.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself. For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
use strict;
use Getopt::Long;
# parse input options
my ( $dir, $name, $description );
exit 1 unless GetOptions(
'dir=s' => \$dir,
'name=s' => \$name,
'desc=s' => \$description,
);
if ( !( $dir =~ m#^[\w-]+$# ) || ( $name =~ /:/ ) ) {
die "Usage: mood-maker.pl [opts]\n\n"
. "--dir The directory within htdocs/img/mood/ the images are stored in\n"
. " (that is, if images are in htdocs/img/mood/x/, should be 'x')\n"
. "--name The name of the theme (no colons allowed)\n"
. "--desc A description for the theme\n\n";
}
# now load in the beast
BEGIN {
require "$ENV{'LJHOME'}/cgi-bin/ljlib.pl";
}
use File::Basename;
use Image::Size;
use DW::Mood;
my %moods; # { name => id }
foreach ( values %{ DW::Mood->get_moods() } ) {
$moods{ $_->{name} } = $_->{id};
}
print "MOODTHEME $name : $description\n";
foreach my $path ( glob( $LJ::HOME . '/htdocs/img/mood/' . $dir . "/*" ) ) {
my $url = $path;
$url =~ s#\Q$LJ::HOME\E/htdocs##;
my ($mood) = fileparse( $path, qr/\.[^.]*/ );
die "Mood $mood does not exist!" unless exists $moods{$mood};
my ( $w, $h ) = Image::Size::imgsize($path);
die "Could not get image dimensions of $path" unless $w && $h;
print $moods{$mood}, " ", $url, " ", $w, " ", $h, "\n";
}