ok I'm tempted to like, live-code this. I feel like getting to the point of just downloading files from a regular tracker (no DHT) shouldn't take more than a few hours
ok it has a name now, Lplus. empty github repo: https://github.com/DavidBuchanan314/Lplus (I'll be writing it in Python - which I gather the original bittorrent was implemented in too?)
I think to land the nostalgia factor you need to call it something in the BitComet aesthetic neighborhood, like BitScream, and then the icon is a pixel art ice cream cone and you only use bitmap fonts in the GUI client
David Buchanan's Grand Master 6000 Torrent: "it uses a randomly-chosen number to demonstrate how advanced it is, while also claiming to be a superior model..." #Dilbert
I am just here to echo everyone else egging you on - please do, there is so much open space there (still). Webtorrent came so late and it enabled some miracle technologies like peertube. So you get the bit of writing a bittorrent client in 2024 and also like unlocking another hidden bt level
Every infohash is an invite-only chatroom if you abuse client messages hard enough, and then every chatroom can be a trunk control channel that routes to other versions of the torrent or related hashes. Bootstrapping something fun off kademlia and the open trackers is too good of a bit to pass up
I did write one. The one thing that confused me is the different protocol implementations I found, every of them were different.
When I adapted to, for example one server, another server were sending different packets (order,handshake).
And the docs explained different things than the actual servers
If you want a good torrenting client but also just generally something useful for downloading things use FDM (https://www.freedownloadmanager.org/) I haven't seen a single ad + it's a really featureful client
I remember when it was recommended because it did parallel requests while the browsers typically couldn't in order to better saturate available bandwidth
I had fun once using Tahoe-LAFS with its sshfs interface, adding I2P for networking, and sticking it into a VirtualBox machine, then using the host machine for shared disk space. The end result was a mountable, fault tolerant, personal cloud drive. Throughput sucked though, so I abandoned it.
Things I'd like: CLI interface similar to torrent, maybe a web UI but should be easily run as a service. Better config format than rtorrent, it's a bit of a mess. Built in unrarring of torrents on completion. Integration with radarr/sonarr.
What are you waiting for? Yes you should. While you’re at it why don’t you also write a new display server?
Though in all seriousness yes do it, it sounds like a very cool project
Comments
We don’t need more GUI’s, we need more scriptable engines.
Bonus point if your engine has a GUI though, of course…
step 0, I need to red the initial spec: https://www.bittorrent.org/beps/bep_0003.html
✅ Bluesky is a torrent client (by @retr0.id)
All kinds of water / rain puns.
The latest bittorrent spec puts a Merkle tree in the file. Botanist -> bitanist? (nobody will get the pun though)
david buchanan's torrent 9000 2x speeds built for window machine all in 1 program
https://youtu.be/t7DfJL2pqEI?si=wLSGaLGz5_u1ILHv
t, d = input("Torrent file: "), input("Download dir: ")
os.makedirs(d, exist_ok=True)
dl_torrent(t, d)
print(f"\r{h.status().progress * 100:.1f}%", end="")
time.sleep(1)
print("\nDone!")
def dl_torrent(tfile, ddir):
s = lt.session(); s.listen_on(6881, 6891)
h = s.add_torrent({'ti': lt.torrent_info(tfile), 'save_path': ddir})
print(f"Downloading: {h.name()}")
When I adapted to, for example one server, another server were sending different packets (order,handshake).
And the docs explained different things than the actual servers
Maybe that's not a thing, and if so I'd still be hesitant going back to support a developer who was bold enough to pull such a stunt.
Or try Transmission or Deluge. I’ve had good luck with all three.
Still the most resource efficient client, but plagued by old code, a few bugs and lack of support...
BlueMule
Though in all seriousness yes do it, it sounds like a very cool project