65.9K
CodeProject 正在变化。 阅读更多。
Home

CIMDBSearch 类

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.29/5 (6投票s)

2008年6月6日

CPOL

2分钟阅读

viewsIcon

43964

downloadIcon

927

一篇关于简单的 C++ IMDB 搜索类的文章

CIMDBSearch_project_screenshot.jpg

引言

本文介绍了一个简单的 C++ 类,可用于从 IMDB 网站搜索电影信息。IMDB 网站是一个免费的在线服务,提供关于电影、电视剧、演员等详细信息。请通过此链接了解更多信息。IMDB - 互联网电影数据库也是一个数据库系统,因此许多应用程序使用这种方式提供信息来提取关于电影、电视剧、演员、拍摄地点等细节。

背景

基本想法是编写一个具有非常简单的 IMDB 接口的 C++ 类。我在 SourceForge 上找到了一两个 .NET 类,但没有 C++ 的实现。因此,我决定为全球 C++ 社区做出一个小小的贡献。此外,对于正在开发电影目录软件的任何人来说,这个类可能很有趣。

Using the Code

要使用 CIMDBSearch 类,请将 IMDBSearch.hIMDBSearch.cpp 文件添加到您的项目中。使用该类的一些简单的 static 方法,您可以提取在 IMDB 上查找的电影信息,如下所示

 #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);
     }
 }

前面的代码片段将为您获取 IMDB 数据库中精确标题匹配的列表。要获取所有可能的标题,请使用 ST_TITLES_PARTIAL 标志代替 ST_TITLES_EXACT 标志。IMDB 网站在其搜索过程中返回不同的标题列表。一个是标题(精确匹配),另一个是标题(部分匹配)。这些标志支持从这些列表中提取数据。

SEARCH_INFO 结构的定义如下

 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;

要获取电影详情,请参见以下内容

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

MOVIE_INFO 结构的定义如下

 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;

最后要做的事情是在退出应用程序之前调用 CIMDBSearch::Clear() 方法来清除内存。

关注点

我非常感兴趣从 IMDB 网站提取信息,因为许多流行的电影目录软件使用这个免费的网络服务来收集有关不同电影的细节,以便构建自制的数字电影收藏。

历史

  • 2008 年 6 月 6 日:初始发布
© . All rights reserved.