App zur Steuerung des mpv Mediaplayers auf einem Raspberry Pi über HTTP
ulrich
2021-03-21 e448afbfb51d405f9eb1d1140405c9619ca79153
Logging, Query Map
2 files modified
1 files added
127 ■■■■ changed files
src/de/uhilger/avdirektor/handler/OMXPlayer.java 15 ●●●●● patch | view | raw | blame | history
src/de/uhilger/avdirektor/handler/PlayHandler.java 41 ●●●●● patch | view | raw | blame | history
src/logging.properties 71 ●●●●● patch | view | raw | blame | history
src/de/uhilger/avdirektor/handler/OMXPlayer.java
@@ -16,6 +16,8 @@
import java.io.Writer;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -27,6 +29,19 @@
  
  private static final Logger logger = Logger.getLogger(OMXPlayer.class.getName());
  
  protected Map getQueryMap(HttpExchange t) {
    HashMap map = new HashMap();
    String query = t.getRequestURI().getQuery();
    if(query != null && query.length() > 0) {
      String qParts[] = query.split("&");
      for(String qPart : qParts) {
        //logger.info("qPart: " + qPart);
        String pParts[] = qPart.split("=");
        map.put(pParts[0], pParts[1]);
      }
    }
    return map;
  }
  
  /**
   * Einen Prozess zum Abspielen mit dem omxplayer starten
src/de/uhilger/avdirektor/handler/PlayHandler.java
@@ -5,7 +5,9 @@
import java.io.IOException;
import java.io.OutputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import java.util.function.Consumer;
import java.util.logging.Level;
import java.util.logging.Logger;
@@ -52,37 +54,26 @@
  @Override
  public void handle(HttpExchange t) throws IOException {
    logger.log(Level.INFO, "RequestURI.getPath: {0}", t.getRequestURI().getPath());
    String path = t.getRequestURI().getPath();
    String[] parts = path.split("/");
    for (String part : parts) {
      logger.log(Level.INFO, "part: {0}", part);
    }
    //logger.log(Level.INFO, "query: {0}", t.getRequestURI().getQuery());
    HashMap map = new HashMap();
    String query = t.getRequestURI().getQuery();
    if(query != null && query.length() > 0) {
      String qParts[] = query.split("&");
      for(String qPart : qParts) {
        //logger.info("qPart: " + qPart);
        String pParts[] = qPart.split("=");
        map.put(pParts[0], pParts[1]);
      }
    }
    logger.log(Level.FINE, "RequestURI.getPath: {0}", t.getRequestURI().getPath());
    Map map = getQueryMap(t);
    Set keys = map.keySet();
    keys.forEach(key -> {
      logger.info("key " + key + " value " + map.get(key));
    StringBuffer buf = new StringBuffer();
    buf.append("play");
    buf.append(System.lineSeparator());
    keys.forEach((Object key) -> {
      buf.append("key: ");
      buf.append(key);
      buf.append(System.lineSeparator());
      buf.append("value: ");
      buf.append(map.get(key));
      buf.append(System.lineSeparator());
      logger.log(Level.FINE, "key {0} value {1}", new Object[]{key, map.get(key)});
    });
    
    String response = "play";
    String response = buf.toString();
    t.sendResponseHeaders(200, response.length());
    OutputStream os = t.getResponseBody();
    os.write(response.getBytes());
    os.close();    
  }
}
src/logging.properties
New file
@@ -0,0 +1,71 @@
############################################################
#      Default Logging Configuration File
#
# You can use a different file by specifying a filename
# with the java.util.logging.config.file system property.
# For example java -Djava.util.logging.config.file=myfile
############################################################
############################################################
#      Global properties
############################################################
# "handlers" specifies a comma separated list of log Handler
# classes.  These handlers will be installed during VM startup.
# Note that these classes must be on the system classpath.
# By default we only configure a ConsoleHandler, which will only
# show messages at the INFO and above levels.
# handlers= java.util.logging.ConsoleHandler
# To also add the FileHandler, use the following line instead.
# handlers= java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# Default global logging level.
# This specifies which kinds of events are logged across
# all loggers.  For any given facility this global level
# can be overriden by a facility specific level
# Note that the ConsoleHandler also has a separate level
# setting to limit messages printed to the console.
# .level= FINE
.level = NONE
############################################################
# Handler specific properties.
# Describes specific configuration info for Handlers.
############################################################
# default file output is in user's home directory.
java.util.logging.FileHandler.pattern = %h/java%u.log
# java.util.logging.FileHandler.pattern = /media/extmirror/tomcat747/logs/tv_%u.log
# java.util.logging.FileHandler.pattern = ${catalina.base}/logs/file-cms_%u.log
# java.util.logging.FileHandler.limit = 50000
# java.util.logging.FileHandler.count = 1
# java.util.logging.FileHandler.count = 2
# java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
java.util.logging.FileHandler.formatter = java.util.logging.SimpleFormatter
# java.util.logging.FileHandler.level = FINER
# Limit the message that are printed on the console to INFO and above.
# java.util.logging.ConsoleHandler.level = INFO
# java.util.logging.ConsoleHandler.level = FINER
# java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
# Example to customize the SimpleFormatter output format
# to print one-line log message like this:
#     <level>: <log message> [<date/time>]
#
# java.util.logging.SimpleFormatter.format=%4$s: %5$s [%1$tc]%n
############################################################
# Facility specific properties.
# Provides extra control for each logger.
############################################################
# For example, set the com.xyz.foo logger to only log SEVERE
# messages:
# com.xyz.foo.level = SEVERE
# de.uhilger.filecms.handlers = java.util.logging.FileHandler, java.util.logging.ConsoleHandler
# de.uhilger.filecms.level = FINEST
# de.uhilger.wbx.handlers = java.util.logging.ConsoleHandler
# de.uhilger.wbx.level = FINEST
de.uhilger.avdirektor.level = INFO