All Projects β†’ cenkalti β†’ Rain

cenkalti / Rain

Licence: mit
🌧 BitTorrent client and library in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to Rain

Btpd
⚑ The BitTorrent Protocol Daemon
Stars: ✭ 365 (-36.41%)
Mutual labels:  torrent, bittorrent
Radarr
A fork of Sonarr to work with movies Γ  la Couchpotato.
Stars: ✭ 5,707 (+894.25%)
Mutual labels:  torrent, bittorrent
Create Torrent
Create .torrent files
Stars: ✭ 264 (-54.01%)
Mutual labels:  torrent, bittorrent
autodl-rutorrent
ruTorrent plugin for autodl-community fork of autodl-irssi
Stars: ✭ 90 (-84.32%)
Mutual labels:  torrent, bittorrent
Newtrackon
newTrackon, a public open BitTorrent trackers monitoring tool
Stars: ✭ 325 (-43.38%)
Mutual labels:  torrent, bittorrent
Diffy
πŸŽžοΈπŸ’“πŸΏ Love streaming - It's always best to watch a movie together ! πŸ€—
Stars: ✭ 37 (-93.55%)
Mutual labels:  torrent, bittorrent
Ant
A lightweight, feature-rich, easy-to-use and nice-looking BitTorrent Client developed by golang, angular 7, and electron.
Stars: ✭ 292 (-49.13%)
Mutual labels:  torrent, bittorrent
ocelot
Alternative compiled announcer (ocelot)
Stars: ✭ 14 (-97.56%)
Mutual labels:  torrent, bittorrent
Webtorrent Hybrid
WebTorrent (with WebRTC support in Node.js)
Stars: ✭ 422 (-26.48%)
Mutual labels:  torrent, bittorrent
Parse Torrent
Parse a torrent identifier (magnet uri, .torrent file, info hash)
Stars: ✭ 325 (-43.38%)
Mutual labels:  torrent, bittorrent
parse-torrent-file
DEPRECATED: Parse a .torrent file and return an object of keys/values
Stars: ✭ 62 (-89.2%)
Mutual labels:  torrent, bittorrent
Torrent
Full-featured BitTorrent client package and utilities
Stars: ✭ 4,138 (+620.91%)
Mutual labels:  torrent, bittorrent
nexusphp
A private tracker application base on NexusPHP
Stars: ✭ 209 (-63.59%)
Mutual labels:  torrent, bittorrent
Nyaa
Bittorrent software for cats
Stars: ✭ 2,899 (+405.05%)
Mutual labels:  torrent, bittorrent
privtracker
Private BitTorrent tracker generator
Stars: ✭ 84 (-85.37%)
Mutual labels:  torrent, bittorrent
Bittorrent Protocol
Simple, robust, BitTorrent peer wire protocol implementation
Stars: ✭ 279 (-51.39%)
Mutual labels:  torrent, bittorrent
CheckWebPeer
Check WebRTC peers of torrents.
Stars: ✭ 19 (-96.69%)
Mutual labels:  torrent, bittorrent
torrent-spider
基于DHTηš„p2pη½‘η»œθ΅„ζΊηˆ¬θ™«
Stars: ✭ 65 (-88.68%)
Mutual labels:  torrent, bittorrent
Autodl Irssi
A community-driven fork of autodl-irssi
Stars: ✭ 315 (-45.12%)
Mutual labels:  torrent, bittorrent
Zeronet
ZeroNet - Decentralized websites using Bitcoin crypto and BitTorrent network
Stars: ✭ 17,227 (+2901.22%)
Mutual labels:  torrent, bittorrent

rain

BitTorrent client and library in Go. Running in production at put.io.

Build Status GoDoc GitHub Release Go Report Card

Features

Screenshot

Rain Screenshot

Installing

If you are on MacOS you can install from brew:

brew install cenkalti/rain/rain

Otherwise, get the latest binary from releases page.

Usage as torrent client

Rain is distributed as single binary file. The main use case is running rain server command and operating the server with rain client <subcommand> commands. Server consists of a BitTorrent client and a RPC server. rain client is used to give commands to the server. There is also rain client console command which opens up a text based UI that you can view and manage the torrents on the server. Run rain help to see other commands.

Usage as library

// Create a session
ses, _ := torrent.NewSession(torrent.DefaultConfig)

// Add magnet link
tor, _ := ses.AddURI(magnetLink, nil)

// Watch the progress
for range time.Tick(time.Second) {
	s := tor.Stats()
	log.Printf("Status: %s, Downloaded: %d, Peers: %d", s.Status.String(), s.Bytes.Completed, s.Peers.Total)
}

More complete example can be found under handleDownload function at main.go file.

See package documentation for complete API.

Configuration

All values have sensible defaults, so you can run Rain with an empty config but if you want to customize it's behavior, you can pass a YAML config with -config flag. Config keys must be in lowercase. See the description of values in here: config.go

Difference from other clients

Rain is the main BitTorrent client used at put.io. It is designed to handle hundreds of torrents while using low system resources. The main difference from other clients is that Rain uses a separate peer port for each torrent. This allows Rain to download same torrent for multiple accounts in same private tracker and keep reporting their ratio correctly.

Missing features

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].