diff --git a/lib/Pprocess.php b/lib/Pprocess.php index 719bf13fc..1214c3b61 100644 --- a/lib/Pprocess.php +++ b/lib/Pprocess.php @@ -104,7 +104,7 @@ class PProcess $this->nameFixer = new NameFixer($this->echooutput); $this->Nfo = new Info($this->echooutput); $this->releaseFiles = new ReleaseFiles(); - $this->functions = new Functions(); + $this->functions = new Functions(true); //\\ Site object. $this->tmux = $t->get(); @@ -125,7 +125,7 @@ class PProcess */ public function processAll($nntp) { - $this->processPredb($nntp); + $this->processPrehash($nntp); $this->processAdditional($nntp); $this->processNfos('', $nntp); $this->processSharing($nntp); @@ -144,7 +144,7 @@ class PProcess */ public function processAnime() { - if ($this->site->lookupanidb == 1) { + if ($this->site->lookupanidb === '1') { $anidb = new AniDB($this->echooutput); $anidb->animetitlesUpdate(); $anidb->processAnimeReleases(); @@ -158,7 +158,7 @@ class PProcess */ public function processBooks() { - if ($this->site->lookupbooks != 0) { + if ($this->site->lookupbooks !== '0') { $books = new Books($this->echooutput); $books->processBookReleases(); } @@ -171,7 +171,7 @@ class PProcess */ public function processGames() { - if ($this->site->lookupgames != 0) { + if ($this->site->lookupgames !== '0') { $console = new Konsole($this->echooutput); $console->processConsoleReleases(); } @@ -186,7 +186,7 @@ class PProcess */ public function processMovies($releaseToWork = '') { - if ($this->site->lookupimdb == 1) { + if ($this->site->lookupimdb === '1') { $movie = new Film($this->echooutput); $movie->processMovieReleases($releaseToWork); } @@ -199,7 +199,7 @@ class PProcess */ public function processMusic() { - if ($this->site->lookupmusic != 0) { + if ($this->site->lookupmusic !== '0') { $music = new Music($this->echooutput); $music->processMusicReleases(); } @@ -215,7 +215,7 @@ class PProcess */ public function processNfos($releaseToWork = '', $nntp) { - if ($this->site->lookupnfo == 1) { + if ($this->site->lookupnfo === '1') { $this->Nfo->processNfoFiles($releaseToWork, $this->site->lookupimdb, $this->site->lookuptvrage, $groupID = '', $nntp); } } @@ -227,7 +227,7 @@ class PProcess * * @return void */ - public function processPredb($nntp) + public function processPrehash($nntp) { // 2014-05-31 : Web PreDB fetching is removed. Using IRC is now recommended. } @@ -252,7 +252,7 @@ class PProcess */ public function processTv($releaseToWork = '') { - if ($this->site->lookuptvrage == 1) { + if ($this->site->lookuptvrage === '1') { $tvRage = new TvAnger($this->echooutput); $tvRage->processTvReleases($releaseToWork, true); } diff --git a/lib/TvAnger.php b/lib/TvAnger.php index bca8b36ed..2e60bdb6d 100644 --- a/lib/TvAnger.php +++ b/lib/TvAnger.php @@ -24,13 +24,13 @@ class TvAnger public $echooutput; public $rageqty; - public $showInfoUrl = 'http://www.tvrage.com/shows/id-'; - public $showQuickInfoURL = 'http://services.tvrage.com/tools/quickinfo.php?show='; - public $xmlFullSearchUrl = 'http://services.tvrage.com/feeds/full_search.php?show='; - public $xmlShowInfoUrl = 'http://services.tvrage.com/feeds/showinfo.php?sid='; - public $xmlFullShowInfoUrl = 'http://services.tvrage.com/feeds/full_show_info.php?sid='; + public $showInfoUrl = 'http://www.tvrage.com/shows/id-'; + public $showQuickInfoURL = 'http://services.tvrage.com/tools/quickinfo.php?show='; + public $xmlFullSearchUrl = 'http://services.tvrage.com/feeds/full_search.php?show='; + public $xmlShowInfoUrl = 'http://services.tvrage.com/feeds/showinfo.php?sid='; + public $xmlFullShowInfoUrl = 'http://services.tvrage.com/feeds/full_show_info.php?sid='; public $xmlEpisodeInfoUrl; - public $xmlFullScheduleUrl = 'http://services.tvrage.com/feeds/fullschedule.php?country='; + public $xmlFullScheduleUrl = 'http://services.tvrage.com/feeds/fullschedule.php?country='; function __construct($echooutput = false) { @@ -61,7 +61,7 @@ class TvAnger public function getByTitle($title) { // Set string to differentiate between mysql and PG for string replacement matching operations - $string = (DB_TYPE === 'mysql' ? '"\'"' : "E'\''"); + $string = (DB_TYPE === 'mysql' ? '"\'"' : "E'\''"); // Check if we already have an entry for this show. $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE LOWER(releasetitle) = LOWER(%s)", $this->db->escapeString($title))); @@ -80,7 +80,7 @@ class TvAnger foreach ($pieces as $piece) { $title4 .= str_replace(array("'", "!"), "", $piece) . '%'; } - $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string ,$this->db->escapeString($title4))); + $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string, $this->db->escapeString($title4))); if (isset($res['rageID'])) { return $res['rageID']; } @@ -99,7 +99,7 @@ class TvAnger foreach ($pieces as $piece) { $title4 .= str_replace(array("'", "!"), "", $piece) . '%'; } - $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string ,$this->db->escapeString($title4))); + $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string, $this->db->escapeString($title4))); if (isset($res['rageID'])) { return $res['rageID']; } @@ -112,7 +112,7 @@ class TvAnger foreach ($pieces as $piece) { $title4 .= str_replace(array("'", "!"), "", $piece) . '%'; } - $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string ,$this->db->escapeString($title4))); + $res = $this->db->queryOneRow(sprintf("SELECT rageID FROM tvrage WHERE replace(replace(releasetitle, %s, ''), '!', '') LIKE %s", $string, $this->db->escapeString($title4))); if (isset($res['rageID'])) { return $res['rageID']; } @@ -124,11 +124,13 @@ class TvAnger { if (!is_array($country) && strlen($country) > 2) { $code = $this->db->queryOneRow('SELECT code FROM country WHERE LOWER(name) = LOWER(' - . $this->db->escapeString($country) . ')'); + . $this->db->escapeString($country) . ')' + ); if (isset($code['code'])) { return $code['code']; } } + return $country; } @@ -157,7 +159,7 @@ class TvAnger $this->db->exec(sprintf('UPDATE tvrage SET releasetitle = %s, description = %s, genre = %s, country = %s, createddate = NOW() WHERE ID = %d', $this->db->escapeString($releasename), $this->db->escapeString(substr($desc, 0, 10000)), $this->db->escapeString(substr($genre, 0, 64)), $this->db->escapeString($country), $id)); } if ($imgbytes != '') { - $path = WWW_DIR . 'covers/preview/' . $id . '.jpg'; + $path = WWW_DIR . 'covers/preview/' . $id . '.jpg'; if (file_exists($path)) { unlink($path); } @@ -182,7 +184,7 @@ class TvAnger } else { $this->db->exec(sprintf('UPDATE tvrage SET rageID = %d, releasetitle = %s, description = %s, genre = %s, country = %s WHERE ID = %d', $rageid, $this->db->escapeString($releasename), $this->db->escapeString(substr($desc, 0, 10000)), $this->db->escapeString($genre), $this->db->escapeString($country), $id)); if ($imgbytes != '') { - $path = WWW_DIR . 'covers/preview/' . $id . '.jpg'; + $path = WWW_DIR . 'covers/preview/' . $id . '.jpg'; if (file_exists($path)) { unlink($path); } @@ -207,7 +209,7 @@ class TvAnger $ret = []; if (!$show) { - return FALSE; + return false; } $url = $this->showQuickInfoURL . urlencode($show); @@ -253,7 +255,7 @@ class TvAnger case 'Latest Episode': list ($ep, $title, $airdate) = explode('^', $val); $ret['episode']['latest'] = - $ep . ", \"" . $title . "\" aired on " . $airdate; + $ep . ", \"" . $title . "\" aired on " . $airdate; break; case 'Next Episode': list ($ep, $title, $airdate) = explode('^', $val); @@ -311,6 +313,7 @@ class TvAnger } $res = $this->db->queryOneRow(sprintf("SELECT COUNT(ID) AS num FROM tvrage WHERE 1=1 %s", $rsql)); + return $res["num"]; } @@ -320,6 +323,7 @@ class TvAnger $date = date("Y-m-d"); } $sql = sprintf("SELECT * FROM episodeinfo WHERE DATE(airdate) = %s ORDER BY airdate ASC", $this->db->escapeString($date)); + return $this->db->query($sql); } @@ -371,14 +375,14 @@ class TvAnger foreach ($xml->DAY as $sDay) { $currDay = strtotime($sDay['attr']); foreach ($sDay as $sTime) { - $currTime = (string) $sTime['attr']; + $currTime = (string)$sTime['attr']; foreach ($sTime as $sShow) { - $currShowName = (string) $sShow['name']; - $currShowId = (string) $sShow->sid; + $currShowName = (string)$sShow['name']; + $currShowId = (string)$sShow->sid; $day_time = strtotime($sDay['attr'] . ' ' . $currTime); $tag = ($currDay < $yesterday) ? 'prev' : 'next'; if ($tag == 'prev' || ($tag == 'next' && !isset($xmlSchedule[$currShowId]['next']))) { - $xmlSchedule[$currShowId][$tag] = array('name' => $currShowName, 'day' => $currDay, 'time' => $currTime, 'day_time' => $day_time, 'day_date' => date("Y-m-d H:i:s", $day_time), 'title' => html_entity_decode((string) $sShow->title, ENT_QUOTES, 'UTF-8'), 'episode' => html_entity_decode((string) $sShow->ep, ENT_QUOTES, 'UTF-8')); + $xmlSchedule[$currShowId][$tag] = array('name' => $currShowName, 'day' => $currDay, 'time' => $currTime, 'day_time' => $day_time, 'day_date' => date("Y-m-d H:i:s", $day_time), 'title' => html_entity_decode((string)$sShow->title, ENT_QUOTES, 'UTF-8'), 'episode' => html_entity_decode((string)$sShow->ep, ENT_QUOTES, 'UTF-8')); $xmlSchedule[$currShowId]['showname'] = $currShowName; } @@ -486,8 +490,10 @@ class TvAnger return $result; } + return false; } + return false; } @@ -518,6 +524,7 @@ class TvAnger $result['imgurl'] = $matches[1]; } } + return $result; } @@ -532,25 +539,30 @@ class TvAnger $result['genres'] = (isset($arrXml['genres'])) ? $arrXml['genres'] : ''; $result['country'] = (isset($arrXml['origin_country'])) ? $arrXml['origin_country'] : ''; $result = $this->countryCode($result); + return $result; } + return false; } + return false; } // Convert 2012-24-07 to 2012-07-24, there is probably a better way public function checkDate($date) { - if (!empty($date) && $date != NULL) { + if (!empty($date) && $date != null) { $chk = explode(" ", $date); $chkd = explode("-", $chk[0]); if ($chkd[1] > 12) { $date = date('Y-m-d H:i:s', strtotime($chkd[1] . " " . $chkd[2] . " " . $chkd[0])); } + return $date; } - return NULL; + + return null; } public function updateEpInfo($show, $relid) @@ -703,13 +715,11 @@ class TvAnger echo $this->c->primary('Found TVRage ID on trakt:' . $traktArray['show']['tvrage_id']); } $this->updateRageInfoTrakt($traktArray['show']['tvrage_id'], $show, $traktArray, $arr['ID']); - } - // No match, add to tvrage with rageID = -2 and $show['cleanname'] title only. + } // No match, add to tvrage with rageID = -2 and $show['cleanname'] title only. else { $this->add(-2, $show['cleanname'], '', '', '', ''); } - } - // No match, add to tvrage with rageID = -2 and $show['cleanname'] title only. + } // No match, add to tvrage with rageID = -2 and $show['cleanname'] title only. else { $this->add(-2, $show['cleanname'], '', '', '', ''); } @@ -751,6 +761,7 @@ class TvAnger } $ret++; } + return $ret; } @@ -822,6 +833,7 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('Found 100% match: "' . $titleMatches[100][0]['title'] . '"'); } + return $titleMatches[100][0]; } @@ -830,6 +842,7 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('Found 100% url match: "' . $urlMatches[100][0]['title'] . '"'); } + return $urlMatches[100][0]; } @@ -838,6 +851,7 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('Found 100% aka match: "' . $akaMatches[100][0]['title'] . '"'); } + return $akaMatches[100][0]; } @@ -853,6 +867,7 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('Found ' . $mk . '% match: "' . $titleMatches[$mk][0]['title'] . '"'); } + return $titleMatches[$mk][0]; } @@ -867,17 +882,20 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('Found ' . $ak . '% aka match: "' . $akaMatches[$ak][0]['title'] . '"'); } + return $akaMatches[$ak][0]; } if ($this->echooutput) { echo $this->c->primary('No match found on TVRage trying Trakt.'); } + return false; } else { if ($this->echooutput) { echo $this->c->primary('Nothing returned from tvrage.'); } + return false; } } else { @@ -887,6 +905,7 @@ class TvAnger if ($this->echooutput) { echo $this->c->primary('No match found online.'); } + return false; } @@ -950,6 +969,7 @@ class TvAnger $str = preg_replace('/\s{2,}/', ' ', $str); $str = trim($str, '\"'); + return trim($str); } @@ -964,7 +984,7 @@ class TvAnger if (preg_match('/[^a-z0-9]{2,}(?P[\w .-]*?)' . $following . '/i', $relname, $matches)) { $showInfo['name'] = $matches[1]; } else if (preg_match('/^(?P[a-z0-9][\w .-]*?)' . $following . '/i', $relname, $matches)) { - // For names that start with the title. + // For names that start with the title. $showInfo['name'] = $matches[1]; } @@ -973,121 +993,127 @@ class TvAnger if (preg_match('/^(.*?)[^a-z0-9]s(\d{1,2})[^a-z0-9]?e(\d{1,3})(?:[e-])(\d{1,3})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = array(intval($matches[3]), intval($matches[4])); - } - //S01E0102 - lame no delimit numbering, regex would collide if there was ever 1000 ep season. + } //S01E0102 - lame no delimit numbering, regex would collide if there was ever 1000 ep season. else if (preg_match('/^(.*?)[^a-z0-9]s(\d{2})[^a-z0-9]?e(\d{2})(\d{2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = array(intval($matches[3]), intval($matches[4])); - } - // S01E01 and S01.E01 + } // S01E01 and S01.E01 else if (preg_match('/^(.*?)[^a-z0-9]s(\d{1,2})[^a-z0-9]?e(\d{1,3})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = intval($matches[3]); - } - // S01 + } // S01 else if (preg_match('/^(.*?)[^a-z0-9]s(\d{1,2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = 'all'; - } - // S01D1 and S1D1 + } // S01D1 and S1D1 else if (preg_match('/^(.*?)[^a-z0-9]s(\d{1,2})[^a-z0-9]?d\d{1}[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = 'all'; - } - // 1x01 + } // 1x01 else if (preg_match('/^(.*?)[^a-z0-9](\d{1,2})x(\d{1,3})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = intval($matches[3]); - } - // 2009.01.01 and 2009-01-01 + } // 2009.01.01 and 2009-01-01 else if (preg_match('/^(.*?)[^a-z0-9](19|20)(\d{2})[^a-z0-9](\d{2})[^a-z0-9](\d{2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = $matches[2] . $matches[3]; $showInfo['episode'] = $matches[4] . '/' . $matches[5]; $showInfo['airdate'] = $matches[2] . $matches[3] . '-' . $matches[4] . '-' . $matches[5]; //yy-m-d - } - // 01.01.2009 + } // 01.01.2009 else if (preg_match('/^(.*?)[^a-z0-9](\d{2})[^a-z0-9](\d{2})[^a-z0-9](19|20)(\d{2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = $matches[4] . $matches[5]; $showInfo['episode'] = $matches[2] . '/' . $matches[3]; $showInfo['airdate'] = $matches[4] . $matches[5] . '-' . $matches[2] . '-' . $matches[3]; //yy-m-d - } - // 01.01.09 + } // 01.01.09 else if (preg_match('/^(.*?)[^a-z0-9](\d{2})[^a-z0-9](\d{2})[^a-z0-9](\d{2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = ($matches[4] <= 99 && $matches[4] > 15) ? '19' . $matches[4] : '20' . $matches[4]; $showInfo['episode'] = $matches[2] . '/' . $matches[3]; $showInfo['airdate'] = $showInfo['season'] . '-' . $matches[2] . '-' . $matches[3]; //yy-m-d - } - // 2009.E01 + } // 2009.E01 else if (preg_match('/^(.*?)[^a-z0-9]20(\d{2})[^a-z0-9](\d{1,3})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = '20' . $matches[2]; $showInfo['episode'] = intval($matches[3]); - } - // 2009.Part1 + } // 2009.Part1 else if (preg_match('/^(.*?)[^a-z0-9](19|20)(\d{2})[^a-z0-9]Part(\d{1,2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = $matches[2] . $matches[3]; $showInfo['episode'] = intval($matches[4]); - } - // Part1/Pt1 + } // Part1/Pt1 else if (preg_match('/^(.*?)[^a-z0-9](?:Part|Pt)[^a-z0-9](\d{1,2})[^a-z0-9]/i', $relname, $matches)) { $showInfo['season'] = 1; $showInfo['episode'] = intval($matches[2]); - } - //The.Pacific.Pt.VI.HDTV.XviD-XII / Part.IV + } //The.Pacific.Pt.VI.HDTV.XviD-XII / Part.IV else if (preg_match('/^(.*?)[^a-z0-9](?:Part|Pt)[^a-z0-9]([ivx]+)/i', $relname, $matches)) { $showInfo['season'] = 1; $epLow = strtolower($matches[2]); switch ($epLow) { - case 'i': $e = 1; + case 'i': + $e = 1; break; - case 'ii': $e = 2; + case 'ii': + $e = 2; break; - case 'iii': $e = 3; + case 'iii': + $e = 3; break; - case 'iv': $e = 4; + case 'iv': + $e = 4; break; - case 'v': $e = 5; + case 'v': + $e = 5; break; - case 'vi': $e = 6; + case 'vi': + $e = 6; break; - case 'vii': $e = 7; + case 'vii': + $e = 7; break; - case 'viii': $e = 8; + case 'viii': + $e = 8; break; - case 'ix': $e = 9; + case 'ix': + $e = 9; break; - case 'x': $e = 10; + case 'x': + $e = 10; break; - case 'xi': $e = 11; + case 'xi': + $e = 11; break; - case 'xii': $e = 12; + case 'xii': + $e = 12; break; - case 'xiii': $e = 13; + case 'xiii': + $e = 13; break; - case 'xiv': $e = 14; + case 'xiv': + $e = 14; break; - case 'xv': $e = 15; + case 'xv': + $e = 15; break; - case 'xvi': $e = 16; + case 'xvi': + $e = 16; break; - case 'xvii': $e = 17; + case 'xvii': + $e = 17; break; - case 'xviii': $e = 18; + case 'xviii': + $e = 18; break; - case 'xix': $e = 19; + case 'xix': + $e = 19; break; - case 'xx': $e = 20; + case 'xx': + $e = 20; break; default: $e = 0; } $showInfo['episode'] = $e; - } - // Band.Of.Brothers.EP06.Bastogne.DVDRiP.XviD-DEiTY + } // Band.Of.Brothers.EP06.Bastogne.DVDRiP.XviD-DEiTY else if (preg_match('/^(.*?)[^a-z0-9]EP?[^a-z0-9]?(\d{1,3})/i', $relname, $matches)) { $showInfo['season'] = 1; $showInfo['episode'] = intval($matches[2]); - } - // Season.1 + } // Season.1 else if (preg_match('/^(.*?)[^a-z0-9]Seasons?[^a-z0-9]?(\d{1,2})/i', $relname, $matches)) { $showInfo['season'] = intval($matches[2]); $showInfo['episode'] = 'all'; @@ -1096,7 +1122,7 @@ class TvAnger $countryMatch = $yearMatch = ''; // Country or origin matching. if (preg_match('/\W(US|UK|AU|NZ|CA|NL|Canada|Australia|America|United[^a-z0-9]States|United[^a-z0-9]Kingdom)\W/', $showInfo['name'], $countryMatch)) { - $currentCountry = strtolower($countryMatch[1]) ; + $currentCountry = strtolower($countryMatch[1]); if ($currentCountry == 'canada') { $showInfo['country'] = 'CA'; } else if ($currentCountry == 'australia') { @@ -1137,19 +1163,22 @@ class TvAnger $showInfo['seriesfull'] = $showInfo['season'] . $showInfo['episode']; } $showInfo['airdate'] = (!empty($showInfo['airdate'])) ? $showInfo['airdate'] . ' 00:00:00' : ''; + return $showInfo; } + return false; } public function getGenres() { return array('Action', 'Adult/Porn', 'Adventure', 'Anthology', 'Arts & Crafts', 'Automobiles', 'Buy, Sell & Trade', 'Celebrities', 'Children', 'Cinema/Theatre', 'Comedy', 'Cooking/Food', 'Crime', 'Current Events', - 'Dance', 'Debate', 'Design/Decorating', 'Discovery/Science', 'Drama', 'Educational', 'Family', 'Fantasy', 'Fashion/Make-up', 'Financial/Business', 'Fitness', 'Garden/Landscape', 'History', - 'Horror/Supernatural', 'Housing/Building', 'How To/Do It Yourself', 'Interview', 'Lifestyle', 'Literature', 'Medical', 'Military/War', 'Music', 'Mystery', 'Pets/Animals', 'Politics', 'Puppets', - 'Religion', 'Romance/Dating', 'Sci-Fi', 'Sketch/Improv', 'Soaps', 'Sports', 'Super Heroes', 'Talent', 'Tech/Gaming', 'Teens', 'Thriller', 'Travel', 'Western', 'Wildlife'); + 'Dance', 'Debate', 'Design/Decorating', 'Discovery/Science', 'Drama', 'Educational', 'Family', 'Fantasy', 'Fashion/Make-up', 'Financial/Business', 'Fitness', 'Garden/Landscape', 'History', + 'Horror/Supernatural', 'Housing/Building', 'How To/Do It Yourself', 'Interview', 'Lifestyle', 'Literature', 'Medical', 'Military/War', 'Music', 'Mystery', 'Pets/Animals', 'Politics', 'Puppets', + 'Religion', 'Romance/Dating', 'Sci-Fi', 'Sketch/Improv', 'Soaps', 'Sports', 'Super Heroes', 'Talent', 'Tech/Gaming', 'Teens', 'Thriller', 'Travel', 'Western', 'Wildlife' + ); } } -?> +?> \ No newline at end of file