{"adoption": {"forks": 250, "observed_at": "2026-08-28T04:04:39.758770+00:00", "stars": 1415}, "canonical_url": "https://ross.abutalabs.com/products/toro", "card": {"archived": false, "artifact_type": "library", "description": "Video list auto playback made simple, specially built for RecyclerView", "domain": ["android-tools", "mobile-development", "media"], "enriched": true, "function": ["video-processing", "ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["eneim/toro"], "name": "eneim/toro", "platform": [], "pushed_at": "2020-06-30T13:49:12+00:00", "repo": "eneim/toro", "stars": 1415, "tags": ["recyclerview", "exoplayer", "auto-playback", "video-player", "java", "media-playback", "video", "android", "mobile"], "topics": ["recyclerview", "video", "auto-playback", "exoplayer", "android"], "urls": [], "use_cases": ["auto-play videos in a scrolling feed like Twitter or TikTok", "pause video playback when a RecyclerView item scrolls off screen", "save and restore video playback positions across configuration changes", "use ExoPlayer with RecyclerView video lists", "manage multiple video players in a single list", "build a video feed app on Android"], "what_it_is": "Toro is an Android library that simplifies automatic video playback in RecyclerView lists, starting and pausing videos based on scroll position and app lifecycle. It supports both MediaPlayer and ExoPlayer with customizable player selection strategies.", "when_to_avoid": ["building for platforms other than Android", "you need a single full-screen video player without list scrolling", "you need a actively maintained solution with recent releases (last release 2020)", "your project uses Jetpack Compose rather than RecyclerView"], "when_to_choose": ["building an Android app with a scrollable video feed that should auto-play", "you need ExoPlayer or MediaPlayer integration with RecyclerView", "you want playback position persistence across orientation changes"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/toro", "repo": "eneim/toro", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "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:39.758770+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:04:39.758770+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:38:08.640550+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "4e587bbf4bf151b58c9c1829e10a818de7d0dd5086af1800c2fa1303eb0f6e75", "fetched_at": "2026-08-28T04:04:39.758770+00:00", "kind": "readme", "missing": false, "url": "https://github.com/eneim/toro"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3867, "days_push": 2255, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}