auto audio cahnel(Left/Rigt) swich on dream(without RuDream image) SE

tahir85pk

Super VIP
Messages
936
auto audio cahnel(Left/Rigt) swich on dream(without RuDream image) SE
new version:
now remembers last used audio track for any channel if isnt same as defaul set

Quote:
#!/bin/sh
#
foo="$0"
crntNamePath=${foo%.*}
crntNameExt=${foo##*/}
crntNameShort=${crntNameExt%.*}
crntNameTxt="$crntNamePath".txt
#LOGFILE=/tmp/"$crntNameShort".log
WebIfFile=/tmp/"$crntNameShort".WebIF
rm -f $WebIfFile
LOGSTR="`date +%y.%m.%d.\ %H:%M:%S` $crntNameShort: -> "
crntpid=$$
echo $LOGSTR"STARTED - pid: $crntpid"
#echo $LOGSTR"STARTED - pid: $crntpid">"$LOGFILE"

#
# kill copyes of self
#
#pids=`pidof $crntNameExt| sed -e s/$crntpid//`
pids=`ps| grep $crntNameExt| grep -v grep| grep -v $$| sed -e 's/ [a-z].*$//g'`
if [ -n "$pids" ]; then
echo $LOGSTR"crntPid: $crntpid, pids to kill: $pids"
#echo $LOGSTR"pids to kill: $pids"****"$LOGFILE"
kill -9 $pids>/dev/null
fi

hex_to_dec () {
HexStrLen=`expr length $HexSTR`
HexStrPos=1
DEC=0
while [ "$HexStrLen" -ge "$HexStrPos" ]
do
DEC=$((DEC*16)) X0="0"
Hex1=`expr substr "$HexSTR" "$HexStrPos" 1`
case "$Hex1" in
[0-9]) X0="$Hex1";;
A|a) X0="10";;
B|b) X0="11";;
C|c) X0="12";;
D|d) X0="13";;
E|e) X0="14";;
F|f) X0="15";;
esac
DEC=$((DEC+X0*16))
HexStrPos=$((HexStrPos+1))
done
DEC=$((DEC/16))
}

#
# Web-IF Port Nummber
#
ConfigPATH="/var/tuxbox/config/enigma/config"
if [ ! -f "$ConfigPATH" ]; then
ConfigPATH="/etc/enigma/config"
if [ ! -f "$ConfigPATH" ]; then PortDec="80"; fi
fi
if [ ! $PortDec ]; then
PortHex=`grep 'webifport=' "$ConfigPATH"| sed -e 's/.*webifport=//'`
if [ ! $PortHex ]; then
PortDec="80"
else
HexSTR="$PortHex"
hex_to_dec
PortDec="$DEC"
fi
fi

#
# DreamBox PassWord
#
PSWFILE="/var/script/reload_emu_names.txt"
DOCMD="wget -O $WebIfFile -q http://root:"
DOCMD1="@localhost:$PortDec/cgi-bin"

if [ ! -e "$PSWFILE" ];then
LOCALPW="dreambox"
echo "$LOCALPW">"$PSWFILE"
else
LOCALPW=`cat -u "$PSWFILE"| head -1`
fi

current_Audio_LanguageAndTrack () {
$DOCMD$LOCALPW$DOCMD1/selectAudio
Audio**********`grep "option selected value=" $WebIfFile| sed -e 's/.*selected value="//' -e 's/".*//'`
AudioTrack=`grep '" checked' $WebIfFile| sed -e 's/.*value="//' -e 's/".*//'`
}

cleanFromTxt () {
rm -f /tmp/"$crntNameShort".tmp
sed s/"$ServiceReference".*// $crntNameTxt| sed '/^$/d'>/tmp/"$crntNameShort".tmp
mv /tmp/"$crntNameShort".tmp "$crntNameTxt"
}

LastPmtMd5=""
LEFT="0" RIGHT="2"

if [ ! -f "$crntNameTxt" ]; then
echo "1:0:1:87a:4:56:320000:0:0:0: Track:$LEFT Language: TV1000 East 5E"****"$crntNameTxt"
echo "1:0:1:11f:1:1:322f4f:0:0:0: Track:$RIGHT Language: Travel 5E"****"$crntNameTxt"
echo "1:0:1:11f:1:1:32d080:0:0:0: Track:$RIGHT Language: Travel 5E"****"$crntNameTxt"
echo "1:0:1:c9:2:46:fff60000:0:0:0: Track:$LEFT Language:0x0191 NGC 1W"****"$crntNameTxt"
fi

