User: SimonAW Date: 2010-02-17 00:49:47+0000 Added: de/www/downloads/download-table-gen.pl de/www/downloads/other.tt
Log: Script fuer Generieren der other.html. (Noch in Entwicklung!) File Changes: Directory: /de/www/downloads/ ============================= File [added]: download-table-gen.pl Url: http://de.openoffice.org/source/browse/de/www/downloads/download-table-gen.pl?rev=1.1&content-type=text/vnd.viewcvs-markup Added lines: 163 ---------------- #!/usr/bin/perl use warnings; use strict; use version; use LWP::UserAgent; use XML::LibXML; use Template; my( $ua, $parser, $xc, $tt ); my $records = {}; my $base_url = 'http://download.services.openoffice.org/files/localized'; my %lang_codes_map = ( 'ar' => 'Arabisch', 'ca' => 'Katalanisch', 'zh-cn' => 'Chinesisch (vereinfacht)', 'zh-tw' => 'Chinesisch (traditionell)', 'da' => 'Dänisch', 'nl' => 'Niederländisch', 'en-GB' => 'Englisch (Britisch)', 'en-US' => 'Englisch (US)', 'et' => 'Estnisch', 'fr' => 'Französisch', 'gl' => 'Galicisch', 'de' => 'Deutsch', 'el' => 'Griechisch', 'ga' => 'Irisch', 'it' => 'Italienisch', 'ja' => 'Japanisch', 'ko' => 'Koreanisch', 'ku' => 'Kurdisch', 'lt' => 'Litauisch', 'mk' => 'Mazedonisch', 'mn' => 'Mongolisch', 'nb' => 'Norwegisch (Bokmål)', 'nn' => 'Norwegisch (Nynorsk)', 'pl' => 'Polnisch', 'pt' => 'Portugisisch (Europa)', 'bt-pt' => 'Portugisisch (Brasilien)', 'ru' => 'Russisch', 'sr' => 'Serbisch', 'sl' => 'Slovenisch', 'es' => 'Spanisch', 'sv' => 'Schwedisch', 'tr' => 'Türkisch', 'vi' => 'Vietnamesisch' ); my %all_platforms = ( 'windows' => 'OOo_[%VERSION%]_Win32Intel_install_[%LANG%].exe', 'windowsj' => 'OOo_[%VERSION%]_Win32Intel_install_wJRE_[%LANG%].exe', 'lin32rpm' => 'OOo_[%VERSION%]_LinuxIntel_install_[%LANG%].tar.gz', 'lin32rpmj' => 'OOo_[%VERSION%]_LinuxIntel_install_wJRE_[%LANG%].tar.gz', 'lin32deb' => 'OOo_[%VERSION%]_LinuxIntel_install_[%LANG%]_deb.tar.gz', 'lin64rpm' => 'OOo_[%VERSION%]_LinuxX86-64_install_[%LANG%].tar.gz', 'lin64rpmj' => 'OOo_[%VERSION%]_LinuxX86-64_install_wJRE_[%LANG%].tar.gz', 'lin64deb' => 'OOo_[%VERSION%]_LinuxX86-64_install_[%LANG%]_deb.tar.gz', 'macosint' => 'OOo_[%VERSION%]_MacOSXIntel_install_[%LANG%].dmg', 'macosppc' => 'OOo_[%VERSION%]_MacOSXPPC_install_[%LANG%].dmg', 'solx86' => 'OOo_[%VERSION%]_Solarisx86_install_[%LANG%].tar.gz', 'solx86j' => 'OOo_[%VERSION%]_Solarisx86_install_wJRE_[%LANG%].tar.gz', 'solsparc' => 'OOo_[%VERSION%]_SolarisSparc_install_[%LANG%].tar.gz', 'solsparcj' => 'OOo_[%VERSION%]_SolarisSparc_install_wJRE_[%LANG%].tar.gz', ); sub initialize { $ua = LWP::UserAgent->new( agent => 'OOoSnooper' ); $parser = XML::LibXML->new; $xc = XML::LibXML::XPathContext->new; $tt = Template->new; print "Init OK\n"; } sub extract_links { my ( $url ) = @_; my $content = $ua->get( $url )->content; my $doc = $parser->parse_html_string( $content ); $xc->setContextNode( $doc->documentElement() ); my @items = $xc->findnodes( '//a' ); return \...@items; } sub run { initialize; my $items = extract_links( $base_url ); my $langobj = {}; foreach my $item ( @{$items} ) { my $href = $item->getAttribute("href"); if ( $href =~ /^([A-z]{2}(?:-[A-z]{2})?)\/$/ ) { my $lang = $1; if ( grep( /^$lang$/, keys(%lang_codes_map) ) > 0 ) { print "$lang found: " . $lang_codes_map{$lang}, "\n"; $langobj->{lang} = $lang_codes_map{$lang}; $records->{$lang} = $langobj; my $versions = extract_links( "$base_url/$lang" ); my @ooo_versions; foreach my $version ( @{$versions} ) { if ( $version->getAttribute("href") =~ /^(\d\.\d\.\d)\/$/ ) { push @ooo_versions, $1; } } # /foreach if ( @ooo_versions > 0 ) { my $latest_version = $ooo_versions[$#ooo_versions]; print "\tlatest version: " . $latest_version . " - checking platform availability\n"; my $available_platforms = extract_links( "$base_url/$lang/$latest_version" ); my @platforms; foreach my $available_platform ( @{$available_platforms} ) { my $href = $available_platform->getAttribute("href"); if ( $href =~ /^OOo/ ) { push @platforms, $href; } } foreach my $platform_key ( keys(%all_platforms) ) { my $P = $all_platforms{$platform_key}; $P =~ s/\[%VERSION%\]/$latest_version/; $P =~ s/\[%LANG%\]/$lang/; if ( grep( /$P/, @platforms ) > 0 ) { print "\t\t$P\n"; } } } else { print "\t no versions available\n"; } } # /if grep lang } # /if href } # /foreach items my $vars = { records => $records }; $tt->process( 'table.tt', $vars ); } # /sub run run; #initialize; File [added]: other.tt Url: http://de.openoffice.org/source/browse/de/www/downloads/other.tt?rev=1.1&content-type=text/vnd.viewcvs-markup Added lines: 25 --------------- <!DOCTYPE html> <html> <head> <title>Titel</title> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <link rel="stylesheet" type="text/css" href="table.css"> </head> <body> <h1>Alle OpenOffice.org-Versionen</h1> <table summary="Alle Versionen"> [% FOREACH r IN keys(records) %] <tr> <td>[% r.lang %]</td> </tr> [% END %] </table> </body> </html> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
