[Silverlight] Ces formats pour se pourrir la vie... :@

Coucou !

Voulant revoir une émission de C dans l’air diffusée hier, voila sur quoi je tombe…

img25.imageshack.us/img25/903/silveriy.jpg

Bref… Je suis colère ce soir :013 <-- la colère

Je ne sais pas s’il existe des alternatives, dans tous les cas, le principe d’agace. :unamused:

C’est énervant de mettre de tels formats !! :text-banplz:

Tu devrais certainement installer le plugin moonlight pour lire le contenu

Ben je l’ai regardé la nuit dernière et ça a fonctionné… ça tombe bien, j’allais regarder celle d’aujourd’hui avec Chromium sous Debian Sid, ce qui donne dans l’ordre chronologique (c’est un peu petit mais bon…) :


Je choisis bien sûr de ne pas utiliser Silverlight.


Je cliques sur “Voir la video”.


Idem.


Je valide.


Je regarde.

Je n’ai pas Moonlight d’installé et ça marche aussi avec Iceweasel. Mais ceci dit je suis d’accord, c’est super chiant leur truc.

Ben en fait encore plus simple, y’a juste à cliquer droit sur voir la video, copier l’adresse du lien et lancer depuis un terminal :

:stuck_out_tongue:

Voire même petit script + crontab histoire qu’ils soient téléchargés automatiquement et arrivent sur le bureau tous les jours.

Crontab :

PATH=~/bin:~/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/usr/bin/X11:/usr/games:/usr/local/games
SHELL=/bin/bash

0 */5 * * tue,wed,thu,fri,sat { { { echo starting; cdanslair-download -c yesterday; echo finished; } 2>&1 | logger -t cdanslair-download; } &>/dev/null; true; }

Script :

#! /usr/bin/env bash


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

## Aide en ligne
usage() {
	cat <<EOF
NAME
	$prog - telecharge les videos de l'emission $EMISSION

USAGE
	$prog DATE ...
	$prog DEBUT-FIN

OPTIONS
	-c, --continue
		Ne retelecharge pas un fichier deja telecharge.

	-h, --help
		Affiche l'aide en ligne.

	-p, --pretend
		Affiche juste les telechargements sans les realiser.

	-V, --version
		Affiche le numero de version.

ARGUMENTS
	DATE
		Une ou plusieurs dates au format DD/MM/YYYY, YYYYMMDD,
		"today" ou "yesterday".

	DEBUT-FIN
		Telecharge toutes les videos entre les dates debut et fin,
	dates de debut et fin incluses.

EXAMPLES
	$prog 09/02/2009
	$prog 20090206 20090207 08/02/2009 20090209
	$prog 20090720-20090724 20090727-20090731
	$prog yesterday

FILES
	`destdir`
		Repertoire de destination ou seront stockees les videos
	qui ont fini d'etre telechargees

	`tmpdir`
		Repertoire temporaire servant aux videos en cours de
		telechargement

AUTHOR
	Yannick Le Saint (kyncani) <y.lesaint@gmail.com>

VERSION
	$VERSION
EOF
}

## Convertit une date au format YYYYMMDD
yyyymmdd() {
	local d="[[:digit:]]"
	local v
	if echo "$1" | grep -q "^$d$d$d$d$d$d$d$d\$"; then
		echo "$1"
		return 0
	fi
	if echo "$1" | grep -q "^$d$d/$d$d/$d$d$d$d\$"; then
		echo "$1" | sed "s#^\\($d$d\\)/\\($d$d\\)/\\($d$d$d$d\\)\$#\\3\\2\\1#"
		return 0
	fi
	v=`date +%Y%m%d -d "$1"`
	if test $? -eq 0; then
		echo "$v"
		return 0
	fi
	echo "$prog: date invalide ($1)" >&2
	return 1
}

## Convertit une date au format DD/MM/YYYY
ddmmyyyy() {
	local d="[[:digit:]]"
	local v
	if echo "$1" | grep -q "^$d$d/$d$d/$d$d$d$d\$"; then
		echo "$1"
		return 0
	fi
	if echo "$1" | grep -q "^$d$d$d$d$d$d$d$d\$"; then
		echo "$1" | sed "s#^\\($d$d$d$d\\)\\($d$d\\)\\($d$d\\)\$#\\3/\\2/\\1#"
		return 0
	fi
	v=`date +%Y%m%d -d "$1"`
	if test $? -eq 0; then
		echo "$v"
		return 0
	fi
	echo "$prog: date invalide ($1)" >&2
	return 1
}

