Difference between revisions of "Which recorder.pl"

From MythTV Official Wiki
Jump to: navigation, search
m (add version info, and admit to having authored hack)
(Usage: Update to use a non-DB-logging log message (so it works for everyone--even those who were smart enough to disable the useless DB logging mode) and add a --text mode)
Line 17: Line 17:
  
 
If you have multiple backends, <code>which_recorder.pl</code> will only show information about shows recorded on the backend that runs the script (or, technically, only shows information about shows described in the log file specified, so you could have a slave push its log file to the master occasionally and run the script twice--once for each log file--but that's an exercise left for the reader).
 
If you have multiple backends, <code>which_recorder.pl</code> will only show information about shows recorded on the backend that runs the script (or, technically, only shows information about shows described in the log file specified, so you could have a slave push its log file to the master occasionally and run the script twice--once for each log file--but that's an exercise left for the reader).
 +
 +
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 <code>--text</code> argument.
 +
 +
  which_recorder.pl --text /path/to/backend/log/file
 +
  
 
{{Code box|which_recorder.pl|
 
{{Code box|which_recorder.pl|
Line 24: Line 29:
 
# 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 $log_file = shift;
 
my $log_file = shift;
  
#2008-08-30 15:59:41.969 scheduler: Started recording: Not My Life: channel 1651 on cardid 1, sourceid 1
+
if ($mode ne "--text")
 +
{
 +
    $log_file = $mode;
 +
}
 +
 
 +
#2008-08-30 15:59:41.969 Started recording: Not My Life: channel 1651 on cardid 1, sourceid 1
  
 
open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";
 
open($fh, "<$log_file") or die "Unable to open log file '$log_file', stopping:";
Line 33: Line 44:
 
my $subtitle;
 
my $subtitle;
 
my $index = 0;
 
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";
 +
}
  
 
while (<$fh>)
 
while (<$fh>)
 
{
 
{
     if (/^(.*) scheduler: Started recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
+
     if (/^(.*) Started recording: (.*): channel (\d+) on cardid (\d+), sourceid (\d+)/)
 
     {
 
     {
 
         print "<h3>Capture Information</h3><div class=\"schedule\""
 
         print "<h3>Capture Information</h3><div class=\"schedule\""
           if ($index == 0);
+
           if (($index == 0) && ($mode ne "--text"));
 
         $index++;
 
         $index++;
 
         ($time, $title, $chanid, $cardid, $sourceid) = ($1, $2, $3, $4, $5);
 
         ($time, $title, $chanid, $cardid, $sourceid) = ($1, $2, $3, $4, $5);
Line 51: Line 87:
 
             $subtitle = '';
 
             $subtitle = '';
 
         }
 
         }
         print "<a href=\"#\">$time - $title";
+
         if ($mode eq "--text")
        print ": $subtitle" if ($subtitle);
+
         {
        print " - Capture Card: $cardid<br />".
+
            print_text;
              "<span><strong>$title</strong> $time<br />";
+
         }
        print "<em>$subtitle</em><br />" if ($subtitle);
+
         else
         print "<br />Channel ID: $chanid<br />Capture Card ID: $cardid<br />".
+
        {
              "Video Source ID: $sourceid<br /></span></a><hr />";
+
            print_xml;
         # For XML parsers
+
        }
         print "[]:[]capture_info$index\[]:[]time='$time':title='$title'".
+
 
              ":subtitle='$subtitle':chanid='chanid':cardid='$cardid'".
+
              ":sourceid='$sourceid'\n";
+
 
     }
 
     }
 
}
 
}
print "</div>" if ($index > 0);
+
print "</div>" if (($index > 0) && ($mode ne "--text"));
  
 
close $fh;
 
close $fh;

Revision as of 01:54, 10 September 2011

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 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/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 will only show information about shows recorded on the backend that runs the script (or, technically, only shows information about shows described in the log file specified, so you could have a slave push its log file to the master occasionally and run the script twice--once for each log file--but that's an exercise left for the reader).

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/backend/log/file


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 $mode = shift;
my $log_file = shift;

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

#2008-08-30 15:59:41.969 Started recording: Not My Life: channel 1651 on cardid 1, sourceid 1

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;

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";
}

while (<$fh>)
{
    if (/^(.*) Started 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 = $1;
            $subtitle = $2;
        }
        else
        {
            $subtitle = '';
        }
        if ($mode eq "--text")
        {
            print_text;
        }
        else
        {
            print_xml;
        }

    }
}
print "</div>" if (($index > 0) && ($mode ne "--text"));

close $fh;