缺 Artist ID 的話,一直往後播,「歌手」會顯示異常
yorkxin opened this issue · 2 comments
yorkxin commented
所謂異常是,後播的會查詢它的歌手資訊,並且蓋掉某些前面播過的。
可能跟「從來沒在 KKBOX 裡播過這首歌」這個問題有關。
可能的解法
取得所有 Artist ID ,但這不存在網頁上所以比較難抓,只知道可以從匯出的 playlist 抓到。
那麼就有暴力解:
- 我們知道曲目 ID
- 可以強迫 OS 打開一堆
kkbox://play_song_xxxxxxx
- 這樣會灌到 Temporary Playlist (?) 和 All Songs ,再整理成 Playlist 匯出就行了。
這樣也可以解決「只知道 Song ID 不知道 Album ID」的問題。
不過應該是需要一個 KBL parser (XML parser) 來讓「從 KBL 檔抽出 Artist / Album ID」這件事自動化。
另外 Step 3 是沒辦法自動化的。
yorkxin commented
在 kkbox-scripting branch 實作了兩個 apple script 用來自動匯入和匯出 playlist 。
所謂自動匯入指的是 2. 這個步驟,也就是灌一堆 song 進去臨時歌單,然後再導到某個具名歌單。
所謂自動匯出是把 3. 這個步驟給自動化。
是用 apple script 操作 System Events (GUI Scripting) 硬幹的,問題有:
- KKBOX 軟體一更新可能就會失效
- 必須是英文版的 KKBOX(系統語言調成 English 優先)
- 包裝成 App 必須簽名過才能確保它可以得到 Assistive Access 的權限,但我沒有 Mac Developer 帳號,所以沒有實際簽成功過
- 承上,現在是從 Apple Script Editor 執行。
改良點:
- 「匯入」的操作自動化就好,總之是打開一堆
kkbox://
的連結而已 - 匯出 Playlist 可以手動做,總之不是很常做
- 要是有提供 KKBOX 網頁版的網址的話也可以抓到 album id 和 artist id
yorkxin commented
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