SSD-friendly FS crawler for the Aquatic BitTorrent tracker, based on librqbit API https://crates.io/crates/aquatic-crawler
Find a file
2025-07-07 15:52:54 +03:00
.github fix build environment 2025-07-07 00:26:22 +03:00
src update comment 2025-07-07 15:52:54 +03:00
.gitignore initial commit 2025-06-07 12:28:02 +03:00
Cargo.toml implement option to export index collected as the static rss feed, set save_torrents as false by default 2025-07-06 22:51:51 +03:00
LICENSE Initial commit 2025-06-06 12:49:40 +03:00
README.md update comment 2025-07-07 15:52:54 +03:00

aquatic-crawler

Build Dependencies crates.io

Crawler for Aquatic BitTorrent tracker based on librqbit API

Note

Project in development!

Roadmap

Tip

For details on all implemented features, see the Options section

  • Info-hash versions
    • 1
    • 2
  • Import sources
    • IPv4 / IPv6 info-hash JSON/API (requires PR#233)
      • local file path (--infohash-file)
      • remote URL
  • Export options
    • File system (--storage)
      • resolve infohash to the .torrent file (--export-torrents)
      • download content files match the regex pattern (--preload-regex)
    • RSS feed (includes resolved torrent meta and magnet links to download)
    • Manticore full text search
    • SQLite

Install

  1. git clone https://github.com/YGGverse/aquatic-crawler.git && cd aquatic-crawler
  2. cargo build --release
  3. sudo install target/release/aquatic-crawler /usr/local/bin/aquatic-crawler

Usage

aquatic-crawler --infohash /path/to/info-hash-ipv4.json\
                --infohash /path/to/info-hash-ipv6.json\
                --infohash /path/to/another-source.json\
                --tracker  udp://host1:port\
                --tracker  udp://host2:port\
                --preload  /path/to/directory\
                --enable-tcp

Options

  -d, --debug <DEBUG>
          Debug level

          * `e` - error
          * `i` - info
          * `t` - trace (run with `RUST_LOG=librqbit=trace`)

          [default: ei]

      --infohash <INFOHASH>
          Absolute path(s) or URL(s) to import infohashes from the Aquatic tracker JSON/API

          * PR#233 feature

      --tracker <TRACKER>
          Define custom tracker(s) to preload the `.torrent` files info

      --initial-peer <INITIAL_PEER>
          Define initial peer(s) to preload the `.torrent` files info

      --export-torrents <EXPORT_TORRENTS>
          Save resolved torrent files to given directory

      --export-rss <EXPORT_RSS>
          File path to export RSS feed

      --export-rss-title <EXPORT_RSS_TITLE>
          Custom title for RSS feed (channel)

          [default: aquatic-crawler]

      --export-rss-link <EXPORT_RSS_LINK>
          Custom link for RSS feed (channel)

      --export-rss-description <EXPORT_RSS_DESCRIPTION>
          Custom description for RSS feed (channel)

      --enable-dht
          Enable DHT resolver

      --enable-tcp
          Enable TCP connection

      --enable-upnp-port-forwarding
          Enable UPnP

      --enable-upload
          Enable upload (share received bytes with BitTorrent network)

      --preload <PRELOAD>
          Directory path to store preloaded data (e.g. `.torrent` files)

      --preload-clear
          Clear previous data collected on crawl session start

      --preload-regex <PRELOAD_REGEX>
          Preload only files match regex pattern (list only without preload by default)
          * see also `preload_max_filesize`, `preload_max_filecount` options

          ## Example:

          Filter by image ext ``` --preload-regex '(png|gif|jpeg|jpg|webp)$' ```

          * requires `storage` argument defined

      --preload-total-size <PRELOAD_TOTAL_SIZE>
          Stop crawler on total preload files size reached

      --preload-max-filesize <PRELOAD_MAX_FILESIZE>
          Max size sum of preloaded files per torrent (match `preload_regex`)

      --preload-max-filecount <PRELOAD_MAX_FILECOUNT>
          Max count of preloaded files per torrent (match `preload_regex`)

      --proxy-url <PROXY_URL>
          Use `socks5://[username:password@]host:port`

      --peer-connect-timeout <PEER_CONNECT_TIMEOUT>


      --peer-read-write-timeout <PEER_READ_WRITE_TIMEOUT>


      --peer-keep-alive-interval <PEER_KEEP_ALIVE_INTERVAL>


      --index-capacity <INDEX_CAPACITY>
          Estimated info-hash index capacity

          [default: 1000]

      --add-torrent-timeout <ADD_TORRENT_TIMEOUT>
          Max time to handle each torrent

          [default: 10]

      --sleep <SLEEP>
          Crawl loop delay in seconds

          [default: 300]

      --upload-limit <UPLOAD_LIMIT>
          Limit upload speed (b/s)

      --download-limit <DOWNLOAD_LIMIT>
          Limit download speed (b/s)

  -h, --help
          Print help (see a summary with '-h')

  -V, --version
          Print version