yorkxin/kbl-generator

缺 Artist ID 的話,一直往後播,「歌手」會顯示異常

yorkxin opened this issue · 2 comments

所謂異常是,後播的會查詢它的歌手資訊,並且蓋掉某些前面播過的。

可能跟「從來沒在 KKBOX 裡播過這首歌」這個問題有關。


可能的解法

取得所有 Artist ID ,但這不存在網頁上所以比較難抓,只知道可以從匯出的 playlist 抓到。

那麼就有暴力解:

  1. 我們知道曲目 ID
  2. 可以強迫 OS 打開一堆 kkbox://play_song_xxxxxxx
  3. 這樣會灌到 Temporary Playlist (?) 和 All Songs ,再整理成 Playlist 匯出就行了。

這樣也可以解決「只知道 Song ID 不知道 Album ID」的問題。

不過應該是需要一個 KBL parser (XML parser) 來讓「從 KBL 檔抽出 Artist / Album ID」這件事自動化。

另外 Step 3 是沒辦法自動化的。

在 kkbox-scripting branch 實作了兩個 apple script 用來自動匯入和匯出 playlist 。

所謂自動匯入指的是 2. 這個步驟,也就是灌一堆 song 進去臨時歌單,然後再導到某個具名歌單。

所謂自動匯出是把 3. 這個步驟給自動化。

是用 apple script 操作 System Events (GUI Scripting) 硬幹的,問題有:

  1. KKBOX 軟體一更新可能就會失效
  2. 必須是英文版的 KKBOX(系統語言調成 English 優先)
  3. 包裝成 App 必須簽名過才能確保它可以得到 Assistive Access 的權限,但我沒有 Mac Developer 帳號,所以沒有實際簽成功過
  4. 承上,現在是從 Apple Script Editor 執行。

改良點:

  • 「匯入」的操作自動化就好,總之是打開一堆 kkbox:// 的連結而已
  • 匯出 Playlist 可以手動做,總之不是很常做
  • 要是有提供 KKBOX 網頁版的網址的話也可以抓到 album id 和 artist id

done

流程變這樣:

準備 list_of_songs.txt 裡面一行一個 KKBOX ID

$ kbl import list_of_songs.txt # 會暴力用 open kkbox://play_song_xxxxxx 把曲目灌進 KKBOX
$ # 這時候請不要改到暫存歌單
$ kbl dump list_of_songs.txt -o metadata.tsv # 從本機 DB 撈出 meta data