## Repertoire final ou deplacer la video
CDANSLAIR_DESTDIR=""
destdir() {
	local d
	local i
	if test "$CDANSLAIR_DESTDIR" != ""; then
		echo "$CDANSLAIR_DESTDIR"
		return 0
	fi
	for d in Desktop Bureau Desktop; do
		d="$HOME/$d"
		test -e "$d" && break
	done
	for i in Download "T�l�chargements" "T�l�chargement" Download; do
		i="$d/$i"
		test -e "$i" && break
	done
	CDANSLAIR_DESTDIR="$i"
	export CDANSLAIR_DESTDIR
	echo "$CDANSLAIR_DESTDIR"
}

## Repertoire temporaire ou telecharger la video
tmpdir() {
	echo "`destdir`/.Incomplete"
}

## Helper pour download_cmd et resume_cmd
## Usage: tool_cmd type $url $filename [tool]
tool_cmd() {
	local type=`echo "$1" | tr '[a-z]-' '[A-Z]_'`
	local tool
	local conf
	eval "tool=\"\$$type\""
	test $# -eq 4 && tool="$4"
	conf=`echo "$tool" | tr '[a-z]-' '[A-Z]_' | sed "s/^/${type}_/"`
	eval "echo \$$conf" | sed "s#__URL__#$2#g; s#__FILENAME__#$3#g"
}

## Retourne la ligne de commande realisant le telechargement
## Usage: download_cmd $url $filename [downloader]
download_cmd() {
	tool_cmd downloader "$1" "$2" $3
}

## Retourne la ligne de commande reprenant un telechargement interrompu
## Usage: download_cmd $url $filename
resume_cmd() {
	tool_cmd resumer "$1" "$2" $3
}

## Retourne vrai si le fichier telecharge a une taille coherente
checkfilesize() {
	local f="$1"
	local s
	test -e "$f" || return 1
	s=`wc -c "$f" | sed 's/[[:space:]].*//'`
	test "$s" -ge "$FILESIZEMIN"
}

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

## Nom du programme
prog=`basename "$0"`

## Version du programme
VERSION="0.0.8"

## Nom de l'emission
EMISSION="c dans l'air"

## Url depuis laquelle telecharger les vides
VIDEOURL="mms://a533.v55778.c5577.e.vm.akamaistream.net/7/533/5577/42c40fe4/lacinq.download.akamai.com/5577/internet/cdanslair/cdanslair_%YYYYMMDD%.wmv"

## Taille minimum du fichier produit
FILESIZEMIN=100000000

## Outils permettant de telecharger les videos
DOWNLOAD_HANDLERS="cvlc vlc mimms"

## Outil utilise pour realiser le telechargement (autodetecte)
DOWNLOADER=
RESUMER=

## Comment invoquer les differents downloaders
DOWNLOADER_CVLC="cvlc --play-and-exit __URL__ --sout=__FILENAME__"
DOWNLOADER_MIMMS="mimms __URL__ __FILENAME__"
RESUMER_MIMMS="mimms --resume __URL__ __FILENAME__"
DOWNLOADER_VLC="vlc -I dummy --play-and-exit __URL__ --sout=__FILENAME__"

## Nombre de fois ou poursuivre le telechargement en cas d'erreur
RETRY_LIMIT=3

## Liste des dates a telecharger
DATES=

## Liste des dates qui n'ont pas pu etre telechargees
ERRORS=

## Code de retour
RET="true"

## Option --pretend
PRETEND=false

## Option --continue
CONTINUE_OPT=false

######################################################################
## Analyse de la ligne de commande

while test $# -gt 0; do
	case "$1" in
	--continue|-c) CONTINUE_OPT=true;;
	--help|-h) usage && exit || exit 1;;
	--pretend|-p) PRETEND=true;;
	-V|--version) { echo "$VERSION" && exit || exit 1; };;
	-*) { echo "$prog: option $1 inconnue" >&2; exit 1; };;
	*) DATES="$DATES $1";;
	esac
	shift
done

test "$DATES" = "" && { usage && exit || exit 1; }

######################################################################
## Quelques verifications que l'environnement est correct

if test "$DOWNLOADER" = ""; then
	for t in $DOWNLOAD_HANDLERS; do
		test "`download_cmd - - $t`" = "" && continue
		if type "$t" >/dev/null 2>&1; then
			DOWNLOADER="$t"
			echo "Utilisation de $t pour realiser les telechargements"
			break
		fi
	done
	if test "$DOWNLOADER" = ""; then
		echo "$prog: $DOWNLOAD_HANDLERS introuvables" >&2
		echo "$prog: impossible de telecharger les videos" >&2
		exit 1
	fi
fi

