aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 0184169085f8acd3a7e508f668f2eaf9ecb4d334 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# joc - Jellyfin on Console 
joc is a lightweight terminal client to your Jellyfin media server. joc has
a sleek curses interface and offers many of the same features as your other favorite 
terminal programs including: Vim-like keybindings, keystroke combination actions, 
user input bar, configurable color scheme, and more.

## Installation

### Dependencies

Install the following dependencies. The following are the package names 
on Debian derivatives. If you are using a different distro the package names
may be slightly different.

- python3-mpv
- python3-urwid
- python3-urllib3
- python3-certifi
- python3-websocket
- python3-requests
- python3-six

```
git clone https://git.chudnick.com/joc
cd joc
sudo make install
```

## Configuration

You'll need to do some basic configuration to get joc talking to your Jellyfin 
server. You can copy the example `config.ini` to the configuration directory at 
`~/.config/joc` to begin.  

At the minimum, you'll need to change the 
`server`, `username`, and `password` options to fit your environment. `server` is 
the url for your jellyfin server and `username` and `password` are the credentials 
for an account on the server. Instead of storing a plaintext password in the config 
file you may want to instead use the `passcmd` setting which allows you to specify 
a command to run to get the password instead.

The `verify_tls` option determines whether joc will verify the Jellyfin server's 
certificate. `0` tells joc not to verify the certificate while `1` tells joc to 
verify and drop the connection if the certificate is invalid. If you are accessing 
a public Jellyfin instance it is highly recommended to set this to `1`, but for 
internal servers you will probably need to set this to `0`.

## Usage

Simply run `joc` from your terminal or application launcher after doing the basic 
configuration.

## Modes

Like Vim, joc contains a number of different modes

- `Main` - Main mode is where you will spend most of your time. In this mode 
		   the Jellyfin library is displayed as a folder structure and watched 
		   items are highlighted.
- `Favorites` - The same as main mode but favorites are highlighted instead.
- `Search` - Search mode displays the results of a search. Search mode does not 
			 have a folder structure like main and favorites mode.
- `Info` - Shows additonal information about a selected item

## Keybindings

- `l` - Move into a folder
- `j` - Scroll up through a list of items
- `k` - Scroll down through a list of items
- `h` - Move out of a folder and back up the folder structure
- `g` - Go to the top item
- `G` - Go to the bottom item
- `Enter` - Play the currently highlighted item
- `i` - View more information about an item
- `:` - Enter input mode to provide a command
- `/` - Search for a provided term (shorcut for `:search `)
- `q` - Quit a non-standard mode
- `Q` - Quit the program

## Keystroke Combinations

- `mw` - Mark item as watched
- `uw` - Mark item as not watched
- `mf` - Mark item as favorite
- `uf` - Mark item as not a favorite
- `sf` - Toggle favorites mode
- `sm` - Toggle main mode

## Limitations

The Jellyfin API does not currently provide a method to update the playback progress 
for an item so as of now joc cannot sync the progress with the Jellyfin server. joc 
uses a local sqlite database to store this information instead. Other information 
user data such as watched status and favorites are synced with the server.