Git Product home page Git Product logo

vincenzo's Introduction

Vincenzo

Vincenzo is a BitTorrent client with vim-like keybindings and a terminal based UI. Torrents can be downloaded using the CLI or UI.

image

Features

  • Terminal based UI
  • Vim-like keybindings
  • Multi-platform
  • Magnet links support
  • UDP connections with trackers, TCP connections with peers
  • Multithreaded. One OS thread specific for I/O

How to use

An example on how to download a torrent using the CLI. Please use the "--help" flag to read the descriptions of the CLI flags.

cargo run -- -d "/tmp/btr" -m "<insert magnet link here>" -q

Or

vcz -d "/tmp/btr" -m "<insert magnet link here>" -q

Configuration File

During the first startup, a default configuration file is created. The configuration file is located at the default config folder of your OS. At the moment, the only configuration option is: download_dir Linux: ~/.config/vincenzo/config.toml Windows: C:\Users\Alice\AppData\Roaming\Vincenzo\config.toml macOS: /Users/Alice/Library/Application Support/Vincenzo/config.toml

Supported BEPs

  • BEP 0003 - The BitTorrent Protocol Specification
  • BEP 0009 - Extension for Peers to Send Metadata Files
  • BEP 0010 - Extension Protocol
  • BEP 0015 - UDP Tracker Protocol
  • BEP 0023 - Tracker Returns Compact Peer Lists

Roadmap

[x] - Initial version of UI.
[x] - Download pipelining.
[x] - Endgame mode.
[x] - Pause and resume torrents.
[ ] - Use a buffered I/O strategy to reduce the number of writes on disk.
[ ] - Choking algorithm.
[ ] - Anti-snubbing.
[ ] - Resume torrent download from a file.
[ ] - Change piece selection strategy.
[ ] - Select files to download.
[ ] - Support streaming of videos/music on MPV.
[ ] - ...

Tests

This program is well-tested and I'm always improving the tests.

vincenzo's People

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.