diff --git a/.htaccess b/.htaccess index d072a86..b37fec2 100644 --- a/.htaccess +++ b/.htaccess @@ -1,4 +1,5 @@ RewriteEngine On RewriteRule ^admin/*$ admin.php -RewriteRule ^install/*$ install.php \ No newline at end of file +RewriteRule ^install/*$ install.php +RewriteRule ^cron/*$ cron.php \ No newline at end of file diff --git a/README.md b/README.md index f9e9357..c97b3cb 100644 --- a/README.md +++ b/README.md @@ -17,18 +17,27 @@ Browsing to admin.php will let you upload new file lists. They must be in a .txt Things that Need to Eventually Happen ------------------------------------- -* Add searching. - * Things like genre, rating, actor, studio, producer, runtime, budget, box, resolution, year, rating -* Make a cron based update script to update the ratings weekly - * Maybe also background the first pull of data rather than have the page just sit 'loading' +* Add advanced search (perhaps) * Improve security * Add a graphical edit for each movie (to spot-fix bugs) -* Improve the regex matching for video quality -* Get better title info (probably from TMDb) +* Fix sorting of unknown quality movies (currently they mix with SD) +* Make the form look better. The Log of Change ----------------- +* Nov 10 2012 - v0.2.0 + * Removed " 3D" from the titles + * Changed the year to not be based off of year in theaters (RT updates that to most recent) + * NOTE: This will require a DB upgrade, run install to upgrade. + * NOTE: It is a good idea to just flush the info_rt table, it will get better year info. + * Changed how the IMDB numbers are compared with TMDb and RT + * NOTE: This will require a DB upgrade, run install to upgrade. + * Added searching. + * The regex video quality now matches nearly perfectly for 1080, 720, DvD, R5/6 (no Cam/Screener/TS support) + * Added a cron job to be ran nightly, it will update up to 150 movies which are at least 15 days old starting with the oldest. + * NOTE: You will need to add a wget (or similar) for cron.php to be ran nightly. + * Made the clean URLs able to direct to / instead of /index.php * Nov 04 2012 - v0.1.1 * Added icons for quality and rating on the collapsed view * Removed the tagline from the collapsed view diff --git a/admin.php b/admin.php index 0eb60c9..949ff56 100644 --- a/admin.php +++ b/admin.php @@ -1,4 +1,5 @@ @@ -11,7 +12,7 @@ if (!file_exists("conf.php")) { ob_end_clean(); - header("Location: install"); + header("Location: $base_dir/install"); exit; } include("conf.php"); @@ -58,6 +59,13 @@ # only if its not a torrent file if (end(explode(".", $fileName)) != "torrent" && end(explode(".", $fileName)) != "idx") { $imdb_number = substr(preg_replace("/[^\[]*\[[0-9]{4}-([0-9]{7}).*/", "$1", $fileName), 0, 7); + $query = "SELECT * FROM id_asoc WHERE imdb_number='".mysql_real_escape_string($imdb_number)."'"; + $result = mysql_query($query); + # and only if its not in the + if (mysql_num_rows($result) == 0) { + $query = "INSERT INTO id_asoc SET imdb_number=".mysql_real_escape_string($imdb_number); + mysql_query($query); + } $query = "SELECT * FROM files WHERE filename='".mysql_real_escape_string($fileName)."'"; $result = mysql_query($query); # and only if its not in the @@ -71,14 +79,16 @@ } else { # find and add the resolution of the file $resolution = array(); - preg_match('/^[^\]]+\][a-zA-Z]*\.*(([0-9]{3,4}[ip]+)|(DvD))/', $fileName, $resolution); - if ($resolution[1] == "DvD") { + preg_match('/[^\[]*\[[0-9]{4}-[0-9]{7}.*((720[ip]*)|(1080[ip]*)|(D[vV]D)|(R[56]))/', $fileName, $resolution); + if ($resolution[1] == "DvD" || $resolution[1] == "DVD") { $resolution[1] = "SD"; - } + } elseif ($resolution[1] == "R5" || $resolution[1] == "R6") { + $resolution[1] = "CAM"; + } if (count($resolution) > 1) { $query = "UPDATE files SET resolution='".$resolution[1]."' WHERE filename='".mysql_real_escape_string($fileName)."'"; + mysql_query($query); } - mysql_query($query); } } } @@ -87,147 +97,31 @@ } } if (isset($_FILES['file'])) { - $query = "SELECT * FROM files WHERE rt_number IS NULL"; + $query = "SELECT * FROM files, id_asoc WHERE files.imdb_number = id_asoc.imdb_number AND id_asoc.rt_number IS NULL"; $blank_rt = mysql_query($query); while($row = mysql_fetch_array($blank_rt, MYSQL_ASSOC)) { - $imdb_number = $row['imdb_number']; - $info[$imdb_number] = json_response("http://api.rottentomatoes.com/api/public/v1.0/movie_alias.json?type=imdb&id=".str_pad($imdb_number, 7, "0", STR_PAD_LEFT)."&apikey=".RT_API); - if (isset($info[$imdb_number]['title'])) { - - # if that RT number is not in the DB add it - $query = "SELECT * FROM info_rt WHERE imdb_number=".$imdb_number; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO info_rt SET ". - "imdb_number=".$imdb_number.", ". - "title='".mysql_real_escape_string($info[$imdb_number]['title'])."', ". - "mpaa='".mysql_real_escape_string($info[$imdb_number]['mpaa_rating'])."', ". - "runtime=".mysql_real_escape_string($info[$imdb_number]['runtime']).", ". - "release_theater='".mysql_real_escape_string($info[$imdb_number]['release_dates']['theater'])."', ". - "release_dvd='".mysql_real_escape_string($info[$imdb_number]['release_dates']['dvd'])."', ". - "consensus='".mysql_real_escape_string($info[$imdb_number]['critics_consensus'])."', ". - "rating_critics=".mysql_real_escape_string($info[$imdb_number]['ratings']['critics_score']).", ". - "rating_audience=".mysql_real_escape_string($info[$imdb_number]['ratings']['audience_score']).", ". - "studio='".mysql_real_escape_string($info[$imdb_number]['studio'])."', ". - "rt_link='".mysql_real_escape_string($info[$imdb_number]['links']['alternate'])."'"); - } - - # if we do not have any genre for that RT number add it - foreach ($info[$imdb_number]['genres'] as $genre) { - $query = "SELECT * FROM genre WHERE imdb_number=".$imdb_number." AND name='".mysql_real_escape_string($genre)."'"; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO genre SET imdb_number=".$imdb_number.", name='".mysql_real_escape_string($genre)."'"); - } - } - - - # if we do not have any director for that RT number add it - foreach ($info[$imdb_number]['abridged_directors'] as $director) { - $query = "SELECT * FROM director WHERE imdb_number=".$imdb_number." AND name='".mysql_real_escape_string($director['name'])."'"; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO director SET imdb_number=".$imdb_number.", name='".mysql_real_escape_string($director['name'])."'"); - } - } - - # if we do not have any cast for that RT number add it - foreach ($info[$imdb_number]['abridged_cast'] as $person) { - foreach ($person['characters'] as $character) { - $query = "SELECT * FROM cast WHERE imdb_number=".$imdb_number." AND rt_celeb_number='".mysql_real_escape_string($person['id'])."' AND role='".mysql_real_escape_string($character)."'"; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO cast SET imdb_number=".$imdb_number.", name='".mysql_real_escape_string($person['name'])."', role='".mysql_real_escape_string($character)."', rt_celeb_number=".mysql_real_escape_string($person['id'])); - } - } - } - - # now that we have all the data update the table - mysql_query ("UPDATE files SET rt_number=".mysql_real_escape_string($info[$imdb_number]['id'])." WHERE imdb_number=".$imdb_number); - - usleep(150000); // sleep .15 seconds to not go over our 10 requests per second limit - } + rt_getData($row['imdb_number']); } - $query = "SELECT * FROM files WHERE tmdb_number IS NULL"; + $query = "SELECT * FROM files, id_asoc WHERE files.imdb_number = id_asoc.imdb_number AND id_asoc.tmdb_number IS NULL"; $blank_tmdb = mysql_query($query); while($row = mysql_fetch_array($blank_tmdb, MYSQL_ASSOC)) { $imdb_number = $row['imdb_number']; - $imdbLookupURL="http://api.themoviedb.org/2.1/Movie.imdbLookup/en/json/"; - $infoURL="http://api.themoviedb.org/2.1/Movie.getInfo/en/json/"; $tmdb_data = json_response($imdbLookupURL.TMDb_API."/tt".str_pad($imdb_number, 7, "0", STR_PAD_LEFT)); - - if (isset($tmdb_data[0]['id'])) { + if (isset($tmdb_data[0]['id'])) { $tmdb_number = $tmdb_data[0]['id']; - $tmdb_info = json_response($infoURL.TMDb_API."/".$tmdb_number); - - if (isset($tmdb_info[0])) { - - # if that TMDb number is not in the DB add it - $query = "SELECT * FROM info_tmdb WHERE imdb_number=".$imdb_number; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO info_tmdb SET ". - "imdb_number=".$imdb_number.", ". - "tagline='".mysql_real_escape_string($tmdb_info[0]['tagline'])."', ". - "overview='".mysql_real_escape_string($tmdb_info[0]['overview'])."', ". - "budget=".mysql_real_escape_string($tmdb_info[0]['budget']).", ". - "revenue=".mysql_real_escape_string($tmdb_info[0]['revenue'])); - } - - # if we do not have any countries for that TMDb number add it - foreach ($tmdb_info[0]['countries'] as $country) { - $query = "SELECT * FROM country WHERE imdb_number=".$imdb_number." AND name='".mysql_real_escape_string($country['name'])."'"; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO country SET imdb_number=".$imdb_number.", name='".mysql_real_escape_string($country['name'])."'"); - } - } - - # if we do not have any producers for that TMDb number add it - foreach ($tmdb_info[0]['cast'] as $person) { - if ($person['job'] == "Producer") { - $query = "SELECT * FROM producer WHERE imdb_number=".$imdb_number." AND name='".mysql_real_escape_string($person['name'])."'"; - $result = mysql_query($query); - if (mysql_num_rows($result) == 0) { - mysql_query ("INSERT INTO producer SET imdb_number=".$imdb_number.", name='".mysql_real_escape_string($person['name'])."'"); - } - } - } - - - # now that we have all the data update the table - mysql_query ("UPDATE files SET tmdb_number=".mysql_real_escape_string($tmdb_number)." WHERE imdb_number=".$imdb_number); - } + # now that we have all the data update the table + mysql_query ("UPDATE id_asoc SET tmdb_number=".mysql_real_escape_string($tmdb_number)." WHERE imdb_number=".$imdb_number); + tmdb_getData($tmdb_number, $imdb_number); } } ob_end_clean(); - header("Location: index.php"); + header("Location: $base_dir"); exit; } -function json_response($url) { - $curl_handle=curl_init(); - curl_setopt($curl_handle, CURLOPT_URL, $url); - curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2); - curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($curl_handle, CURLOPT_HEADER, 1); - $response = curl_exec($curl_handle); - curl_close($curl_handle); - list($header, $json) = explode("\r\n\r\n", $response, 2); - $data = json_decode($json, TRUE); - $header_array= explode("\r\n", $header); - foreach ($header_array as $header_element) { - $header_clean = array(); - $header_clean = explode(": ", $header_element); - if (count($header_clean) == 2) { - $data['header'][$header_clean[0]] = $header_clean[1]; - } - } - return $data; -} mysql_close($db); ob_end_flush(); ?> diff --git a/cron.php b/cron.php new file mode 100644 index 0000000..9bf403c --- /dev/null +++ b/cron.php @@ -0,0 +1,55 @@ + \ No newline at end of file diff --git a/functions.php b/functions.php new file mode 100644 index 0000000..68e85da --- /dev/null +++ b/functions.php @@ -0,0 +1,172 @@ + \ No newline at end of file diff --git a/index.php b/index.php index b82fe01..de6953d 100644 --- a/index.php +++ b/index.php @@ -1,4 +1,5 @@ @@ -28,7 +29,7 @@ if (!file_exists("conf.php")) { ob_end_clean(); - header("Location: install"); + header("Location: $base_dir/install"); exit; } ob_end_flush(); @@ -62,8 +63,7 @@ $GradientColors['color'] = array(); -for($i = 0; $i <= $ColorSteps; $i++) -{ +for($i = 0; $i <= $ColorSteps; $i++) { $RGB['r'] = floor($FromRGB['r'] - ($StepRGB['r'] * $i)); $RGB['g'] = floor($FromRGB['g'] - ($StepRGB['g'] * $i)); $RGB['b'] = floor($FromRGB['b'] - ($StepRGB['b'] * $i)); @@ -95,8 +95,7 @@ $GradientColors['mono'] = array(); -for($i = 0; $i <= $ColorSteps; $i++) -{ +for($i = 0; $i <= $ColorSteps; $i++) { $RGB['r'] = floor($FromRGB['r'] - ($StepRGB['r'] * $i)); $RGB['g'] = floor($FromRGB['g'] - ($StepRGB['g'] * $i)); $RGB['b'] = floor($FromRGB['b'] - ($StepRGB['b'] * $i)); @@ -108,55 +107,374 @@ $GradientColors['mono'][] = implode(NULL, $HexRGB['mono']); } -$query = "SELECT * FROM files"; +$base_filter = return_filter("SELECT DISTINCT(imdb_number) FROM files"); +$filter = $base_filter; + +$time['min'] = 999; +$time['max'] = 0; + +$year['min'] = 9999; +$year['max'] = 0; + +$rating['critics']['min'] = 100; +$rating['critics']['max'] = 0; +$rating['audience']['min'] = 100; +$rating['audience']['max'] = 0; + +// limit results based on our form +if (count($_POST) > 0) { + if (isset($_POST['reset'])) { + $_POST = array(); + } + if (!empty($_POST['res'])) { + switch ($_POST['res']) { + case '1080': + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM files WHERE resolution LIKE '1080%' AND ".$filter); + break; + + case '720': + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM files WHERE resolution LIKE '720%' AND ".$filter); + break; + + case 'SD': + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM files WHERE resolution LIKE 'SD' AND ".$filter); + break; + + case 'CAM': + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM files WHERE resolution LIKE 'CAM' AND ".$filter); + break; + + default: + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM files WHERE resolution IS NULL AND ".$filter); + break; + } + } + + if (!empty($_POST['genre'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM genre WHERE name='".mysql_real_escape_string(htmlspecialchars_decode($_POST['genre']))."' AND ".$filter); + } + + if (!empty($_POST['celeb'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM cast WHERE rt_celeb_number=".mysql_real_escape_string(htmlspecialchars_decode($_POST['celeb']))." AND ".$filter); + } + + if (!empty($_POST['director'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM director WHERE name='".mysql_real_escape_string(htmlspecialchars_decode(preg_replace('/([A-Za-z\-\']+), (.*)/', '\2 \1', $_POST['director'])))."' AND ".$filter); + } + + if (!empty($_POST['producer'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM producer WHERE name='".mysql_real_escape_string(htmlspecialchars_decode(preg_replace('/([A-Za-z\-\']+), (.*)/', '\2 \1', $_POST['producer'])))."' AND ".$filter); + } + + if (!empty($_POST['studio'])) { + if ($_POST['studio'] == "Other") { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE studio='' AND ".$filter); + } else { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE studio='".mysql_real_escape_string(htmlspecialchars_decode($_POST['studio']))."' AND ".$filter); + } + } + + if (!empty($_POST['country'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM country WHERE name='".mysql_real_escape_string(htmlspecialchars_decode($_POST['country']))."' AND ".$filter); + } + + if (!empty($_POST['Tmin'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE runtime>=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Tmin']))." AND ".$filter); + } + if (!empty($_POST['Tmax'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE runtime<=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Tmax']))." AND ".$filter); + } + + if (!empty($_POST['Ymin'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE year>=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Ymin']))." AND ".$filter); + } + if (!empty($_POST['Ymax'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE year<=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Ymax']))." AND ".$filter); + } + + if (!empty($_POST['Cmin'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE rating_critics>=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Cmin']))." AND ".$filter); + } + if (!empty($_POST['Cmax'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE rating_critics<=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Cmax']))." AND ".$filter); + } + if (!empty($_POST['Amin'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE rating_audience>=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Amin']))." AND ".$filter); + } + if (!empty($_POST['Amax'])) { + $filter = return_filter("SELECT DISTINCT(imdb_number) FROM info_rt WHERE rating_audience<=".mysql_real_escape_string(htmlspecialchars_decode($_POST['Amax']))." AND ".$filter); + } +} + +$query = "SELECT * FROM files, id_asoc WHERE id_asoc.imdb_number = files.imdb_number AND ".str_replace('imdb_number', 'files.imdb_number', $filter); $files = mysql_query($query); while ($row = mysql_fetch_array($files, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['files'][] = $row; + + if (substr($row['resolution'], 0, 4) == "1080") { + $name = "1080"; + } elseif (substr($row['resolution'], 0, 3) == "720") { + $name = "720"; + } elseif ($row['resolution'] == "SD") { + $name = "SD"; + } elseif ($row['resolution'] == "CAM") { + $name = "CAM"; + } else { + $name = "Other"; + } + if (isset($resolutions[$name])) { + $resolutions[$name]++; + } else { + $resolutions[$name] = 1; + } + if ($name != "Other") { + if (!isset($movie_data[$row['imdb_number']]['maxres'])) { + $movie_data[$row['imdb_number']]['maxres'] = $name; + } elseif ($movie_data[$row['imdb_number']]['maxres'] == "CAM" && ($name == "1080" || $name == "720" || $name == "SD")) { + //if were set to CAM and we have better + $movie_data[$row['imdb_number']]['maxres'] = $name; + } elseif ($movie_data[$row['imdb_number']]['maxres'] == "SD" && ($name == "1080" || $name == "720")) { + //if were set to SD and we have better + $movie_data[$row['imdb_number']]['maxres'] = $name; + } elseif ($movie_data[$row['imdb_number']]['maxres'] == "720" && $name == "1080") { + //if were set to 720 and we have 1080 + $movie_data[$row['imdb_number']]['maxres'] = $name; + } + } } -$query = "SELECT * FROM info_rt"; +$query = "SELECT * FROM info_rt WHERE ".$filter; $info_rt = mysql_query($query); while ($row = mysql_fetch_array($info_rt, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['info_rt'] = $row; + $name = $row['studio']; + if (empty($name)) { + $name = "Other"; + } + if (isset($studios[$name])) { + $studios[$name]++; + } else { + $studios[$name] = 1; + } + if ($row['runtime'] > $time['max']) { + $time['max'] = $row['runtime']; + } + if ($row['runtime'] < $time['min']) { + $time['min'] = $row['runtime']; + } + + if ($row['year'] > $year['max']) { + $year['max'] = $row['year']; + } + if ($row['year'] > 0 && $row['year'] < $year['min']) { + $year['min'] = $row['year']; + } + + if ($row['rating_critics'] > $rating['critics']['max']) { + $rating['critics']['max'] = $row['rating_critics']; + } + if ($row['rating_critics'] >= 0 && $row['rating_critics'] < $rating['critics']['min']) { + $rating['critics']['min'] = $row['rating_critics']; + } + if ($row['rating_audience'] > $rating['audience']['max']) { + $rating['audience']['max'] = $row['rating_audience']; + } + if ($row['rating_audience'] >= 0 && $row['rating_audience'] < $rating['audience']['min']) { + $rating['audience']['min'] = $row['rating_audience']; + } } -$query = "SELECT * FROM info_tmdb"; +$query = "SELECT * FROM info_tmdb WHERE ".$filter; $info_tmdb = mysql_query($query); while ($row = mysql_fetch_array($info_tmdb, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['info_tmdb'] = $row; } -$query = "SELECT * FROM cast"; +$query = "SELECT * FROM cast WHERE ".$filter; $cast = mysql_query($query); while ($row = mysql_fetch_array($cast, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['cast'][] = $row; + $name = preg_replace('/(.*) ([A-Za-z\-\']+)/', '\2, \1', $row['name'])."_".$row['rt_celeb_number']; + if (isset($celebs[$name])) { + $celebs[$name]++; + } else { + $celebs[$name] = 1; + } } -$query = "SELECT * FROM director"; +$query = "SELECT * FROM director WHERE ".$filter; $director = mysql_query($query); while ($row = mysql_fetch_array($director, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['director'][] = $row; + $name = preg_replace('/(.*) ([A-Za-z\-\']+)/', '\2, \1', $row['name']); + if (isset($directors[$name])) { + $directors[$name]++; + } else { + $directors[$name] = 1; + } } -$query = "SELECT * FROM genre"; +$query = "SELECT * FROM genre WHERE ".$filter; $genre = mysql_query($query); while ($row = mysql_fetch_array($genre, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['genre'][] = $row; + $name = $row['name']; + if (isset($genres[$name])) { + $genres[$name]++; + } else { + $genres[$name] = 1; + } } -$query = "SELECT * FROM producer"; +$query = "SELECT * FROM producer WHERE ".$filter; $producer = mysql_query($query); while ($row = mysql_fetch_array($producer, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['producer'][] = $row; + $name = preg_replace('/(.*) ([A-Za-z\-\']+)/', '\2, \1', $row['name']); + if (isset($producers[$name])) { + $producers[$name]++; + } else { + $producers[$name] = 1; + } } -$query = "SELECT * FROM country"; +$query = "SELECT * FROM country WHERE ".$filter; $country = mysql_query($query); while ($row = mysql_fetch_array($country, MYSQL_ASSOC)) { $movie_data[$row['imdb_number']]['country'][] = $row; + $name = $row['name']; + if (isset($countries[$name])) { + $countries[$name]++; + } else { + $countries[$name] = 1; + } } mysql_close($db); +echo "
"; + + +echo "Quality: "; + + +echo "Genre: "; + + +echo "Cast: "; +echo "
"; + + +echo "Director: "; + + +echo "Producer: "; +echo "
"; + + +echo "Studio: "; + + +echo "Country: "; +echo "
"; + + +echo "Runtime: "; +echo ""; +echo " - "; +echo ""; +echo "Year: "; +echo ""; +echo " - "; +echo ""; + +echo "Critics: "; +echo ""; +echo " - "; +echo ""; +echo "Audience: "; +echo ""; +echo " - "; +echo ""; +echo "
"; + + +echo ""; +if ($filter != $base_filter) { + echo ""; +} +echo "
"; #make table headers echo "\n\t\n"; @@ -186,211 +504,185 @@ echo "\t\n"; foreach ($movie_data as $imdb_number => $data) { - if (isset($data['info_rt'])) { - - - - echo "\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; + echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; - echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; - echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; + echo "\t\t\n"; - echo "\t\n"; + echo ""; } - + echo "\n"; + echo "\t\n"; } - echo "\n"; - echo "
"; - if (substr($data['info_rt']['release_theater'], 0, 4) > 0) { - echo substr($data['info_rt']['release_theater'], 0, 4); - } else { - echo "——"; - } - echo ""; - if ($data['info_rt']['rating_critics'] > 0) { - echo "".$data['info_rt']['rating_critics'].""; - } else { - echo ""; - } - echo ""; - if ($data['info_rt']['rating_audience'] > 0) { - echo "".$data['info_rt']['rating_audience'].""; - } else { - echo ""; - } - echo ""; - if (isset($data['info_rt']['title'])) { - echo htmlspecialchars($data['info_rt']['title']); - } - echo ""; - if (!is_null($data['info_rt']['mpaa']) && $data['info_rt']['mpaa'] != "Unrated") { - echo "".$data['info_rt']['mpaa'].""; - } - echo ""; - $res = 0; - foreach ($data['files'] as $file) { - if ($res < 3 && substr($file['resolution'], 0, 4) == "1080") { - $res = 3; - } elseif ($res < 2 && substr($file['resolution'], 0, 3) == "720") { - $res = 2; - } elseif ($res < 1 && $file['resolution'] == "SD") { - $res = 1; - } - } if ($res > 0) { - echo ""; - switch ($res) { - case 3: - echo "1080"; - break; - - case 2: - echo "720"; - break; - - case 1: - echo "SD"; - break; - } - } - echo ""; - if (isset($data['genre']) && count($data['genre']) > 0) { - $previous = false; - foreach ($data['genre'] as $genre) { - if ($previous) { - echo ", "; - } else { - $previous = true; - } - echo htmlspecialchars($genre['name']); - } - } - echo ""; - if (isset($data['director']) && count($data['director']) > 0) { - $previous = false; - foreach ($data['director'] as $director) { - if ($previous) { - echo ", "; - } else { - $previous = true; - } - echo htmlspecialchars($director['name']); + if (isset($data['info_rt']) && isset($data['info_tmdb']) && count($data['files']) > 0) { + echo "\t
"; + if ($data['info_rt']['year'] > 0) { + echo $data['info_rt']['year']; + } else { + echo "——"; + } + echo ""; + if ($data['info_rt']['rating_critics'] > 0) { + echo "".$data['info_rt']['rating_critics'].""; + } else { + echo ""; + } + echo ""; + if ($data['info_rt']['rating_audience'] > 0) { + echo "".$data['info_rt']['rating_audience'].""; + } else { + echo ""; + } + echo ""; + if (isset($data['info_rt']['title'])) { + echo htmlspecialchars(preg_replace('/(.*)( 3D)/', '\1', $data['info_rt']['title'])); + } + echo ""; + if (!is_null($data['info_rt']['mpaa']) && $data['info_rt']['mpaa'] != "Unrated") { + echo "".$data['info_rt']['mpaa'].""; + } + echo ""; + if (isset($data['maxres'])) { + echo "".$data['maxres'].""; + } + echo ""; + if (isset($data['genre']) && count($data['genre']) > 0) { + $previous = false; + foreach ($data['genre'] as $genre) { + if ($previous) { + echo ", "; + } else { + $previous = true; } + echo htmlspecialchars($genre['name']); } - echo ""; - if (!empty($data['info_rt']['studio'])) { - echo "Studio: ".htmlspecialchars($data['info_rt']['studio']); - } - echo ""; - if (isset($data['producer']) && count($data['producer']) > 0 ) { - echo "Producer"; - if (count($data['producer']) > 1) { - echo "s"; - } - echo ": "; - $previous = false; - foreach ($data['producer'] as $producer) { - if ($previous) { - echo ", "; - } else { - $previous = true; - } - echo htmlspecialchars($producer['name']); + } + echo ""; + if (isset($data['director']) && count($data['director']) > 0) { + $previous = false; + foreach ($data['director'] as $director) { + if ($previous) { + echo ", "; + } else { + $previous = true; } + echo htmlspecialchars($director['name']); } - echo ""; - if (isset($data['info_rt']['consensus'])) { - echo htmlspecialchars($data['info_rt']['consensus']); - } - echo "".$data['info_rt']['runtime']." minIMDbRTTMDb"; - if (!empty($data['info_tmdb']['budget'])) { - echo "Budget: ".money_format("%.0n", $data['info_tmdb']['budget'])."
"; - } - if (!empty($data['info_tmdb']['revenue'])) { - echo "Box: ".money_format("%.0n", $data['info_tmdb']['revenue']); + } + echo "
"; + if (!empty($data['info_rt']['studio'])) { + echo "Studio: ".htmlspecialchars($data['info_rt']['studio']); + } + echo ""; + if (isset($data['producer']) && count($data['producer']) > 0 ) { + echo "Producer"; + if (count($data['producer']) > 1) { + echo "s"; } - echo "
    "; - foreach ($data['files'] as $file) { - echo "
  • "; - if (!empty($file['resolution'])) { - echo "".$file['resolution'].""; + echo ": "; + $previous = false; + foreach ($data['producer'] as $producer) { + if ($previous) { + echo ", "; + } else { + $previous = true; } - echo htmlspecialchars($file['filename'])."
  • "; + echo htmlspecialchars($producer['name']); } - echo "