#
# start
#
while true
do
LOGSTR="`date +%y.%m.%d.\ %H:%M:%S` $crntNameShort: -> "
if [ ! -f /tmp/pmt.tmp ]; then
PmtMd5="0"
else
PmtMd5=`md5sum /tmp/pmt.tmp| awk {'print $1'}`
fi
if [ ! "$PmtMd5" = "0" ]; then
if [ "$PmtMd5" = "$LastPmtMd5" ]; then
current_Audio_LanguageAndTrack
#$DOCMD$LOCALPW$DOCMD1/openSI
$DOCMD$LOCALPW@localhost:$PortDec/xml/streaminfo
SNR=`grep "<snr>" $WebIfFile| sed -e 's/.*<snr>//'| sed -e 's/%.*//'`
if [ "$SNR" -lt "75" ]; then WeakSignal="1"; fi
if [ ! "$AudioLanguage" ] || [ ! "$AudioTrack" ] || [ "$AudioLanguage" = "$AudioLanguage0" -a "$AudioTrack" = "$AudioTrack0" ]; then
sleep 1
else
echo $LOGSTR"audio track is changed from: $AudioLanguage0 $AudioTrack0 to: $AudioLanguage $AudioTrack"
if [ "$WeakSignal" = "1" -a "$AudioTrack" = "1" ]; then
echo $LOGSTR"skip SAVE cause weak signal were presented"
else
ChNAME=`grep "<name>" $WebIfFile| sed -e 's/.*<name>//'| sed -e 's/<.*//'`
ServiceReference0=`grep "<reference>" $WebIfFile| sed -e 's/.*<reference>//'| sed -e 's/<.*//'`
if [ "$ServiceReference0" = "$ServiceReference" ]; then
if [ "$AudioLanguage" = "$AudioLanguage0" ]; then
SaveSTR=""
else
SaveSTR="$AudioLanguage"
fi
SaveSTR="$ServiceReference Track:$AudioTrack Language:$SaveSTR $ChNAME"
cleanFromTxt
echo "$SaveSTR"****"$crntNameTxt"
fi
fi
AudioLanguage0="$AudioLanguage" AudioTrack0="$AudioTrack"
fi
else
LastPmtMd5="$PmtMd5" SetAudio="Z" WeakSignal="0"
$DOCMD$LOCALPW$DOCMD1/status
ServiceReference=`grep "service reference:</td><td>" $WebIfFile| tail -1| sed -e 's/.*<td>//' -e 's/<.*//'`
echo $LOGSTR"channel is changed $ServiceReference"
echo $ServiceReference>/tmp/"$crntNameShort".LastChannel
current_Audio_LanguageAndTrack
SAVED_Audio_LanguageAndTrack=`grep "$ServiceReference" "$crntNameTxt"| sed -e 's/""$ServiceReferenc""//'`
if [ ! "$SAVED_Audio_LanguageAndTrack" ]; then
echo $LOGSTR"use default LanguageAndTrack: $AudioLanguage $AudioTrack"
AudioLanguage0="$AudioLanguage" AudioTrack0="$AudioTrack"
else
AudioLanguage0=${SAVED_Audio_LanguageAndTrack#*Lan guage:}
AudioLanguage0=${AudioLanguage0%% *}
AudioTrack0=${SAVED_Audio_LanguageAndTrack#*Track: }
AudioTrack0=${AudioTrack0%% *}
if [ "$AudioLanguage0" = "$AudioLanguage" -o "$AudioLanguage0" = "" ] && [ "$AudioTrack0" = "$AudioTrack" -a "$AudioTrack" = "1" ]; then
cleanFromTxt
AudioLanguage0="$AudioLanguage"
echo $LOGSTR"clean from list cause same as default LanguageAndTrack: $AudioLanguage $AudioTrack"
else
if [ ! "$AudioLanguage0" = "" ]; then
SetAudio="&**********$AudioLanguage0"
else
SetAudio=""
AudioLanguage0="$AudioLanguage"
fi
SetAudio="$AudioTrack0$SetAudio"
fi
fi
if [ ! "$SetAudio" = "Z" ]; then
$DOCMD$LOCALPW$DOCMD1/setAudio?channel=$SetAudio
echo $LOGSTR"change audio track: channel=$SetAudio"
fi
fi
fi
donep.s.
some fixes for Standby mode
and didnt know pmt.tmp updates much faster than Web-IF returns new reference
 
Top