{"id":17551001,"url":"https://github.com/brianlusina/tclient","last_synced_at":"2025-03-29T07:27:35.957Z","repository":{"id":65194309,"uuid":"514235630","full_name":"BrianLusina/tclient","owner":"BrianLusina","description":"Small BitTorrent Client","archived":false,"fork":false,"pushed_at":"2024-11-25T07:39:52.000Z","size":136,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-03T20:53:43.708Z","etag":null,"topics":["bittorrent-client","client","go","golang","torrent","torrent-client"],"latest_commit_sha":null,"homepage":"","language":"Go","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/BrianLusina.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2022-07-15T10:55:48.000Z","updated_at":"2024-11-25T07:39:49.000Z","dependencies_parsed_at":"2023-12-04T08:28:27.105Z","dependency_job_id":"e70d97d7-69d5-48b5-90cc-b854221e5e14","html_url":"https://github.com/BrianLusina/tclient","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Ftclient","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Ftclient/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Ftclient/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianLusina%2Ftclient/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrianLusina","download_url":"https://codeload.github.com/BrianLusina/tclient/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246153918,"owners_count":20732100,"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","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":["bittorrent-client","client","go","golang","torrent","torrent-client"],"created_at":"2024-10-21T04:44:35.251Z","updated_at":"2025-03-29T07:27:35.937Z","avatar_url":"https://github.com/BrianLusina.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TClient\n\n[![Build](https://github.com/BrianLusina/tclient/actions/workflows/build_app.yml/badge.svg)](https://github.com/BrianLusina/tclient/actions/workflows/build_app.yml)\n[![Lint](https://github.com/BrianLusina/tclient/actions/workflows/lint.yml/badge.svg)](https://github.com/BrianLusina/tclient/actions/workflows/lint.yml)\n[![Tests](https://github.com/BrianLusina/tclient/actions/workflows/tests.yml/badge.svg)](https://github.com/BrianLusina/tclient/actions/workflows/tests.yml)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/0aa1d4aa20d84894bb6b23524e0a3956)](https://www.codacy.com/gh/BrianLusina/tclient/dashboard?utm_source=github.com\u0026amp;utm_medium=referral\u0026amp;utm_content=BrianLusina/tclient\u0026amp;utm_campaign=Badge_Grade)\n\nA simple BitTorrent client in Go.\n\n## Getting started\n\nThis client is pretty small \u0026 simple, however it has been structured to use minimal dependencies and follows a standard pattern to make the code easier to read.\n\nThere are a couple of things needed to get started.\n\n1. [Go 1.18](https://go.dev/)\n\nInstructions on installing Go 1.18 can be found in the link provided.\n\nPretty much that's it :)\n\nNow, download dependencies with:\n\n```bash\nmake install\n```\n\n## Usage\n\nThe options available are:\n\n``` plain\nUsage:\n  -input string\n        Input file\n  -output string\n        Where to download the file (default \"./\")\n```\n\nYou can build the application and run it or run it directly with:\n\n``` bash\ngo run cmd/cli/main.go -input \u003cTORRENT_FILE_PATH\u003e -output \u003cTORRENT_FILE_OUTPUT\u003e\n```\n\n`\u003cTORRENT_FILE_PATH\u003e` is the file path of the torrent file, `\u003cTORRENT_FILE_OUTPUT\u003e` is the output path that you intend the file to be downloaded to.\n\nFor example:\n\n```bash\ngo run cmd/cli/main.go -input debian-11.4.0-amd64-netinst.iso.torrent -output debian.iso\n```\n\nOptionally, you can build the application\n\n```bash\nmake build\n# or\ngo build -o \u003cOUTPUT_PATH\u003e cmd/cli/main.go\n```\n\n\u003e This will build the application in the [bin](./bin/) directory. If you use the second option to build the application, you can specify the `\u003cOUTPUT_PATH\u003e` directory.\n\nOnce done, you can use the binary as well:\n\n```bash\ntclient -input debian-10.2.0-amd64-netinst.iso.torrent -output debian.iso\n```\n\n\u003e This assumes the binary built is called `tclient`\n\n## Tests\n\nTests have been written for the source code and can be validated with running:\n\n```bash\nmake test\n# or\ngo test ./...\n```\n\n## Linting\n\nLinting can be done using [golanci-lint](https://golangci-lint.run/) and setup is as below:\n\n```bash\nmake setup-linting\n```\n\nNow run linting with:\n\n```bash\nmake lint\n```\n\nOther commands can be found in the [Makefile](./Makefile).\n\n## Limitations\n\n- Only supports .torrent files (no magnet links)\n- Only supports HTTP trackers\n- Does not support multi-file torrents\n- Strictly leeches (does not support uploading pieces)\n\n## Versioning\n\n[SemVer](https://semver.org/) is used for versioning. For the versions available, see the [tags](https://github.com/BrianLusina/tclient/tags) in this repository.\n\n## License\n\nView the project license [here](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianlusina%2Ftclient","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianlusina%2Ftclient","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianlusina%2Ftclient/lists"}