65.9K
CodeProject is changing. Read more.
Home

CIMDBSearch Class

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.29/5 (6 votes)

Jun 6, 2008

CPOL

2 min read

viewsIcon

43544

downloadIcon

904

An article on a simple C++ IMDB search class

CIMDBSearch_project_screenshot.jpg

Introduction

This article is about a simple C++ class that can be used to search for movie information from the IMDB Web site. The IMDB Web site is organized as the free online service that offers detailed information about movies, series, actors etc. Please see more about it using this link. IMDB - Internet Movie Database is also a database system, so many applications are using this way of providing information to extract the details about movies, series, actors, filming locations, etc.

Background

The basic idea was to write a C++ class with a very simple interface to IMDB. I have found one or two .NET classes on SourceForge, but no implementation in C++. So, I have decided to give a small contribution to the world-wide C++ community. Also, for anyone that is developing a software for movie catalogisation, this class could be interesting.

Using the Code

To use the CIMDBSearch class, add IMDBSearch.h and IMDBSearch.cpp files to your project. Using few simple static methods of this class, you can extract information about the movie you are looking for on IMDB, see below:

 #include "IMDBSearch.h"

 // Search IMDB database
 if (CIMDBSearch::SearchIMDB(_T("Enter a searching keyword here..."), ST_TITLES_EXACT))
 {
     // Get number of search results
     int iNumberResults = CIMDBSearch::GetSearchCount();
     for (int i=0; i<iNumberResults; i++)
     {
         // Get search item
         LPSEARCH_INFO lpSearchItem = CIMDBSearch::GetSearchItem(i);
     }
 }

The previous code snippet will get you a list of the exact title matching inside the IMDB database. To get all possible titles, use the flag ST_TITLES_PARTIAL instead of the ST_TITLES_EXACT flag. The IMDB Web site returns different lists of titles during its search. One is Titles (Exact Matching), and the other one is Titles (Partial Matching). This flags support data extraction from these lists.

The definition of the SEARCH_INFO structure is the following:

 typedef struct _SEARCH_INFO
 {
     _TCHAR szPath[256];        // IMDB Web page with the movie details
     _TCHAR szTitle[256];       // The title of the movie
     _TCHAR szYear[256];        // Year the movie was filmed

 } SEARCH_INFO, *LPSEARCH_INFO;

To get the movie details, see the following:

     // Get movie details
     int item = 0;
     LPMOVIE_INFO lpMovieInfo = NULL;
     if ((lpMovieInfo=CIMDBSearch::GetMovieInfo(item)))
     {
     }

The definition of the MOVIE_INFO structure is the following:

 typedef struct _MOVIE_INFO
 {
     _TCHAR szUserRating[256];        // The movie user rating
     _TCHAR szDirector[256];          // The director
     _TCHAR szWriter[256];            // The writer
     _TCHAR szReleaseDate[256];       // First release date
     _TCHAR szGenre[256];             // The movie genre
     _TCHAR szPlot[1024];             // A short description
     _TCHAR szAwards[256];            // The awards
     _TCHAR szUserComments[1024];     // User comments
     _TCHAR szRuntime[256];           // The length of the movie
     _TCHAR szCountry[256];           // The movie production country
     _TCHAR szLanguage[256];          // The movie language
     _TCHAR szColor[256];             // Color system
     _TCHAR szAspectRatio[256];       // Picture aspect ratio
     _TCHAR szSoundMix[256];          // The sound quality
     _TCHAR szFilmingLocations[256];   // Filming locations
     _TCHAR szCompany[256];           // The movie production company
     _TCHAR szPoster[256];            // The link to the movie poster 
                                      // (.JPEG image generally)
     _TCHAR szCast[15][256];          // The movie cast

 } MOVIE_INFO, *LPMOVIE_INFO;

The last thing to do is to clear the memory by calling the CIMDBSearch::Clear() method before you exit your application.

Points of Interest

I was very interested in extracting the information from the IMDB Web site, since many popular movie catalogisation software use this free Web service to collect the details considering different movies when building home-made digital movie collections.

History

  • 6th June, 2008: Initial post