- 用YouTube Data API 取得我在 YouTube 公開的的播放清單
- 將清單 Title 放到下拉選單
可是這樣每次一換頁,就要去叫一次 YouTube Data API,所以最好把結果 cache 在瀏覽器的 storage 裡面,有 localStorage、sessionStorage 等,我因為沒有用過 indexedDB,所以就用 indexedDB 當 cache,所以多一個步驟:
- 檢查 indexedDB 有沒有預存的播放清單
- 沒有的話就用 YouTube Data API 取得,並存入 indexedDB
- 將清單 Title 放到下拉選單
YouTube Data API
YouTube Data API 文件在 https://developers.google.com/youtube/v3/getting-started,就照這裡的說明:- 去 Google API Console 註冊 App,並取得 API Key
- 因為是取得公開的播放清單,所以認證可以略過,也不用下載 client library。
- 還需要 YouTube channel ID,這邊有講 https://support.google.com/youtube/answer/3250431?hl=zh-Hant。
YouTube Data API + indexedDB
就是做這三件事情:- 檢查 indexedDB 有沒有預存的播放清單
- 沒有的話就用 YouTube Data API 取得,並存入 indexedDB
- 將清單 Title 放到下拉選單
這邊一個比較特別的是 DBVersion,每天都會產生一個新的數字,這數字會越來越大,所以當
- indexedDB 沒有 MY_DBNAME,
- indexedDB 有 MY_DBNAME,但是版本小於指定的 DBVersion
其中有一點要注意的,當 onupgradeneeded 跑到 DB.createObjectStore() 那一行之後,就會發生 success 事件,所以在 onupgradeneeded 先把 success 的 callback 取消了。
cursor.continue(); 會讓 Minify JS 發生錯誤,所以改用 cursor['continue']()。
YouTube Data API + indexedDB + W3.CSS
以下是用了 W3.CSS 和 Font Awesome,要秀一個選單其實跟之前沒有什麼差別。只有 addPlaylist(DB) 裡面有一點點不一樣,不過作的事情其實都一樣。