Du befindest dich hier: FSI Informatik » Informationen » linuxkurs » Aufgabensammlung » Mensaskript   (Übersicht)

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Nächste Überarbeitung
Vorherige Überarbeitung
informationen:linuxkurs:aufgabensammlung:mensa [26.08.2016 06:27] – vorkurs => linuxkurs tomabrafixinformationen:linuxkurs:aufgabensammlung:mensa [10.11.2022 13:44] (aktuell) Xinthra
Zeile 3: Zeile 3:
  
 <code> <code>
-#! /usr/bin/perl -w+#!/usr/bin/perl
  
 +use v5.12;
 use strict; use strict;
-use integer+use warnings
-use Term::ANSIColor;+use utf8;
  
-use Date::Format; +use open qw( :std :locale );
-my $time = time; +
-if ($#ARGV >= 0) { +
- $time += $ARGV[0] * 86400; +
-+
-my $date = time2str("%d\\.%m\\.", $time);+
  
-my @pars = split(/\n\s*\n/m, `w3m -dump http://www.studentenwerk.uni-erlangen.de/verpflegung/de/sp-er-sued.shtml`);+use HTML::TreeBuilder (); 
 +use WWW::Mechanize ();
  
-my @result grep { /${date}} @pars;+my $URL 'http://www.werkswelt.de/?id=sued';
  
-$, = "\n\n";+my @color ("\e[31m","\e[33m","\e[32m"); 
 +my $color_reset = "\e[m";
  
-print @result+sub get_food { 
-print "\n";+    my $idx = shift
 +    my ($html) = @_;
  
 +    foreach my $line (split /\n/, $html) {
 +        next unless $line =~ /^Speiseplan <br>/;
 +
 +        $line =~ m{<h4>(.+?)</h4>} or die;
 +        say "$color[$idx]$1$color_reset";
 +
 +        while ($line =~ m{(Essen \d+)</br>(.+?)</br>}g) {
 +            my $food = $1;
 +            my $name = $2;
 +
 +            $name =~ s{<sup>.+?</sup>}{}g;
 +            $name =~ s{\([\d\w,]+\)}{}g;
 +            $name =~ s{\s+}{ }g;
 +            say "  $color[$idx]$food:$color_reset $name";
 +        }
 +    }
 +}
 +
 +my $mech = WWW::Mechanize->new;
 +
 +$mech->get($URL);
 +get_food(0,$mech->content);
 +
 +for (my $i = 0; $i < 2; $i++) {
 +    my $next = $mech->current_form->find_input(undef, 'submit', 3);
 +    $mech->click_button(input => $next);
 +    get_food($i+1, $mech->content);
 +}
 </code> </code>
  
-Dieses //Perl//-Skript lädt mit Hilfe des Programms ''w3m'' den Mensaspeiseplan aus dem Internet und filtert mit einem //regulären Ausdruck// (wie //grep//!) den aktuellen Tag heraus.+Dieses //Perl//-Skript lädt den Mensaspeiseplan aus dem Internet und filtert mit einem //regulären Ausdruck// (wie //grep//!) den aktuellen Plan heraus.
  
 Sinnvollerweise sollte das Script als ''mensa'' im Verzeichnis ''~/bin'' gespeichert werden und so wie oben ausführbar gemacht werden (Rechte!). Nun kannst du jeden Tag mittels ''mensa'' den Mensa-Speiseplan anschauen. Sinnvollerweise sollte das Script als ''mensa'' im Verzeichnis ''~/bin'' gespeichert werden und so wie oben ausführbar gemacht werden (Rechte!). Nun kannst du jeden Tag mittels ''mensa'' den Mensa-Speiseplan anschauen.