{"adoption": {"forks": 356, "observed_at": "2026-08-28T04:05:40.971494+00:00", "stars": 1821}, "canonical_url": "https://ross.abutalabs.com/products/tonyofrancis-fetch", "card": {"archived": false, "artifact_type": "library", "description": "The best file downloader library for Android", "domain": ["mobile-development", "android-tools", "files"], "enriched": true, "function": ["http-client", "file-upload", "networking"], "health_score": 30, "homepage": "https://www.meta.stackoverflow.com/tags/fetch2", "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["tonyofrancis/Fetch"], "name": "tonyofrancis/Fetch", "platform": ["jvm"], "pushed_at": "2024-12-03T12:51:00+00:00", "repo": "tonyofrancis/Fetch", "stars": 1821, "tags": ["file-downloader", "download-manager", "background-downloads", "okhttp", "resume-downloads", "download-queue", "android", "mobile"], "topics": ["android-development", "android", "downloader", "okhttp", "retrofit", "downloadmanager", "http", "gradle", "networking", "internet", "internet-of-things", "android-tv", "android-library", "application", "app", "mobile", "fast-networking", "httpurlconnection", "filedownloader", "filemanager"], "urls": [], "use_cases": ["download files in the background on android", "pause and resume large file downloads in my app", "download multiple files concurrently with priorities", "show download progress and speed in notifications", "retry failed downloads automatically on android", "download files only on wifi or specific network types", "track download eta and progress in my android app"], "what_it_is": "Fetch is a Kotlin file download manager library for Android that handles background, concurrent, pause/resume, and prioritized downloads with progress tracking and notification support. It wraps HTTP downloading (via OkHttp/HttpURLConnection) behind a simple request-based API.", "when_to_avoid": ["you only need simple one-off HTTP requests rather than managed downloads", "your project is not Android-based", "you need upload support or torrent/multi-protocol downloading"], "when_to_choose": ["you need a robust, dedicated download manager for an Android app with background and concurrent downloading", "you want pause/resume, retry, priority, and progress tracking out of the box", "you need Storage Access Framework, Content Provider, and URI support for saving files"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/tonyofrancis-fetch", "repo": "tonyofrancis/Fetch", "role": "main", "score": 30}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "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:05:40.971494+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.971494+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:19:57.867020+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1538bbdef4f244c31f8680ba0bd9c824f72e81aff028793576c47f137a0f24f", "fetched_at": "2026-08-28T04:05:40.971494+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tonyofrancis/Fetch"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 28}, "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": 3501, "days_push": 638, "days_rel": 638, "gap_med": 44.0, "n_releases_24m": 3}, "score": 30, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}