#!/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 =~ /\/\//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;