Difference between revisions of "Which recorder.pl"

From MythTV Official Wiki
Jump to: navigation, search
(Usage: Update to exclude the db logging message; update format for 0.24-fixes log message; do better at stripping quotes)
m (Usage: update link)
(3 intermediate revisions by the same user not shown)
Line 14: Line 14:
 
  which_recorder.pl /path/to/master/backend/log/file
 
  which_recorder.pl /path/to/master/backend/log/file
  
Because <code>which_recorder.pl</code> displays information about all recordings in your log file, you'll probably want to [[Log_File_Rotation|rotate your log files]] occasionally.
+
Because <code>which_recorder.pl</code> displays information about all recordings in your log file, you'll probably want to [[:Category:Log Rotation Configuration Files|rotate your log files]] occasionally.
  
 
If you have multiple backends, <code>which_recorder.pl</code> must be run against the master backend log file. The master backend must be run with a verbose level that includes the "general" verbose messages (which is part of the default verbosity).
 
If you have multiple backends, <code>which_recorder.pl</code> must be run against the master backend log file. The master backend must be run with a verbose level that includes the "general" verbose messages (which is part of the default verbosity).
Line 22: Line 22:
 
   which_recorder.pl --text /path/to/master/backend/log/file
 
   which_recorder.pl --text /path/to/master/backend/log/file
  
 +
= The Script =
  
 
{{Code box|which_recorder.pl|
 
{{Code box|which_recorder.pl|
Line 29: Line 30:
 
# Parses the backend log file and includes information on which capture card was used to record shows.
 
# Parses the backend log file and includes information on which capture card was used to record shows.
  
my $mode = shift;
+
my ($time, $title, $subtitle, $chanid, $cardid, $sourceid);
my $log_file = shift;
 
 
 
if ($mode ne "--text")
 
{
 
    $log_file = $mode;
 
}
 
 
 
open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";
 
 
 
my ($time, $title, $chanid, $cardid, $sourceid);
 
my $subtitle;
 
 
my $index = 0;
 
my $index = 0;
  
Line 67: Line 57:
 
           ":sourceid='$sourceid'\n";
 
           ":sourceid='$sourceid'\n";
 
}
 
}
 +
 +
my $mode = shift;
 +
my $log_file = shift;
 +
 +
if ($mode ne "--text")
 +
{
 +
    $log_file = $mode;
 +
}
 +
 +
open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";
  
 
while (<$fh>)
 
while (<$fh>)
 
{
 
{
     if (/^(.*)\d Started recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
+
     if (/^(.*)(?:\d(?: I )?|I.* -) (?:Started|Tuning) recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
 
     {
 
     {
 
         print "<h3>Capture Information</h3><div class=\"schedule\""
 
         print "<h3>Capture Information</h3><div class=\"schedule\""

Revision as of 23:13, 17 May 2012

Important.png Note: The correct title of this article is which_recorder.pl. It appears incorrectly here due to technical restrictions.


Author Michael T. Dean
Description Parses the backend log file and outputs information on which capture card was used to record shows, formatted for inclusion in the backend status page.
Supports Version21.png  Version22.png  Version23.png  Version24.png  


which_recorder.pl parses the master backend log file and outputs information on which capture card was used to record shows, formatted for inclusion in the backend status page.

Usage

which_recorder.pl /path/to/master/backend/log/file

Because which_recorder.pl displays information about all recordings in your log file, you'll probably want to rotate your log files occasionally.

If you have multiple backends, which_recorder.pl must be run against the master backend log file. The master backend must be run with a verbose level that includes the "general" verbose messages (which is part of the default verbosity).

To output the information to the console, rather than use it in the Miscellaneous Status Info section of the backend status page, you may call the script with the --text argument.

 which_recorder.pl --text /path/to/master/backend/log/file

The Script

Script.png which_recorder.pl

#!/usr/bin/perl -w
#
# Parses the backend log file and includes information on which capture card was used to record shows.

my ($time, $title, $subtitle, $chanid, $cardid, $sourceid);
my $index = 0;

sub print_text
{
    print "$time - $title";
    print ": $subtitle" if ($subtitle);
    print "\n";
    print " - Capture Card ID: $cardid\n";
    print " - Video Source ID: $sourceid\n";
    print " -      Channel ID: $chanid\n";
}

sub print_xml
{
    print "<a href=\"#\">$time - $title";
    print ": $subtitle" if ($subtitle);
    print " - Capture Card: $cardid<br />".
          "<span><strong>$title</strong> $time<br />";
    print "<em>$subtitle</em><br />" if ($subtitle);
    print "<br />Channel ID: $chanid<br />Capture Card ID: $cardid<br />".
          "Video Source ID: $sourceid<br /></span></a><hr />";
    # For XML parsers
    print "[]:[]capture_info$index\[]:[]time='$time':title='$title'".
          ":subtitle='$subtitle':chanid='$chanid':cardid='$cardid'".
          ":sourceid='$sourceid'\n";
}

my $mode = shift;
my $log_file = shift;

if ($mode ne "--text")
{
    $log_file = $mode;
}

open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";

while (<$fh>)
{
    if (/^(.*)(?:\d(?: I )?|I.* -) (?:Started|Tuning) recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
    {
        print "<h3>Capture Information</h3><div class=\"schedule\""
          if (($index == 0) && ($mode ne "--text"));
        $index++;
        ($time, $title, $chanid, $cardid, $sourceid) = ($1, $2, $3, $4, $5);
        if (($title =~ /"?(.+)"?:"?(.*)"?/) || ($title =~ /(.+) "(.*)"/))
        {
            $title = $1;
            $subtitle = $2;
        }
        else
        {
            $subtitle = '';
        }
        $title =~ s/^"//;
        $subtitle =~ s/^"//;
        $title =~ s/"$//;
        $subtitle =~ s/"$//;
        if ($mode eq "--text")
        {
            print_text;
        }
        else
        {
            print_xml;
        }
    }
}
print "</div>" if (($index > 0) && ($mode ne "--text"));

close $fh;