From d08fd71d3b4f574be097698e4255b839cf226877 Mon Sep 17 00:00:00 2001
From: Cecil Hugh Watson <knoppmyth@gmail.com>
Date: Sun, 6 Jun 2010 13:57:41 -0700
Subject: mre:initial inclusion.  Recorder extender for sporting events.

---
 abs/extra-testing/community/mre/PKGBUILD         |  41 ++++
 abs/extra-testing/community/mre/livescores.tgz   | Bin 0 -> 39586 bytes
 abs/extra-testing/community/mre/mre-1.1.2.tar.gz | Bin 0 -> 19685 bytes
 abs/extra-testing/community/mre/mre.install      |  20 ++
 abs/extra-testing/community/mre/mre.lr           |   9 +
 abs/extra-testing/community/mre/patch.diff       | 273 +++++++++++++++++++++++
 abs/extra-testing/community/mre/run              |  10 +
 7 files changed, 353 insertions(+)
 create mode 100644 abs/extra-testing/community/mre/PKGBUILD
 create mode 100644 abs/extra-testing/community/mre/livescores.tgz
 create mode 100644 abs/extra-testing/community/mre/mre-1.1.2.tar.gz
 create mode 100755 abs/extra-testing/community/mre/mre.install
 create mode 100644 abs/extra-testing/community/mre/mre.lr
 create mode 100644 abs/extra-testing/community/mre/patch.diff
 create mode 100755 abs/extra-testing/community/mre/run

