- B
So What
DSub · 2m ago
- T
Take Five
Symfonium · 14m ago
- G
Goodbye Pork Pie Hat
Feishin · 31m ago
3 個用戶端 · 2 台伺服器 · 即時更新
自託管 · 開源 · MIT
Navidrome Stat 輪詢 Navidrome 伺服器的 getNowPlaying 介面,把所有 Subsonic 用戶端的播放匯聚成一塊自託管儀表板——收聽時數、趨勢、排行榜和年度回顧。資料從不離開你的機器。
Blue in Green
Miles Davis — Kind of Blue
Navidrome 的各個用戶端彼此不共享統計。Navidrome Stat 改為在伺服器端觀測——所有用戶端,同一條歷史。
So What
DSub · 2m ago
Take Five
Symfonium · 14m ago
Goodbye Pork Pie Hat
Feishin · 31m ago
3 個用戶端 · 2 台伺服器 · 即時更新
DSub、Symfonium、Feishin、網頁播放器——任何 Subsonic 用戶端的播放都匯入同一條歷史,多台 Navidrome 伺服器也不例外。
按小時與按天的趨勢、星期×小時熱力圖、用戶端佔比、轉碼率,以及可下鑽到可分享詳情頁的藝術家、專輯、曲目排行榜——支援時段與週期對比。
年度總量、連續收聽天數,以及你的年度藝術家、專輯與曲目——屬於你自己的 Wrapped。可按年份、伺服器、使用者與時區劃定範圍,並透過連結分享。
專輯封面經過帶驗證的、容量受限的快取——你的音樂庫保持私密。
已快取 1,024 張封面 · 128 MB
一切都在一個屬於你的 SQLite 檔案裡。按使用者匯出、匯入與刪除,可選 token 驗證,零遙測。
九個色板家族——Catppuccin、Nord、Dracula、Tokyo Night、Gruvbox、Solarized 等——每個都有配套的明暗變體。
简体中文、繁體中文、English、日本語、Deutsch、Français、Español。
九個色板家族、明暗成對,整個儀表板即時換色。點一個試試:
一頁看盡一整年:總量、連續天數,和陪你走過這一年的歌。
年度曲目
Blue in Green
範例資料——真實數字來自你自己的音樂庫。
無需用戶端外掛、無需註冊、不上雲。一個輕量容器,守在你的音樂伺服器旁邊。
每 10 秒(可設定)透過 Subsonic API 向每台 Navidrome 伺服器詢問正在播放的內容——介面本來就在。
暫停與中斷不計入。累計有效收聽超過門檻(預設 30 秒)才算一次播放。
有效播放寫入你磁碟上的 SQLite,在 39421 連接埠的自包含儀表板中呈現。
當伺服器支援 OpenSubsonic playbackReport 擴充時會自動採用,讓進度與時長統計更精確。還可以監看一個 Navidrome 智慧播放清單,把安裝前的收聽歷史匯入為估算播放。
複製、貼上,開啟 39421 連接埠。建議鎖定版本號,確保更新可重現。
services:
navidrome-stat:
image: stepaniah/navidrome-statistic:v0.9.2
container_name: navidrome-stat
user: "1000:1000"
ports:
- "39421:39421"
volumes:
- navidrome-stat-data:/data
environment:
NAVIDROME_URL: ${NAVIDROME_URL}
NAVIDROME_USER: ${NAVIDROME_USER}
NAVIDROME_PASS: ${NAVIDROME_PASS}
STATS_API_TOKEN: ${STATS_API_TOKEN}
DATABASE_URL: /data/navidrome_stats.db
restart: unless-stopped
volumes:
navidrome-stat-data: docker run -d --name navidrome-stat \
-p 39421:39421 \
-e NAVIDROME_URL=https://navidrome.example.com \
-e NAVIDROME_USER=you \
-e NAVIDROME_PASS=change-me \
-e STATS_API_TOKEN=$(openssl rand -hex 24) \
-v navidrome-stat-data:/data \
stepaniah/navidrome-statistic:v0.9.2 NAVIDROME_URL=https://navidrome.example.com
NAVIDROME_USER=example_user
NAVIDROME_PASS=change-me
STATS_API_TOKEN=use-a-long-random-value 設定 STATS_API_TOKEN 後,首次存取在登入頁輸入一次即可——瀏覽器只保存 HttpOnly 會話 Cookie,而非 token 本身。
完整設定參考收聽歷史只存在於你自己資料卷裡的一個 SQLite 檔案。
設定頁內建按使用者的 JSON 匯出、匯入與刪除。
設定 STATS_API_TOKEN 後儀表板與 API 均需登入——工作階段使用 HttpOnly Cookie。
容器唯一的外呼對象就是你的 Navidrome 伺服器。
多個實例輪詢同一批伺服器會導致播放被重複計數。
收聽歷史在 SQLite 中明文儲存。設定頁保存的憑證經本地金鑰檔案加密存放——防的是隨手翻看備份,防不了已被完全攻陷的主機。
遠端存取請置於你的 HTTPS 反向代理之後。
任何相容 Subsonic 的用戶端——DSub、Symfonium、Feishin、play:Sub、substreamer、Navidrome 網頁端等。統計資料來自伺服器端的 getNowPlaying 介面,用戶端無需安裝任何東西。
可以。在 設定 → 連線 中逐一新增;播放按來源標記,儀表板可按伺服器或使用者篩選。
可以。讓某個已儲存的連線監看一個 Navidrome 智慧播放清單(.nsp,例如「最近播放」),Navidrome Stat 會按每首歌的最近播放時間戳匯入一條估算播放。重複執行不會重複計數,已被即時輪詢涵蓋的播放會跳過,且只匯入安裝之前的收聽。
能。儀表板篩選條件、藝術家與專輯詳情頁以及年度回顧的範圍都保存在 URL 裡——重新整理不丟檢視,複製連結即可分享。用戶端詳情頁的名稱透過 POST 請求傳送,不會出現在可分享的 URL 中。
累計有效收聽時長需超過 PLAY_THRESHOLD_SEC(預設 30 秒)。暫停與失聯時段不計入;檢查點更新同一條記錄;未達門檻就結束的工作階段會單獨保存為播放嘗試,不計為播放。
在 設定 → 偏好 中可選擇合併或拆分藝術家署名。拆分模式下每次播放為每位參與藝術家各計一次,而曲目數、總播放次數與總收聽時數保持不變。
任何講 Subsonic API 的伺服器都可以,但專案只針對 Navidrome 開發與測試。伺服器支援的 OpenSubsonic 擴充會被自動採用。
Last.fm 把 scrobble 存在別人的雲端;Maloja 雖然自託管,但仍依賴用戶端主動提交收聽記錄。Navidrome Stat 完全不需要用戶端配合——它直接觀測伺服器自己的 now-playing 資料流,任何 Subsonic 用戶端預設被涵蓋,資料也只留在你的磁碟上。
在你自己磁碟上容器 /data 卷中的一個 SQLite 檔案裡。你可以在設定頁將其匯出為 JSON、匯入到別處,或刪除某個使用者的收聽歷史。
一個輕量容器、一個 SQLite 檔案、10 秒一次的輪詢——樹莓派也能輕鬆跑。