pifi 0.1.2 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +9 -4
- data/README.md +29 -11
- data/docs/install_tips.md +41 -0
- data/lib/pifi/controllers/application_controller.rb +1 -1
- data/lib/pifi/lib/config_getter.rb +3 -3
- data/lib/pifi/lib/streams_getter.rb +1 -1
- metadata +5 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9e438554830dd34a08a8bbd6c1b50147bd3a57fcd83375ff650ac2e250d13af5
|
4
|
+
data.tar.gz: 5994a88287ab9c58f799cec839f7a2d84d5f2ba849002faba2475769176c6fe0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fcdd705b344569802b03a03cc0447c8c0b2b6b1dbf2256ba01cf659f46ed2efc901537ea02cf02841610d613e584442c047589fc2a2609bb1fb3bd53327ee0ec
|
7
|
+
data.tar.gz: 843cc7461a81904893dfc052451849eedf3aa36197ede2b2f6cc0dba60b97e6df3f697e9941f6b5f2088af3b14bfd0cf5c30f7f434ed5366a764dcfc4c3411a8
|
data/INSTALL.md
CHANGED
@@ -21,10 +21,11 @@ $ sudo systemctl start mpd && sudo systemctl enable mpd
|
|
21
21
|
$ sudo gem install pifi --no-ri --no-rdoc
|
22
22
|
```
|
23
23
|
|
24
|
-
4. To run PiFi, you'll need a list of radios at `/etc/
|
24
|
+
4. To run PiFi, you'll need a list of radios at `/etc/pifi/streams.json`. Paste this for now:
|
25
25
|
|
26
26
|
```
|
27
|
-
sudo
|
27
|
+
$ sudo mkdir -p /etc/pifi
|
28
|
+
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/streams.json.sample -O /etc/pifi/streams.json
|
28
29
|
```
|
29
30
|
|
30
31
|
Later, you can edit that JSON file [as described here](README.md#list-of-streams).
|
@@ -34,8 +35,8 @@ Later, you can edit that JSON file [as described here](README.md#list-of-streams
|
|
34
35
|
Download a sample and edit [following the documentation](README.md#pifi-configuration):
|
35
36
|
|
36
37
|
```
|
37
|
-
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/
|
38
|
-
$ sudo -e /etc/pifi.json
|
38
|
+
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/config.json.sample -O /etc/pifi/config.json
|
39
|
+
$ sudo -e /etc/pifi/config.json
|
39
40
|
```
|
40
41
|
|
41
42
|
**Done!** You can now run PiFi with `pifi` and reach it at `http://DEVICE_IP:3000`. Type `pifi -h` to check the options available.
|
@@ -59,3 +60,7 @@ $ sudo -e /etc/systemd/system/pifi.service
|
|
59
60
|
```
|
60
61
|
|
61
62
|
**Done!** Now you can start PiFi with `sudo systemctl start pifi`. For running at boot, enter `sudo systemctl enable pifi`.
|
63
|
+
|
64
|
+
## Advanced deployments
|
65
|
+
|
66
|
+
If you need something different from this, [check this document](docs/install_tips.md).
|
data/README.md
CHANGED
@@ -67,20 +67,37 @@ Although PiFi tries to be minimal, there are some neat features, such as:
|
|
67
67
|
|
68
68
|
## Installation
|
69
69
|
|
70
|
-
While PiFi was imagined for the Pi, it should run on any computer with
|
70
|
+
While PiFi was imagined for the Pi, it should run on any computer with Ruby and MPD.
|
71
71
|
|
72
|
-
|
73
|
-
- MPD
|
72
|
+
Install it with:
|
74
73
|
|
75
|
-
|
74
|
+
```
|
75
|
+
$ sudo gem install pifi --no-ri --no-rdoc
|
76
|
+
```
|
77
|
+
|
78
|
+
Place a list of streams at `/etc/pifi/streams.json`:
|
79
|
+
|
80
|
+
```
|
81
|
+
$ sudo mkdir -p /etc/pifi
|
82
|
+
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/streams.json.sample -O /etc/pifi/streams.json
|
83
|
+
```
|
84
|
+
|
85
|
+
Make sure MPD is running and start PiFi:
|
86
|
+
|
87
|
+
```
|
88
|
+
$ sudo systemctl start mpd
|
89
|
+
$ pifi
|
90
|
+
```
|
91
|
+
|
92
|
+
For more detailed steps, [check the installation guide](INSTALL.md).
|
76
93
|
|
77
94
|
## Configuration
|
78
95
|
|
79
96
|
### List of streams
|
80
97
|
|
81
|
-
PiFi needs a list of the radios you want to listen. [A example is available here](docs/
|
98
|
+
PiFi needs a list of the radios you want to listen. [A example is available here](docs/streams.json.sample).
|
82
99
|
|
83
|
-
The list is read by default from `/etc/
|
100
|
+
The list is read by default from `/etc/pifi/streams.json`. You can change this path [creating a configuration file](#pifi-configuration).
|
84
101
|
|
85
102
|
To keep it simple, the list of streams is just a JSON file with key-value pairs, where the key is the station name, and the value is the streaming URL. For example:
|
86
103
|
|
@@ -105,15 +122,15 @@ If you want to arrange the stations in categories, add a pair with the category
|
|
105
122
|
|
106
123
|
It's now completely optional to have a configuration file for PiFi. You only need one if you want something different from the defaults.
|
107
124
|
|
108
|
-
The path is `/etc/pifi.json` and these are the options:
|
125
|
+
The path is `/etc/pifi/config.json` and these are the options:
|
109
126
|
|
110
127
|
| Key | Default | Description |
|
111
128
|
| --------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- |
|
112
129
|
| `mpd_host` | `127.0.0.1` | MPD host. |
|
113
130
|
| `mpd_port` | `6600` | MPD port. |
|
114
131
|
| `mpd_password` | `""` (none) | MPD password. |
|
115
|
-
| `
|
116
|
-
| `
|
132
|
+
| `streams_path` | `/etc/pifi/streams.json` | Path to the JSON file containing the streams. |
|
133
|
+
| `streams_path_priv` | `""` (none) | Path to JSON file containing additional streams. These will be shown only to the devices listed on `special_ips`. |
|
117
134
|
| `special_ips` | `""` (none) | The IPs of the devices to show additional streams. |
|
118
135
|
| `play_local` | `false` | Set it to `true` if you want PiFi to play songs from your local library. This shows the "Random" button. |
|
119
136
|
| `serve_static` | `true` | If we should serve static resources. Set it to `false` if your web server is already doing it. |
|
@@ -121,8 +138,9 @@ The path is `/etc/pifi.json` and these are the options:
|
|
121
138
|
If you want to change any of these options, download the sample file and edit it to your needs:
|
122
139
|
|
123
140
|
```
|
124
|
-
$ sudo
|
125
|
-
$ sudo -
|
141
|
+
$ sudo mkdir -p /etc/pifi
|
142
|
+
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/config.json.sample -O /etc/pifi/config.json
|
143
|
+
$ sudo -e /etc/pifi/config.json
|
126
144
|
```
|
127
145
|
|
128
146
|
## Usage
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# Advanced installation tips
|
2
|
+
|
3
|
+
Here I list some tips on more advanced PiFi deployments.
|
4
|
+
|
5
|
+
## Running on port 80
|
6
|
+
|
7
|
+
You may want to access PiFi without typing a port, as in `http://pi.local` or `http://pifi.local`.
|
8
|
+
|
9
|
+
For this, you can install a web server, such as Nginx, Apache or Lighttpd, and set up a reverse proxy. As the precise configuration varies between each of them, please check their documentation.
|
10
|
+
|
11
|
+
## Serving static resources from your web server
|
12
|
+
|
13
|
+
If you set your web server to reverse proxy PiFi, you may also use it to serve PiFi static assets. This possibly brings some performance gains.
|
14
|
+
|
15
|
+
On PiFi configuration, set `serve_static` to false.
|
16
|
+
|
17
|
+
On your web server, the exact steps depend on your configuration. You will probably need to set the root of the virtual server to PiFi's static assets directory. This is `${PIFI_DIR}/lib/pifi/public`. Refer to the next section for tips on how to find your `${PIFI_DIR}`. Refer to the documentation of your web server for details.
|
18
|
+
|
19
|
+
## Finding PiFi directory
|
20
|
+
|
21
|
+
This largely depends on how you installed PiFi and your distro.
|
22
|
+
|
23
|
+
- If you installed it with `sudo gem install pifi` on Raspbian, this should be `/var/lib/gems/*/gems/pifi-*`.
|
24
|
+
- If you installed with the `gem` command, run `gem environment` and check the paths below "Gem paths".
|
25
|
+
- If you are completely lost, you can always run `find / -iname "pifi*" 2>/dev/null`
|
26
|
+
|
27
|
+
## Configuring Thin directly
|
28
|
+
|
29
|
+
The `pifi` command exposes most Rack CLI options, but you may want to access more advanced configurations from Thin (the application server PiFi uses).
|
30
|
+
|
31
|
+
To achieve this, instead of invoking `pifi`, run `thin` and pass PiFi's `config.ru` and the `-e production` flag. The former is located at `${PIFI_DIR}/config.ru`.
|
32
|
+
|
33
|
+
For example, if you want to run PiFi on a socket instead of a port:
|
34
|
+
|
35
|
+
```
|
36
|
+
$ thin start -R ${PIFI_DIR}/config.ru -e production --socket /var/run/pifi/pifi.sock
|
37
|
+
```
|
38
|
+
|
39
|
+
## Using other application server
|
40
|
+
|
41
|
+
If for some reason you don't want to use Thin as the application server, simply run the one you want and pass a `production` flag and the path for PiFi's config.ru (`${PIFI_DIR}/config.ru`).
|
@@ -5,7 +5,7 @@ require "sinatra/base"
|
|
5
5
|
module PiFi
|
6
6
|
class ApplicationController < Sinatra::Base
|
7
7
|
set ConfigGetter.new.config
|
8
|
-
set :streams, StreamsGetter.new(settings.
|
8
|
+
set :streams, StreamsGetter.new(settings.streams_path, settings.streams_path_priv).streams
|
9
9
|
|
10
10
|
set :root, File.expand_path("../../", __FILE__)
|
11
11
|
|
@@ -4,13 +4,13 @@ module PiFi
|
|
4
4
|
class ConfigGetter
|
5
5
|
include Utils
|
6
6
|
|
7
|
-
PATH = "/etc/pifi.json"
|
7
|
+
PATH = "/etc/pifi/config.json"
|
8
8
|
DEFAULT_KEYS = {
|
9
9
|
"mpd_host" => "127.0.0.1",
|
10
10
|
"mpd_port" => "6600",
|
11
11
|
"mpd_password" => "",
|
12
|
-
"
|
13
|
-
"
|
12
|
+
"streams_path" => "/etc/pifi/streams.json",
|
13
|
+
"streams_path_priv" => "",
|
14
14
|
"special_ips" => "",
|
15
15
|
"play_local" => false,
|
16
16
|
"serve_static" => true
|
@@ -28,7 +28,7 @@ module PiFi
|
|
28
28
|
def check_paths
|
29
29
|
raise ArgumentError, "Streams file not found at '#{@path_pub}'" unless File.file?(@path_pub)
|
30
30
|
if ! @path_priv.empty? && ! File.file?(@path_priv)
|
31
|
-
warn "
|
31
|
+
warn "Private streams file not found at '#{@path_priv}'"
|
32
32
|
@path_priv = ""
|
33
33
|
end
|
34
34
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pifi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Rafael Cavalcanti
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-12-
|
11
|
+
date: 2019-12-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sinatra
|
@@ -87,12 +87,13 @@ executables:
|
|
87
87
|
extensions: []
|
88
88
|
extra_rdoc_files: []
|
89
89
|
files:
|
90
|
-
- INSTALL.md
|
90
|
+
- "./INSTALL.md"
|
91
|
+
- "./README.md"
|
91
92
|
- LICENSE
|
92
|
-
- README.md
|
93
93
|
- bin/pifi
|
94
94
|
- config.ru
|
95
95
|
- docs/icon/license.pdf
|
96
|
+
- docs/install_tips.md
|
96
97
|
- lib/pifi.rb
|
97
98
|
- lib/pifi/controllers/application_controller.rb
|
98
99
|
- lib/pifi/controllers/index_controller.rb
|