{"id":13569108,"url":"https://github.com/jerrymakesjelly/autoremove-torrents","last_synced_at":"2026-02-19T23:01:39.362Z","repository":{"id":37692773,"uuid":"122219647","full_name":"jerrymakesjelly/autoremove-torrents","owner":"jerrymakesjelly","description":"Automatically remove torrents according to your strategies.","archived":false,"fork":false,"pushed_at":"2024-09-03T22:03:27.000Z","size":467,"stargazers_count":797,"open_issues_count":79,"forks_count":129,"subscribers_count":12,"default_branch":"master","last_synced_at":"2025-10-22T06:36:58.978Z","etag":null,"topics":["autoremove","bt","pt","python","torrent","utils"],"latest_commit_sha":null,"homepage":"https://pypi.org/project/autoremove-torrents/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jerrymakesjelly.png","metadata":{"files":{"readme":"README-cn.rst","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2018-02-20T15:52:23.000Z","updated_at":"2025-10-11T10:31:48.000Z","dependencies_parsed_at":"2023-01-29T01:15:15.251Z","dependency_job_id":"388b3cac-d4a4-4ddb-92bf-11228d51cb19","html_url":"https://github.com/jerrymakesjelly/autoremove-torrents","commit_stats":{"total_commits":269,"total_committers":8,"mean_commits":33.625,"dds":0.5204460966542751,"last_synced_commit":"f87c821f4c8b49b4df42d7ae8c3c0cfa13080299"},"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/jerrymakesjelly/autoremove-torrents","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerrymakesjelly%2Fautoremove-torrents","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerrymakesjelly%2Fautoremove-torrents/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerrymakesjelly%2Fautoremove-torrents/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerrymakesjelly%2Fautoremove-torrents/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jerrymakesjelly","download_url":"https://codeload.github.com/jerrymakesjelly/autoremove-torrents/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jerrymakesjelly%2Fautoremove-torrents/sbom","scorecard":{"id":516165,"data":{"date":"2025-08-11","repo":{"name":"github.com/jerrymakesjelly/autoremove-torrents","commit":"c55b43c387109d27f2af9c48cea9aaec1db6f15a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":5,"reason":"Found 5/9 approved changesets -- score normalized to 5","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/build.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":0,"reason":"dependency not pinned by hash detected -- score normalized to 0","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:128: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:130: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:171: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:180: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/build.yml:182: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: third-party GitHubAction not pinned by hash: .github/workflows/build.yml:186: update your workflow using https://app.stepsecurity.io/secureworkflow/jerrymakesjelly/autoremove-torrents/build.yml/master?enable=pin","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:135","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:136","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:137","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:138","Warn: pipCommand not pinned by hash: .github/workflows/build.yml:139","Info:   0 out of   5 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 third-party GitHubAction dependencies pinned","Info:   0 out of   5 pipCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'","Warn: branch protection not enabled for branch 'dev'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":6,"reason":"4 existing vulnerabilities detected","details":["Warn: Project is vulnerable to: PYSEC-2013-22 / GHSA-27x4-j476-jp5f","Warn: Project is vulnerable to: PYSEC-2025-49 / GHSA-5rjg-fvgr-3xxf","Warn: Project is vulnerable to: GHSA-cx63-2mw6-8hw5","Warn: Project is vulnerable to: PYSEC-2022-43012 / GHSA-r9hx-vwmv-q579"],"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 29 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-20T01:52:44.128Z","repository_id":37692773,"created_at":"2025-08-20T01:52:44.128Z","updated_at":"2025-08-20T01:52:44.128Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29636040,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"ssl_error","status_checked_at":"2026-02-19T22:32:38.330Z","response_time":117,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["autoremove","bt","pt","python","torrent","utils"],"created_at":"2024-08-01T14:00:36.067Z","updated_at":"2026-02-19T23:01:39.345Z","avatar_url":"https://github.com/jerrymakesjelly.png","language":"Python","funding_links":[],"categories":["Python","BT"],"sub_categories":["Auto Remove"],"readme":"自动删种程序\n======================\n|PyPI| |GithubActionsCI| |ReadTheDocs| |Coverage| |Codacy| |Downloads| |MIT|\n\n这个程序可以帮助你删除种子。现在你再也不用担心你的磁盘空间了——通过你设置的策略，程序会帮你检查每一个种子是否满足删除的条件；如果是，那就自动地删除它。\n\n这个程序支持 qBittorrent、Transmission 或 μTorrent。 如果你喜欢，可以点个星星 :star2: :)\n\n文档：https://autoremove-torrents.readthedocs.io/zh_CN/latest/\n\n.. |GithubActionsCI| image:: https://github.com/jerrymakesjelly/autoremove-torrents/actions/workflows/build.yml/badge.svg?branch=master\n   :target: https://github.com/jerrymakesjelly/autoremove-torrents/actions\n.. |ReadTheDocs| image:: https://readthedocs.org/projects/autoremove-torrents-cn/badge/?version=latest\n   :target: https://autoremove-torrents.readthedocs.io/zh_CN/latest/?badge=latest\n.. |Codacy| image:: https://app.codacy.com/project/badge/Grade/ab6f14fa9d9845b8bc8edecaf8f705e4\n   :target: https://www.codacy.com/gh/jerrymakesjelly/autoremove-torrents/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=jerrymakesjelly/autoremove-torrents\u0026amp;utm_campaign=Badge_Grade\n.. |Coverage| image:: https://app.codacy.com/project/badge/Coverage/ab6f14fa9d9845b8bc8edecaf8f705e4\n    :target: https://www.codacy.com/gh/jerrymakesjelly/autoremove-torrents/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=jerrymakesjelly/autoremove-torrents\u0026amp;utm_campaign=Badge_Coverage\n.. |MIT| image:: https://img.shields.io/badge/license-MIT-blue.svg\n   :target: https://github.com/jerrymakesjelly/autoremove-torrents/blob/master/LICENSE\n.. |PyPI| image:: https://badge.fury.io/py/autoremove-torrents.svg\n    :target: https://badge.fury.io/py/autoremove-torrents\n.. |Downloads| image:: https://img.shields.io/pypi/dm/autoremove-torrents.svg\n    :target: https://pypi.org/project/autoremove-torrents/\n\n环境要求\n-------------\n\n* Python 2.7 或 Python 3\n\n推荐使用 Python 3.6 或更高版本的 Python。\n\n\n快速开始\n-------------\n安装\n+++++++++++++++++++\n从 pip 安装\n^^^^^^^^^^^^^^^^^\n::\n\n    pip install autoremove-torrents\n\n或者\n\n从 GitHub 安装\n^^^^^^^^^^^^^^^^^^^^\n::\n\n    git clone https://github.com/jerrymakesjelly/autoremove-torrents.git\n    cd autoremove-torrents\n    python3 setup.py install\n\n\n编写配置文件\n++++++++++++++++++++++++++++++\n为了让程序能按照你的想法去工作，你需要学习如何编写配置文件。\n\n你可以把配置文件放在磁盘的任何地方。不过，在默认情况下，autoremove-torrents 只在 Shell 的当前工作目录去找 ``config.yml``::\n\n    vim ./config.yml\n\n\n语法也比较简单，下面是一个例子::\n\n    my_task:\n      client: qbittorrent\n      host: http://127.0.0.1\n      username: admin\n      password: adminadmin\n      strategies:\n        my_strategy:\n          categories: IPT\n          remove: seeding_time \u003e 1209600 or ratio \u003e 1\n      delete_data: true\n\n\n在这个例子中，程序会自动删除那些标签是 IPT，做种时间超过 1209600 秒 **或者** 分享率大于 1 的种子。请查看 `文档`_ 以获得更多信息。\n\n.. _文档: https://autoremove-torrents.readthedocs.io/zh_CN/latest/\n\n运行\n++++\n::\n\n    autoremove-torrents\n\n如果你只是想看看哪些种子会被删除但并不想真的就删除它们，请使用 ``--view`` 命令行参数（``autoremove-torrents --view``）。\n\n\n设置计划任务\n-----------------------------\n如果你想每 15 分钟检查一次哪些种子可以被删除，Linux 的 ``crontab`` 程序可以帮你。首先::\n\n    crontab -e\n\n然后，在文件的最后加一行（请先确认 ``autoremove-torrents`` 在你系统中的路径）::\n\n*/15 * * * * /usr/bin/autoremove-torrents --conf=/home/jerrymakesjelly/autoremove-torrents/config.yml --log=/home/jerrymakesjelly/autoremove-torrents/logs\n\n``--conf`` 参数指示了配置文件的路径。\n``--log`` 参数指定了存储日志文件的路径（必须存在）。\n\n截图\n-----------\n|Screenshot|\n\n.. |Screenshot| image:: https://user-images.githubusercontent.com/6760674/174464634-15743d59-f1dc-41c9-bff6-6d90becaeb67.gif\n\n更新日志\n----------\n**2024.4.27 星期六*：版本 1.5.5。\n\n* 修复了 qBittorrent 4.5 及其后续版本的兼容性问题。(#157) (#173) (#174) (#182) (#186) 感谢 @Siriussee！\n    - 有关 API 变更的信息，请见 qbittorrent/qBittorrent#17563。\n\n同样，我们修复了最新版 qBittorrent 客户端的单元测试用例。感谢 @amefs！\n\n`更多更新日志`_\n\n.. _更多更新日志: https://autoremove-torrents.readthedocs.io/zh_CN/latest/changelog.html\n\n计划列表\n-----------\n看你们的反馈。如果你有任何问题，欢迎提交 `issues`_。\n\n.. _issues: https://github.com/jerrymakesjelly/autoremove-torrents/issues\n\n`点击这里`_ 查看TODO列表。\n\n.. _点击这里: https://github.com/jerrymakesjelly/autoremove-torrents/issues/63\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrymakesjelly%2Fautoremove-torrents","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjerrymakesjelly%2Fautoremove-torrents","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjerrymakesjelly%2Fautoremove-torrents/lists"}