re,
désolé, la manip que je t'ai demandé de faire n'est pas suffisante, le pb vient d'une sous fonction dont le détail n'apparait pas dans le log.
Pourrait-tu tu donc stp effectuer la manip suivante.
Lancer le script normalement, séléctionner une vidéo, et en lancer le téléchargement.
Attend que le téléchargement soit términé, puis ouvre un terminal et tape la commande suivante :
bash -x get-canal.sh --gtk "SAVE_FILE" "1" 2&>log
et repost ensuite le contenu du fichier log.
Concernant ce point, quelle que soit la taille du fichier, tu peut en copier/coller directement le contenu dans ton message entre 2 balises "Code", cela t'évitera d'avoir à uploader un nouveau fichier à chaque fois.
Sinon, pour les impatients, voici un petit script
très basique pour télécharger les emissions de la veille.
Il n'y à pas d'interface graphique, donc renseignez-vous même le dossier de destination des videos dans le script (3eme ligne, entre les parenthèses, à la place de $PWD).
Pas encore d'automatisation non plus, donc il faut éditer vous meme votre crontab.
Pour ceux qui ne connaisse pas la manip, rdv ici :
http://doc.ubuntu-fr.org/cron?s=crontab
N'hésitez pas à aller jeter un oeil même si vous débutez, c'est assez simple et rapide. De plus, la crontab est un outil très utile 😉
Pour fonctionner, le script doit recevoir des arguments qui sont les "id" d'emissions (en fait, la dernière partie de l'url de chaque emission). Vous pouvez voir l'id de chaque emissions dans get-canal.sh, c'est le numéro entre parenthèses apres le titre dans la liste des emissions.
Il faut donc entrer dans la crontab la commande suivante :
/chemin/complet/du/script/get-canal.sh "id1" "id2" "id3" ...
Lancé de cette manière, le script téléchargera toutes les vidéos de la veille qu'il trouvera pour vos emissions. (pas de barre de progression pour le moment, tout se passe en terminal. Ne vous étonnez donc pas qu'aucune fenêtre n'apparaisse.)
Si vous souhaitez télécharger les emissiosn d'un autre jour, modifiez directement le script à la ligne 26 :
date=$(date +%d-%m-%y --date '1 day ago')
et remplacer par une date de cette maniere (les tirets sont impératifs) :
date="20-02-09"
Avec cette valeur, le script va chercher toutes les videos de vendredi.
pensez à remettre la valeure d'origine par la suite ou votre événement crontab téléchargera les memes vidéos tous les jours !
Voila donc le fichier : (je post ca directement ici tellement c'est basique)
#!/bin/bash
TEMP_DIR="$PWD/tmp"
DOWNLOAD_DIR="$PWD"
SHOW_LIST () {
STREAM_URL="http://www.vosflux.tv/emission/$1/rss"
wget "$STREAM_URL" -O - | iconv -f ISO-8859-15 -t UTF-8 >"$TEMP_DIR/index.$1"
TITRES="$(sed -e 's/></\n/g' -e 's/</>/g' "$TEMP_DIR/index.$1" | grep "title" | sed '1d' | cut -d">" -f2)"
DATES="$(sed -e 's/></\n/g' "$TEMP_DIR/index.$1" | grep "url=" | cut -d"\"" -f2 | sed -e '/_AUTO_/s/.*\(..\)\(..\)\(..\)_AUTO_.*/\3-\2-\1/g' -e '/_CAN_/s/.*\(..\)\(..\)\(..\)_CAN_.*/\3-\2-\1/g')"
VIDEOS="$(sed -e 's/></\n/g' "$TEMP_DIR/index.$1" | grep "url=" | cut -d"\"" -f2)"
i="1"
n=$(echo -e "$TITRES" | wc -l)
while [ "$i" -le "$n" ] ; do
echo "$(echo "$TITRES" | head -$i | tail -1)|$(echo -e "$DATES" | head -$i | tail -1)|$(echo -e "$VIDEOS" | head -$i | tail -1)" >>$TEMP_DIR/videos.$1
i=$(( $i + 1 ))
done
}
# Fonction de téléchargement de la vidéo sélectionnée.
GET_VIDEO () {
ID="$2"
TITRE="$(grep "$date" "$TEMP_DIR/videos.$ID" | cut -d"|" -f1 | head -$nb | tail -1 | sed -e 's/ /_/g')_$date.flv"
wget -cO "$DOWNLOAD_DIR/$TITRE" "$1"
}
mkdir "$TEMP_DIR"
date=$(date +%d-%m-%y --date '1 day ago')
for id in $@ ; do
SHOW_LIST $id
if grep "$date" "$TEMP_DIR/videos.$id" ; then
nb=1
for video in $(grep "$date" "$TEMP_DIR/videos.$id") ; do
GET_VIDEO "$(grep "$date" "$TEMP_DIR/videos.$id" | cut -d"|" -f3 | head -$nb | tail -1)" "$id"
nb=$(($nb+1))
done
fi
done
rm -rf "$TEMP_DIR"
En éspérant que cela puisse en dépanner quelques-uns.