102 lines
2.5 KiB
Perl
102 lines
2.5 KiB
Perl
#!/perl -w
|
|
use warnings;
|
|
use File::Slurp qw(:std);
|
|
use File::stat;
|
|
use File::Path qw(make_path);
|
|
# use IO::Socket::SSL;
|
|
use LWP::UserAgent;
|
|
use Data::Printer;
|
|
use Crypt::SSLeay;
|
|
use Net::SSL;
|
|
#use Win32::File::VersionInfo;
|
|
use POSIX qw(strftime);
|
|
|
|
$ENV{PERL_NET_HTTPS_SSL_SOCKET_CLASS} = "Net::SSL";
|
|
$ENV{PERL_LWP_SSL_VERIFY_HOSTNAME} = 0;
|
|
$| = 1;
|
|
|
|
my $bib = {
|
|
'autofill' => 'AutoFill',
|
|
'buttons' => 'Buttons',
|
|
'select' => 'Select',
|
|
'staterestore' => 'StateRestore',
|
|
'scroller' => 'Scroller',
|
|
'searchbuilder' => 'SearchBuilder',
|
|
'searchpanes' => 'SearchPanes',
|
|
'rowreorder' => 'RowReorder',
|
|
'responsive' => 'Responsive',
|
|
'rowgroup' => 'RowGroup',
|
|
'colreorder' => 'ColReorder',
|
|
'fixedcolumns' => 'FixedColumns',
|
|
'keytable' => 'KeyTable',
|
|
'fixedheader' => 'FixedHeader',
|
|
'datetime' => 'Datetime',
|
|
};
|
|
|
|
my @dateien;
|
|
|
|
my $downloadfolder = 'D:\\wsldata\\htlib\\jquery-datatables';
|
|
|
|
my $ua = LWP::UserAgent->new(timeout => 10);
|
|
$ua->agent('Mozilla/5.0');
|
|
$ua->show_progress( 1 );
|
|
|
|
my $response = $ua->get( 'https://cdn.datatables.net/');
|
|
my @releases = $response->as_string =~ /href="(.*)">Release notes/g;
|
|
|
|
for my $rel ( @releases ) {
|
|
my $folder = $rel =~ s/\/\/cdn.datatables.net\///r;
|
|
my @urlsplit = split('/', $folder);
|
|
|
|
$folder = $folder =~ s/\//\\\\/gr;
|
|
|
|
if ( $urlsplit[0] !~ /^\d*\.\d*\.\d*$/ ) {
|
|
if ( $bib->{$urlsplit[0]} ) {
|
|
$folder = $folder =~ s/$urlsplit[0]/$bib->{$urlsplit[0]}/r;
|
|
}
|
|
|
|
$folder = 'extensions\\'. $folder;
|
|
}
|
|
if ( !-e $downloadfolder.'\\'. $folder) {
|
|
my $response = $ua->get( 'https://cdn.datatables.net/'. $rel);
|
|
my @files = $response->as_string =~ /<a href="(.*)">\/\//g;
|
|
for my $f ( @files ) {
|
|
if ( $f !~ /mjs$|json$/ ) {
|
|
push @dateien, $f;
|
|
}
|
|
}
|
|
} else {
|
|
$folder = $folder =~ s/\\\\$//rg;
|
|
$folder = $folder =~ s/\\\\/\\/rg;
|
|
print "$folder -> aktuell\n";
|
|
}
|
|
}
|
|
|
|
for my $da ( @dateien ) {
|
|
next if $da !~ /cdn\.datatables\.net/ or $da =~ /mjs$/ ;
|
|
my $folder = $da =~ s/\/\/cdn.datatables.net\///r;
|
|
my @urlsplit = split('/', $folder);
|
|
my $file = $urlsplit[-1];
|
|
|
|
$folder = $folder =~ s/$file//r;
|
|
$folder = $folder =~ s/\//\\\\/gr;
|
|
|
|
if ( $urlsplit[0] !~ /^\d*\.\d*\.\d*$/ ) {
|
|
if ( $bib->{$urlsplit[0]} ) {
|
|
$folder = $folder =~ s/$urlsplit[0]/$bib->{$urlsplit[0]}/r;
|
|
}
|
|
|
|
$folder = 'extensions\\'. $folder;
|
|
}
|
|
#
|
|
if ( !-e $downloadfolder.'\\'. $folder.$file) {
|
|
make_path( $downloadfolder.'\\'. $folder );
|
|
my $response = $ua->get( 'https:'. $da, ':content_file' => $downloadfolder.'\\'. $folder.$file);
|
|
}
|
|
}
|
|
|
|
|
|
system("pause");
|
|
|
|
1;
|