-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpluginInfo.json
More file actions
136 lines (136 loc) · 7.68 KB
/
Copy pathpluginInfo.json
File metadata and controls
136 lines (136 loc) · 7.68 KB
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
{
"repoName": "fpp-EncoreRadio",
"name": "Encore Radio",
"author": "Nick Scilingo Nick S(NJ)",
"description": "Keep the radio station feel going after the light show ends. Streams a custom internet radio URL, TuneIn stations, or a folder of music from a network share (free), or Pandora and Spotify playlists (premium), through your after-hours schedule. Source Fallback (auto-recovery if a source fails) is free for every source; Source Rotation (a different source on a day/time schedule) is premium. Includes Announcement Assistant integration for scheduled station-style announcements.",
"homeURL": "https://github.com/focusedonsound/fpp-EncoreRadio",
"srcURL": "https://github.com/focusedonsound/fpp-EncoreRadio.git",
"bugURL": "https://github.com/focusedonsound/fpp-EncoreRadio/issues",
"iconURL": "https://raw.githubusercontent.com/focusedonsound/fpp-EncoreRadio/master/icon.png",
"allowUpdates": 1,
"minMemoryMB": 512,
"minCpuCores": 2,
"privacy": {
"summary": "Streams a station or your shared library (free), or Pandora/Spotify (premium), through FPP. The 10-hour trial is tracked locally and never reported anywhere.",
"sends": [
{
"to": "encoreradio-license.nscilingo.workers.dev",
"what": "Hardware ID + license key when validating; your email if saved, for reminders; relays Spotify OAuth.",
"why": "License validation, optional email reminders, and unlocking Pandora/Spotify/Rotation.",
"alwaysOn": false
},
{
"to": "opml.radiotime.com",
"what": "your TuneIn station search text",
"why": "TuneIn station search and playback",
"alwaysOn": false
},
{
"to": "the custom stream URL you enter",
"what": "an HTTP request to start playback of that stream",
"why": "Custom Internet Radio source playback",
"alwaysOn": false
},
{
"to": "the TuneIn station's actual stream host (resolved via opml.radiotime.com's Tune.ashx)",
"what": "an HTTP request to start playback of that station's stream",
"why": "TuneIn source playback",
"alwaysOn": false
},
{
"to": "your NAS or network share",
"what": "the CIFS/SMB username and password you configure, and file read requests",
"why": "Network Share source playback",
"alwaysOn": false
},
{
"to": "accounts.spotify.com and api.spotify.com",
"what": "your Spotify account tokens and search/playback requests",
"why": "Spotify playback and search (premium)",
"alwaysOn": false
},
{
"to": "Pandora's servers (via the bundled pianobar client)",
"what": "your Pandora login and playback requests",
"why": "Pandora playback (premium)",
"alwaysOn": false
},
{
"to": "Spotify's servers (via the bundled Raspotify/librespot service)",
"what": "this device's online status, for Spotify Connect discovery",
"why": "lets your Spotify app find and cast to this device",
"alwaysOn": true
}
],
"collects": [
{
"what": "An email or license key - required for Pandora/Spotify/Rotation, never for free sources.",
"about": "operator",
"keptDays": null,
"canDelete": false,
"where": "plugindata/fpp-EncoreRadio/encoreradio.json (mode 600)"
},
{
"what": "Cumulative premium trial seconds used - local only, resettable by editing this file.",
"about": "operator",
"keptDays": null,
"canDelete": true,
"where": "plugindata/fpp-EncoreRadio/trial_state.json (mode 600)"
},
{
"what": "Pandora username and password (plaintext)",
"about": "operator",
"keptDays": null,
"canDelete": false,
"where": "plugindata/fpp-EncoreRadio/encoreradio.json (mode 600) and media/plugins/fpp-EncoreRadio/state/pianobar_home/.config/pianobar/config (mode 600, root-owned)"
},
{
"what": "Spotify client ID/secret and access/refresh tokens",
"about": "operator",
"keptDays": null,
"canDelete": false,
"where": "plugindata/fpp-EncoreRadio/encoreradio.json (mode 600)"
},
{
"what": "network-share (CIFS) username and password",
"about": "operator",
"keptDays": null,
"canDelete": false,
"where": "plugindata/fpp-EncoreRadio/encoreradio.json (mode 600), and briefly in plugindata/fpp-EncoreRadio/netshare_creds (mode 600, rewritten each time the share is mounted)"
}
],
"sensors": [],
"remoteAccess": "lan",
"systemChanges": [
{ "kind": "service", "what": "Creates encoreradio-pulse.service (system PulseAudio); overwrites /etc/pulse/system.pa, pins fpp's Pulse clients to it." },
{ "kind": "service", "what": "Enables Raspotify (Spotify Connect) once Spotify is configured; not started otherwise." },
{ "kind": "privilege", "what": "Adds the pulse and fpp users to the audio group." },
{ "kind": "download", "what": "Downloads/installs the Raspotify .deb, checksum-verified via api.github.com." },
{ "kind": "core-settings", "what": "Edits /etc/raspotify/conf (audio backend, device name) when Raspotify is installed." },
{ "kind": "network", "what": "Mounts an operator-specified network share on demand, outside media/, unmounted when playback stops." },
{ "kind": "network", "what": "The audio relay binds 0.0.0.0:8123 (configurable) while a source is playing." }
],
"closedCode": false,
"other": "Pandora, Spotify, and Source Rotation are locked in the UI (and rejected server-side, not just cosmetically) until you register an email or already have a license key entered; Source Fallback, Custom Internet Radio, Network Share, TuneIn, and Announcement Assistant scheduling are never gated on anything. The PulseAudio system.pa rewrite also points every PulseAudio client running as the fpp user - including FPP's own audio output, not just this plugin's - at the shared instance; it's backed up before being overwritten and restored on uninstall, but only when this plugin was the one that created it (not when another plugin, e.g. Announcement Assistant, got there first - uninstalling never touches a shared setup it doesn't own). The license server's email flow (only if you save an email) sends nothing but that address, and stops automatically once you have a license key: a welcome message on signup, then reminders at day 3/7/14 if you're still unlicensed. During Spotify setup, the license server also relays the OAuth authorization code and this device's local callback URL back to it, since Spotify requires an https redirect URI and this device's LAN address can't be one - the token exchange itself still happens locally. Custom Internet Radio, TuneIn, and Network Share sources send requests only to the stream URL, station, or NAS you configure. Uninstalling does not remove plugindata/fpp-EncoreRadio/ (encoreradio.json, trial_state.json) or the plugin's state directory: registration status, license data, trial-hour progress, and any saved Pandora/Spotify/network-share credentials remain on disk until deleted by hand. It also does not remove the raspotify package or /etc/raspotify/conf, so a reinstall doesn't need to re-download it."
},
"versions": [
{
"minFPPVersion": "9.0",
"maxFPPVersion": "9.99",
"branch": "master",
"sha": "",
"dependencies": {
"packages": ["ffmpeg", "pianobar", "curl", "python3", "jq", "cifs-utils"]
}
},
{
"minFPPVersion": "10.0",
"maxFPPVersion": "0",
"branch": "master",
"sha": "",
"dependencies": {
"packages": ["ffmpeg", "pianobar", "curl", "python3", "jq", "cifs-utils"]
}
}
]
}