bt-fetch
Interact with Bittorrent the same way you would websites via fetch() and bittorrent://
or bt://
URLs
How it works
- Uses WebTorrent to load torrents
bittorrent://
URLs put the infohash
of a torrent into the hostname
portionbittorrent://
URLs can contain an individual file to prioritize downloadingbittorrent://
URLs can point to a folder path to get a listing
API
import makeBTFetch from 'bt-fetch'
const fetch = makeBTFetch({
folder: '~/.local/data/bt-fetch/'
})
const res = fetch('bittorrent://08ada5a7a6183aae1e09d831df6748d566095a10/example.html')
const content = await res.text()
const length = res.headers.get('Content-Length')
const downloaded = res.headers.get('X-Downloaded')
const res = await fetch('bittorrent://infohash/path/')
const files = await res.json()
const res = await fetch('bittorrent://infohash/path/', {headers: {
Accept: 'text/html'
})
const page = await res.text()
const pubRes = fetch('bittorrent://1e267e045c1abcb9af26df782a048a1cfd2d26e6db23ff5026b213ce037301bf')
TODO
- Pass querystring params from magnet link info (trackers, etc)
- Support
index.html
resolution (with opt-out) - Creating torrents using POST
- Mutable torrent record exchange (updates without DHT polling)
- Support some sort of DNS based on DNSLink
- Extension messages with EventSource a-la hypercore-fetch