"; - if (isset($data['info_tmdb']['tagline'])) { - echo htmlspecialchars($data['info_tmdb']['tagline']); - } - echo ""; - if (isset($data['info_tmdb']['overview'])) { - echo htmlspecialchars($data['info_tmdb']['overview']); - } - echo ""; - if (isset($data['cast']) && count($data['cast']) > 0) { - echo ""; + } + echo ""; + if (isset($data['info_rt']['consensus'])) { + echo htmlspecialchars($data['info_rt']['consensus']); + } + echo "".$data['info_rt']['runtime']." minIMDbRTTMDb"; + if (!empty($data['info_tmdb']['budget'])) { + echo "Budget: ".money_format("%.0n", $data['info_tmdb']['budget'])."
"; + } + if (!empty($data['info_tmdb']['revenue'])) { + echo "Box: ".money_format("%.0n", $data['info_tmdb']['revenue']); + } + echo "
    "; + foreach ($data['files'] as $file) { + echo "
  • "; + if (!empty($file['resolution'])) { + echo "".$file['resolution'].""; } - echo "
"; + } + echo ""; + if (isset($data['info_tmdb']['tagline'])) { + echo htmlspecialchars($data['info_tmdb']['tagline']); + } + echo ""; + if (isset($data['info_tmdb']['overview'])) { + echo htmlspecialchars($data['info_tmdb']['overview']); + } + echo ""; + if (isset($data['cast']) && count($data['cast']) > 0) { + echo ""; + } + echo ""; + if (isset($data['country']) && count($data['country']) > 0) { + echo "
    "; + foreach ($data['country'] as $country) { + echo "
  • ".htmlspecialchars($country['name'])."
  • "; } - echo "
