The Movie DB

研究強大的電影資料庫

--

以前想查什麼電影資料都是到維基百科,或是看過電影的影評、部落格之類的,踏入Swift的世界之後才知道有電影資料庫這種東西。

想研究電影API的使用,查到世界上最大的電影資料庫是IMDB,不過IMDB沒有提供官方的API可以使用,但還是有一些非官方的API可以用,小王子提供我研究另一個電影資料庫叫TMDB,仔細研究了TMDB的網站之後發現功能之強大,有關電影的資料通通找得到,而且還有官方的API可以使用,立刻就來註冊看看吧。

註冊完帳號的個人頁面

個人頁面有待看清單、收藏清單、還有我的最愛、推薦頁面、評價區及討論區,我最喜歡待看清單了,因為很常看到什麼預告片想要去看電影結果忘記去看,有了這個功能就比較不會忘記了。

一開始註冊的時候不知道為什麼按送出資料後一直出現訊息:

We falied to validate the captcha response. Want to try again?

試了好幾次之後都一樣,最後是切換語言為中文才成功(莫名其妙!?)。

想看什麼電影資料通通有

就拿最近看過的電影 玩命關頭-特別行動 來看好了,電影評分、票房、演員資料、電影海報、預告片什麼都有,真的蠻酷的。

題外話,女主角真的超正的(直接愛上)。

玩命關頭-特別行動

TMDB API

使用TMDB API除了要先註冊使用者帳號之外還要再取得API Key,登入帳號後到大頭照那邊點一下,接著點選Settings到設定頁面。

Settings

進入Settings頁面後可以看到API的選項,點進去後可以看到指示,依指示進行填資料、送出資料。

填資料前要先看落落長的法律條文

問得蠻細的資料(汗…),先選擇個人用戶,使用範圍有Web、Mobile Application等…我當然是選擇Mobile Application囉,送出資料之後會看到大頭照旁邊的小鈴鐺亮起,點進去會看到自己的API Key送來了。

API Key

回到Settings的API頁面,也會看到自己的API Key出現在這裡。

Settings / API / API Key

API Overview

先來看看TMDB API可以做什麼:

三種搜尋方法:

  1. /search:最基本的文字搜尋,透過字串搜尋最匹配的結果,此方法會考慮到所有原始的、翻譯的、替代名稱或標題。
  2. /discover:根據過濾器或可定義的值去搜尋電影或電視,例如:評分最高的電影?票房最高的電影?現正上映的電影?
  3. /find:根據現有的外部ID去搜尋,例如:利用某部電影或某位演員的IMDB ID搜尋任何匹配的內容。

General Features 一般特性

  • Top rated movies 最受好評的電影
  • Upcoming movies 即將上映的電影
  • Now playing movies 現正放映的電影
  • Popular movies 最受歡迎的電影
  • Popular TV shows 最受歡迎的電視節目
  • Top rated TV shows 最受好評的電視節目
  • On the air TV shows 正在播出的電視節目
  • Airing today TV shows 今日電視節目
  • Popular people 最受歡迎的人

Account Features 帳戶特性

  • Get details 取得詳細訊息
  • Get lists (created and marked as favourite) 取得清單(建立我的最愛清單)
  • Get favourite movie list 取得最愛電影清單
  • Get movie watch list 取得待看電影清單
  • Get rated movie list 取得電影分級清單
  • Get the account state for a movie (rated, marked as favourite or on watch list) 取得帳戶中的電影狀態(分級、標記為我的最愛或待看電影清單)

Account Session Features 用戶特性

  • Rate a movie 評分電影
  • Add/remove a movie to your favourites 新增/移除我的最愛中的電影
  • Add/remove a movie to your watch list 新增/移除待看清單中的電影

Guest Session Features (no sign up required) 訪客特性

  • Rate a movie 評分電影
  • Get a list of rated movies 取得電影分級清單

Movie Features 電影特性

  • Search: Search for movies with a text query. /search
  • Discover: Search for movies based on data. Movies are queryable by fields like average rating, certifications, release dates and genres. /discover
  • Find: Find movies based on an external ID like an IMDB ID. /find

就是一開始提到的三種搜尋方法。

