From 94e4a04528f0c9204fb0affc7d91ed568b4b90a7 Mon Sep 17 00:00:00 2001 From: Christian Pointner Date: Thu, 14 Apr 2016 18:18:26 +0200 Subject: inital commit for schedule generation 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) \n" . - " rd-group add [ ]\n" . - " rd-group (add-member|remove-member|is-member) \n" . - " rd-group set-carts [ [ ]]\n" . - " rd-group set-reports \n"; + print STDERR "Usage: rhrd-group list\n" . + " rhrd-group (check|remove|get-members|get-carts|get-reports) \n" . + " rhrd-group add [ ]\n" . + " rhrd-group (add-member|remove-member|is-member) \n" . + " rhrd-group set-carts [ [ ]]\n" . + " rhrd-group set-reports \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 +# +# 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 . +# + +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 [ ]\n" . - " rd-show (show|remove) \n" . - " rd-show add <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 -- cgit v0.10.2