Web-Based Movie Portal Using TMDb API and PHP

Web-Based Movie Information Portal Using TMDb API and PHP

நீங்கள் ஒரு சினிமா விரும்பியாக இருந்தால் இந்தப்பதிவை கட்டாயமாக நீங்கள் 100 வீதம் விரும்புவீர்கள். So அப்படி என்றால் , PHP எனும் Server Side Scripting Language பயன்படுத்தி எவ்வாறு ஒரு Web-Based Movie Information Portal Using TMDb API and PHP செய்வது என்று பார்க்க இருக்கின்றோம்.

இங்கு நாம் TMDB API பயன்படுத்தி எவ்வாறு எமக்குத் பிடித்த திரைப்படத்தின் வெளியான திகதி , அது எந்த வகையை சேர்ந்தது (Action/ Drama/Comedy/ Crime thriller) அத்துடன் அதன் ஒரு சிறிய Review and அந்த திரைப்படத்தின் Trailers என்பவற்றை நாம் பார்க்கலாம்.

So Software Engineering துறையில் கற்றுக் கொண்டிருக்கும் மாணவர்கள் மற்றும் தனிப்பட்ட முறையில் கற்றுக் கொள்ள இருப்பவர்கள் போன்ற அனைவரும் இந்தப்பதிவை பயன்படுத்தி பயன்பெற்றுக் கொள்ளலாம்.

Using Software for Developing this Application

01.Visual Studio Code ( IDE)

02.Php Language

03.TMDb API

04.Xamp Server for Server Purpose

First of all நாம் இந்த themoviedb.org என்ற Website செல்ல வேண்டும். அங்கே நமக்கு ஒரு Account உருவாக்க வேண்டும். இங்கே பல வகையான Price களில் இந்த API ஐ நாம் உருவாக்கலாம். உண்மையிலேயே இங்கு நாம் ஒரு Free Subscription ஐ தான் பாவிக்கப்போகின்றோம். இங்கே நாம் Education Purpose வேதான் இதை தெரிவு செய்துள்ளோம். நமது தேவைப்பாடுகள் மாறுபட்டு இருப்பின் அவற்றின் தன்மைக்கு ஏற்றவாறு உங்கள் தெரிவுகளை மாற்றிக் கொள்ளலாம்.

tmdb_subscription

அத்துடன் Firstly நாம் எந்த மொழியை (Shell / Node / Ruby / Python / Java / C#) தெரிவு செய்கின்றோமோ அதற்கு ஏற்றாற் போல் தான்API இன் Key ஆனது மாறுபடப்போகுது.

pickalanuage

Secondly நாம் API Key ஐ எடுக்க வேண்டும். அதற்கு எம்மிடம் Account ஒன்று இருப்பின் Login பண்ண வேண்டும். இல்லை என்றால் புதிய Account ஒன்றை உருவாக்க வேண்டும்.

Web-Based Movie Portal Using TMDb API and PHPcredintial

இவையனைத்தும் சரியாக கொடுக்கப்பட்டால் நமக்கான ஒரு API Key உருவாக்கப்பட்டு இருக்கும் அதை நாம் ஒரு இடத்தில் சேமித்துக் கொள்ள வேண்டும். அதை (API Key) வைத்துக் கொண்டுதான் இங்கு நாம் எமக்குத் தேவையான வேலைகளை செய்ய வேண்டும்.

முதலில் நாம் இரண்டு களை உருவாக்க வேண்டும்.

  • Index.php
  • Trailer.php

முதலில் Index.php ஐ உருவாக்க வேண்டும் அங்கேதான் நாம் எமக்கு விரும்பிய திரைப்படத்தின் பெயரை கொடுத்து தேட வேண்டிய வேலைகளை இங்கு செய்ய வேண்டும். நாம் எமது Localhost இல் Test(நான் இங்கு test இப்படி உருவாக்கியுள்ளேன் நீங்கள் உங்களுக்கு விரும்பிய பெயரில் உருவாக்கி கொள்ளுங்கள்) என்ற Folder ஐ உருவாக்கி அதனுள் தான் எமது அனைத்து முக்கியமான .php file களையும் உருவாக்கி கொள்ள வேண்டும்.

  <h1> Movie Search App (Enhanced)</h1>

    <form method=”get”>

        <input type=”text” name=”query” placeholder=”Enter movie name…”

            value=”<?= htmlspecialchars($_GET[‘query’] ?? ”) ?>” required>

        <button type=”submit”>Search</button>

    </form>

   

இது மட்டும் தான் நாம் உருவாக்கும் Html ஆகும்.

<style>

    body {

        font-family: Arial, sans-serif;

        background: #f4f4f4;

        padding: 20px;

    }

    .movie {

        background: #fff;

        border-radius: 10px;

        padding: 15px;

        margin-bottom: 20px;

        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);

        display: flex;

    }

    .movie img {

        width: 150px;

        margin-right: 20px;

        border-radius: 5px;

    }

    .movie h2 {

        margin-top: 0;

    }

    </style> இதுதான் எமது பக்கத்தின் CSS Style ஆகும்.

