「為什麼正好是一個小時?」——Playlist 封面消失之謎的真相
上集末尾,留了一句:「由於 LMS 內部未知的渲染機制,播放一小時後 Playlist 的小圖示仍可能變回預設占位符……如果有神人可以解決那就完美了。」
我沒想到,這個「外觀小問題」會在半年後的某個週日,一口氣拖出三條蟲、四次錯誤診斷,還有一個從第一代 plugin 就躺在裡面、誰都沒發覺的真相。
那天下午,Mark 丟來一句:「請 debug,FLAC 播不了了。」Navidrome 升級(0.64.2)之後,音響裡的巴哈變成了 192kbps 的 mp3 味,還播放不了。Neo 兩分鐘破案:plugin 跟 Navidrome 要 FLAC 時送的是 `format=flc`——flc 是 LMS 自己的內部代號。舊版 Navidrome (0.60.3)看不懂 flc,裝傻直接給原檔不轉碼;新版學乖了,看不懂就轉 mp3。一行改成 `format=raw`,巴哈無損回魂。
正準備收工,Mark 又補一刀:「可是 playlist 讀縮圖很卡,navidrome 還一直出現 scan。」這一挖挖出第二條蟲:新版 Navidrome 對「查無封面」回傳 .webp 佔位圖,而 LMS 九年前寫死的圖片代理根本不識 webp,只能丢給雲端轉換,一張等三十秒 timeout。Navidrome 那邊更精采:自帶的 Deezer 藝人頭像抓取器正為五千多位藝人勤懇排隊重試,log 沖刷如瀑布。清佇列、關開關,最後改程式重編 Navidrome 還是回傳傳統的 .jpg 圖,把佔位圖換成合成純黑的 JPEG。
然後,幽靈登場。
「播放清單裡全部都是有圖的,」Mark 說,「但是開始播放『正好一小時』後,全部的圖跑掉,變成 LMS 的佔位圖。按下一首,整列報銷。但播放一切正常。」
一小時。這數字似曾相識——上集的 Scrobble 失靈,也是正好一小時。
