Thread Wagenanzeige Raspberry Pi (73 answers)
Opened by NIwu at 2014-10-25 13:58

Linuxer
 2014-11-04 22:28
#178117 #178117
User since
2006-01-27
3870 Artikel
HausmeisterIn

user image
Wenn's das schon trifft, dann hier nochmal etwas überarbeitet und um etwas Ballast erleichtert.
Die Titel und Feldbreite für die Ausgabe werden in zentralen Variablen definiert; das macht spätere Änderungen leichter.

Ansonsten hat dieses Skript sich noch Optimierungspotential und -bedarf.

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!"D:\webserver\xampp\perl\bin\perl.exe"
#! /usr/bin/perl


use strict;
use warnings;

use JSON;                   # muss evtl. nachinstalliert werden
use LWP::Simple;            # muss evtl. nachinstalliert werden
use Data::Dumper;

# Wo sind die Daten Haltestellen ID zu holen?
my $url = "http://localhost/abfahrten.do?id=01";

# Wie viele Abfahrten sollen gezeigt werden
my $how_many = 3;

my @titles  = ( 'Zug', 'Zielort', 'Abf. in' );  # Ueberschriften der Ausgabe
my @formats = ( '%4s', '%15s', '%8s' );         # Feldbreiten der Ausgabe

my $format  = join( ' ', @formats ) . "\n";     # baue Format fuer Ausgabe zusammen


# Daten abholen lasssen
#my $content = get( $url );
my $content = '[["S3","Dresden, Plauen","1"],["S1","Dresden, Flughafen","2"],["RE01","Meissen","10"],["ICE","Hamburg, Neugraben","15"]]';

# Abbruch, wenn Daten nicht geholt werden konnten
die "Could not load data from $url." if not defined $content;

# Bereite JSON-Parser vor
my $json = JSON->new->allow_nonref;


# Dekodiere JSON-Daten und erstelle eine Datenstruktur
#my $array_from_json = [["ZG NR","Richtung","Rücklaufende Minuten"],["ZG NR","Richtung", "Rücklaufende Minuten"]];
my $array_from_json = $json->decode( $content );

# Kontrollausgabe
#print Dumper $data;

# Sortiere nach Abfahrtszeiten
my @sorted = sort { $a->[2] <=> $b->[2]  } @$array_from_json;

#print Dumper \@sorted;

# Zeige die nächsten Abfahrten gemäß $how_many
print "Abfahrten\n";
printf $format, @titles;
for my $aRef ( @sorted[ 0 .. $how_many-1 ] ) {
    my ( $zugnr, $ziel, $min ) = @$aRef;
    $ziel = ( split m/,\s+/, $ziel )[1]     if $ziel =~ m/,/;
    printf $format, $zugnr, $ziel, $min;
}
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!

View full thread Wagenanzeige Raspberry Pi