App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-04-01 2dd7a5b331b57db5c7aa5bef9540e3e198848060
commit | author | age
60719c 1 /*
U 2     AV-Direktor - Control OMXPlayer on Raspberry Pi via HTTP
3     Copyright (C) 2021  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
8e2038 19 package de.uhilger.avdirektor.handler;
U 20
21 import com.sun.net.httpserver.HttpExchange;
cfe367 22 import de.uhilger.avdirektor.App;
2dd7a5 23 import java.io.File;
U 24 import java.io.IOException;
8e2038 25 import java.util.logging.Level;
U 26 import java.util.logging.Logger;
2dd7a5 27 import org.apache.commons.io.FileUtils;
8e2038 28
U 29 /**
e499f8 30  * Play
U 31  * 
32  * rpi4-az:9090/avd/play?titel=/Filme/S/sound_city.m4v&th=60&ti=60&o=local
33  * 
34  *  OMXPlayer.abspielenMitParameternUndRueckmeldung(
35  *    String urlStr, String parameter, String meldeUrlStr, String token)
36  *
37  *  Parameter des Aufrufs play als query (th threshold, ti timeout)
38  *
39  *  ?titel=/Filme/S/sound_city.m4v
40  *  &ti=60
41  *  &th=60
42  *  &o=local|hdmi|both
43  *  &r=http://uhilger.de/mc/api/usw
44  *
45  *  r muss ganz wegbleiben, wenn keine Rueckmeldung gewuescht ist
8e2038 46  * 
U 47  * @author ulrich
48  */
63b711 49 public class PlayHandler extends CmdHandler {
8e2038 50   
U 51   private static final Logger logger = Logger.getLogger(PlayHandler.class.getName());
63b711 52
U 53   public PlayHandler(String cmd) {
54     super(cmd);
55   }
56
57   protected StringBuilder buildParams(HttpExchange t) {
58     StringBuilder params = super.buildParams(t);
b6a8f0 59     params.append("-b -o ");
a7f0a1 60     params.append(getParam(map, "o"));
U 61     params.append(" --threshold ");
62     params.append(getParam(map, "th"));
63     params.append(" --timeout ");
64     params.append(getParam(map, "ti"));
15ed25 65     String log = getParam(map, "log");
U 66     if(log != null && log.equalsIgnoreCase("true")) {
67       params.append(" --genlog");
68     }
63b711 69     return params;
8e2038 70   }
cc2a32 71   
2dd7a5 72   @Override
U 73   protected String process(HttpExchange t, String params) {
74     if(cmd.equalsIgnoreCase(OMXPlayer.F_PLAY)) {
75       try {
76         FileUtils.deleteDirectory(new File(System.getProperty("omx.wd"), "omx-logs"));
77       } catch (IOException ex) {
78         logger.log(Level.SEVERE, null, ex);
79       }
80     }
81     String antwort = App.getPlayer().abspielen( 
82             getParam(map, "titel"), params, getParam(map, "r"), "1");    
83     logger.log(Level.FINE, antwort);
84     return antwort;
85   }
86
8e2038 87 }