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]

Antwort per Email an