summaryrefslogtreecommitdiffstats
path: root/linhes/linhes-system/misc_recent_recordings.pl
diff options
context:
space:
mode:
Diffstat (limited to 'linhes/linhes-system/misc_recent_recordings.pl')
-rwxr-xr-xlinhes/linhes-system/misc_recent_recordings.pl194
1 files changed, 194 insertions, 0 deletions
diff --git a/linhes/linhes-system/misc_recent_recordings.pl b/linhes/linhes-system/misc_recent_recordings.pl
new file mode 100755
index 0000000..92dda8a
--- /dev/null
+++ b/linhes/linhes-system/misc_recent_recordings.pl
@@ -0,0 +1,194 @@
+#!/usr/bin/perl -w
+#
+# Outputs information about the most-recently-recorded shows.
+#
+# Automatically detects database settings.
+#
+
+# Includes
+ use DBI;
+ use Getopt::Long;
+ use MythTV;
+
+# Some variables we'll use here
+ our ($num_recordings, $live, $heading, $plain_text, $text_format, $usage);
+ our ($hours, $minutes, $seconds);
+ our ($dnum_recordings, $dheading, $dtext_format);
+ our ($dhours, $dminutes, $dseconds);
+ our ($status_text_format, $status_value_format);
+ our ($dstatus_text_format, $dstatus_value_format);
+
+# Default number of recent recordings to show
+ $dnum_recordings = 5;
+# Default period in which to show recordings
+ $dhours = -1;
+ $dminutes = -1;
+ $dseconds = -1;
+# Default status output heading
+ $dheading='Recent Recordings:\n';
+# Default format of plain-text output
+ $dtext_format='%n/%j, %g:%i %A - %cc\n%T - %S\n%R\n\n';
+# Default format of status output display text
+ $dstatus_text_format= '<a href="javascript:void(0)">%n/%j %g:%i %A - %cc - %T - %S<br />'.
+ '<span><strong>%T</strong> %n/%j, %g:%i %A<br />'.
+ '<em>%S</em><br /><br />%R<br /></span></a><hr />';
+# Default format of status output value
+ $dstatus_value_format = '%n/%j, %g:%i %A - %T - %S';
+
+# Provide default values for GetOptions
+ $num_recordings = $dnum_recordings;
+ $hours = $dhours;
+ $minutes = $dminutes;
+ $seconds = $dseconds;
+ $heading = $dheading;
+ $text_format = $dtext_format;
+ $status_text_format = $dstatus_text_format;
+ $status_value_format = $dstatus_value_format;
+
+# Load the cli options
+ GetOptions('num_recordings|recordings=s' => \$num_recordings,
+ 'hours|o=i' => \$hours,
+ 'minutes=i' => \$minutes,
+ 'seconds|e=i' => \$seconds,
+ 'live' => \$live,
+ 'heading=s' => \$heading,
+ 'plain_text' => \$plain_text,
+ 'text_format=s' => \$text_format,
+ 'status_text_format=s' => \$status_text_format,
+ 'status_value_format=s' => \$status_value_format,
+ 'usage|help' => \$usage
+ );
+
+# Print usage
+ if ($usage) {
+ print <<EOF;
+$0 usage:
+
+options:
+
+--recordings [number of recordings]
+
+ Outputs information on the last [number of recordings] shows recorded by
+ MythTV. To output information on all recordings, specify -1.
+
+ default: $dnum_recordings
+
+--hours [number of hours]
+
+ Outputs information on recordings that occurred within [number of hours].
+ This option may be specified in conjunction with --minutes and --seconds.
+ To output information on all matching recordings regardless of start time,
+ specify -1 for --hours, --minutes, and --seconds.
+
+ default: $dhours
+
+--minutes [number of minutes]
+
+ Outputs information on recordings that occurred within [number of minutes].
+ This option may be specified in conjunction with --hours and --seconds.
+ To output information on all matching recordings regardless of start time,
+ specify -1 for --hours, --minutes, and --seconds.
+
+ default: $dminutes
+
+--seconds [number of seconds]
+
+ Outputs information on recordings that occurred within [number of seconds].
+ This option may be specified in conjunction with --hours and --minutes.
+ To output information on all matching recordings regardless of start time,
+ specify -1 for --hours, --minutes, and --seconds.
+
+ default: $dseconds
+
+--live
+ Include information on recent LiveTV recordings.
+
+--heading [heading]
+ Output the [heading] before printing information about recordings.
+
+ default: \'$dheading\'
+
+--plain_text
+ Output information in plain text format (i.e. for inclusion in an e-mail
+ notification).
+
+--text_format [format]
+ Use the provided [format] to display information on the recordings. The
+ format should use the same format specifiers used by mythlink.pl, but
+ may also use \\r and/or \\n for line breaks. This option is ignored
+ if --plain_text is not used.
+
+ default: \'$dtext_format\'
+
+--help
+
+ Show this help text.
+
+EOF
+ exit;
+ }
+
+# Determine the period of interest
+ my $now = time();
+ my $start_after = $now;
+ $start_after = $start_after - ($hours * 3600) if ($hours > 0);
+ $start_after = $start_after - ($minutes * 60) if ($minutes > 0);
+ $start_after = $start_after - $seconds if ($seconds > 0);
+ $start_after = 0 if (!($start_after < $now));
+
+# Fix the heading.
+ if (defined($plain_text)) {
+ $heading =~ s/\\r/\r/g;
+ $heading =~ s/\\n/\n/g;
+ }
+ else {
+ # Remove line break format specifiers from heading for status output
+ $heading =~ s/(\\r|\\n)//g;
+ }
+
+# Connect to mythbackend
+ my $Myth = new MythTV();
+
+# Get the list of recordings
+ my $count = 0;
+ my %rows = $Myth->backend_rows('QUERY_RECORDINGS Delete');
+ our $show;
+ foreach my $row (@{$rows{'rows'}}) {
+ last unless (($count < $num_recordings) || ($num_recordings < 0));
+ $show = new MythTV::Program(@$row);
+ # Skip LiveTV recordings?
+ next unless (defined($live) || $show->{'recgroup'} ne 'LiveTV');
+ # Within the period of interest?
+ last if (($start_after) && ($show->{'recstartts'} < $start_after));
+ # Print the recording information in the desired format
+ if (defined($plain_text)) {
+ text_print($count);
+ }
+ else {
+ status_print($count);
+ }
+ $count++;
+ }
+
+# Print the output for use in the backend status page.
+ sub status_print {
+ my $count = shift;
+ my $text = $show->format_name($status_text_format, ' ', ' ', 1, 0 ,1);
+ my $value = $show->format_name($status_value_format, ' ', ' ',
+ 1, 0 ,1);
+ print("$heading<div class=\"schedule\">") if ($count == 0);
+ print("$text");
+ print("</div>") if ($count == ($num_recordings - 1));
+ print("[]:[]recording$count");
+ print("[]:[]$value\n");
+ }
+
+# Print the output in plain text format
+ sub text_print {
+ my $count = shift;
+ my $text = $show->format_name($text_format, ' ', ' ', 1, 0 ,1);
+ $text =~ s/\\r/\r/g;
+ $text =~ s/\\n/\n/g;
+ print("$heading") if ($count == 0);
+ print("$text");
+ }