From The Document Foundation Wiki
#!/usr/bin/perl
use HTML::SimpleLinkExtor;
use File::Find qw(find);
use URI::Escape;
my $dir = shift; # where static html
my $rsynclist = shift; # to create for rsync
my $medium = shift; # wich medium to be extract
my $source_dir = '/var/www/sites/libreofficebox.org/';
# not covered by link targets - separate by "\n"
# my $more_items = "assets/bin\nassets/installer/windows\nassets/installer/linux_deb/64/\nassets/installer/linux_deb/32/";
my $more_items;
$more_items = "assets/bin\nassets/installer/3.4/windows\nassets/installer/3.4/linux_deb/64/\nassets/installer/3.4/linux_deb/32/" if $medium eq "dvd.de";
$more_items = "assets/bin\nassets/installer/3.3/windows\nassets/installer/3.3/linux_deb/64/\nassets/installer/3.3/linux_deb/32/" if $medium eq "dvd-betrieb.de";
$more_items = "assets/bin\nassets/installer/3.4/windows" if $medium eq "cd_windows.de";
$more_items = "assets/installer/3.4/linux_deb/32/" if $medium eq "cd_linux_deb32.de";
die "no dir given" unless ($dir);
die "no filename for rsync given" unless ($rsynclist);
# dir is the html-directory as provided in the tarball from
# StaticExporter with basedir relative
# rsynclist is file that will contain all the used files
my $pattern = 'html$';
my %assets;
my %themes;
my $extor = HTML::SimpleLinkExtor->new();
sub collect_links {
return unless /$pattern/;
$extor->parse_file($_);
foreach $link ($extor->links) {
$link =~ s/^\/?(..\/)*//;
$assets{uri_unescape($link)}=1 if ($link =~ /^assets/);
$themes{$link}=1 if ($link =~ s/^themes\/([^\/]+)\/.*/$1/);
}
$extor->clear_links; # reset the link list
}
find (\&collect_links, $dir);
print "Number of referenced files from assets: ".scalar(keys %assets)."\n";
open INCLUDE, ">$rsynclist";
foreach $key (keys %assets) {
#print "\t $key\n";
print INCLUDE "$key\n";
}
print "Used theme(s):\n";
foreach $key (keys %themes) {
print "\t $key\n";
print INCLUDE "themes/$key/css\n";
print INCLUDE "themes/$key/images\n";
}
print INCLUDE $more_items;
close INCLUDE;
print STDERR "WARNING - MORE THAN ONE THEME!!\n" if ((keys %themes) >1);
print "now run the following command:\n";
print 'rsync -arv --dry-run --files-from='.$rsynclist." $source_dir ".$dir."\n";
print "If everything looks OK, remove the --dry-run and run again to actually copy the files\n";
print "Extrahiert von: ".$medium."\n";