{"adoption": {"forks": 103, "observed_at": "2026-08-28T04:07:28.560254+00:00", "stars": 2898}, "canonical_url": "https://ross.abutalabs.com/products/neriplayer", "card": {"archived": false, "artifact_type": "application", "description": "A native Android audio player that combines multi-source streaming, local control, rich lyrics, and self-hosted sync. / ✨ 一个把多源在线播放、本地管理、歌词体验和自建同步做进原生 Android 的音频播放器 🎵", "domain": ["media", "android-tools", "privacy", "self-hosted", "entertainment"], "enriched": true, "function": ["audio-processing", "websocket", "self-hosted", "gui"], "health_score": 100, "homepage": null, "language": "Kotlin", "license": "GPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["cwuom/NeriPlayer"], "name": "cwuom/NeriPlayer", "platform": ["jvm"], "pushed_at": "2026-08-26T22:15:28+00:00", "repo": "cwuom/NeriPlayer", "stars": 2898, "tags": ["music-player", "jetpack-compose", "media3", "exoplayer", "lyrics", "karaoke-lyrics", "webdav", "listen-together", "equalizer", "multi-source-streaming", "offline-first", "android"], "topics": ["android", "music", "native-apps", "player", "websocket", "self-hosted", "equalizer", "exoplayer", "glsl", "jetpack-compose", "karaoke-lyrics", "listen-together", "media3", "privacy-focused", "shaders", "webdav", "usb-exclusive"], "urls": [], "use_cases": ["play music from multiple streaming sources on android", "android music player with synced lyrics", "sync playlists to webdav or github", "listen to music together with friends remotely", "download and cache songs for offline playback", "privacy-focused music player without cloud accounts", "karaoke-style lyrics display on android"], "what_it_is": "NeriPlayer is a native Android audio player built with Jetpack Compose and Media3 that combines multi-source online streaming (NetEase Cloud Music, Bilibili, YouTube Music) with local playback, download, playlist management, and rich lyrics features. It keeps data local-first with optional decentralized sync to the user's own GitHub or WebDAV storage, and supports a self-hosted 'listen together' server.", "when_to_avoid": ["you need an iOS, desktop, or cross-platform player", "you expect a built-in public music library or free content - the app provides none", "you want automatic scrobbling of play history back to streaming platforms (deliberately not supported for account safety)", "you need DRM circumvention or content redistribution - the project explicitly does not provide this"], "when_to_choose": ["you want one android app aggregating NetEase, Bilibili, and YouTube Music with your own accounts", "you want local-first data with self-hosted or personal-cloud sync instead of a vendor cloud", "you care about lyrics rendering, equalizer, widgets, and floating lyrics", "you want a self-hosted synchronized listening (listen-together) experience"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/neriplayer", "repo": "cwuom/NeriPlayer", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:28.560254+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:35:12.582082+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a453dac4370652613e38fc35d7c84b7d612fca6ba950f4fbc36b5eaa172a037", "fetched_at": "2026-08-28T04:07:28.560254+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cwuom/NeriPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 27, "rhythm": 86}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 390, "days_push": 7, "days_rel": 13, "gap_med": 0.5, "n_releases_24m": 81}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}