• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Hilfe bei der Umsetzung gesucht. Anwendung am entstehen... ?

revealed

Guru
Esel nennt sich immer zuerst :) Hallo ich bins Esel und ich hab das hier gemacht:
http://www.linux-club.de/ftopic75484.html

Also bei beidem hier geht es um die TV Karte "PVR 150" IVTV-TUNE und Xine --

Dann war b3ll3roph0n so nett mir das hier zu baun weil ich voll ewig rumgequängelt hab das ich kein Sendersuchlauf hinbekomm;

Falls das jemand auch will:

edit; 12. Apr. 2007
Man benötigt ein paar dinge:
Code:
"scantv" (edit kommt glaub mit "xawtv4" und "v4ltools".)
mplayer oder xine (multimediafähig) und "gawk?".

Falls jemand den Script gestartet hat, dann das Fenster aber nicht aufging:
http://www.linux-club.de/viewtopic.php?p=467406#467406

Wichtig bitte direkt vorm ersten Start die richtige Videonode noch eintragen und wenn der Script gestartet hat warten bis das Fenster Aufgeht!

Und achtung für Leute die ihre TMP Verzeichniss von Cron beim Boot automatisch säubern lassen -- die scantv.ch wird in diesem Fall in "TMP" abgelegt.
/edit

Code:
#/bin/bash
##########################################################################################################

TV="europe-west";
DEV="/dev/video1";
NORM="PAL-BGH";
VI="Xv";
SFILE="/tmp/scantv.ch";
PLAYER="xine";

##########################################################################################################

PRGNAME="$(basename $0)";
IV=`which ivtv-tune 2> /dev/null`;
SCAN=`which scantv 2> /dev/null`;
KDIAG=`which kdialog 2> /dev/null`;
AWK=`which awk 2> /dev/null`;
XINE=`which xine 2> /dev/null`;
MPLAY=`which mplayer 2> /dev/null`;

PS=`which ps 2> /dev/null`;
GREP=`which grep 2> /dev/null`;
WC=`which wc 2> /dev/null`;
CAT=`which cat 2> /dev/null`;

readonly SHORTHELP="Usage: $PRGNAME [Options] ...";

##########################################################################################################

function usage {
  echo -e "$SHORTHELP" >&2;
};

function parseSfile {
  $GREP -B1 "^channel" "$SFILE" | gawk '
    function p(varname,val)
      { printf "%s=\"%s\"\n",varname,val }
    BEGIN { FS = " = "; i = "0" }
    /^\[/ { p("SENDER["i"]", gensub(/\[|\]|\(|\)/,"","g",gensub(/\ /,"-","g",$0))); }
    /^channel/ { p("CHANNEL["i++"]", $2); }
    END { p("LIMIT", i) }
  ';
};

function switchCHAN {
  PLAY="$DEFPLAY";
  CHAN="$1";
  if [ ! -z "$2" ]; then PLAY="$2"; fi;
  if [ `$PS -A | $GREP $PLAY | $WC -l` -eq 0 ]; then
    if [ $PLAY = "xine" ]; then
      "$CAT" "$DEV" | "$XINE" -V "$VI" stdin://mpeg2 &
     elif [ $PLAY = "mplayer" ]; then
       "$MPLAY" "$DEV" 2>& /dev/null
      else exit 100;
    fi;
  fi;

  "$IV" -t "$TV" -c "$CHAN" -d "$DEV" &
};

function chooseCHAN {
  ACTION="$("$KDIAG" --title "Sender wechseln?" --menu "Sender wählen ..." \
    $(for (( i=0; i < LIMIT; i++ )); do
      echo ${CHANNEL[$i]} ${SENDER[$i]} ;
    done);
  )"; RETVAL="$?";
  if [ "$RETVAL" -eq 0 ]; then
    switchCHAN "$ACTION" "$PLAYER";
  fi;
};

##########################################################################################################

if [ -z "$IV" ]; then
  echo -e "ivtv-tune ist nicht installiert!\nBeende ..."; exit 100;
fi;

if [ -z "$SCAN" ]; then
  echo -e "scantv ist nicht installiert!\nBeende ..."; exit 100;
fi;

if [ ! -z "$MPLAY" ]; then DEFPLAY="mplayer";
  elif [ ! -z "$XINE" ]; then DEFPLAY="xine";
   else echo -e "Weder Xine noch MPlayer sind installiert!\nBeende ..."; exit 100;
fi;

if [ -z "$KDIAG" ]; then
  echo -e "kdialog ist nicht installiert!\nBeende ..."; exit 100;
fi;

if [ ! -f "$SFILE" ]; then
  echo -e "Keine channel-Konfiguration gefunden\nStarte scantv ...";
  $SCAN -n "$NORM" -f "$TV" -c "$DEV" -o "$SFILE" >& /dev/null;
  if [ ! $? -eq 0 ]; then
    echo -e "scantv hat einen Fehler gemeldet\nBeende ..."; exit 100;
  fi;
fi;

if [ -f "$SFILE" ]; then

  eval `parseSfile`;
  RETVAL="0";
  while [ "$RETVAL" -eq 0 ]; do chooseCHAN; done;

fi;

# End of file
Das ist ein Superschöner script! Der startet eben scantv legt ein File in TMP ab, liest dieses aus und erzeugt einen "kdialog" mit Listenfeld - mit dem man dann die erkannten Sender wählen kann. Bei Druck auf "ok" startet Xine und der Sender wird wiedergegeben.

Jetzt ist aber das Problem das ich das ja eigendlich irgendwie in TCL/TK umsetzen wollte. Das heisst also beispielsweise in TCL/TK diese "funktion" mit Auftrag: "Lese - diese und jene Datei an bestimmter Stelle und gib diese dann an TCL/TK zurück damit TCL/TK einen Knopf machen kann der IVTV-TUNE mit information aus Datei startet"

Anders gefragt: Wie macht man ein GUI für das Script oben? Oder wie kann man das Script in TCL/TK umsetzen?

Kdialog ist eben leider n bissl beschränkt - ich kenn mich da sowieso nicht aus und obendrein vermiss ich so ein paar Knöpfe die man mit Kdialog nicht machen kann. Beispielsweise hab ich in dem TCL script einen Knopf um TV Browser zu starten und ein Menü oben, das noch nicht sehr weit ist.

Wie liesse sich das Optische (sorry schlechter Screen) hier:
http://www.pic-upload.de/view_03.03.07/2nmfcq.jpg.html
Zusammenführen? Also auch so, dass das Fenster zum Kanalwechseln immer offen bleiben kann und beispielsweise mit ksystraycmd ins Tray gedockt werden kann.

Aber das wär so super wenn das irgendwie hinhauen würde.

Gruss

R
 
Oben