Get details 可以做到的事:

  • Primary info 主要訊息
  • Alternative titles 副標題
  • Cast 演員
  • Crew 劇組
  • Images (posters, backdrops) 海報
  • Plot keywords 經典台詞
  • Release information 公開訊息
  • Trailers 預告片
  • Translations 翻譯
  • Similiar movies 類似的電影
  • Reviews 評論
  • Belongs to lists 分類
  • Changes 改編劇本(小說)

TV Features 電視節目特性

  • Search: Search for TV shows with a text query. /search
  • Discover: Search for TV shows based on data. TV shows are queryable by fields like average rating, air date, TV network and genres. /discover
  • Find: Find TV shows based on an external ID like an IMDB ID. /find

一樣適用三種搜尋方法。

Get details 可以做到的事:

  • Primary info 主要訊息
  • Cast 演員
  • Changes 改編劇本(小說)
  • Crew 劇組
  • Images (posters, backdrops) 海報
  • External IDs 外部ID
  • Translations 翻譯

TV Season Features 電視影集(第幾季)特性

Get details 可以做到的事:

  • Primary info 主要訊息
  • Cast 演員
  • Changes 改編劇本(小說)
  • Crew 劇組
  • Images (posters, backdrops) 海報
  • External IDs 外部ID

TV Episode Features 電視影集特性

Get details 可以做到的事:

  • Primary info主要訊息
  • Cast 演員
  • Changes 改編劇本(小說)
  • Crew 劇組
  • Images (posters, backdrops) 海報
  • External IDs 外部ID

Collection Features 收藏特性

  • Search 搜尋 /search

Get details 可以做到的事:

  • Images (posters, backdrops) 海報

所以只能收藏海報!?

People Features 關於人的搜尋特性(例如:演員)

  • Search: Search for people with a text query. /search
  • Find: Find people based on an external ID like an IMDB ID. /find

Get details 可以做到的事:

  • Primary info 主要訊息
  • Changes 改編劇本(小說)
  • Credits (movie, TV and combined) 參與過的電影或電視劇或客串
  • Images (profile) 個人照
  • Tagged images 被標記的照片

Company Features 關於公司的搜尋特性(電影公司、經紀公司)

  • Search 搜尋/search

Get details 可以做到的事:

  • Get movies 拍過/投資/出品的電影或電視

List Features 列表特性

  • Search 搜尋/search
  • Get list movies 取得電影清單

Genre Features 分類特性

  • Get list 取得清單
  • Get movies 取得電影

Plot Keyword Features 關鍵字特性

  • Search 搜尋/search

Get details 可以做到的事:

  • Get movies 取得電影

Job Features 工作特性

  • Get list 取得清單

終於知道為什麼這算是可以與IMDB批敵的電影資料庫,功能之強大,一時不知道要從何下手…

API Documentation

知道可以做什麼之後再來讀讀官方文件:

method太多了…我就不贅述…直接實作。

實作

TMDB API的Documentation很有趣的一個地方 “Try it out”

  1. 輸入自己的API Key試試看。
從Try it out輸入自己的API Key

2. 搜尋:2019年/語言為 en-US的電影,預設language為en-US我就不改了,在year欄位輸入:2019

輸入搜尋條件後按下SEND REQUEST

3. 出現的資料。

仔細看了一下,出現了我最近看的電影:

Fast & Furious Presents: Hobbs & Shaw (玩命關頭-特別行動)。

2019年的電影

4. JSON的格式。

也可以切換成JSON的格式,可以看到2019年語言為en-US的電影有20部。

JSON

玩命關頭-特別行動 在第五筆資料[4]。

Fast & Furious Presents: Hobbs & Shaw

5. 最棒的地方(超佛心)。

最讓我驚訝的地方是TMDB API居然還提供了各種程式語言的語法參考。

swift語法示範

後記

研究完TMDB API之後覺得TMDB API真是太有趣了,摸熟了TMDB API之後,就是要應用到APP之中囉!接下來要開始規劃我的電影App啦~

自己期待一下😆

10/01/2019 更新(利用TMDB API的實作):

如果有值得大家參考的地方再麻煩大家幫我拍拍手喲,謝謝大家耐心閱讀🙇‍♀️

--

--

Julia Wang
彼得潘的 Swift iOS / Flutter App 開發教室

Learning Programming , Hiking , Travels , Tour , Exploring nature 『你必須要很努力,才能看起來毫不費力』