Files
MeDBia/videodb/contrib/add_recommended_movies.php
Malin f55c91276e feat: add videodb media index with Docker stack
- Add videodb PHP/MySQL media collection manager (Blu-ray, DVD, CD)
- Dockerfile: PHP 8.1 + Apache with GD/mysqli/exif extensions
- docker-compose.yml: app on port 6761 + MySQL 8.0 with health checks
- docker-entrypoint.sh: auto-generates config.inc.php from env vars,
  waits for MySQL, initializes DB schema idempotently
- init-db.php: CLI schema installer using app's own prefix_query() logic
- Persistent volumes for DB, cache, and cover images

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 09:49:52 +02:00

142 lines
4.0 KiB
PHP

<?php
/**
* Add recommended movies via IMDB
*
* @package Contrib
* @author Andreas Goetz <cpuidle@gmx.de>
* @version $Id: add_recommended_movies.php,v 1.8 2014/02/25 21:22:00 kec2 Exp $
*/
// move out of contrib for includes
chdir('..');
require_once './core/functions.php';
require_once './engines/engines.php';
// since we don't need session functionality, use this as workaround
// for php bug #22526 session_start/popen hang
session_write_close();
?>
<html>
<head>
<title>Find Movie Recommendations</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="description" content="VideoDB" />
<style>
.green { color:green }
</style>
</head>
<body>
<?
error_reporting(E_ALL ^ E_NOTICE);
if ($submit)
{
// validate form data
$required_rating = (is_numeric($required_rating)) ? (float) $required_rating : '';
$required_year = (is_numeric($required_year)) ? (int) $required_year : '';
// get list of all videos
$SQL = 'SELECT * FROM '.TBL_DATA;
if (empty($wishlist)) $SQL .= ' WHERE mediatype != '.MEDIA_WISHLIST;
$result = runSQL($SQL);
foreach ($result as $video)
{
if (empty($video['imdbID'])) continue;
$engine = strtoupper(engineGetEngine($video['imdbID']));
echo "Fetching recommendations for <b>{$video['title']}</b> ($engine Id {$video['imdbID']})<br/>";
$data = engineGetRecommendations($video['imdbID'], $required_rating, $required_year, 'imdb');
if (!empty($CLIENTERROR))
{
echo $CLIENTERROR."<br/>";
continue;
}
if (empty($data))
{
// sometimes there are no recommendations for a movie. This is true for Underworld: imdbId 0320691
echo "No recommendations for {$video['title']}.<br/><br/>";
continue;
}
echo '<table border="1">';
echo " <tr>";
echo " <th>Title</th> <th>Year</th> <th>Rating</th> <th>Id</th>";
echo " </tr>";
foreach ($data as $recommended)
{
$available = (count(runSQL("SELECT * FROM ".TBL_DATA." WHERE imdbID like '%".$recommended['id']."'")) > 0);
if (!$available)
{
$recommended['title'] = '<a class="green" href="../edit.php?save=1&mediatype='.MEDIA_WISHLIST.'&lookup=1&imdbID='.$recommended['id'].
'&title='.urlencode($recommended['title']).'" target="_blank">'.$recommended['title'].' <img src="../images/add.gif" border="0"/></a>';
}
echo "<tr>";
echo "<td align=left width=\"65%\">{$recommended['title']}</td>";
echo "<td align=right width=\"10%\">{$recommended['year']}</td>";
echo "<td align=right width=\"10%\">{$recommended['rating']}</td>";
echo "<td align=right width=\"15%\">{$recommended['id']}</td>";
echo "</tr>";
if ($download && !$available) engineGetData($recommended['id']);
}
echo "</table>";
echo "<br/>";
}
}
else
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']?>">
<table>
<tr valign="top">
<td>
Limit to movies to no earlier then
</td>
<td>
<input type="text" name="required_year" id="required_year" value="1980" />
</td>
</tr>
<tr valign="top">
<td>
At least require this rating
</td>
<td>
<input type="text" name="required_rating" id="required_rating" value="7.0" />
</td>
</tr>
</table>
<label for="wishlist">
<input type="checkbox" name="wishlist" id="wishlist" value="1" />
Include wishlist
</label>
<br />
<label for="download">
<input type="checkbox" name="download" id="download" value="1" />
Download recommendations if movie is not in videoDB
</label>
<br />
<input type="submit" name="submit" value="Search" />
</form>
<?
}
?>
</body>
</html>