{"adoption": {"forks": 566, "observed_at": "2026-08-28T04:06:43.386654+00:00", "stars": 2392}, "canonical_url": "https://ross.abutalabs.com/products/listenermusicplayer", "card": {"archived": false, "artifact_type": "application", "description": "A Grace Material Design Music Player", "domain": ["media", "android-tools", "entertainment"], "enriched": true, "function": ["audio-processing", "gui"], "health_score": 20, "homepage": null, "language": "Java", "license": null, "license_family": "other", "maturity": "abandoned", "member_repos": ["hefuyicoder/ListenerMusicPlayer"], "name": "hefuyicoder/ListenerMusicPlayer", "platform": [], "pushed_at": "2017-03-31T08:55:34+00:00", "repo": "hefuyicoder/ListenerMusicPlayer", "stars": 2392, "tags": ["music-player", "material-design", "mvp-architecture", "rxjava", "retrofit", "lyrics", "lastfm", "kugou", "android", "mobile"], "topics": ["music-player", "android-application", "material-design", "mvp-android", "retrofit2-rxjava"], "urls": [], "use_cases": ["play local music on android with a material design player", "display synced lyrics while listening to music", "browse music by playlists, folders, and recently played", "learn mvp clean architecture with rxjava and dagger2 on android", "control playback with wired headset buttons", "switch between day and night themes in a music app"], "what_it_is": "ListenerMusicPlayer is an open-source Android music player for local music files, built with a Material Design UI inspired by Tencent's Qingting player. It uses an MVP-Clean architecture with Retrofit2, Dagger2, RxJava, and Glide, and integrates LastFM and Kugou APIs for metadata and lyrics.", "when_to_avoid": ["you need streaming from online music services", "you need a maintained app - the project has not been updated since 2017", "you need support for modern Android versions and APIs"], "when_to_choose": ["you want a lightweight offline music player for local files on Android", "you are studying MVP-Clean, RxJava, and Dagger2 patterns in a real app", "you want a Material Design player with lyrics and headset controls"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/listenermusicplayer", "repo": "hefuyicoder/ListenerMusicPlayer", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "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:06:43.386654+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.386654+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:27.348829+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "06ee0700d7c5c94c3487e3733d2c8d3db41ace9bd16e25ec9dda8f8151a355db", "fetched_at": "2026-08-28T04:06:43.386654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/hefuyicoder/ListenerMusicPlayer"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3492, "days_push": 3442, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}