{"id":30576389,"url":"https://github.com/aldenml/libtorrent4j","last_synced_at":"2025-12-29T23:22:43.614Z","repository":{"id":33263554,"uuid":"155129648","full_name":"aldenml/libtorrent4j","owner":"aldenml","description":"libtorrent for java, a swig Java interface for libtorrent","archived":false,"fork":false,"pushed_at":"2025-08-11T02:57:04.000Z","size":4821,"stargazers_count":245,"open_issues_count":18,"forks_count":37,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-08-11T03:11:11.516Z","etag":null,"topics":["android","bittorrent","cpp","cpp-bindings","dht","dht-network","java","jni","library","libtorrent","p2p","peer-to-peer","swig","swig-binding","torrent","webtorrent"],"latest_commit_sha":null,"homepage":"http://libtorrent4j.org","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aldenml.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.txt","contributing":null,"funding":null,"license":"LICENSE.md","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}},"created_at":"2018-10-29T00:30:31.000Z","updated_at":"2025-08-11T02:57:03.000Z","dependencies_parsed_at":"2024-10-27T22:57:07.866Z","dependency_job_id":"18985d4e-4965-4d6e-930d-2a5ad9eafd5f","html_url":"https://github.com/aldenml/libtorrent4j","commit_stats":null,"previous_names":[],"tags_count":41,"template":false,"template_full_name":null,"purl":"pkg:github/aldenml/libtorrent4j","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldenml%2Flibtorrent4j","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldenml%2Flibtorrent4j/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldenml%2Flibtorrent4j/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldenml%2Flibtorrent4j/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aldenml","download_url":"https://codeload.github.com/aldenml/libtorrent4j/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aldenml%2Flibtorrent4j/sbom","scorecard":{"id":178407,"data":{"date":"2025-08-11","repo":{"name":"github.com/aldenml/libtorrent4j","commit":"fbf2a3f9acb4f2aeb6b403bc16e57399a7fbc81a"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":4.7,"checks":[{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","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":"Maintained","score":10,"reason":"11 commit(s) and 11 issue activity found in the last 90 days -- score normalized to 10","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"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":"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":"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":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/android.yml:1","Warn: no topLevel permission defined: .github/workflows/linux.yml:1","Warn: no topLevel permission defined: .github/workflows/macos.yml:1","Warn: no topLevel permission defined: .github/workflows/windows.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":"Binary-Artifacts","score":9,"reason":"binaries present in source code","details":["Warn: binary detected: gradle/wrapper/gradle-wrapper.jar:1"],"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":"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":"License","score":9,"reason":"license file detected","details":["Info: project has a license file: LICENSE.md:0","Warn: project license file does not contain an FSF or OSI license."],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"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":"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":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"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":"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/android.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:79: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:90: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:146: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:157: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:213: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:224: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/android.yml:281: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/android.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:24: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:49: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:60: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:102: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:113: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/linux.yml:160: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/linux.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:22: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:50: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:61: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/macos.yml:99: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/macos.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:16: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/windows.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/windows.yml:36: update your workflow using https://app.stepsecurity.io/secureworkflow/aldenml/libtorrent4j/windows.yml/master?enable=pin","Warn: containerImage not pinned by hash: swig/android-build/Dockerfile:1: pin your Docker image by updating ubuntu:20.04 to ubuntu:20.04@sha256:8feb4d8ca5354def3d8fce243717141ce31e2c428701f6682bd2fafe15388214","Info:   0 out of  20 GitHub-owned GitHubAction dependencies pinned","Info:   0 out of   1 containerImage 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":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 30 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-16T18:18:28.258Z","repository_id":33263554,"created_at":"2025-08-16T18:18:28.258Z","updated_at":"2025-08-16T18:18:28.258Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272596478,"owners_count":24962123,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-28T02:00:10.768Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["android","bittorrent","cpp","cpp-bindings","dht","dht-network","java","jni","library","libtorrent","p2p","peer-to-peer","swig","swig-binding","torrent","webtorrent"],"created_at":"2025-08-29T01:02:02.306Z","updated_at":"2025-12-29T23:22:43.575Z","avatar_url":"https://github.com/aldenml.png","language":"C++","funding_links":[],"categories":["C++","网络编程"],"sub_categories":["Spring Cloud框架"],"readme":"# libtorrent4j\n\n[![macOS](https://github.com/aldenml/libtorrent4j/workflows/macOS/badge.svg)](https://github.com/aldenml/libtorrent4j/actions?query=workflow%3AmacOS)\n[![Linux](https://github.com/aldenml/libtorrent4j/workflows/Linux/badge.svg)](https://github.com/aldenml/libtorrent4j/actions?query=workflow%3ALinux)\n[![Windows](https://github.com/aldenml/libtorrent4j/workflows/Windows/badge.svg)](https://github.com/aldenml/libtorrent4j/actions?query=workflow%3AWindows)\n[![Android](https://github.com/aldenml/libtorrent4j/workflows/Android/badge.svg)](https://github.com/aldenml/libtorrent4j/actions?query=workflow%3AAndroid)\n[![Codacy Badge](https://api.codacy.com/project/badge/Grade/5dda1f00528e4d93864eb8694c702bba)](https://app.codacy.com/manual/aldenml/libtorrent4j/dashboard)\n[![Maven Central](https://img.shields.io/maven-central/v/org.libtorrent4j/libtorrent4j.svg?label=maven)](https://central.sonatype.com/search?namespace=org.libtorrent4j)\n\nA swig Java interface for [libtorrent](https://github.com/arvidn/libtorrent).\n\n| Features |   |\n|---|---|\n| Support for WebTorrent | https://webtorrent.io |\n| Sequential downloading |  |\n| Torrents queueing and prioritizing |  |\n| Torrent content selection and prioritizing | |\n| NAT-PMP and UPnP support | |\n| Fast resume support | |\n| HTTP proxies and basic authentication | |\n| IP filter | |\n| Torrents over SSL |  |\n| `lt_donthave` extension | [BEP 54](https://www.bittorrent.org/beps/bep_0054.html) |\n| Magnet URI extension - specify indices to download | [BEP 53](https://www.bittorrent.org/beps/bep_0053.html) |\n| BitTorrent Protocol v2 | [BEP 52](https://www.bittorrent.org/beps/bep_0052.html) |\n| DHT Infohash Indexing | [BEP 51](https://www.bittorrent.org/beps/bep_0051.html) |\n| Tracker Protocol Extension: Scrape | [BEP 48](https://www.bittorrent.org/beps/bep_0048.html) |\n| Padding files and attributes | [BEP 47](https://www.bittorrent.org/beps/bep_0047.html) |\n| Multiple-address operation for the DHT | [BEP 45](https://www.bittorrent.org/beps/bep_0045.html) |\n| Storing arbitrary data in the DHT | [BEP 44](https://www.bittorrent.org/beps/bep_0044.html) |\n| Read-only DHT Nodes | [BEP 43](https://www.bittorrent.org/beps/bep_0043.html) |\n| IPv6 extension for DHT | [BEP 32](https://www.bittorrent.org/beps/bep_0032.html) |\n| uTorrent transport protocol (uTP) | [BEP 29](https://www.bittorrent.org/beps/bep_0029.html) |\n| Private Torrents | [BEP 27](https://www.bittorrent.org/beps/bep_0027.html) |\n| Tracker Returns External IP | [BEP 24](https://www.bittorrent.org/beps/bep_0024.html) |\n| Tracker Returns Compact Peer Lists | [BEP 23](https://www.bittorrent.org/beps/bep_0023.html) |\n| Extension for Partial Seeds | [BEP 21](https://www.bittorrent.org/beps/bep_0021.html) |\n| HTTP/FTP Seeding (GetRight-style) | [BEP 19](https://www.bittorrent.org/beps/bep_0019.html) |\n| Superseeding | [BEP 16](https://www.bittorrent.org/beps/bep_0016.html) |\n| UDP Tracker Protocol | [BEP 15](https://www.bittorrent.org/beps/bep_0015.html) |\n| Local Service Discovery (LSD) | [BEP 14](https://www.bittorrent.org/beps/bep_0014.html) |\n| Multitracker Metadata Extension | [BEP 12](https://www.bittorrent.org/beps/bep_0012.html) |\n| Peer Exchange (PEX) | [BEP 11](https://www.bittorrent.org/beps/bep_0011.html) |\n| Extension Protocol | [BEP 10](https://www.bittorrent.org/beps/bep_0010.html) |\n| Magnet links | [BEP 9](https://www.bittorrent.org/beps/bep_0009.html) |\n| IPv6 Tracker Extension | [BEP 7](https://www.bittorrent.org/beps/bep_0007.html) |\n| Distributed hash table (DHT) | [BEP 5](https://www.bittorrent.org/beps/bep_0005.html) |\n\n## Using\n\nDownload [the latest JAR](https://search.maven.org/classic/remote_content?g=org.libtorrent4j\u0026a=libtorrent4j\u0026v=LATEST) or get the dependency via Maven:\n```xml\n\u003cdependency\u003e\n  \u003cgroupId\u003eorg.libtorrent4j\u003c/groupId\u003e\n  \u003cartifactId\u003elibtorrent4j\u003c/artifactId\u003e\n  \u003cversion\u003e2.x.x\u003c/version\u003e\n\u003c/dependency\u003e\n```\nor Gradle:\n```groovy\ncompile 'org.libtorrent4j:libtorrent4j:2.x.x'\n```\n\nIf you use ProGuard to obfuscate/minify make sure to add the following statement\n\n`-keep class org.libtorrent4j.swig.libtorrent_jni {*;}`\n\nNote that there are multiple versions of libtorrent4j for different platforms:\n```\nlibtorrent4j\nlibtorrent4j-android-\u003carch\u003e\nlibtorrent4j-macos\nlibtorrent4j-linux\nlibtorrent4j-windows\n```\nThese are all different artifacts, you need to select according to your architecture.\n\nFor examples look at [demos](https://github.com/aldenml/libtorrent4j/tree/master/demo)\nand [tests](https://github.com/aldenml/libtorrent4j/tree/master/src/test/java/org/libtorrent4j).\n\nArchitectures supported:\n\n- Android (armeabi-v7a, arm64-v8a, x86, x86_64)\n- macOS (arm64)\n- Linux (x86_64)\n- Windows (x86_64)\n\n#### About stability\n\nThis library tracks libtorrent [`master`](https://github.com/arvidn/libtorrent/tree/master) branch.\nThe branch is very stable, runs a lot of tests, and receives bug fixes quickly.\n\n## Android local builds\n\nIt's possible to build android binaries locally. The solution is docker based, you\nneed to have Docker installed and running (see https://docs.docker.com/engine/install/).\n\nGo to the folder `swig/android-build` and perform all the operations inside it.\n\n1 - Build the docker image just one time (takes a long time):\n```\ndocker build -t lt4j:latest .\n```\n\n2 - Select your architecture and run the build script, for example:\n```\n./build-arm.sh\n```\n\n3 - Collect the jars in `build/libs` at the root of the project. Repeat\nthe step 2) for the desired architectures.\n\n## License\n\nLicensed under the terms of the MIT license, available [here](LICENSE.md).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldenml%2Flibtorrent4j","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faldenml%2Flibtorrent4j","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faldenml%2Flibtorrent4j/lists"}