open(HOLIDAY, "today --category=holiday --date=$firstday+$days|") or return undef;
my @holidays=();
while(<HOLIDAY>) {
- /^(\d\d)\/(\d\d) /;
- push @holidays, "!".($firstday[5]+1900).$1.$2;
+ next unless /^(\d\d)\/(\d\d) ([A-Z][a-z][a-z])/;
+ my $day=$1.$2;
+ push (@holidays, "!".($firstday[5]+1900).$day) if ($_[1] =~ /\b$3\b/);
}
return wantarray ? @holidays : "@holidays";
}
sub off_for_exams {
$_[3] =~ /\d{8}-(\d\d\d\d)(\d\d)(\d\d)/;
my @finalday = localtime timelocal(0,0,0,$3,$2-1,$1);
- return undef unless ($finalday[6] == 0);
+ return wantarray ? () : undef unless ($finalday[6] == 0);
my $beginning="(08:00-09:15|11:00-12:15|14:00-15:15|17:00-18:15|17:30-18:45|20:00-21:15|20:30-21:45)";
my $ending ="(06:30-07:45|09:30-10:45|12:30-13:45|15:30-16:45|18:30-19:45|19:00-20:15)";
if($_[1] eq "Mon Wed") {
return "!" . ($1-5);
}
} else {
- return "";
+ return wantarray ? () : "";
}
}
return @terms;
}
+sub print_mhc_header {
+my $header = "# Autogenerated by sctweb ".localtime()."\n";
+$header .= <<EOF
+
+X-SC-Subject: New Years Day
+X-SC-Category: Holiday
+X-SC-Cond: 1 Jan
+
+X-SC-Subject: Martin Luther King, Jr. Day
+X-SC-Category: Holiday
+X-SC-Cond: 3rd Mon Jan
+X-SC-Duration: 19861102-
+
+X-SC-Subject: Presidents Day
+X-SC-Category: Holiday
+X-SC-Cond: 3rd Mon Feb
+X-SC-Duration: 17760704-
+
+X-SC-Subject: Memorial Day
+X-SC-Category: Holiday
+X-SC-Cond: Last Mon May
+X-SC-Duration: 17760704-
+
+X-SC-Subject: Independence Day
+X-SC-Category: Holiday
+X-SC-Cond: 4 Jul
+X-SC-Duration: 17760704-
+
+X-SC-Subject: Labor Day
+X-SC-Category: Holiday
+X-SC-Cond: 1st Mon Sep
+
+X-SC-Subject: Columbus Day
+X-SC-Category: Holiday
+X-SC-Cond: 2nd Mon Oct
+
+X-SC-Subject: Veterans Day
+X-SC-Category: Holiday
+X-SC-Cond: 11 Nov
+
+X-SC-Subject: Thanksgiving
+X-SC-Category: Holiday
+X-SC-Cond: 4th Thu Nov
+
+X-SC-Subject: Christmas
+X-SC-Category: Holiday
+X-SC-Cond: 25 Dec
+
+EOF
+;
+ if(defined($_[0])) {
+ open SCHEDULE, (">" . $_[0]);
+ print SCHEDULE $header;
+ close SCHEDULE;
+ } else {
+ print $header;
+ }
+}
+
sub do_mhc_schedule {
+ $| = 1;
my @readheaders = ("Section ID/Title", "Days", "Time", "Start/EndDates", "Site/Building/Room");
my %days = (M => "Mon", T => "Tue", W => "Wed", R => "Thu", F => "Fri", S => "Sat");
my $te = new HTML::TableExtract( headers => [ @readheaders ] );
- my (@terms, $row);
+ my (@terms, $row, $file);
+ $file = shift unless (!defined $_[0] or $_[0] =~ /^\d/);
@terms = get_schedule_terms();
- foreach(@ARGV || @terms) {
+ print_mhc_header($file);
+ foreach(@_ || @terms) {
$response = $ua->get("$url&tserve_tip_write=||WID|SID|PIN|Term&tserve_trans_config=" . ($opts{cfg} || "rstusch" || "rgrades") . ".cfg&Term=".($_) );
die $response->status_line unless $response->is_success;
$te->parse($response->content);
}
+ open(STDOUT, ">>" . $file) if(defined($file));
print "# MHC school schedule\n";
- print "# Autogenerated by sctweb ".localtime()."\n";
+ #print "# Autogenerated by sctweb ".localtime()."\n";
foreach $ts ($te->table_states) {
foreach $row ($ts->rows) {
map { s/\xa0//g; s/\n/-/g; $_} @$row;
$row->[3] =~ s/(\d\d)-(\d\d)-(\d\d)/20$3$1$2/g;
$row->[4] =~ s/ON CAMPUS-//g;
$row->[4] =~ s/-/ /g;
- my $day = off_for_exams(@$row);
- if(defined($day)) {
- $day .= " ".off_for_holidays(@$row);
- } else {
- $day = off_for_holidays(@$row);
- }
+ my @day = (off_for_holidays(@$row),off_for_exams(@$row));
+ #my $day = join(" ",off_for_holidays(@$row),off_for_exams(@$row));
+ my $day = "";
+ #print "@day*\n";
+ #$day = join(" ",@day) if (@day);
+# if(defined($day)) {
+# $day .= " ".off_for_holidays(@$row);
+# } else {
+# $day = off_for_holidays(@$row);
+# }
print "\n";
print "# $id\n";
print "X-SC-Subject: ", $row->[0], "\n";
print "X-SC-Cond: ", $row->[1], "\n";
print "X-SC-Time: ", $row->[2], "\n";
print "X-SC-Duration: ", $row->[3], "\n";
- print("X-SC-Day: ", $day, "\n") if(defined($day) && $day);
+ print("X-SC-Day: ", "@day", "\n") if(exists $day[0]);
print "X-SC-Location: ", $row->[4], "\n";
}
}
print "</table>\n";
}
+sub do_transcripts {
+ $response = $ua->get("$url&tserve_tip_write=||WID|SID|PIN&tserve_trans_config=rtranscr.cfg&CareerReqNum=1");
+ foreach (split /\n/, $response->content) {
+ next unless s/^\ //;
+ s/<\/?[Hh]\d>//g;
+ print "$_\n";
+ }
+}
+
if (defined($ARGV[0]) && $ARGV[0] eq "-g") {
shift;
do_html_grades;
} elsif (defined($ARGV[0]) && $ARGV[0] eq "-s") {
shift;
do_html_schedule;
-} else {
- do_mhc_schedule;
+} elsif (defined($ARGV[0]) && $ARGV[0] eq "-m") {
+ shift;
+ do_mhc_schedule(@ARGV);
+} elsif (defined($ARGV[0]) && $ARGV[0] eq "-t") {
+ do_transcripts;
}
$ua->get("$url&tserve_trans_config=alogout.cfg"); # Logout