pifi 0.4.0 → 0.4.5.pre.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/INSTALL.md +10 -9
- data/README.md +46 -28
- data/bin/pifi +3 -1
- data/lib/pifi/controllers/application_controller.rb +0 -4
- data/lib/pifi/lib/config_getter.rb +1 -1
- data/lib/pifi/lib/player.rb +4 -3
- data/lib/pifi/public/asset-manifest.json +18 -18
- data/lib/pifi/public/assets/logo80.png +0 -0
- data/lib/pifi/public/index.html +1 -1
- data/lib/pifi/public/locales/en/translation.json +18 -16
- data/lib/pifi/public/locales/fr-FR/translation.json +23 -2
- data/lib/pifi/public/locales/nl-NL/translation.json +23 -2
- data/lib/pifi/public/locales/pl-PL/translation.json +28 -0
- data/lib/pifi/public/locales/pt-BR/translation.json +17 -15
- data/lib/pifi/public/precache-manifest.2861d7ff1c094f4f7704d9f5f30ff5e9.js +34 -0
- data/lib/pifi/public/service-worker.js +1 -1
- data/lib/pifi/public/static/css/2.d34346ea.chunk.css +2 -0
- data/lib/pifi/public/static/css/2.d34346ea.chunk.css.map +1 -0
- data/lib/pifi/public/static/css/main.221e80d3.chunk.css +2 -0
- data/lib/pifi/public/static/css/main.221e80d3.chunk.css.map +1 -0
- data/lib/pifi/public/static/js/2.2b05662c.chunk.js +3 -0
- data/lib/pifi/public/static/js/{2.df3b2c7e.chunk.js.LICENSE → 2.2b05662c.chunk.js.LICENSE.txt} +44 -51
- data/lib/pifi/public/static/js/2.2b05662c.chunk.js.map +1 -0
- data/lib/pifi/public/static/js/main.6b4db225.chunk.js +2 -0
- data/lib/pifi/public/static/js/main.6b4db225.chunk.js.map +1 -0
- data/lib/pifi/public/static/js/{runtime-main.f04a0f25.js → runtime-main.5aae5a31.js} +1 -1
- data/lib/pifi/public/static/js/{runtime-main.f04a0f25.js.map → runtime-main.5aae5a31.js.map} +1 -1
- data/lib/pifi/version.rb +1 -1
- metadata +20 -18
- data/lib/pifi/public/precache-manifest.3ca9784793937217e35f314e19179939.js +0 -34
- data/lib/pifi/public/static/css/2.5dbdccff.chunk.css +0 -2
- data/lib/pifi/public/static/css/2.5dbdccff.chunk.css.map +0 -1
- data/lib/pifi/public/static/css/main.58eef733.chunk.css +0 -2
- data/lib/pifi/public/static/css/main.58eef733.chunk.css.map +0 -1
- data/lib/pifi/public/static/js/2.df3b2c7e.chunk.js +0 -3
- data/lib/pifi/public/static/js/2.df3b2c7e.chunk.js.map +0 -1
- data/lib/pifi/public/static/js/main.58e602f6.chunk.js +0 -2
- data/lib/pifi/public/static/js/main.58e602f6.chunk.js.map +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c1586e58b5e0def063d3df99eab16a5946ec861cd366116094695c6f03f161c8
|
4
|
+
data.tar.gz: fc3c345f44d062e8874c48b2b394308d3820c4b5a6840301d1d6751bebf4fde3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dade51eab47a8e6f2a14c937540328b73b559739b4d1e6079738edbdb1d7013bdd70cda5a965916b921b3759db5cc2b1ee6de7aa1b54fb6eeab5d62f30109d18
|
7
|
+
data.tar.gz: 810150856ea5eacfa3792b6da7c1bba3e4a41db26ef770b94bedd22939d023325d010b0a802bc9e4b992dfa06d8d3ccf91fb74e7fa576d8549985f323fb25164
|
data/INSTALL.md
CHANGED
@@ -8,29 +8,30 @@ On Raspbian:
|
|
8
8
|
$ sudo apt install ruby-full mpd
|
9
9
|
```
|
10
10
|
|
11
|
-
2.
|
11
|
+
2. Start and enable MPD:
|
12
12
|
|
13
13
|
```
|
14
|
-
$ sudo
|
15
|
-
$ sudo systemctl start mpd && sudo systemctl enable mpd
|
14
|
+
$ sudo systemctl enable --now mpd
|
16
15
|
```
|
17
16
|
|
17
|
+
_In the case you need to configure MPD, [check its documentation](https://www.musicpd.org/doc/html/user.html#configuration)._
|
18
|
+
|
18
19
|
3. Install PiFi:
|
19
20
|
|
20
21
|
```
|
21
22
|
$ sudo gem install pifi --no-document
|
22
23
|
```
|
23
24
|
|
24
|
-
4.
|
25
|
+
4. You'll need a list of radios at `/etc/pifi/streams.json`. Paste this for now:
|
25
26
|
|
26
27
|
```
|
27
28
|
$ sudo mkdir -p /etc/pifi
|
28
29
|
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/streams.json.sample -O /etc/pifi/streams.json
|
29
30
|
```
|
30
31
|
|
31
|
-
|
32
|
+
_Later, you can edit that list [as described here](README.md#list-of-streams)._
|
32
33
|
|
33
|
-
5. If the MPD server is on another host or a non-default port, you'll need
|
34
|
+
5. If the MPD server is on another host or a non-default port, you'll need a configuration file.
|
34
35
|
|
35
36
|
Download a sample and edit [following the documentation](README.md#pifi-configuration):
|
36
37
|
|
@@ -39,13 +40,13 @@ $ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/doc
|
|
39
40
|
$ sudo -e /etc/pifi/config.json
|
40
41
|
```
|
41
42
|
|
42
|
-
**Done!** You can now run PiFi with `pifi` and reach it at `http://DEVICE_IP:3000`.
|
43
|
+
**Done!** You can now run PiFi with `pifi` and reach it at `http://DEVICE_IP:3000`.
|
43
44
|
|
44
45
|
## Running at system boot and as other user
|
45
46
|
|
46
|
-
It makes sense to run PiFi as a
|
47
|
+
It makes sense to run PiFi as a different user, such as `www-data`. You may also want it to autostart on boot. For that you can use a systemd service.
|
47
48
|
|
48
|
-
1. Download the
|
49
|
+
1. Download the service sample.
|
49
50
|
|
50
51
|
```
|
51
52
|
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/pifi.service.sample -O /etc/systemd/system/pifi.service
|
data/README.md
CHANGED
@@ -11,10 +11,14 @@
|
|
11
11
|
- [Some features](#some-features)
|
12
12
|
- [Demo](#demo)
|
13
13
|
- [Installation](#installation)
|
14
|
+
- [Updating](#updating)
|
14
15
|
- [Configuration](#configuration)
|
15
16
|
- [List of streams](#list-of-streams)
|
16
17
|
- [PiFi configuration](#pifi-configuration)
|
18
|
+
- [Usage](#usage)
|
19
|
+
- [Help me translate](#help-me-translate)
|
17
20
|
- [Credits](#credits)
|
21
|
+
- [Buy me a coffee](#buy-me-a-coffee)
|
18
22
|
- [License](#license)
|
19
23
|
|
20
24
|
## Meet PiFi Radio
|
@@ -31,7 +35,7 @@ PiFi is an interface for MPD, so it has some advantages compared to other soluti
|
|
31
35
|
|
32
36
|
- Responsive interface for phones, tablets and desktops.
|
33
37
|
- Display stations clearly. No URLs or weird names.
|
34
|
-
-
|
38
|
+
- Dark and light themes.
|
35
39
|
- Easily search your radios.
|
36
40
|
- Centralized list of stations. You get the same radios on every device.
|
37
41
|
- Make some radios to be offered only to certain IPs. A use case for this is if there are tons of stations that only you listen and you don't want to pollute everyone else's list.
|
@@ -52,28 +56,16 @@ PiFi is an interface for MPD, so it has some advantages compared to other soluti
|
|
52
56
|
|
53
57
|
While PiFi was imagined for the Pi, it should run on any computer with Ruby and MPD.
|
54
58
|
|
55
|
-
|
59
|
+
[Check the installation guide](INSTALL.md).
|
56
60
|
|
57
|
-
|
58
|
-
$ sudo gem install pifi --no-document
|
59
|
-
```
|
60
|
-
|
61
|
-
Place a list of streams at `/etc/pifi/streams.json`:
|
62
|
-
|
63
|
-
```
|
64
|
-
$ sudo mkdir -p /etc/pifi
|
65
|
-
$ sudo wget https://raw.githubusercontent.com/rccavalcanti/pifi-radio/master/docs/streams.json.sample -O /etc/pifi/streams.json
|
66
|
-
```
|
61
|
+
## Updating
|
67
62
|
|
68
|
-
|
63
|
+
Run:
|
69
64
|
|
70
65
|
```
|
71
|
-
$ sudo
|
72
|
-
$ pifi
|
66
|
+
$ sudo gem update pifi --no-document
|
73
67
|
```
|
74
68
|
|
75
|
-
For more detailed steps, [check the installation guide](INSTALL.md).
|
76
|
-
|
77
69
|
## Configuration
|
78
70
|
|
79
71
|
### List of streams
|
@@ -109,13 +101,13 @@ The path is `/etc/pifi/config.json` and these are the options:
|
|
109
101
|
|
110
102
|
| Key | Default | Description |
|
111
103
|
| ------------------- | ------------------------ | ----------------------------------------------------------------------------------------------------------------- |
|
112
|
-
| `mpd_host` | `127.0.0.1` | MPD host. |
|
113
|
-
| `mpd_port` | `6600`
|
114
|
-
| `mpd_password` | `""` (none)
|
115
|
-
| `streams_path` |
|
116
|
-
| `streams_path_priv` | `""` (none)
|
117
|
-
| `special_ips` | `
|
118
|
-
| `serve_static` | `true`
|
104
|
+
| `mpd_host` | `"127.0.0.1"` | MPD host. |
|
105
|
+
| `mpd_port` | `6600` | MPD port. |
|
106
|
+
| `mpd_password` | `""` (none) | MPD password. |
|
107
|
+
| `streams_path` | `"/etc/pifi/streams.json"` | Path to the JSON file containing the streams. |
|
108
|
+
| `streams_path_priv` | `""` (none) | Path to JSON file containing additional streams. These will be shown only to the devices listed on `special_ips`. |
|
109
|
+
| `special_ips` | `[]` (none) | The IPs of the devices to show additional streams. Example: `["10.0.0.1", "10.0.0.2"]` |
|
110
|
+
| `serve_static` | `true` | If we should serve static resources. Set it to `false` if your web server is already doing it. |
|
119
111
|
|
120
112
|
If you want to change any of these options, download the sample file and edit it to your needs:
|
121
113
|
|
@@ -135,14 +127,40 @@ PiFi can be run:
|
|
135
127
|
|
136
128
|
On your mobile browser, I suggest you add PiFi Radio to your home screen, for easier access.
|
137
129
|
|
130
|
+
## Help me translate
|
131
|
+
|
132
|
+
You can help me adding a new language to PiFi or improving an existing translation. [The translation files are placed here.](https://github.com/rccavalcanti/pifi-radio/tree/master/frontend/public/locales)
|
133
|
+
|
134
|
+
### Improving an existing translation
|
135
|
+
|
136
|
+
The default language for PiFi is English, so you should use it as a reference.
|
137
|
+
|
138
|
+
1. Open [the translation file](https://github.com/rccavalcanti/pifi-radio/tree/master/frontend/public/locales) and [the English file](https://github.com/rccavalcanti/pifi-radio/blob/master/frontend/public/locales/en/translation.json).
|
139
|
+
2. Fill empty strings and fix any bad translations.
|
140
|
+
3. Send a pull request.
|
141
|
+
|
142
|
+
### Adding a new language
|
143
|
+
|
144
|
+
1. Copy the `en` folder, renaming it to the new language code (e.g. `es-ES`).
|
145
|
+
2. On `translation.json`, translate the strings. If you aren't sure of some, please make them empty.
|
146
|
+
3. Send a pull request.
|
147
|
+
|
138
148
|
## Credits
|
139
149
|
|
140
|
-
-
|
141
|
-
-
|
150
|
+
- fr-fr: Francis Chavanon "rimeno"
|
151
|
+
- pl-pl: "Struart88"
|
152
|
+
- nl-nl: Heimen Stoffels "Vistaus"
|
153
|
+
|
142
154
|
- Icon made by [iconixar](https://www.flaticon.com/authors/iconixar) from [www.flaticon.com](https://www.flaticon.com/), licensed by [Flaticon Basic License](docs/icon/license.pdf).
|
143
155
|
|
156
|
+
## Buy me a coffee
|
157
|
+
|
158
|
+
If you find PiFi useful, you can show your support here:
|
159
|
+
|
160
|
+
<a href="https://www.buymeacoffee.com/rafaelc" target="_blank"><img src="https://cdn.buymeacoffee.com/buttons/default-orange.png" alt="Buy Me A Coffee" width="200" ></a>
|
161
|
+
|
144
162
|
## License
|
145
163
|
|
146
|
-
|
164
|
+
Licensed under [GPLv3](LICENSE)
|
147
165
|
|
148
|
-
Copyright 2017-2020 Rafael Cavalcanti
|
166
|
+
Copyright (C) 2017-2020 [Rafael Cavalcanti](https://rafaelc.org/)
|
data/bin/pifi
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
+
# The supported, safe way
|
4
|
+
ENV["APP_ENV"] = "production" if ENV["APP_ENV"].nil?
|
5
|
+
|
3
6
|
require "pifi"
|
4
7
|
require "optimist"
|
5
8
|
|
@@ -22,5 +25,4 @@ rack_opts = {
|
|
22
25
|
daemonize: cli_opts.daemonize
|
23
26
|
}
|
24
27
|
|
25
|
-
PiFi::ApplicationController.set :environment, :production
|
26
28
|
Rack::Server.new(rack_opts).start
|
@@ -5,10 +5,6 @@ require "sinatra/base"
|
|
5
5
|
module PiFi
|
6
6
|
class ApplicationController < Sinatra::Base
|
7
7
|
set :static, false
|
8
|
-
configure :development do
|
9
|
-
before { response.headers["Access-Control-Allow-Origin"] = "*" }
|
10
|
-
end
|
11
|
-
|
12
8
|
set ConfigGetter.new.config
|
13
9
|
set :streams, Streams.new(settings.streams_path, settings.streams_path_priv)
|
14
10
|
end
|
data/lib/pifi/lib/player.rb
CHANGED
@@ -46,8 +46,7 @@ module PiFi
|
|
46
46
|
|
47
47
|
def change_vol(delta)
|
48
48
|
raise ArgumentError, "Invalid argument" unless delta =~ /^[+-]\d{1,2}$/
|
49
|
-
|
50
|
-
raise VolNaError if @vol < 0
|
49
|
+
raise VolNaError if @vol.nil?
|
51
50
|
|
52
51
|
@mpd.send_command("volume", delta);
|
53
52
|
# This is more up-to-date than @vol
|
@@ -146,7 +145,9 @@ module PiFi
|
|
146
145
|
end
|
147
146
|
|
148
147
|
def set_vol(vol)
|
149
|
-
@vol =
|
148
|
+
# We get @vol=-1 when PulseAudio sink is closed and @vol=nil when MPD output
|
149
|
+
# is misconfigured. Let's make it all nil.
|
150
|
+
@vol = vol < 0 ? nil : vol
|
150
151
|
end
|
151
152
|
|
152
153
|
def set_con_mpd(con_mpd)
|
@@ -1,26 +1,26 @@
|
|
1
1
|
{
|
2
2
|
"files": {
|
3
|
-
"main.css": "/static/css/main.
|
4
|
-
"main.js": "/static/js/main.
|
5
|
-
"main.js.map": "/static/js/main.
|
6
|
-
"runtime-main.js": "/static/js/runtime-main.
|
7
|
-
"runtime-main.js.map": "/static/js/runtime-main.
|
8
|
-
"static/css/2.
|
9
|
-
"static/js/2.
|
10
|
-
"static/js/2.
|
3
|
+
"main.css": "/static/css/main.221e80d3.chunk.css",
|
4
|
+
"main.js": "/static/js/main.6b4db225.chunk.js",
|
5
|
+
"main.js.map": "/static/js/main.6b4db225.chunk.js.map",
|
6
|
+
"runtime-main.js": "/static/js/runtime-main.5aae5a31.js",
|
7
|
+
"runtime-main.js.map": "/static/js/runtime-main.5aae5a31.js.map",
|
8
|
+
"static/css/2.d34346ea.chunk.css": "/static/css/2.d34346ea.chunk.css",
|
9
|
+
"static/js/2.2b05662c.chunk.js": "/static/js/2.2b05662c.chunk.js",
|
10
|
+
"static/js/2.2b05662c.chunk.js.map": "/static/js/2.2b05662c.chunk.js.map",
|
11
11
|
"index.html": "/index.html",
|
12
|
-
"precache-manifest.
|
12
|
+
"precache-manifest.2861d7ff1c094f4f7704d9f5f30ff5e9.js": "/precache-manifest.2861d7ff1c094f4f7704d9f5f30ff5e9.js",
|
13
13
|
"service-worker.js": "/service-worker.js",
|
14
|
-
"static/css/2.
|
15
|
-
"static/css/main.
|
16
|
-
"static/js/2.
|
17
|
-
"static/media/
|
14
|
+
"static/css/2.d34346ea.chunk.css.map": "/static/css/2.d34346ea.chunk.css.map",
|
15
|
+
"static/css/main.221e80d3.chunk.css.map": "/static/css/main.221e80d3.chunk.css.map",
|
16
|
+
"static/js/2.2b05662c.chunk.js.LICENSE.txt": "/static/js/2.2b05662c.chunk.js.LICENSE.txt",
|
17
|
+
"static/media/logo.svg": "/static/media/logo.91554ce9.svg"
|
18
18
|
},
|
19
19
|
"entrypoints": [
|
20
|
-
"static/js/runtime-main.
|
21
|
-
"static/css/2.
|
22
|
-
"static/js/2.
|
23
|
-
"static/css/main.
|
24
|
-
"static/js/main.
|
20
|
+
"static/js/runtime-main.5aae5a31.js",
|
21
|
+
"static/css/2.d34346ea.chunk.css",
|
22
|
+
"static/js/2.2b05662c.chunk.js",
|
23
|
+
"static/css/main.221e80d3.chunk.css",
|
24
|
+
"static/js/main.6b4db225.chunk.js"
|
25
25
|
]
|
26
26
|
}
|
Binary file
|
data/lib/pifi/public/index.html
CHANGED
@@ -1 +1 @@
|
|
1
|
-
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,user-scalable=no"/><meta name="description" content="MPD web client to listen to radio"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="PiFi Radio"><meta name="application-name" content="PiFi Radio"><meta name="msapplication-TileColor" content="#2b5797"><meta name="theme-color" content="#375a7f"><title>PiFi Radio</title><link rel="preload" href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" as="style"><link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" rel="stylesheet" title="theme"><link href="/static/css/2.
|
1
|
+
<!doctype html><html lang="en"><head><meta charset="utf-8"/><link rel="icon" href="/favicon.ico"/><meta name="viewport" content="width=device-width,user-scalable=no"/><meta name="description" content="MPD web client to listen to radio"/><link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"><link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"><link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"><link rel="manifest" href="/manifest.json"><link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"><meta name="apple-mobile-web-app-title" content="PiFi Radio"><meta name="application-name" content="PiFi Radio"><meta name="msapplication-TileColor" content="#2b5797"><meta name="theme-color" content="#375a7f"><title>PiFi Radio</title><link rel="preload" href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" as="style"><link href="https://stackpath.bootstrapcdn.com/bootswatch/4.4.1/darkly/bootstrap.min.css" rel="stylesheet" title="theme"><link href="/static/css/2.d34346ea.chunk.css" rel="stylesheet"><link href="/static/css/main.221e80d3.chunk.css" rel="stylesheet"></head><body><noscript>You need to enable JavaScript to run this app.</noscript><div id="root"></div><script>var isIE=window.document.documentMode,unsupportedMsg='<img src="/assets/logo80.png" class="mx-auto d-block my-5">';if(unsupportedMsg+='<h5 class="text-center my-5">This browser is not supported</h5>',isIE){var root=document.getElementById("root");root.innerHTML=unsupportedMsg,root.setAttribute("id","")}</script><script>!function(e){function r(r){for(var n,f,i=r[0],l=r[1],p=r[2],c=0,s=[];c<i.length;c++)f=i[c],Object.prototype.hasOwnProperty.call(o,f)&&o[f]&&s.push(o[f][0]),o[f]=0;for(n in l)Object.prototype.hasOwnProperty.call(l,n)&&(e[n]=l[n]);for(a&&a(r);s.length;)s.shift()();return u.push.apply(u,p||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var l=t[i];0!==o[l]&&(n=!1)}n&&(u.splice(r--,1),e=f(f.s=t[0]))}return e}var n={},o={1:0},u=[];function f(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.m=e,f.c=n,f.d=function(e,r,t){f.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},f.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,r){if(1&r&&(e=f(e)),8&r)return e;if(4&r&&"object"==typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)f.d(t,n,function(r){return e[r]}.bind(null,n));return t},f.n=function(e){var r=e&&e.__esModule?function(){return e.default}:function(){return e};return f.d(r,"a",r),r},f.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},f.p="/";var i=this.webpackJsonppifi_frontend=this.webpackJsonppifi_frontend||[],l=i.push.bind(i);i.push=r,i=i.slice();for(var p=0;p<i.length;p++)r(i[p]);var a=l;t()}([])</script><script src="/static/js/2.2b05662c.chunk.js"></script><script src="/static/js/main.6b4db225.chunk.js"></script></body></html>
|
@@ -1,26 +1,28 @@
|
|
1
1
|
{
|
2
|
+
"about": "About",
|
3
|
+
"cancel": "Cancel",
|
4
|
+
"close": "Close",
|
5
|
+
"coffee": "If you like PiFi Radio, you can show your support buying me a coffee.",
|
6
|
+
"disconnectedMPD": "Not connected to MPD",
|
7
|
+
"environment": "Environment",
|
8
|
+
"errorForbidden": "Forbidden request. Check MPD password and permissions.",
|
2
9
|
"errorNetwork": "Not connected to PiFi server",
|
3
|
-
"errorUnexpected": "An unexpected error occurred.",
|
4
10
|
"errorNotFound": "The stream was not found.",
|
5
|
-
"
|
6
|
-
"
|
7
|
-
"close": "Close",
|
8
|
-
"ok": "OK",
|
9
|
-
"cancel": "Cancel",
|
10
|
-
"search": "Search...",
|
11
|
-
"playing": "Playing",
|
12
|
-
"stopped": "Stopped",
|
13
|
-
"tunning": "Tunning...",
|
14
|
-
"noStreams": "No stations available.",
|
15
|
-
"settings": "Settings",
|
16
|
-
"theme": "Theme",
|
11
|
+
"errorUnexpected": "An unexpected error occurred.",
|
12
|
+
"goToDocs": "Go to documentation",
|
17
13
|
"language": "Language",
|
18
|
-
"about": "About",
|
19
14
|
"mpdHost": "MPD host",
|
20
15
|
"mpdPort": "MPD port",
|
21
|
-
"
|
22
|
-
"
|
16
|
+
"noStreams": "No stations available.",
|
17
|
+
"ok": "OK",
|
18
|
+
"playing": "Playing",
|
23
19
|
"playURL": "Play URL",
|
20
|
+
"search": "Search...",
|
21
|
+
"settings": "Settings",
|
22
|
+
"stopped": "Stopped",
|
23
|
+
"theme": "Theme",
|
24
24
|
"tryingURL": "Trying to play URL...",
|
25
|
+
"tunning": "Tunning...",
|
26
|
+
"version": "Version",
|
25
27
|
"volume": "Volume"
|
26
28
|
}
|
@@ -1,7 +1,28 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"about": "",
|
3
|
+
"cancel": "",
|
4
|
+
"close": "",
|
5
|
+
"coffee": "",
|
3
6
|
"disconnectedMPD": "Déconnecté de MPD",
|
7
|
+
"environment": "",
|
8
|
+
"errorForbidden": "",
|
9
|
+
"errorNetwork": "Pas de connexion",
|
10
|
+
"errorNotFound": "",
|
11
|
+
"errorUnexpected": "",
|
12
|
+
"goToDocs": "",
|
13
|
+
"language": "",
|
14
|
+
"mpdHost": "",
|
15
|
+
"mpdPort": "",
|
16
|
+
"noStreams": "",
|
17
|
+
"ok": "",
|
4
18
|
"playing": "Lecture",
|
19
|
+
"playURL": "",
|
20
|
+
"search": "",
|
21
|
+
"settings": "",
|
5
22
|
"stopped": "Arrêté",
|
6
|
-
"
|
23
|
+
"theme": "",
|
24
|
+
"tryingURL": "",
|
25
|
+
"tunning": "Mise en tampon…",
|
26
|
+
"version": "",
|
27
|
+
"volume": ""
|
7
28
|
}
|
@@ -1,7 +1,28 @@
|
|
1
1
|
{
|
2
|
-
"
|
2
|
+
"about": "",
|
3
|
+
"cancel": "",
|
4
|
+
"close": "",
|
5
|
+
"coffee": "",
|
3
6
|
"disconnectedMPD": "Niet verbonden met MPD",
|
7
|
+
"environment": "",
|
8
|
+
"errorForbidden": "",
|
9
|
+
"errorNetwork": "Geen verbinding",
|
10
|
+
"errorNotFound": "",
|
11
|
+
"errorUnexpected": "",
|
12
|
+
"goToDocs": "",
|
13
|
+
"language": "",
|
14
|
+
"mpdHost": "",
|
15
|
+
"mpdPort": "",
|
16
|
+
"noStreams": "",
|
17
|
+
"ok": "",
|
4
18
|
"playing": "Aan het afspelen",
|
19
|
+
"playURL": "",
|
20
|
+
"search": "",
|
21
|
+
"settings": "",
|
5
22
|
"stopped": "Gestopt",
|
6
|
-
"
|
23
|
+
"theme": "",
|
24
|
+
"tryingURL": "",
|
25
|
+
"tunning": "Bezig met verbinden...",
|
26
|
+
"version": "",
|
27
|
+
"volume": ""
|
7
28
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
{
|
2
|
+
"about": "O projekcie",
|
3
|
+
"cancel": "Anuluj",
|
4
|
+
"close": "Zamknij",
|
5
|
+
"coffee": "",
|
6
|
+
"disconnectedMPD": "Nie połączono z MPD",
|
7
|
+
"environment": "Środowisko",
|
8
|
+
"errorForbidden": "Niedozwolone żądanie. Sprawdź hasło i uprawnienia MPD.",
|
9
|
+
"errorNetwork": "Nie połączono z serwerem PiFi",
|
10
|
+
"errorNotFound": "Strumień nie znaleziony.",
|
11
|
+
"errorUnexpected": "Nieoczekiwany błąd.",
|
12
|
+
"goToDocs": "",
|
13
|
+
"language": "Język",
|
14
|
+
"mpdHost": "MPD host",
|
15
|
+
"mpdPort": "MPD port",
|
16
|
+
"noStreams": "Brak dostępnych stacji.",
|
17
|
+
"ok": "OK",
|
18
|
+
"playing": "Odtwarzanie",
|
19
|
+
"playURL": "Odtwórz URL",
|
20
|
+
"search": "Szukaj...",
|
21
|
+
"settings": "Ustawienia",
|
22
|
+
"stopped": "Zatrzymano",
|
23
|
+
"theme": "Motyw",
|
24
|
+
"tryingURL": "Próba odtworzenia URL...",
|
25
|
+
"tunning": "Strojenie...",
|
26
|
+
"version": "Wersja",
|
27
|
+
"volume": "Głośność"
|
28
|
+
}
|
@@ -1,26 +1,28 @@
|
|
1
1
|
{
|
2
|
+
"about": "Sobre",
|
3
|
+
"cancel": "Cancelar",
|
4
|
+
"close": "Fechar",
|
5
|
+
"coffee": "Se você gosta do PiFi Radio, pode mostrar seu apoio comprando-me um café.",
|
6
|
+
"disconnectedMPD": "Sem conexão ao MPD",
|
7
|
+
"environment": "Ambiente",
|
8
|
+
"errorForbidden": "Requisição não permitida. Verifique a senha do MPD e permissões.",
|
2
9
|
"errorNetwork": "Sem conexão ao servidor PiFi",
|
3
|
-
"errorUnexpected": "Um erro inesperado ocorreu.",
|
4
10
|
"errorNotFound": "Não foi possível encontrar o stream.",
|
5
|
-
"
|
6
|
-
"
|
7
|
-
"
|
11
|
+
"errorUnexpected": "Um erro inesperado ocorreu.",
|
12
|
+
"goToDocs": "Ver documentação",
|
13
|
+
"language": "Idioma",
|
14
|
+
"mpdHost": "Host do MPD",
|
15
|
+
"mpdPort": "Porta do MPD",
|
16
|
+
"noStreams": "Não há rádios disponíveis.",
|
8
17
|
"ok": "OK",
|
9
|
-
"cancel": "Cancelar",
|
10
|
-
"search": "Buscar...",
|
11
18
|
"playing": "Tocando",
|
12
|
-
"stopped": "Parado",
|
13
|
-
"tunning": "Sintonizando...",
|
14
|
-
"noStreams": "Não há rádios disponíveis.",
|
15
19
|
"playURL": "Tocar URL",
|
16
|
-
"
|
20
|
+
"search": "Buscar...",
|
17
21
|
"settings": "Ajustes",
|
22
|
+
"stopped": "Parado",
|
18
23
|
"theme": "Tema",
|
19
|
-
"
|
20
|
-
"
|
21
|
-
"mpdHost": "Host do MPD",
|
22
|
-
"mpdPort": "Porta do MPD",
|
23
|
-
"environment": "Ambiente",
|
24
|
+
"tryingURL": "Tentando tocar URL...",
|
25
|
+
"tunning": "Sintonizando...",
|
24
26
|
"version": "Versão",
|
25
27
|
"volume": "Volume"
|
26
28
|
}
|