]> njoseph.me Git - nimcoon.git/blame_incremental - README.md
Update README with a progress report on features
[nimcoon.git] / README.md
... / ...
CommitLineData
1# NimCoon
2
3Play videos from YouTube and PeerTube from the
4command line using your preferred desktop media player.
5
6NewPipe app offers similar features for Android.
7
8This application is implemented in [Nim language](https://nim-lang.org) using
9only the standard library.
10
11![nimcoon screenshot with search term 'baby yoda'](screenshot.png)
12
13## Features
14
15- [x] Search for videos using keywords
16- [x] Stream videos and music from YouTube
17- [x] Play direct links from YouTube and PeerTube
18- [x] Stream video and music from magnet links and hyperlinks to torrent files
19- [x] Download music
20- [x] Download video
21- [x] Play YouTube playlists (MPV only)
22- [ ] Download YouTube playlists
23- [x] Stream video from torrent file URLs
24- [x] BitTorrent is preferred for PeerTube video links
25- [ ] Search PeerTube (3.0 or later)
26- [ ] YouTube Autoplay
27- [ ] Configuration options
28
29| | YouTube | PeerTube (HTTP) | PeerTube (BitTorrent) | Direct Magnet Link |
30| -------- | -------- | -------- | -------- | -------- |
31| Music Streaming | ✅ | ✅ | ✅ | ✅ |
32| Video Streaming | ✅ | ✅ | ✅ | ✅ |
33| Music Download | ✅ | ✅ | | |
34| Video Download | ✅ | ✅ | | |
35
36## Installation
37
38Nim Coon depends on the following:
39- youtube-dl
40- mpv (recommended) or vlc
41- peerflix and webtorrent (for magnet links)
42
43Install MPV or VLC using your distribution's package manager.
44
45Install YouTube-dl
46``` sh
47pip3 install --user youtube-dl
48```
49
50Install PeerFlix and WebTorrent
51```sh
52npm install --global peerflix webtorrent-cli
53```
54
55(Optional) If you want your YouTube downloads to be faster, install `aria2` download manager.
56
57### Installing using Nimble
58
59NimCoon can be installed from Nimble repositories:
60
61``` sh
62nimble install nimcoon
63```
64
65You can also install from source by running the following command:
66
67```sh
68nimble install
69```
70
71### Installing binary
72
73Download the latest build from GitlabCI (amd64 GNU/Linux only).
74
75```sh
76wget https://gitlab.com/njoseph/nimcoon/-/jobs/artifacts/master/download?job=compile -O artifacts.zip
77unzip artifacts.zip
78```
79
80Copy the binary to somewhere on your path like /usr/local/bin
81
82## Usage
83
84```sh
85nimcoon "emacs"
86
87# If your search query has multiple words, use quotes
88nimcoon "nim lang"
89
90# Play audio of the first search result
91nimcoon -m -l "counting stars"
92
93# Download audio of the first search result
94nimcoon -mld "counting stars"
95
96# Play direct video link
97nimcoon https://www.youtube.com/watch?v=QOEMv0S8AcA
98
99# Add -d to download or -m to select only audio or both
100nimcoon -md https://www.youtube.com/watch?v=hT_nvWreIhg
101```
102
103After the search results are displayed, you can enter a number to play one
104result, "all" to play all the results or "q" to quit the program.
105
106If a number is entered, after the selected search result is played, the results
107are redisplayed, so that you can play the other results without having to search
108again.
109
110### Command line arguments
111
112| **Arguments** | **Explanation** |
113|-------------------|--------------------------------------------|
114| -m, --music | Play Music only, no video |
115| -l, --lucky | Try your luck with the first search result |
116| -f, --full-screen | Play video in full screen |
117| -d, --download | Download video or music |
118
119Feel free to use these options in any combination. NimCoon will show a helpful
120error message if you pick incompatible options.
121
122## Development
123
124One-liner for compiling and running
125
126```sh
127nim c -d:ssl -r src/nimcoon.nim 'nim lang'
128```
129
130## Privacy
131
132To avoid storing your nimcoon searches in `zsh` history, run this command
133
134```sh
135setopt histignorespace
136```
137
138Then, add a space before typing nimcoon in the shell, like " nimcoon"
139
140```sh
141 nimcoon "this is private"
142```
143
144The same can be achieved in `bash` by setting an environment variable
145```sh
146export HISTCONTROL=ignoreboth
147```