ulrich
2024-11-17 28f56306cd1fc2ac055d67fef9ce28fa988df1db
web/app.js
@@ -22,6 +22,7 @@
  var mone;
  var channels;
  var outPath;
  var senderliste;
  /**
   * Den Aufnahmeplaner initialisieren
@@ -34,12 +35,13 @@
    self.mone = ['jan', 'feb', 'mar', 'apr', 'may', 'jun', 
      'jul', 'aug', 'sep', 'oct', 'nov', 'dec'];
    
    self.senderliste =  new Array();
    /*
     * die folgenden Konstanten koennten auch ueber eine Konfigurationsdatei
     * oder eine API vom Server bereitgestellt werden
     */
    self.channels = "/media/extssd/mc/channels.conf";
    self.outPath = "/home/fred/work/";
    //self.channels = "/media/extssd/mc/channels.conf";
    self.outPath = "/home/fred/tv/";
    
    self.channelsLesen();
    
@@ -55,7 +57,7 @@
     * initial die Einstellungen einsammeln und 
     *  an der Bedienoberflaeche zeigen
     */
    self.collectSettings();
    //self.collectSettings();
  };
  
  /**
@@ -108,12 +110,19 @@
    var bez = document.getElementById("bez").value;
    var dotpos = bez.indexOf(".");
    var fname = self.outPath;
    var sender = document.getElementById("sender").value;
    var senderElem = document.getElementById("sender");
    var sender = senderElem.options[senderElem.selectedIndex].text;
    var streamData = self.senderliste[senderElem.selectedIndex];
    var streamElems = streamData.split("|");
    var streamFreq = streamElems[1];
    if(dotpos > -1) {
      fname = fname + bez.substring(0, dotpos) + "-" + self.fts(start) + "-" 
              + sender + bez.substring(dotpos);
    } else {
      fname = fname + bez + "-" + self.fts(start) + "-" + sender + ".ts";
      fname = fname + bez + "-" + self.fts(start) + "-" + sender + ".mp4";
    }
    infotext = infotext + "<br>" + fname; 
    
@@ -123,17 +132,18 @@
    /*
     * im DOM-Element 'cmd' wird der Befehl zusammengstellt und angezeigt 
     * wie er fuer die Programmierung einer Aufzeichnung mit Hilfe von 
     * gnutv und at benoetigt wird.
     * ffmpeg und at benoetigt wird.
     *
     * Beispiel:
     * echo "gnutv -channels /media/extssd/mc/channels.conf
     * -out file /home/fred/work/test-2020-02-01-1050-arteHD.ts
     * -timeout 300 arteHD" | at 1050 feb 01
     * echo "ffmpeg -i https://artesimulcast.akamaized.net/hls/live/2030993/artelive_de/index.m3u8
     * -t 10800 -acodec copy -vcodec copy
     * /home/fred/tv/filmtitel-2024-11-17-2005-arte-HD.mp4" | at 2005 nov 17
     *
     *
     */
    document.getElementById("cmd").innerHTML = 'echo "gnutv -channels '
            + self.channels + ' -out file '
            + fname + ' -timeout ' + dauerSekunden + ' ' + sender
            + '" | at ' + self.zeitZuText(start) + ' '
    document.getElementById("cmd").innerHTML = 'echo "ffmpeg -i '
            + streamFreq + ' -t ' + dauerSekunden +
            ' -acodec copy -vcodec copy ' + fname + '" | at ' + self.zeitZuText(start) + ' '
            + self.mone[start.getMonth()] + ' ' + start.getDate();
  };
  
@@ -173,11 +183,15 @@
    self.http_get(url, function (antwort) {      
      var zeilen = antwort.split("\n");
      zeilen.sort();
      self.senderliste = zeilen;
      var senderAuswahl = document.getElementById("sender");
      var sender;
      var zElems;
      for(var i = 0; i < zeilen.length; i++) {
        sender = document.createElement("option");
        sender.textContent = zeilen[i].split(":")[0];
        zElems = zeilen[i].split("|");
        sender = document.createElement("option");
        sender.textContent = zElems[0];
        sender.value = zElems[1];
        senderAuswahl.appendChild(sender);
      }      
    });