From d08fd71d3b4f574be097698e4255b839cf226877 Mon Sep 17 00:00:00 2001 From: Cecil Hugh Watson 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('/\
.*/', $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('/\.*/', $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