<?php

$api_key = “”;

// Replace with your TMDb API key (நாம் உருவாக்கிய API Key ஐ இங்குதான் நாம் கொடுக்க வேண்டும். இந்த Key இல்லாவிடின் நமது வேலை செய்யாது.)

$movies = [];

$genreList = [];

// Step 1: Fetch genre list (once per session or page load)

$genre_url = “https://api.themoviedb.org/3/genre/movie/list?api_key=$api_key&language=en-US”;

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, $genre_url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$genre_response = curl_exec($ch);

curl_close($ch);

$genre_data = json_decode($genre_response, true);

if (isset($genre_data[‘genres’])) {

    foreach ($genre_data[‘genres’] as $genre) {

        $genreList[$genre[‘id’]] = $genre[‘name’];

    }

}

// Step 2: Search movies if a query is submitted இங்குதான் எமது திரைப்படத்தை தேடி எடுக்கப்போகின்றோம்.

if (isset($_GET[‘query’])) {

    $query = urlencode($_GET[‘query’]);

    $api_url = “https://api.themoviedb.org/3/search/movie?api_key=$api_key&language=en-US&query=$query”;

    $ch = curl_init();

    curl_setopt($ch, CURLOPT_URL, $api_url);

    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    $response = curl_exec($ch);

    curl_close($ch);

    $data = json_decode($response, true);

    if (isset($data[‘results’])) {

        $movies = $data[‘results’];

    }

}

முழுமையான இனது இவ்வாறு தான் அமையும்.

<?php
$api_key = ""; // Replace with your TMDb API key
$movies = [];
$genreList = [];

// Step 1: Fetch genre list (once per session or page load)
$genre_url = "https://api.themoviedb.org/3/genre/movie/list?api_key=$api_key&language=en-US";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $genre_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$genre_response = curl_exec($ch);
curl_close($ch);
$genre_data = json_decode($genre_response, true);
if (isset($genre_data['genres'])) {
    foreach ($genre_data['genres'] as $genre) {
        $genreList[$genre['id']] = $genre['name'];
    }
}

// Step 2: Search movies if a query is submitted
if (isset($_GET['query'])) {
    $query = urlencode($_GET['query']);
    $api_url = "https://api.themoviedb.org/3/search/movie?api_key=$api_key&language=en-US&query=$query";

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $api_url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    $data = json_decode($response, true);
    if (isset($data['results'])) {
        $movies = $data['results'];
    }
}
?>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>TMDb Movie Search with PHP</title>
    <style>
    body {
        font-family: Arial, sans-serif;
        background: #f4f4f4;
        padding: 20px;
    }

    .movie {
        background: #fff;
        border-radius: 10px;
        padding: 15px;
        margin-bottom: 20px;
        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
        display: flex;
    }

    .movie img {
        width: 150px;
        margin-right: 20px;
        border-radius: 5px;
    }

    .movie h2 {
        margin-top: 0;
    }
    </style>
</head>

