diff --git a/.gitignore b/.gitignore index 4470988..f81a3dd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ target/ -Cargo.lock \ No newline at end of file +Cargo.lock +.DS_Store \ No newline at end of file diff --git a/lib_rusty_torrent/README.md b/lib_rusty_torrent/README.md new file mode 100644 index 0000000..8a5a530 --- /dev/null +++ b/lib_rusty_torrent/README.md @@ -0,0 +1,77 @@ +# Lib Rusty Torrent + +A Bittorrent V1 Protocol a Rust library for handling torrent files, downloading files from torrents, and communicating with BitTorrent trackers. + +## Features + +- **Torrent Parsing:** Parse and deserialize torrent files into a structured representation. +- **BitTorrent Tracker Communication:** Communicate with BitTorrent trackers using the UDP protocol. +- **File Management:** Manage the creation and writing of files associated with a torrent download. +- **Peer Management:** Easy management of peers through abstracted methods + +## Installation + +To use this library in your Rust project, add the following line to your `Cargo.toml` file: + +```toml +[dependencies] +your_library_name = "0.1.0" +``` + +## Usage +### Parsing a Torrent File +```rust +use your_library_name::torrent::Torrent; + +#[tokio::main] +async fn main() { + let path = "path/to/your/file.torrent"; + match Torrent::from_torrent_file(path).await { + Ok(torrent) => { + // Process the torrent metadata + println!("Torrent Info: {:?}", torrent); + } + Err(err) => { + eprintln!("Error parsing torrent file: {}", err); + } + } +} +``` + +### Downloading Files + +```rust +use your_library_name::torrent::{Torrent, Tracker}; +use your_library_name::file::Files; + +#[tokio::main] +async fn main() { + // Load torrent information + let torrent_path = "path/to/your/file.torrent"; + let torrent = Torrent::from_torrent_file(torrent_path).await.expect("Error parsing torrent file"); + + // Create a tracker for finding peers + let tracker_address = "tracker.example.com:1337".parse().expect("Error parsing tracker address"); + let mut tracker = Tracker::new(tracker_address).await.expect("Error creating tracker"); + + // Find peers and start downloading + let peer_id = "your_peer_id"; + let mut files = Files::new(); + files.create_files(&torrent, "download_directory").await; + + let peers = tracker.find_peers(&torrent, peer_id).await; + + // Implement your download logic using the found peers + // ... + + println!("Download completed!"); +} +``` + +## Contribution + +Contributions are welcome! Feel free to open issues or submit pull requests. + +## License + +This project is licensed under the MIT License - see the LICENSE file for details. \ No newline at end of file