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.
vtop
diagram)- Use
sparkline
blessed-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 (useShift
key for opposite direction)↓↑
: Moveo
: Open import modal (push local.torrent
file(s) to daemon)Enter
: Open (folders and files inFiles
tile, 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.svg
fromasciinema
: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.name
onwebtorrent.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
webtorrent
currently (complicated)
- not available in
-
speed-limit-upload
- not available in
webtorrent
currently (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.selected
onactions.ENHANCE_TORRENTS
- Use
docker
to daemonize daemon - Handle magnet
daemon.import
- Confirm modal on
torrents.delete
andtorrents.remove
- Investigate for stucked torrents on
daemon.import
- Improve
redux
&websocket
integration with Redux WebSocket Integration - Look at Writing a BitTorrent Client
Files
should be able to open distant (host !== 'localhost'
) filesDaemon
should save torrents state (stoped) and load it on boot- Should send
FILL_TORRENTS
every 10s to force update - Keep
Daemon:torrents
index order onpause()
andresume()
- Fix