\n"; - + +} +echo "\n"; +echo "\n"; ?> diff --git a/install.php b/install.php index 1081e1b..70e8906 100644 --- a/install.php +++ b/install.php @@ -1,4 +1,5 @@ @@ -53,8 +54,6 @@ } mysql_select_db(DATABASE); - - mysql_query ('CREATE TABLE IF NOT EXISTS `cast` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `imdb_number` int(11) DEFAULT NULL, @@ -83,13 +82,43 @@ `filename` varchar(256) DEFAULT NULL, `resolution` varchar(11) DEFAULT NULL, `imdb_number` int(11) DEFAULT NULL, - `tmdb_number` int(11) DEFAULT NULL, - `rt_number` int(11) DEFAULT NULL, `date_added` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, `subtitle` int(1) NOT NULL DEFAULT \'0\', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;'); + mysql_query ('CREATE TABLE IF NOT EXISTS `id_asoc` ( + `id` int(11) unsigned NOT NULL AUTO_INCREMENT, + `imdb_number` int(11) DEFAULT NULL, + `tmdb_number` int(11) DEFAULT NULL, + `rt_number` int(11) DEFAULT NULL, + PRIMARY KEY (`id`) + ) ENGINE=MyISAM DEFAULT CHARSET=latin1;'); + + # Update - put the RT and TMDb ids in a seperate table + $query = "SELECT * FROM files LIMIT 1"; + $result = mysql_query($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + if (isset($row['rt_number']) || isset($row['tmdb_number'])) { + // we have the old style, move them + $query = "SELECT DISTINCT(imdb_number), tmdb_number, rt_number FROM files"; + $info_numbers = mysql_query($query); + while ($row = mysql_fetch_array($info_numbers, MYSQL_ASSOC)) { + // check if that imdb is in the db + $query = "SELECT * FROM id_asoc WHERE imdb_number=".$row['imdb_number']; + $result = mysql_query($query); + # and only if its not in the + if (mysql_num_rows($result) == 0) { + $query = "INSERT INTO id_asoc SET imdb_number=".$row['imdb_number'].", tmdb_number=".$row['tmdb_number'].", rt_number=".$row['rt_number']; + mysql_query($query); + } + } + mysql_query('ALTER TABLE files DROP tmdb_number;'); + mysql_query('ALTER TABLE files DROP rt_number;'); + mysql_query('UPDATE info_rt SET date_updated=NOW() WHERE date_updated IS NULL;'); + mysql_query('UPDATE info_tmdb SET date_updated=NOW() WHERE date_updated IS NULL;'); + } + mysql_query ('CREATE TABLE IF NOT EXISTS `genre` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `imdb_number` int(11) DEFAULT NULL, @@ -103,6 +132,7 @@ `title` varchar(128) DEFAULT NULL, `mpaa` varchar(11) DEFAULT NULL, `runtime` int(11) DEFAULT NULL, + `year` int(4) DEFAULT NULL, `release_theater` date DEFAULT NULL, `release_dvd` date DEFAULT NULL, `consensus` text, @@ -115,6 +145,21 @@ PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;'); + # Update - Add year + $query = "SELECT * FROM info_rt LIMIT 1"; + $result = mysql_query($query); + $row = mysql_fetch_array($result, MYSQL_ASSOC); + if (!isset($row['year'])) { + // we do not have a year + mysql_query('ALTER TABLE info_rt ADD year int(4) AFTER runtime;'); + + $query = "SELECT release_theater, id FROM info_rt"; + $info_rt = mysql_query($query); + while ($row = mysql_fetch_array($info_rt, MYSQL_ASSOC)) { + mysql_query("UPDATE info_rt SET year=".substr($row['release_theater'], 0,4)." WHERE id=".$row['id']); + } + } + mysql_query ('CREATE TABLE IF NOT EXISTS `info_tmdb` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `imdb_number` int(11) DEFAULT NULL, @@ -136,7 +181,7 @@ # the DB has been set up, redirect to admin so they can add files ob_end_clean(); - header("Location: admin"); + header("Location: $base_dir/admin"); exit; } mysql_close($db);