#!/usr/bin/perl # use strict; use LWP::UserAgent; use LWP::Simple; use HTTP::Request::Common qw(POST); # Daten einlesen print <; while($url !~ m/(?:&|\?)(cid=[0-9]+&iid=[0-9]+&sid=[0-9]+)/) { print " Die URL ist nicht richtig! Bitte die URL ggf. aus dem grauen Hyperlink oben kopieren.\n"; print " Die URL muss cid, iid und sid enthalten.\n"; print "URL zur Anmeldung: "; $url = <>; } $url =~ m/(?:&|\?)(cid=[0-9]+&iid=[0-9]+&sid=[0-9]+)/; my $urlattr = $1; my %daten; for ("Vorname", "Name", "Matrikelnummer", "E-Mail", "Semester") { printf("%-18s ", $_ . ":"); $daten{$_} = <>; chomp($daten{$_}); } # Die Seite laden um Tutorientermine und Studiengang vorzuschlagen my $coursePage = get("https://www.mi.fu-berlin.de/kvv/course.htm?".$urlattr); print "\nTutorientermin wählen:\n"; my $termin; if($coursePage =~ m/class="tutorials">(.+?)<\/td>/s) { my @termine = split(/\s*
\s*/, $1); for (0..(@termine)) { $termine[$_ - 1] =~ s/(^\s+|\s+$)//g; $termine[$_ - 1] =~ s/ß/ß/g; printf(" %02d: %s\n", $_, $termine[$_ - 1]); } print "Termin Nr.: "; my $terminID = ""; $terminID = <> while($terminID !~ m/^[0-9]+\s*$/ |! exists $termine[int($terminID) - 1]); $termin = $termine[int($terminID) - 1]; } else { print "Es sind noch keine Termine angegeben. Bitte den Anfang des Termins angeben\n"; print "Im KVV sieht das immer gleich aus, z.B.: Mittwoch 8 - 10 Uhr\n"; $termin = <>; chomp($termin); } my $registerPage = get("https://www.mi.fu-berlin.de/kvv/registration.htm?".$urlattr); print "\nStudiengang wählen:\n"; my $stdgng; if($registerPage =~ m/id="register_registration_courseOfStudies">(.+?)<\/select>/s) { my @stdgnge; my $text = $1; push @stdgnge, $1 while($text =~ m/value="([^"]+)"/g); for (0..(@stdgnge)) { printf(" %02d: %s\n", $_, $stdgnge[$_ - 1]); } print "Studiengang Nr.: "; my $stdgngID = ""; $stdgngID = <> while($stdgngID !~ m/^[0-9]+\s*$/ |! exists $stdgnge[int($stdgngID) - 1]); $stdgng = $stdgnge[int($stdgngID) - 1]; } print <; $waitYesNo = <> while ($waitYesNo !~ m/^([jJ]|[Nn])/); print <new; die "Schlimmer Fehler!" unless $urlattr =~ /cid=([0-9]+)/; my $cid = $1; # Ja die Namen sind wirklich vertauscht -.- my $req = POST "https://www.mi.fu-berlin.de/kvv/register.htm?".$urlattr, [ courseId => $cid, "surname" => $daten{"Vorname"}, "name" => $daten{"Name"}, "method:searchfriends" => "suchen" ]; my $response = $ua->request($req)->as_string; #print $req->as_string . "\n"; #print $response; unless($response =~ m/(?:Suchergebnis|result):<\/th>.+?$daten{"Vorname"} $daten{"Name"}: \w+/s) { print " - ist erfolgt\n."; last; } sleep(10); } } # Anmeldeformular suchen print "Suche nach Anmeldeformular"; my $stat = 0; my $courseDateId; while(1) { local $| = 1; if(++$stat == 4) { print "\033[3D \033[3D"; $stat = 0; } else { print "."; } my $registerPage = get("https://www.mi.fu-berlin.de/kvv/registration.htm?".$urlattr); if($registerPage =~ m/