ČT to zase nedala aneb ZOH2010 na netu

Na Zimní OH jsme se těšili snad všichni. O to lepší byla možnost sledovat ZOH online. Bohužel, na ČT jsou debilové, co se zase vysrali na nás, uživatele Linuxu. Celé ZOH jsou totiž streamované pomocí proprietární technologie z RedMontu — Silverlightu, aby se ten stream nedal uložit na disk či prostě jen zase hrály roli úplatky. Buď jak buď, tak ani tuto technologii neumí zpracovat správně a na Linuxu nejede ani s OSS řešením MoonLight od Novellu. Co tedy máme my, chudáci lační po ZOH dělat?

Jednoduše pošleme celý SilverLight do háje a pomocí skriptu několika lidí budeme Olympiádu sledovat s SMPlayerem (nebo jiným přehrávačem). Co je třeba dělat? Stáhněte si skript ZOH.sh a dejte mu příznak spuštění. Poté je použití jednoduché: skript se spouští z terminálu s prvním parametrem definujícím kanál. K dispozici jsou: CT4OH, CT2OH, CTHD, ZOH1, ZOH2, ZOH3, ZOH4, ZOH5, ZOH6

V tuto chvíli nefunguje CTHD z mě prozatím neznámého důvodu.

Tělo skriptu:

#!/bin/bash
#
# Bash script for playing Live streams of Olympic Games.
#
# Thanks to: Martin Beránek (mousehouse) - providing URL extraction method
#            hikikomori82 - compatible sed with older version
#            Jakub Lucký - various code enhancements (dumpstream)
#            Petos - token including
#
#  Copyright (c) 2010 Radek Novacek
#
# Permission is hereby granted, free of charge, to any person
# obtaining a copy of this software and associated documentation
# files (the "Software"), to deal in the Software without
# restriction, including without limitation the rights to use,
# copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the
# Software is furnished to do so, subject to the following
# conditions:
#
# The above copyright notice and this permission notice shall be
# included in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.

# Replace with your favorite player
COMMAND="smplayer -playlist"
TEMP=`mktemp`

TOKEN=$(curl http://zoh.ct24.cz/live.asp 2>/dev/null |grep -i token |grep -i token |sed 's/^.*token=\([^,]*\).*$/\1/')
echo $TOKEN

[ -z "$TOKEN" ] && TOKEN="NDYyMDI0ODI5fDYzNDAxNzQ5NTM0Nzg4NjY2NQ=="
EXPIRE=`date +%FT%T.%N%:z --date="4 hours"`

if [ $# -lt 1 ];
then
echo "Missing argument. Use one of following: CT4OH, CT2OH, CTHD, ZOH1, ZOH2, ZOH3, ZOH4, ZOH5, ZOH6"
echo "Usage: zoh.sh VIDEO [dump [outfile]]"
exit 1
else
ID=$1
fi

if [ $# -gt 1 ]
then
if [[ ( "$2" == "dump") && ( -n "$3" ) ]];
then
COMMAND="mplayer -dumpfile $3 -dumpstream -playlist "
elif [ "$2" == "dump" ];
then
COMMAND="mplayer -dumpstream -playlist "
fi
fi

echo "====================================================="
echo "Using token $TOKEN"
echo

if [ "$1" == "CTHD" ];
    then QUAL=WHD
else
    QUAL=WH
fi

cat << EOF > $TEMP
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
    <soap:Body>
        <GetPlaylistUrl xmlns="http://ivysilani.visual.cz/services">
            <request>
                <Format>$QUAL</Format>
                <ClientAddress>$TOKEN</ClientAddress>
                <Expiration>$EXPIRE</Expiration>
                <Playlist>
                    <PlaylistItem>
                        <Type>Live</Type>
                        <Identifier>$ID</Identifier>
                    </PlaylistItem>
                </Playlist>
            </request>
        </GetPlaylistUrl>
   </soap:Body>
</soap:Envelope>
EOF

PLAYLIST=$(curl -H "Content-Type: text/xml; charset=utf-8" \
-H "SOAPAction: \"http://ivysilani.visual.cz/services/GetPlaylistUrl\"" \
-d "@$TEMP" http://ctdir.visual.cz/ivysilani/services/streaming/slp.asmx | \
sed 's//\n/' | grep http)

echo "===================================================================================="
echo "Playlist: $PLAYLIST"
echo "===================================================================================="
echo

if [ -z "$PLAYLIST" ]
then
echo "Error: Playlist url is incorrect"
else
$COMMAND "$PLAYLIST"
fi

rm $TEMP

3 komentáře u „ČT to zase nedala aneb ZOH2010 na netu“

  1. To jsem zvědav jak to poběží – večer testnu 🙂
    Jinak jsem byl také natěšen zvláště když jsem si přečetl jak to má běžet i na Linuxu a ejhle i po stažení „moonlight“ se ve FF nic nedělo, prolezl jsem diskuze a v drtivé většině to ostatním taky nejede. Kdo ví kde je chyba …

    Jinak předem díky za „skriptík“ 🙂

  2. Ten skript má jeden zádrhel a tím je nastavení kvality(formátu) videa. Lze nastavit WP, WL, WH, WTV nebo WHD, ale ve skriptu je defaultně WH (což je stream jen kolem 90 kB/s, WTV (televizní kvalita) má kolem 200 kB/s). ČTHD ti nejede právě proto, že vysílá pouze ve kvalitě WHD (cca 450 kB/s, takže před spuštěním skriptu je nutné vlézt dovnitř a Format přepsat z WH na WHD. Nebo udělat více skriptů přednastavených pro různou kvalitu a různé TV kanály či přidat pro spuštění parametr s možností volby kvality

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *