summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Pointner <equinox@spreadspace.org>2016-04-14 16:18:26 (GMT)
committerChristian Pointner <equinox@spreadspace.org>2016-04-14 16:18:26 (GMT)
commit94e4a04528f0c9204fb0affc7d91ed568b4b90a7 (patch)
tree3a208b38a7c237532e68c8e8710d0d92c252552b
parent2a3c2cc85f0770abda73ba572917c0511cc370be (diff)
inital commit for schedule generation
-rw-r--r--debian/control2
-rwxr-xr-xlib/RHRD/utils.pm32
-rwxr-xr-xutils/rhrd-group12
-rwxr-xr-xutils/rhrd-schedules86
-rwxr-xr-xutils/rhrd-show6
-rwxr-xr-xutils/rhrd-user6
6 files changed, 131 insertions, 13 deletions
diff --git a/debian/control b/debian/control
index 1b96d65..e6c6cf8 100644
--- a/debian/control
+++ b/debian/control
@@ -8,7 +8,7 @@ Standards-Version: 3.9.6
Package: librhrd-perl
Architecture: all
-Depends: ${misc:Depends}, ${perl:Depends}, libconfig-inifiles-perl, libdbi-perl, libdbd-mysql-perl, libdatetime-perl, libdatetime-timezone-perl
+Depends: ${misc:Depends}, ${perl:Depends}, libconfig-inifiles-perl, libdbi-perl, libdbd-mysql-perl, libdatetime-perl, libdatetime-timezone-perl, libjson-any-perl, liburi-perl, libwww-perl
Description: Radio Helsinki Rivendell Perl Modules
These modules are used by rhwebimport, rhimport as well by
some other scripts.
diff --git a/lib/RHRD/utils.pm b/lib/RHRD/utils.pm
index 2c7b7a9..d87ed70 100755
--- a/lib/RHRD/utils.pm
+++ b/lib/RHRD/utils.pm
@@ -26,6 +26,9 @@ use strict;
use POSIX;
use DateTime;
use DateTime::TimeZone;
+use LWP::Simple;
+use URI::Fetch;
+use JSON;
sub get_rd_week
{
@@ -112,4 +115,33 @@ sub dropbox_param_len_ok
return (1, 'OK', DB_PARAM_LEN_HINT);
}
+sub fetch_parse_json
+{
+ my ($url, $ua_str) = @_;
+
+ my $uri = URI->new($url);
+ $ua_str = "Radio Helsinki Rivendell Utilities" unless $ua_str;
+
+ my $ua = LWP::UserAgent->new;
+ $ua->agent($ua_str);
+ $ua->env_proxy;
+ my $res = URI::Fetch->fetch($uri, UserAgent => $ua)
+ or return (0, URI::Fetch->errstr);
+ if($res->status == URI::Fetch::URI_GONE()) {
+ return (0, "This feed has been permanently removed");
+ }
+
+ my $json = $res->content;
+ my $data;
+ eval {
+ $data = from_json($json);
+ 1;
+ } or do {
+ return (0, "error parsing import result");
+ };
+
+ return (1, \$data);
+}
+
+
return 1;
diff --git a/utils/rhrd-group b/utils/rhrd-group
index d95c75d..9d73adb 100755
--- a/utils/rhrd-group
+++ b/utils/rhrd-group
@@ -25,12 +25,12 @@ use RHRD::rddb;
sub print_usage
{
- print STDERR "Usage: rd-group list\n" .
- " rd-group (check|remove|get-members|get-carts|get-reports) <groupname>\n" .
- " rd-group add <groupname> [ <description> ]\n" .
- " rd-group (add-member|remove-member|is-member) <groupname> <user>\n" .
- " rd-group set-carts <groupname> <low> <high> [ <type> [ <enforce range> ]]\n" .
- " rd-group set-reports <groupname> <nownext> <traffic> <music>\n";
+ print STDERR "Usage: rhrd-group list\n" .
+ " rhrd-group (check|remove|get-members|get-carts|get-reports) <groupname>\n" .
+ " rhrd-group add <groupname> [ <description> ]\n" .
+ " rhrd-group (add-member|remove-member|is-member) <groupname> <user>\n" .
+ " rhrd-group set-carts <groupname> <low> <high> [ <type> [ <enforce range> ]]\n" .
+ " rhrd-group set-reports <groupname> <nownext> <traffic> <music>\n";
}
sub list
diff --git a/utils/rhrd-schedules b/utils/rhrd-schedules
new file mode 100755
index 0000000..76d4946
--- /dev/null
+++ b/utils/rhrd-schedules
@@ -0,0 +1,86 @@
+#!/usr/bin/perl -w
+#
+# rhrdlibs
+#
+# Copyright (C) 2015-2016 Christian Pointner <equinox@helsinki.at>
+#
+# This file is part of rhrdlibs.
+#
+# rhrdlibs is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# any later version.
+#
+# rhrdlibs is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with rhrdlibs. If not, see <http://www.gnu.org/licenses/>.
+#
+
+use strict;
+
+# TODO: remove me!!!
+use Data::Dumper::Simple;
+use lib "../lib/";
+
+
+use RHRD::rddb;
+use RHRD::utils;
+use String::MkPasswd qw(mkpasswd);
+
+
+sub print_usage
+{
+ print STDERR "Usage: rhrd-schedules generate YYYY-MM-DD\n";
+}
+
+sub generate
+{
+ my ($ctx, $year, $month, $day) = @_;
+
+ my ($ret, $data) = RHRD::utils::fetch_parse_json("https://pv.helsinki.at/export/day_schedule/$year/$month/$day", "rhrd-schedules");
+ if(!$ret) {
+ print STDERR "Error fetching export from PV: $data\n";
+ return 1;
+ }
+
+ print Dumper($data);
+
+ return 0;
+}
+
+my $num_args = $#ARGV + 1;
+if($num_args < 1) {
+ print_usage();
+ exit(1);
+}
+my $cmd = $ARGV[0];
+my $ret = 0;
+
+my ($ctx, undef, $errorstring) = RHRD::rddb::init();
+if(defined $ctx) {
+ if($cmd eq "generate") {
+ if($num_args == 2 && $ARGV[1] =~ m/^(\d{4})-(\d{2})-(\d{2})$/) {
+ my $year = $1;
+ my $month = $2;
+ my $day = $3;
+ $ret = generate($ctx, $year, $month, $day);
+ } else {
+ print_usage();
+ $ret = 1;
+ }
+ } else {
+ print_usage();
+ $ret = 1;
+ }
+
+ RHRD::rddb::destroy($ctx);
+} else {
+ print STDERR "$errorstring\n";
+ $ret = 1;
+}
+
+exit $ret;
diff --git a/utils/rhrd-show b/utils/rhrd-show
index 8360c5c..75e525a 100755
--- a/utils/rhrd-show
+++ b/utils/rhrd-show
@@ -27,9 +27,9 @@ use RHRD::utils;
sub print_usage
{
- print STDERR "Usage: rd-show list [ <group> ]\n" .
- " rd-show (show|remove) <show-id>\n" .
- " rd-show add <groupname> <name> <title> <num-carts> <rhythm> <dow> <starttime> <len>\n";
+ print STDERR "Usage: rhrd-show list [ <group> ]\n" .
+ " rhrd-show (show|remove) <show-id>\n" .
+ " rhrd-show add <groupname> <name> <title> <num-carts> <rhythm> <dow> <starttime> <len>\n";
}
sub list
diff --git a/utils/rhrd-user b/utils/rhrd-user
index ca7ae0f..a473ddc 100755
--- a/utils/rhrd-user
+++ b/utils/rhrd-user
@@ -26,9 +26,9 @@ use String::MkPasswd qw(mkpasswd);
sub print_usage
{
- print STDERR "Usage: rd-user list\n" .
- " rd-user (check|remove) <username>\n" .
- " rd-user add <username> [ <fullname> ]\n";
+ print STDERR "Usage: rhrd-user list\n" .
+ " rhrd-user (check|remove) <username>\n" .
+ " rhrd-user add <username> [ <fullname> ]\n";
}
sub list