diff --git a/abs/extra-testing/community/mre/PKGBUILD b/abs/extra-testing/community/mre/PKGBUILD
new file mode 100644
index 0000000..72d3bc3
--- /dev/null
+++ b/abs/extra-testing/community/mre/PKGBUILD
@@ -0,0 +1,41 @@
+arch=('i686')
+pkgname=mre
+pkgver=1.1.2
+pkgrel=2
+_kernver=2.6.28-LinHES
+pkgdesc="Myth Recording Extender"
+url="http://sourceforge.net/projects/mythtv-tools/"
+license=('GPL-2')
+depends=('PearDB' 'PearLog')
+makedepends=()
+source=('mre-1.1.2.tar.gz' 'patch.diff' 'livescores.tgz' 'run' 'mre.lr')
+install=('mre.install')
+
+build() {
+	cd $startdir/src/mre-1.1.2/
+	patch -p0 < ../patch.diff
+	./configure
+	make INST_ROOT=$startdir/pkg install
+	cp $startdir/src/mre-1.1.2/conf/mre.conf $startdir/pkg/etc/mre.conf
+	cp $startdir/src/mre-1.1.2/test/test_title_subtitle.php\
+       		$startdir/pkg/usr/local/bin/
+	chmod a+x $startdir/pkg/usr/local/bin/test_title_subtitle.php
+	rm -r $startdir/pkg/etc/init.d
+	mkdir -p  $startdir/pkg/var/log/mre
+	touch $startdir/pkg/var/log/mre/mre.log
+	chown mythtv:mythtv "$startdir/pkg/var/log/mre/mre.log"
+	mkdir -p $startdir/pkg/etc/sv/mre
+	cp $startdir/src/run $startdir/pkg/etc/sv/mre/run
+	mkdir -p $startdir/pkg/etc/logrotate.d
+	cp $startdir/src/mre.lr $startdir/pkg/etc/logrotate.d/mre.lr
+	mkdir -p $startdir/pkg/data/srv/http/htdocs/
+	cp -r $startdir/src/scores /$startdir/pkg/data/srv/http/htdocs/
+	chown -R http:users "$startdir/pkg/data/srv/http/htdocs/scores"
+}
+
+
+md5sums=('8ab312e7597ae9413a57bd5e9a068096'
+         'd2591989da512c0faa567408721b6e95'
+         'fcc02a234b22ba5c2714a6b8dbaf3bef'
+         'dea22d4e0f2c1dd8a2debd2f50756dda'
+         '6d71ab57afd974c5130c994b94e8746f')
diff --git a/abs/extra-testing/community/mre/livescores.tgz b/abs/extra-testing/community/mre/livescores.tgz
new file mode 100644
index 0000000..d97175b
Binary files /dev/null and b/abs/extra-testing/community/mre/livescores.tgz differ
diff --git a/abs/extra-testing/community/mre/mre-1.1.2.tar.gz b/abs/extra-testing/community/mre/mre-1.1.2.tar.gz
new file mode 100644
index 0000000..3846e4b
Binary files /dev/null and b/abs/extra-testing/community/mre/mre-1.1.2.tar.gz differ
diff --git a/abs/extra-testing/community/mre/mre.install b/abs/extra-testing/community/mre/mre.install
new file mode 100755
index 0000000..4e3fb0d
--- /dev/null
+++ b/abs/extra-testing/community/mre/mre.install
@@ -0,0 +1,20 @@
+# arg 1:  the new package version
+post_install() {
+	add_service.sh mre
+	sed -i.pacsave '/^open_basedir/s|$|:/var/log/mre:/usr/local/lib/mre|' /etc/php/php.ini
+}
+
+post_upgrade() {
+
+}
+
+
+# arg 1:  the old package version
+post_remove() {
+	remove_service.sh mre
+	sed -i.pacsave '/^open_basedir/s|:/var/log/mre:/usr/local/lib/mre||' /etc/php/php.ini
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/extra-testing/community/mre/mre.lr b/abs/extra-testing/community/mre/mre.lr
new file mode 100644
index 0000000..3b54c23
--- /dev/null
+++ b/abs/extra-testing/community/mre/mre.lr
@@ -0,0 +1,9 @@
+/var/log/mre/mre.log {
+	copytruncate
+	daily
+	size 10M
+	missingok
+	rotate 7
+	compress
+	notifempty
+}
diff --git a/abs/extra-testing/community/mre/patch.diff b/abs/extra-testing/community/mre/patch.diff
new file mode 100644
index 0000000..66390d9
--- /dev/null
+++ b/abs/extra-testing/community/mre/patch.diff
@@ -0,0 +1,273 @@
+--- ../mre-1.1.2/class/MythClient.php.original	2006-04-05 17:39:13.000000000 -0500
++++ ../mre-1.1.2/class/MythClient.php	2010-05-14 10:16:54.000000000 -0500
+@@ -112,7 +112,7 @@
+          return '0';
+       }
+       foreach($out as $line)
+-         if(preg_match('/^Library API version: (.*)$/', $line, $matches))
++         if(preg_match('/^Library API *: (.*)$/', $line, $matches))
+             return $matches[1];
+       return '0';
+    }
+--- ../mre-1.1.2/class/NHLEvent.php.original	2006-11-05 17:06:57.000000000 -0600
++++ ../mre-1.1.2/class/NHLEvent.php	2010-05-21 00:44:49.000000000 -0500
+@@ -27,7 +27,7 @@
+    /**
+     * URL to grab game info from
+     */
+-   const url = 'http://scores.espn.go.com/nhl/scoreboard';
++   const url = 'http://localhost/scores/nhl.php';
+ 
+    /**
+     * Class constructor.
+@@ -39,32 +39,27 @@
+       parent::__construct();
+ 
+       $criteria = $this->generateSearchTerms($gameInfo);
++      
+       if(!sizeof($criteria))
+          trigger_error("Unable to generate valid search terms! [$gameInfo]", E_USER_WARNING);
+       else
+       {
+          $data = file(self::url);
+-         if($data !== FALSE)
+-            foreach($criteria as $term)
+-            {
+-               $status = '';
+-               foreach($data as $line)
+-                  if(preg_match('/' . preg_quote($term) . '/', $line))
+-                  {
+-                     $status = $line;
+-                     break;
+-                  }
+-               if(preg_match('/id.*st"\>(.*)\<\/td/U', $status, $match))
+-               {
+-                  $this->setStatus($match[1]);
+-                  if(preg_match('/^Final/', $match[1]))
+-                     $this->setEventOver(TRUE);
+-                  else
+-                     $this->setEventOver(FALSE);
+-                  $this->setValid(TRUE);
+-                  break;
+-               }
++         if($data)
++         {
++            foreach($data as $line)
++	    {
++               if((strpos($line,$criteria[0]))&&(strpos($line,$criteria[1])))
++	       {
++		  if(strpos($line,'FINAL')) 
++		     $this->setEventOver(TRUE);
++		  else
++		     $this->setEventOver(FALSE);
++		  $this->setValid(TRUE);
++		  break;
++	       }
+             }
++         }
+       }
+       if(!$this->isValid())
+          trigger_error("Unable to find NHL info for '$gameInfo'!  The NHL parser may need to be updated.", E_USER_WARNING);
+--- ../mre-1.1.2/conf/mre.conf.in.original	2006-08-13 16:48:57.000000000 -0500
++++ ../mre-1.1.2/conf/mre.conf.in	2010-05-04 00:25:26.000000000 -0500
+@@ -28,9 +28,9 @@
+ ; *** Application settings
+ ; Unprivledged user to run as, if started as root
+ ; This script will not run as root
+-user = nobody
++user = mythtv
+ ; Run MRE as daemon?  Requires pcntl_* functions built into PHP
+-daemon = true
++daemon = false
+ ; Number of minutes to sleep between runs
+ sleep = 5
+ ; Logging level (0 = normal, 1 = +error, 2 = +warning, 3 = +debug)
+--- ../mre-1.1.2/class/MLBEvent.php.original	2006-11-05 17:06:57.000000000 -0600
++++ ../mre-1.1.2/class/MLBEvent.php	2010-05-21 20:08:30.000000000 -0500
+@@ -27,7 +27,7 @@
+    /**
+     * URL to grab game info from
+     */
+-   const url = 'http://scores.espn.go.com/mlb/scoreboard';
++   const url = 'http://localhost/scores/mlb.php';
+ 
+    /**
+     * Class constructor.
+@@ -43,41 +43,22 @@
+          trigger_error("Unable to generate valid search terms! [$gameInfo]", E_USER_WARNING);
+       else
+       {
+-         $data = file(self::url);
+-         $games = array();
+-         if($data !== FALSE)
+-         {
+-            // Split the huge string into individual game data
+-            foreach($data as $line)
+-               if(preg_match('/\<div id="allGames".*\>.*/', $line))
+-               {
+-                  while(($loc = strrpos($line, 'teamTop')) !== FALSE)
+-                  {
+-                     $games[] = substr($line, $loc);
+-                     $line = substr($line, 0, $loc);
+-                  }
+-                  break;
+-               }
+-            if(!sizeof($games))
+-               trigger_error("Unable to find valid game data within source!", E_USER_WARNING);
+-            foreach($criteria as $term)
+-            {
+-               foreach($games as $game)
+-               {
+-                  if(preg_match('/' . preg_quote($term) . '/', $game))
+-                     if(preg_match('/teamTop.*\>(.*)\<\/td\>/U', $game, $matches))
+-                     {
+-                        $this->setStatus($matches[1]);
+-                        if(preg_match('/^(Final|Postponed)/', $matches[1]))
+-                           $this->setEventOver(TRUE);
+-                        else
+-                           $this->setEventOver(FALSE);
+-                        $this->setValid(TRUE);
+-                        break 2;
+-                     }
+-               }
++	 $data = file(self::url);
++         if($data)
++	 {
++	    foreach($data as $line)
++      	    {
++               if((strpos($line,$criteria[0]))&&(strpos($line,$criteria[1])))
++   	       {
++     		  if((strpos($line,'FINAL'))or(strpos($line,'Postponed'))) 
++ 		     $this->setEventOver(TRUE);
++  		  else
++  		     $this->setEventOver(FALSE);
++  		  $this->setValid(TRUE);
++  		  break;
++  	       }
+             }
+-         }
++	 }
+       }
+       if(!$this->isValid())
+          trigger_error("Unable to find MLB info for '$gameInfo'!  The MLB parser may need to be updated.", E_USER_WARNING);
+--- ../mre-1.1.2/class/NBAEvent.php.original	2006-11-05 17:06:57.000000000 -0600
++++ ../mre-1.1.2/class/NBAEvent.php	2010-05-21 21:15:42.000000000 -0500
+@@ -27,7 +27,7 @@
+    /**
+     * URL to grab game info from
+     */
+-   const url = 'http://scores.espn.go.com/nba/scoreboard';
++   const url = 'http://localhost/scores/nba.php';
+ 
+    /**
+     * Class constructor.
+@@ -44,35 +44,21 @@
+       else
+       {
+          $data = file(self::url);
+-         if($data !== FALSE)
+-            foreach($criteria as $term)
+-            {
+-               $status = '';
+-               $i = 0;
+-               while($i < sizeof($data))
+-               {
+-                  if(preg_match('/' . preg_quote($term) . '/', $data[$i]))
+-                  {
+-                     $status = $data[$i];
+-                     break;
+-                  }
+-                  ++$i;
+-               }
+-               if($i == sizeof($data))
+-                  --$i;
+-
+-               if(preg_match('/id.*clock"\>(.*)\<\/div/U', $data[$i], $match) ||
+-                  preg_match('/id.*clock"\>(.*)\<\/div/U', $data[$i-1], $match))
+-               {
+-                  $this->setStatus($match[1]);
+-                  if(preg_match('/^Final/', $match[1]))
+-                     $this->setEventOver(TRUE);
+-                  else
+-                     $this->setEventOver(FALSE);
+-                  $this->setValid(TRUE);
+-                  break;
+-               }
++         if($data)
++         {
++            foreach($data as $line)
++      	    {
++               if((strpos($line,$criteria[0]))&&(strpos($line,$criteria[1])))
++  	       {
++       		  if(strpos($line,'FINAL')) 
++ 		     $this->setEventOver(TRUE);
++  		  else
++  		     $this->setEventOver(FALSE);
++  		  $this->setValid(TRUE);
++ 		  break;
++  	       }
+             }
++         }
+       }
+       if(!$this->isValid())
+          trigger_error("Unable to find NBA info for '$gameInfo'!  The NBA parser may need to be updated.", E_USER_WARNING);
+--- ../mre-1.1.2/class/NFLEvent.php.original	2006-11-05 17:06:57.000000000 -0600
++++ ../mre-1.1.2/class/NFLEvent.php	2010-05-21 19:09:36.000000000 -0500
+@@ -27,7 +27,7 @@
+    /**
+     * URL to grab game info from
+     */
+-   const url = 'http://scores.espn.go.com/nfl/scoreboard';
++   const url = 'http://localhost/scores/nfl.php';
+ 
+    /**
+     * Class constructor.
+@@ -44,33 +44,21 @@
+       else
+       {
+          $data = file(self::url);
+-         $games = array();
+-         if($data !== FALSE)
+-         {
+-            // Split the huge string into individual game data
+-            foreach($data as $line)
+-               if(preg_match('/\<td class="teamTop.*".*\>.*/', $line))
+-                  $games[] = $line;
+-            if(!sizeof($games))
+-               trigger_error("Unable to find valid game data within source!", E_USER_WARNING);
+-            foreach($criteria as $term)
+-            {
+-               foreach($games as $game)
+-               {
+-                  if(preg_match('/' . preg_quote($term) . '/', $game))
+-                     if(preg_match('/teamTop.*\>(.*)\<\/td\>/U', $game, $matches))
+-                     {
+-                        $this->setStatus($matches[1]);
+-                        if(preg_match('/^(Final|Postponed)/', $matches[1]))
+-                           $this->setEventOver(TRUE);
+-                        else
+-                           $this->setEventOver(FALSE);
+-                        $this->setValid(TRUE);
+-                        break 2;
+-                     }
+-               }
+-            }
+-         }
++	 if($data)
++	 {
++	    foreach($data as $line)
++	    {
++               if((strpos($line,$criteria[0]))&&(strpos($line,$criteria[1])))
++	       {
++		  if(strpos($line,'FINAL'))
++		     $this->setEventOver(TRUE);
++		  else
++		     $this->setEventOver(FALSE);
++		  $this->setValid(TRUE);
++		  break;
++	       }
++	    }
++	 }
+       }
+       if(!$this->isValid())
+          trigger_error("Unable to find NFL info for '$gameInfo'!  The NFL parser may need to be updated.", E_USER_WARNING);
diff --git a/abs/extra-testing/community/mre/run b/abs/extra-testing/community/mre/run
new file mode 100755
index 0000000..84d08e5
--- /dev/null
+++ b/abs/extra-testing/community/mre/run
@@ -0,0 +1,10 @@
+#!/bin/bash
+export TERM=linux
+. /etc/rc.conf
+. /etc/rc.d/functions
+stat_runit "Starting mythrecordingextender"
+
+sv start mythbackend || exit 1
+sleep 5
+
+exec /usr/local/bin/mre.php
-- 
cgit v0.12