App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
undisclosed
2023-01-08 e27ab178fa3a2f967823c1bfc81951086e15b642
commit | author | age
929228 1 /*
U 2     Calypso - Media Player Remote Control via HTTP for Raspberry Pi
3     Copyright (C) 2021-2023  Ulrich Hilger
4
5     This program is free software: you can redistribute it and/or modify
6     it under the terms of the GNU Affero General Public License as
7     published by the Free Software Foundation, either version 3 of the
8     License, or (at your option) any later version.
9
10     This program is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU Affero General Public License for more details.
14
15     You should have received a copy of the GNU Affero General Public License
16     along with this program.  If not, see <https://www.gnu.org/licenses/>.
17 */
18
e27ab1 19 package de.uhilger.calypso.actor;
929228 20
e27ab1 21 import de.uhilger.calypso.http.Server;
929228 22 import java.io.File;
U 23 import java.io.IOException;
24
25 /**
26  *
27  * Der mpv Abspieler erhaelt Kommandos waehrend des Abspielens 
28  * ueber Unix Domain Sockets. Da diese erst mit Java 16 untersuetzt 
29  * werden und Java 16 fuer den Raspberry Pi noch nicht erhaeltlich 
30  * ist, werden diese Kommandos als Shell-Skript unter Verwendung 
31  * des Linux-Programms socat gesendet.
32  * 
33  * Der Shell Actor fuehrt Skripte aus. Wenn ein Kommando Parameter 
34  * erfordert, werden diese aus dem Query-Teil des HTTP-Aufrufes 
35  * entnommen.
36  * 
37  * 
38  * @author Ulrich Hilger
39  */
40 public class ShellActor {
41   
42   /**
43    * Ein Skript auf der Kommandozeile ausfuehren
44    * 
45    * @param skriptDir das Verzeichnis, in dem das Skript liegt
46    * @param kommando der Name des Skript
47    * @throws IOException 
48    */
49   //public void run(String skriptDir, String kommando) throws IOException {
50   //  File skriptFile = new File(skriptDir, kommando);
51   //  Process p = Runtime.getRuntime().exec(skriptFile.getAbsolutePath());
52   //}
53   
54   /**
55    * 
56    * @param skriptDir das Verzeichnis, in dem das Skript liegt
57    * @param kommando der Name des Skript
58    * @param params die Parameter des Shell-Kommandos, null, wenn keine
59    * @throws IOException 
60    */
61   public void run(String skriptDir, String kommando, String... params) throws IOException {
62     StringBuilder sb = new StringBuilder();
63     File skriptFile = new File(skriptDir, kommando);
64     sb.append(skriptFile.getAbsolutePath());
65     if(params instanceof String[]) {
66       for (String param : params) {
67         sb.append(Server.BLANK);
68         sb.append(param);
69       }
70     }
71     Process p = Runtime.getRuntime().exec(sb.toString());    
72   }
73 }