<body>

    <h1> Movie Search App (Enhanced)</h1>

    <form method="get">
        <input type="text" name="query" placeholder="Enter movie name..."
            value="<?= htmlspecialchars($_GET['query'] ?? '') ?>" required>
        <button type="submit">Search</button>
    </form>

    <?php if (!empty($movies)): ?>
    <?php foreach ($movies as $movie): ?>
    <div class="movie">
        <?php if ($movie['poster_path']): ?>
        <img src="https://image.tmdb.org/t/p/w200<?= $movie['poster_path'] ?>"
            alt="<?= htmlspecialchars($movie['title']) ?>">
        <?php endif; ?>
        <div>
            <h2><?= htmlspecialchars($movie['title']) ?></h2>
            <p><strong>Release Date:</strong> <?= $movie['release_date'] ?? 'N/A' ?></p>
            <p><strong>Rating:</strong> <?= $movie['vote_average'] ?>/10</p> 

            <p><strong>Genres:</strong>
                <?php
                        if (!empty($movie['genre_ids'])) {
                            $genreNames = array_map(fn($id) => $genreList[$id] ?? '', $movie['genre_ids']);
                            echo implode(', ', $genreNames);
                        } else {
                            echo "N/A";
                        }
                        ?>
            </p>

            <p><?= htmlspecialchars($movie['overview']) ?></p>

            <!-- Trailer Button -->
            <form method="post" action="trailer.php" target="_blank">
                <input type="hidden" name="movie_id" value="<?= $movie['id'] ?>">
                <button type="submit">Watch Trailer</button>
            </form>
        </div>
    </div>
    <?php endforeach; ?>
    <?php elseif (isset($_GET['query'])): ?>
    <p>No results found for "<?= htmlspecialchars($_GET['query']) ?>".</p>
    <?php endif; ?>

</body>

</html>

next நாம் Trailer ஐ TMDb இலிருந்து பெற்றுக் கொள்வதற்காக அடுத்த Trailer.php ஐ உருவாக்க வேண்டும். இங்கும் நாம் எமது API Key கொடுக்க வேண்டும்.

Trailer.php

<?php
$api_key = "";
$movie_id = $_POST['movie_id'] ?? null;

if ($movie_id) {
    $url = "https://api.themoviedb.org/3/movie/$movie_id/videos?api_key=$api_key&language=en-US";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    curl_close($ch);

    $data = json_decode($response, true);
    $video = null;

    if (isset($data['results'])) {
        foreach ($data['results'] as $vid) {
            if ($vid['site'] == 'YouTube' && $vid['type'] == 'Trailer') {
                $video = $vid;
                break;
            }
        }
    }

    if ($video): ?>
<!DOCTYPE html>
<html>

<head>
    <title>Trailer</title>
</head>

<body style="text-align:center; padding-top:50px;">
    <h2><?= htmlspecialchars($video['name']) ?></h2>
    <iframe width="560" height="315" src="https://www.youtube.com/embed/<?= $video['key'] ?>" frameborder="0"
        allowfullscreen></iframe>
</body>

</html>
<?php else: ?>
<p>No trailer found for this movie.</p>
<?php endif;
}
?>

User Menu

Actually நாம் எமது Localhost இனுள் சென்று நமது Apps ஐ Run பண்ணிக் கொள்ள வேண்டும். localhost/test. இது போல் வந்திருக்கும் எமது ஆனது.

localhost/test
localhost/test

நான் இங்கு Mission: Impossible – The Final Reckoning என்ற பற்றி தேடப்போகின்றேன். So அப்படி தேடும் போது என்ன என்ன தகவல்கள் வருகின்றது எனப் பார்ப்போம்.

searchapp

இங்கே நீங்கள் அதன் தகவல்களை பார்க்கக்கூடியதாக இருக்கும். ஆனாலும் இது 2025 ஆம் ஆண்டுதான் வெளியாக உள்ளது. So நாம் ஏற்கனவே வந்த ஒரு திரைப்படத்தை தேடலாம். சர்கார் என்ற திரைப்படத்தை தேடிப் பார்ப்போம். எந்த வகையான முடிவுகள் வெளியாகின்றன என்று.

sarkar
sarkar

அது எந்த மொழி படமாக இருந்தாலும் இங்கே கிடைக்கும் . நாம் எமது Data Base இல் ஒன்றும் Insert பண்ணி வைக்க வில்லை ஆனாலும் இந்த அனைத்தும் TMDb என்ற இணையத்தளத்திலுருந்து API மூலம் தான பெற்றுக் கொள்கின்றோம். என்பதை நீங்கள் தெளிவாக நினைவில் வைத்துக் கொள்ளுங்கள். இதுதான் API இன் ஒரு அழகு.

Read About Smartphone Ranking

4 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *