{"adoption": {"forks": 103, "observed_at": "2026-08-28T04:04:08.017153+00:00", "stars": 1250}, "canonical_url": "https://ross.abutalabs.com/products/yandex-music-api", "card": {"archived": false, "artifact_type": "library", "description": "Неофициальная Python библиотека для работы с API сервиса Яндекс.Музыка", "domain": ["apis", "developer-tools", "media", "reverse-engineering"], "enriched": true, "function": ["http-client", "sdk", "auth", "serialization"], "health_score": 85, "homepage": "https://ym.marshal.dev", "language": "Python", "license": "LGPL-3.0", "license_family": "copyleft", "maturity": "active", "member_repos": ["MarshalX/yandex-music-api"], "name": "MarshalX/yandex-music-api", "platform": ["python", "cross-platform"], "pushed_at": "2026-04-19T10:20:12+00:00", "repo": "MarshalX/yandex-music-api", "stars": 1250, "tags": ["yandex-music", "unofficial-api", "asyncio", "music-streaming", "api-wrapper"], "topics": ["python", "yandex", "yandex-music", "api", "library", "yandexmusic", "yandex-api", "async", "asyncio", "asynchronous"], "urls": [], "use_cases": ["access yandex music account data from python", "download tracks from yandex music programmatically", "build a music bot using yandex music api", "get artist and track info from yandex music", "authenticate with yandex music via oauth device flow", "script playlists management for yandex music"], "what_it_is": "An unofficial Python client library for the undocumented Yandex Music API, built via reverse engineering. It offers both synchronous and asyncio-based clients with high-level wrapper classes and OAuth Device Flow authentication.", "when_to_avoid": ["you need an officially supported API with stability guarantees", "you work outside the Python ecosystem", "you need a service for other music platforms"], "when_to_choose": ["you need programmatic access to Yandex Music from Python", "you want sync or asyncio support in one library", "you need high-level wrapper objects instead of raw API calls"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/yandex-music-api", "repo": "MarshalX/yandex-music-api", "role": "main", "score": 72}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "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:04:08.017153+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:08.017153+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T05:07:43.240459+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9a75921d845c5d37f34dd29a57e8f40c16c7da1d09ad837d86537e9e0c4fe1e5", "fetched_at": "2026-08-28T04:04:08.017153+00:00", "kind": "readme", "missing": false, "url": "https://github.com/MarshalX/yandex-music-api"}, {"content_hash": "1be07f39ea304d791bcaf26ab18f07da29485b218be54b687658e1e29adc42a2", "fetched_at": "2026-08-29T12:18:43.021248+00:00", "kind": "homepage", "missing": false, "url": "https://ym.marshal.dev"}, {"content_hash": "9a32944323ded9181c4425cc8349def75660c1e196d68def4095d59dc19dc529", "fetched_at": "2026-08-29T12:18:43.024421+00:00", "kind": "site_page", "missing": false, "url": "https://ym.marshal.dev/yandex_music.artist.about_artist"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 78, "longevity": 100, "rhythm": 48}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2676, "days_push": 136, "days_rel": 137, "gap_med": null, "n_releases_24m": 1}, "score": 72, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}