A peer-2-peer cli boat - or client, will work with webtorrent and dat
How to run it ? - Hope to release it packaged to brew soon
git clone https://github.com/thcolin/boaty.git && cd boaty
cp config.default.json config.json
npm run install
npm run webtorrent:daemon #[-- --quiet --port=9876]
# in an other terminal
npm run build
./bin/boaty #[...params]See below all available params:
boaty #[...params]
--config=./config.json # path to config.json
--webtorrent-host=localhost # webtorrent daemon host
--webtorrent-port=9876 # webtorrent daemon port
--webtorrent-sftp-user=me # webtorrent sftp user (for Files open)
--webtorrent-sftp-port=22 # webtorrent sftp port (for Files open)See below for available panes:
- WebTorrent (
@boaty/webtorrent)- List
- Details
- Files
- Release
- Pieces (blocks like FlashGet ❤️)
- Actions
- Pause/Resume
- Open
- Delete
- Erase
- Open-Push (magnet/.torrent to distant daemon)
- Stream / Cast (see webtorrent/webtorrent-cli
- AirPlay
- Chromecast
- Kodi (XBMC)
- VLC
- Speeds (cf.
vtopdiagram)- Use
sparklineblessed-contrib type ?
- Use
- Configuration (?)
- Dat (
@boaty/dat)- List
- Details
- Actions (pause-resume/open/delete/erase)
- TMDB (or SensCritique) (
@boaty/?) - Trackers (
@boaty/?)- YGG
- ABN
You can customize your configuration in config.json file:
{
// Prefixed configuration for package
"@boaty/boat": {
// Customize boat "workspace" with JSX components
"workspace": [
{
"component": "@boaty/webtorrent", // use "component" key to import custom component
"props": {
"key": "pane-webtorrent" // don't forget "key" props to avoid warning !
}
}
// {
// "type": "box", // use "type" key for default blessed component
// "props": {
// "top": 1,
// "key": "lol"
// },
// "children": "Hello World !"
// }
]
},
"@boaty/webtorrent": {
"pane": {
"open-homedir": "/tmp/webtorrent/watch"
},
"daemon": {
"download-dir": "/tmp/webtorrent/done",
"watch-dir": "/tmp/webtorrent/watch",
"watch-delete": true
}
}
}Tab: Switch between tiles (useShiftkey for opposite direction)↓↑: Moveo: Open import modal (push local.torrentfile(s) to daemon)Enter: Open (folders and files inFilestile, and path inTorrents)Space: Pause / Resume (torrent inTorrents)Backspace: Remove (torrent inTorrents)Delete: Delete (torrent inTorrents)Esc: Close modalC-c|q: Quit
Footer:- ⛅ Online / ⛈️ Offline
- Rendering
screenshot.svgfromasciinema:svg-term --cast=CAST_ID --out screenshot.svg --term=iterm2 --profile=~/.itermcolors --window
- Implement
standardjs - Write
tests - Improve
config.json@boaty/webtorrent-
download-dir -
download-subfolder- should have
torrent.nameonwebtorrent.add(uri, { path })(complicated)
- should have
-
incomplete-dir- should listen for
torrent.on('done')and edit alltorrent.files.*.path(complicated)
- should listen for
-
watch-dir -
watch-delete -
speed-limit-download- not available in
webtorrentcurrently (complicated)
- not available in
-
speed-limit-upload- not available in
webtorrentcurrently (complicated)
- not available in
-
queue-size-download- should implement queue system watching for every
torrent.on('done')(workable)
- should implement queue system watching for every
-
queue-size-seed- should implement queue system watching for every
daemon.on('pause', torrent)(workable)
- should implement queue system watching for every
-
blocklist-url -
chmod- should listen for
torrent.on('done')and chmodtorrent.path(workable)
- should listen for
-
ratio-limit- should listen for
torrent.on('upload')until limit and thentorrent.pause()(workable)
- should listen for
-
@boaty/webtorrent- Fix
ducks.torrents.selectedonactions.ENHANCE_TORRENTS - Use
dockerto daemonize daemon - Handle magnet
daemon.import - Confirm modal on
torrents.deleteandtorrents.remove - Investigate for stucked torrents on
daemon.import - Improve
redux&websocketintegration with Redux WebSocket Integration - Look at Writing a BitTorrent Client
Filesshould be able to open distant (host !== 'localhost') filesDaemonshould save torrents state (stoped) and load it on boot- Should send
FILL_TORRENTSevery 10s to force update - Keep
Daemon:torrentsindex order onpause()andresume()
- Fix