if test "$RESUMER" = ""; then
	for t in $DOWNLOAD_HANDLERS; do
		test "`resume_cmd - - $t`" = "" && continue
		if type "$t" >/dev/null 2>&1; then
			RESUMER="$t"
			echo "Utilisation de $t pour reprendre des telechargements interrompus"
			break
		fi
	done
fi

for d in "`tmpdir`" "`destdir`"; do
	test -e "$d/" \
	|| mkdir -p "$d/" \
	|| { echo "$prog: impossible de creer le repertoire $d/" >&2; exit 1; }
done

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

for i in $DATES; do
	if echo "$i" | grep -q -- -; then
		d1=`echo "$i" | sed 's/^\([^-]*\)-.*$/\1/'`
		d2=`echo "$i" | sed 's/^[^-]*-\(.*\)$/\1/'`
	else
		d1="$i"
		d2="$d1"
	fi

	d1=`yyyymmdd "$d1"`
	test $? -eq 0 || exit 1
	d2=`yyyymmdd "$d2"`
	test $? -eq 0 || exit 1

	dn="$d1"
	while true; do
		d="$dn"
		test "$d" -le "$d2" || break
		dn=`echo "$d" + 1 | bc`

		url=`echo "$VIDEOURL" | sed "s#%YYYYMMDD%#$d#g"`
		s=`ddmmyyyy "$d"`
		test $? -eq 0 || exit 1

		f=`tmpdir`/`echo "$url" | sed 's#.*/##'`
		f2=`destdir`/`echo "$url" | sed 's#.*/##'`

		if $CONTINUE_OPT && test -e "$f2"; then
			echo "$EMISSION du $s deja telechargee"
			continue
		fi

		echo "Telechargement de $EMISSION du $s"

		download=`download_cmd "$url" "$f"`
		resume=`resume_cmd "$url" "$f"`
		success=false

		if $PRETEND; then
			if test "$resume" = ""; then
				echo "$download"
			else
				echo "$download \\"
				echo "|| $resume"
			fi
			continue
		fi

		$download && checkfilesize "$f" && success=true
		retry_count=0
		while ! $success && test "$resume" != "" -a $retry_count -lt $RETRY_LIMIT; do
			retry_count=`echo $retry_count + 1 | bc`
			echo "Reprise de $f $retry_count/$RETRY_LIMIT"
			$resume && checkfilesize "$f" && success=true
		done
		if ! $success; then
			test -e "$f" && rm -f "$f"
			ERRORS="$ERRORS $d"
			RET=false
			continue
		fi

		if test "`tmpdir`" != "`destdir`" && ! mv -f "$f" "`destdir`/"; then
			echo "$prog: impossible de deplacer $f dans `destdir`/" >&2
			ERRORS="$ERRORS $d"
			RET=false
			rm -f "$f" || echo "$prog: impossible de supprimer $f" >&2
			continue
		fi
	done
done

if test "$ERRORS" != ""; then
	RET=false
	{
		echo "";
		echo "$prog: Erreur de telechargement des videos $EMISSION du" >&2;
		p=`echo "$prog" | sed 's/./ /g'`
		for d in $ERRORS; do
			d=`ddmmyyyy "$d"`;
			echo "$p	- $d";
		done;
		echo "";
	} >&2
fi

$RET

######################################################################
##
## CHANGELOG
##
## - 01/02/2011,12:17 (version 0.0.8)
##   - FIX: meilleure detection de fichiers non telecharges
## - 29/12/2010,17:06 (version 0.0.7)
##   - Utilisation de mimms --resume si disponible
## - 29/12/2010,11:31 (version 0.0.6)
##   - Support des dates yesterday et today.
## - 21/12/2010,16:10 (version 0.0.5)
##   - Ajout de --continue
##   - Support de vlc en plus de cvlc
## - 26/05/2010,19:40 (version 0.0.4)
##   - Utilisation de cvlc au lieu de mimms si il est disponible
## - 27/02/2010,21:19 (version 0.0.3)
##   - Detecte si le bureau s'appelle Desktop ou Bureau
##   - Le r�pertoire de t�l�chargement temporaire est maintenant cach�
## - 22/10/2009,21:04 (version 0.0.2-rc1)
##   - FIX: documentation des bornes d'un interval
## - 14/09/2009,20:17 (version 0.0.2)
##   - FIX: la borne superieure d'un interval est comprise dans celui-ci
##   - Ajouts de --pretend et --version
## - 14/02/2009,11:20 (version 0.0.1)
##   - Premiere version
##
######################################################################

Si vous êtes sou squeeze ou sid, gecko-mediaplayer permet de lire ces vidéos (sans Moonlight d’installé).