{"adoption": {"forks": 80, "observed_at": "2026-08-28T04:05:11.019649+00:00", "stars": 1611}, "canonical_url": "https://ross.abutalabs.com/products/qbit_manage", "card": {"archived": false, "artifact_type": "cli-tool", "description": "This tool will help manage tedious tasks in qBittorrent and automate them. Tag, categorize, remove Orphaned data, remove unregistered torrents and much much more.", "domain": ["self-hosted", "developer-tools", "files"], "enriched": true, "function": ["workflow-automation", "scheduling", "developer-tools"], "health_score": 100, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["StuffAnThings/qbit_manage"], "name": "StuffAnThings/qbit_manage", "platform": ["python", "cli", "cross-platform", "self-hosted"], "pushed_at": "2026-08-24T20:16:03+00:00", "repo": "StuffAnThings/qbit_manage", "stars": 1611, "tags": ["qbittorrent", "torrent-management", "cross-seed", "seedbox", "torrents", "automation", "docker"], "topics": ["python", "torrent-management", "qbittorrent", "cross-seed"], "urls": [], "use_cases": ["automatically tag torrents based on tracker urls in qbittorrent", "remove unregistered torrents from qbittorrent", "delete orphaned files not referenced by qbittorrent", "apply share limits and stop seeding after ratio or seed time", "manage qbittorrent categories based on save paths", "move deleted torrent data to a recycle bin folder", "run qbittorrent maintenance on a schedule"], "what_it_is": "A Python CLI tool and Docker image that automates tedious qBittorrent management tasks such as tagging, categorizing, share limits, and cleanup. It can run on a schedule to remove unregistered torrents, orphaned files, and manage seeding rules.", "when_to_avoid": ["you use a torrent client other than qBittorrent", "you need a GUI for torrent management rather than config-file-driven automation", "you only need a one-off torrent search or download tool"], "when_to_choose": ["you run qBittorrent on a seedbox or home server and want hands-off maintenance", "you cross-seed torrents and need careful removal of unregistered entries without deleting shared data", "you want scheduled automation of tagging, categories, and share limits"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/qbit_manage", "repo": "StuffAnThings/qbit_manage", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "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:11.019649+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:11.019649+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:51:11.484446+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "985268be028640d94ba0170872208b74f09a4c5c385bff64e949a514afd0407a", "fetched_at": "2026-08-28T04:05:11.019649+00:00", "kind": "readme", "missing": false, "url": "https://github.com/StuffAnThings/qbit_manage"}, {"content_hash": "93c046a52ff231a410a157f695516ab17152d1015001fd3c92ac835553d8bd8d", "fetched_at": "2026-08-29T11:23:09.717719+00:00", "kind": "registry_pypi", "missing": false, "url": "https://pypi.org/pypi/qbit_manage/json"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 98}, "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": 2020, "days_push": 9, "days_rel": 18, "gap_med": 12.5, "n_releases_24m": 37}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}