#351 Le 16/04/2009, à 16:24
- taj
Re : Arte +7 recorder version 4
merci pour ta rapidité.
Une passerelle entre mon pc et arte ? , ou une passerelle déjà existante ?
Hors ligne
#352 Le 16/04/2009, à 16:27
- bobuse
Re : Arte +7 recorder version 4
un serveur en france qui voudrait bien te fournir un compte SSH … par exemple tuxfamily fournis un compte SSH, mais il faut voir si tu as suffisament de stockage sur ce compte, et accessoirement si ils sont d'accord
Tu n'es pas le seul, j'ai déjà vu passé des post d'expatriés ou de francophones frustrés comme toi.
Dernière modification par bobuse (Le 16/04/2009, à 16:28)
Hors ligne
#353 Le 16/04/2009, à 16:43
- Lord Northam
Re : Arte +7 recorder version 4
Hello, je viens de démarrer une version en python. Je voulais une version console et reprendre la version bash me semblait trop compliqué.
Ça me semblait aussi compliqué de retravaillé la version Bash, car je m'y connais pas bcp en Shell, mais dire d'apprendre (et ça marche) j'ai réécris totalement le script pour y voir plus clair, et donc mieux l'adapter à mes besoins (je ne télécharge pas à l'endroit où je regarde ensuite les vidéos, donc il me fallait une gestion plus avancée) et donc j'ai un peu "forké" le script pour faire co-oexister ma version avec celle de BeudBeud.
Les différences à savoir si vous désirez tester :
- Le script est nommé arte+7 (à la place de "arte")
- Les fichiers pour les langues sont dans /usr/share/arte+7 (à la place de /usr/share/arteplus7)
- Le dossier par défaut pour le téléchargement est nommé "Arte+7" (à la place de "arte")
Les différences par rapport au script original :
- Activation de la reprise d'un téléchargement coupé (volontairement ou pas)
- Gestion des émissions téléchargés ou pas, pour savoir où on en est
- Le programme peut relancer tous les téléchargements coupés en une fois (j'en ai déjà relancé 11 en même temps ^^)
- Ajout (dans le script tout au début) d'une variable pour désactiver la pré-visualisation (dont je ne me sers pas du tout et qui me gênait plus qu'autre chose)
- (Par ce fait et celui d'avoir démarré depuis une 4.2, on ne choisi pas le lecteur chez moi, qui doit être vlc, c'est un point à faire évoluer)
- J'ai changé le format de la date dans le nom du fichier, passant de 01-04-2009 à 2009-04-01.
(Je télécharge tous les "Dessous des Cartes" notamment et ils ne se rangent pas bien à cause de ça.)
- J'ai ajouté l'heure dans le nom du fichier, car cette semaine plein d'émissions ont le même nom ! ça fait la différence
- La date dans la fenêtre écrit le mois en lettres, car je trouve ça bien plus joli ! Et c'est traductible.
- Les variables labels du script sont conçus sur le principe de l'arborescence, le nom de la variable du titre de la fenêtre de téléchargement donne : $label_download_title (chaque fenêtre à son nom)
Côté technique :
- J'ai quasi renommé toutes les variables pour structurer beaucoup plus le script.
(Certaines étaient en majusucles, d'autres minuscules, certaines en français, d'autres en anglais...)
(J'ai remplacé des /home/$USER en $HOME directement, etc...)
- J'ai aussi renommé les fonctions, en ajoutant le mot "function_" devant (pour mieux les repérer dans le code)
- Apprenant énormément de ce bidouillage, j'ai commenté beaucoup de lignes, plus le temps d'apprendre que pas nécessité.
- J'ai ajouté le PID aux noms des fichiers temporaires, si on relance une seconde fois le script, le premier détruit les fichiers temporaires du second qui se retrouve avec une liste vide ou en train de télécharger un fichier sans nom "_.wmv"
- Il sauvegarde dans un fichier .txt le résumé de l'émission, c'est provisoire mais je veux conserver cette information (qui forcément est perdue et dans le cas d'émissions comme GEO 360°, on fini par plus savoir laquelle parlait de quoi...)
Pour le futur :
- J'aimerais mettre en place une véritable vérification du succès du téléchargement. Je sais par expérience qu'en arrivant à saturation du disque dur, il termine tout avec succès alors que ce n'est pas le cas.
- J'aimerais trouver un moyen de détecter quand il y a eu une coupure de connexion, car les téléchargements restent figés. Je pense ouvrir une Zenity qui va suivre la taille des fichiers, et faire un killall / relancement automatique de tout.
- Quand sur la liste on clique sur annuler ça ferme le programme, je pense que c'est un bon endroit pour mener vers une fenêtre permettant la configuration du script (Lecteur Vidéo, Prévisualisation, etc...)
Le code actuel donne ceci : (Il faut donc le nommer arte+7 et le placer dans /usr/bin/ (en lui donnant les droits d'exécution)
#!/bin/bash
## Version du Script:
label_script_version="4.2 extended"
preview=0
## Déclaration des Variables de Configuration
path_script=/usr/bin
path_lang=/usr/share/arte+7
path_config=$HOME/.arte+7
file_config=$path_config"/.configuration"
path_stockage=$HOME/Vidéos/Arte+7
dir_stockage=Arte+7
i=""
user_lang=`echo "$LANG" | awk -F'"' '{print $1}' | awk -F'_' '{print $1}'`
## Importation des labels
source $path_lang/$user_lang
## Premier Lancement et Configuration du Script
function_config_create() #Fonction choisissant le dossier de téléchargement et le mettant dans le fichier de configuration
{
zenity --info --title="$label_first_title" --text="$label_first_text" #Fenêtre qui prévient qu'on va demander de choisir le chemin pour le dossier de téléchargement
user_choix_stockage=$(zenity --title="$label_dir_title" --file-selection --directory) #Fenêtre permettant de choisir le chemin pour le Dossier Arte+7
mkdir -p $path_config #Création du Dossier .arte+7 dans le /home de l'utilisateur user_path_stockage="$user_choix_stockage"/"$dir_stockage"
echo $user_choix_stockage > $file_config #Création du fichier .configuration dans le chemin choisi par l'utilisateur
}
ls $file_config >> /dev/null 2>&1 #Test pour vérifier la présence du fichier de Configuration
if [ $? = 2 ]; then
ls $path_stockage >> /dev/null 2>&1 #Test pour vérifier la présence du Dossier de Téléchargement
if [ $? = 2 ]; then function_config_create
else zenity --question --title="$label_dir_title" --text="$label_dir_exist" #Si le Dossier Arte+7 existe mais pas le fichier Configuration, alors on refait celuci.
if (test $? -eq 0) #Si l'utilisateur clique Oui, alors on ne choisi pas un autre Dossier
mkdir -p $path_config
then echo $path_stockage > $file_config #On place le Chemin par Défaut dans le Fichier de Configuration
else function_config_create #Sinon on Demande à choisir un Dossier pour y créer "Arte+7"
fi
fi
fi
user_path_stockage=$(head -1 $file_config) #On place le Chemin du Dossier de Stockage des Émissions dans cette variable
## Reprise automatique des téléchargements non finis
restart_download="non"
zenity --question --title="$label_script_name :: $label_restart_title ($label_script_version)" --text="<span color=\"red\">$label_restart_text</span>"
if (test $? -eq 0); then restart_download="oui"; fi
function_reprise_auto() #Fonction qui ré-ouvre le Téléchargement.
{
mimms -r $statute_file_ida "$user_path_stockage"/$row_filename | gawk -vRS="\r" '/^[0-9]/{print "#"$0 ; fflush();}' | zenity --progress --pulsate --title="$label_download_title $row_title" --text="$label_download_text $row_filename" --auto-close --auto-kill &
}
## Déclaration de Quelques Fonctions
function_annulation() #Fonction exécutée quand l'utilisateur ne télécharge pas l'émission et revient à la liste
{
if [ $? = 123 ]; then
rm $arte_xml_file
rm $path_config/arte_temp_listing_$$
rm $path_config/arte_temp_numbers_$$
exit; fi
}
## Choix de l'émission, création du Listing
function_selecteur_emission()
{
(
grep "<index>" $arte_xml_file | sed -e 's/<index>//g' -e 's/<\/index//g' -e 's/ //g' -e 's/>//g' > $path_config/arte_temp_numbers_$$
nb=1
rm $path_config/arte_temp_listing_$$
for y in $(cat "$path_config/arte_temp_numbers_$$"); do
row_ida=$(grep "<targetURL>" $arte_xml_file | sed -e 's/<targetURL>//g' -e 's/<\/targetURL>//g' | head -$nb | tail -1 | sed -e 's/http:\/\/plus7.arte.tv\/fr\/detailPage\///g' -e 's/CmC//g' -e 's/scheduleId//g' -e 's/.html//g' -e 's/,//g' -e 's/=//g' -e 's/ //g')
row_title=$(grep "<bigTitle>" $arte_xml_file | sed -e 's/<bigTitle>//g' -e 's/<\/bigTitle>//g' -e 's/ //g' -e "s/\&/and/g" | head -$nb | tail -1)
row_date_base=$(grep "<startDate>" $arte_xml_file | sed -e 's/<startDate>//g' -e 's/<\/startDate>//g' -e 's/\([[:digit:]][[:digit:]][[:digit:]][[:digit:]]\)-\([[:digit:]][[:digit:]]\)-\([[:digit:]][[:digit:]]*\)/\3-\2-\1/g' -e 's/T/@/g' -e 's/ //g' | head -$nb | tail -1)
month_to_index=`echo ${row_date_base:3:1} | sed -e 's/0//g'`
row_date=${row_date_base:0:2}" "${label_month[$month_to_index${row_date_base:4:1}]}" "${row_date_base:6:4}" "${label_month[0]}" "${row_date_base:11:2}${label_month[13]}${row_date_base:14:2}
row_url=$(grep "<targetURL>" $arte_xml_file | sed -e 's/<targetURL>//g' -e 's/<\/targetURL>//g' | head -$nb | tail -1)
row_date_rev=${row_date_base:6:4}"-"${row_date_base:3:2}"-"${row_date_base:0:2}"-"${row_date_base:11:2}"h"${row_date_base:14:2}
row_filename=`echo "$row_title" | sed -e "s/[[:space:]]/_/g" -e "s/\/$//" -e "s/[°:';,]/_/g" -e 's/-/_/g' -e 's/\///g' -e 's/ /_/g' -e 's/_\/_/_/g' -e "s/__/_/g"| awk -F" " '{print $1}'`"_"$row_date_rev".wmv"
row_statute=""
statute_file_ida=$(head $user_path_stockage/.$row_ida)
if [[ ${statute_file_ida:0:2} == "ok" ]]; then row_statute=$label_list_own; else
if [[ ${statute_file_ida:0:3} == "mms" ]]; then
row_statute=$label_list_inprogress
if [[ $restart_download == "oui" ]]; then function_reprise_auto >> /dev/null 2>&1; fi
fi
fi
echo '"'$row_url'"' '"'$row_title'"' '"'$row_date'"' '"'$row_ida'"' '"'$row_statute'"' '"'$row_filename'"' >> $path_config/arte_temp_listing_$$
nb=$(( $nb + 1 ))
done
) | zenity --progress --title="$label_script_name ($label_script_version)" --text="$label_start_loading" --auto-close
function_choix_emission()
{
file_listing=`cat $path_config/arte_temp_listing_$$`
emission_choisie=$(echo $file_listing | xargs zenity --list --width=735 --height=535 \
--title="$label_script_name :: $label_list_title ($label_script_version)" \
--text="$label_list_choice" \
--hide-column=1,4,6 \
--column="Url" --column="$label_list_head_title" --column="$label_list_head_date" --column="IDA" --column="$label_list_head_state" --column="WMV"
);
function_annulation
function_info_emission
}
}
## Informations de l'émission et confirmation de téléchargement
function_info_emission()
{
info_url=`grep $emission_choisie $path_config/arte_temp_listing_$$ | awk -F'"' '{print $2}'`
info_title=`grep $emission_choisie $path_config/arte_temp_listing_$$ | awk -F'"' '{print $4}'`
info_date=`grep $emission_choisie $path_config/arte_temp_listing_$$ | awk -F'"' '{print $6}'`
info_ida=`grep $emission_choisie $path_config/arte_temp_listing_$$ | awk -F'"' '{print $8}'`
info_resume=`wget -O - -q $emission_choisie | grep -A 2 '<p class="text">'| sed -e 's/<[a-z][a-z]*>//g' -e 's/<\/[a-z][a-z]*>//g' -e 's/<br \/>/\n/g' -e 's/^\s*//'|awk -F'<p class="text">' '{print $1}'`
info_file=`grep $emission_choisie $path_config/arte_temp_listing_$$ | awk -F'"' '{print $12}'`
source $path_lang/$user_lang #Que fait-il là lui, on avait déjà fait ça ?
zenity --question --title="$label_info_title" --text="<span font-family=\"Helvetica\">
<b>$label_info_text: $info_title</b>
<i>$label_info_date: $info_date
Id Arte: $info_ida</i>
$label_info_resume: $info_resume</span>"
if [ $? = 1 ]; then function_choix_emission; fi
}
mkdir -p $user_path_stockage ## Création du répertoire de téléchargement (vidéos/arte)
cd $user_path_stockage
lien_arte=`wget -O - -q http://plus7.arte.tv/ | grep xmlURL | awk -F'"' '{print $4}'` ## Récuperation de la page sur Arte.tv
lien_xml="http://plus7.arte.tv/"$user_lang/$lien_arte
wget $lien_xml ## Récuperation du fichier xml
arte_xml_file=`echo $lien_arte | awk -F"/" '{print $4}'`
## Sélection de l'émission
function_selecteur_emission
function_choix_emission
## Démarrage des opérations visant le téléchargement de l'émission choisie
fichier_temporaire=`echo temporary_"$info_file"`
wget -O - -q $emission_choisie | grep wmv | grep HQ >> /dev/null 2>&1 ## Recherche si la HQ est disponible, si oui on la choisi
if (test $? -eq 0); then qualite="HQ"; else qualite="MQ"; fi
## Récupère dans la source le lien vers le Fichier qui contient la véritable URL du fichier .wmv
fichier_source=`wget -O - -q $emission_choisie | grep wmv | grep $qualite | awk -F= '{print $2}' | awk -F\" '{print $2}' | awk -F\? '{print $1}'`
wget $fichier_source -O $fichier_temporaire ## Télécharger Fichier_Source dans Fichier Temporaire
mms_link=`cat $fichier_temporaire | grep mms | awk -F\" '{print $2}'` ## Extrait le lien mms
echo $info_resume > `echo $info_file | sed -e 's/.wmv/.txt/g'` ## On enregistre le résumé de l'émission dans un fichier .txt
## Nettoyage
rm $fichier_temporaire
rm $arte_xml_file
rm $path_config/arte_temp_listing_$$
rm $path_config/arte_temp_numbers_$$
echo "$mms_link" > "$user_path_stockage"/.$info_ida ## Indication de Téléchargement (On place le lien mms_link dans le fichier ID)
## Téléchargement de l'émission avec Mimms (Avec option -r pour Redémarrer après arrêt)
mimms -r $mms_link "$user_path_stockage"/$info_file | gawk -vRS="\r" '/^[0-9]/{print "#"$0 ; fflush();}' | zenity --progress --pulsate --title="$label_download_title" --text="$label_download_text" --auto-close --auto-kill&
## Prévisualisation
if [[ $preview==1 ]]; then
sleep 30s && zenity --question --title="$label_viewer_title" --text="$label_viewer_text" >>/dev/null 2>&1
if (test $? -eq 0)
then vlc "$user_path_stockage"/$info_file
previsualisation=1
else
previsualisation=0
fi
fi
## Notification finale
wait ## Attente de fin de téléchargement
echo message:$label_note_text | zenity --notification --listen --window-icon="info" | zenity --notification --window-icon="info" --text="$label_note_bulle"
echo "ok" > "$user_path_stockage"/.$info_ida ## Indication de Téléchargement (Trouver une vérification plus poussée !)
## Ouverture du fichier
if [[ $preview==1 ]]; then
if (test $previsualisation -eq 1)
then exit
else
zenity --question --title="$label_viewer_title" --text="$label_viewer_play" >>/dev/null 2>&1
if (test $? -eq 0)
then vlc "$user_path_stockage"/$info_file
else exit
fi
fi
fi
Et le fichier des labels en Français donne pour le moment ceci : (doit être nommé fr et placé dans /usr/share/arte+7/
############################
## Arte +7 Recorder : FR ##
## Déclaration des Labels ##
############################
#Labels Script : Liés au Programme Général
label_script_name="Arte +7 Recorder"
#Labels First : Premier lancement, la Zenity de Configuration
label_first_title="Premier lancement, configuration..."
label_first_text="Choisissez un répertoire pour le téléchargement des émissions
(un sous répertoire nommé \"Arte+7\" y sera automatiquement créé)"
#Labels Dir : Choix du Dossier, la Zenity d'exploration du Disque
label_dir_title="Choisissez où créer le répertoire \"Arte+7\""
label_dir_exist="Le répertoire \"Arte+7\" éxiste déjà, désirez-vous l'utiliser ?"
#Labels Restart : La Zenity qui relance les émissions non terminées
label_restart_title="Relancement des émissions"
label_restart_text="Faut-il relancer les téléchargements qui n'étaient pas fini ?"
#Labels Start : Démarrage de Arte+7, La Zenity qui télécharge la liste des émissions
label_start_loading="Chargement des émissions disponibles..."
#Labels List : Liste des émissions, la Zenity Liste
label_list_title="Liste des émissions disponibles"
label_list_head_title="Titre de l'émission"
label_list_head_date="Date du passage"
label_list_head_state="État du téléchargement"
label_list_own="Déjà téléchargé"
label_list_inprogress="En Téléchargement..."
label_list_choice="Veuillez sélectionner l'émission :"
#Labels Infos : Description de l'émission, la Zenity demandant si on télécharge
label_info_title="Voulez-vous télécharger cette émission ?"
label_info_text="Titre de l'émission"
label_info_date="Date de son passage"
label_info_resume="Résumé"
#Labels Download : La fenêtre Zenity de téléchargement
label_download_title="Téléchargement de"
label_download_text="Enregistrement de"
#Labels Viewer & Notification
#label_viewer_title="Lecture"
#label_viewer_text="Voulez vous prévisualiser $info_title $i?"
#label_viewer_play="Voulez vous lire $info_title $i?"
#label_note_text="enregistrement de $info_title $i est terminé"
#label_note_bulle="L'enregistrement de $info_title $i est terminé"
#Labels Divers
label_month[0]="à"
label_month[1]="Janvier"
label_month[2]="Février"
label_month[3]="Mars"
label_month[4]="Avril"
label_month[5]="Mai"
label_month[6]="Juin"
label_month[7]="Juillet"
label_month[8]="Août"
label_month[9]="Septembre"
label_month[10]="Octobre"
label_month[11]="Novembre"
label_month[12]="Décembre"
label_month[13]="H"
C'est testé chez moi et ailleurs, ce qui permet de vérifier le bon fonctionnement, mais c'est toujours en évolution. Le côté intéressant est que j'apprends une tonne de truc sur le Shell et qu'en Linux c'est vraiment super utile. Si vous avez des retours je suis intéressé. ^^
Dernière modification par Lord Northam (Le 16/04/2009, à 16:45)
Hors ligne
#354 Le 16/04/2009, à 16:44
- Lord Northam
Re : Arte +7 recorder version 4
Pour taj, à voir si l'hébergeur des vidéos est soumis aux mêmes restrictions que le site d'Arte, tu peux essayer un téléchargement direct pour tester si tu veux, voici la commande mimms :
mimms -r mms://a1942.v397591.c39759.g.vm.akamaistream.net/7/1942/39759/v0001/artegeie.download.akamai.com/39759/mfile/arteprod/A7_SGT_ENC_08_038327-000-A_PG_HQ_FR.wmv $HOME/La_Voie_du_Chat.wmv | gawk -vRS="\r" '/^[0-9]/{print "#"$0 ; fflush();}' | zenity --progress --pulsate --title="La Voie du Chat" --text="Test de Téléchargement" --auto-close --auto-kill &
Hors ligne
#355 Le 17/04/2009, à 07:18
- bobuse
Re : Arte +7 recorder version 4
Cette version est effectivement plus lisible. Moi aussi j'ai fait pas mal de script bash qui m'ont appris plein de trucs
Maintenant, ça me saoule, donc je préfère faire mes scripts en python maintenant. C'est plus lisible, plus compacte, et plus facile à débugguer.
Par exemple il suffit de démarrer la console python dans le répertoire où est télécharger mes scripts, et on peut faire ça:
In [1]: from Catalog import Catalog
In [2]: c = Catalog()
In [3]: videos = catalog.searchEmissionsParTitre('Cartes')
In [4]: videos
Out[4]:
[{u'bigTitle': u'Le dessous des cartes',
u'index': u'16',
u'offlineDate': u'2009-04-19T00:52:37',
u'previewPictureURL': u'http://plus7.arte.tv/i18n/content/tv/05__Programmes/plus7/2009/16/11__04__09__DDC.jpg/2564054,property=imageData,v=1.jpg',
u'previewVideoURL': u'http://dl.plus7.arte.tv/arteprod/A7_SGT_ENC_21_040572-022-A_TE_LQ_FR.flv?obj=fb15cdb3e8089da50685c9e9b3550325',
u'startDate': u'2009-04-11T00:50:00',
u'targetURL': u'http://plus7.arte.tv/fr/detailPage/1697660,CmC=2571274,scheduleId=2523998.html',
u'title': u'Le dessous des cartes'}]
In [5]: catalog.dlDetails(videos)
In [6]: videos
Out[6]:
[{u'bigTitle': u'Le dessous des cartes',
u'index': u'16',
'mmsURL': 'mms://a170.v39759e.c39759.g.vm.akamaistream.net/7/170/39759/6be2bd6bc6027e7ff304299d8ae64e8c/artegeie.download.akamai.com/39759/mfile/arteprod/A7_SGT_ENC_08_040572-022-A_PG_HQ_FR.wmv',
u'offlineDate': u'2009-04-19T00:52:37',
u'previewPictureURL': u'http://plus7.arte.tv/i18n/content/tv/05__Programmes/plus7/2009/16/11__04__09__DDC.jpg/2564054,property=imageData,v=1.jpg',
u'previewVideoURL': u'http://dl.plus7.arte.tv/arteprod/A7_SGT_ENC_21_040572-022-A_TE_LQ_FR.flv?obj=fb15cdb3e8089da50685c9e9b3550325',
u'startDate': u'2009-04-11T00:50:00',
u'targetURL': u'http://plus7.arte.tv/fr/detailPage/1697660,CmC=2571274,scheduleId=2523998.html',
Bref, j'aime bien
Mais si tu apprends des trucs, c'est l'essentiel !
Bonne journée
Dernière modification par bobuse (Le 17/04/2009, à 07:43)
Hors ligne
#356 Le 17/04/2009, à 09:52
- BorX
Re : Arte +7 recorder version 4
Salut Lord Northam et beudbeud,
Bravo pour vos initiatives !
J'aimerais beaucoup participer à ce genre de développements, mais je manque hélas de temps
Vous avez de très bonnes idées ; voici quelques conseils qui pourraient vous aider.
Lord Northam, j'ai (très) rapidement relu ton script.
En vrac, quelques remarques :
Ligne 30
ls $file_config >> /dev/null 2>&1 #Test pour vérifier la présence du fichier de Configuration
if [ $? = 2 ]; then
ls $path_stockage >> /dev/null 2>&1 #Test pour vérifier la présence du Dossier de Téléchargement
if [ $? = 2 ]; then function_config_create
Utilise ça pour tester la présence d'un fichier :
if [ -f "/path/vers/fichier" ]; then
fi
Ou ça pour tester son absence :
if [ ! -f "/path/vers/fichier" ]; then
fi
Pour un répertoire :
if [ -d "/path/vers/repertoire" ]; then
fi
Voir man test pour les détails.
Ligne 25 et 48
if (test $? -eq 0) #Si l'utilisateur clique Oui, alors on ne choisi pas un autre Dossier
Plus classe :
if [ $? -eq 0 ]; then
Ligne 58
if [ $? = 123 ]; then
Il vaut mieux utiliser la syntaxe suivante
if [ $? -eq 123 ]; then
Ligne 62
exit; fi
Dangeureux, ça
Sépare les 2 lignes pour bien voir où se termine le if.
Si tu veux faire du concis, commence déjà par ouvrir tes accolades en fin de ligne
function_annulation() {
Ligne 87
if [[ $restart_download == "oui" ]]; then function_reprise_auto >> /dev/null 2>&1; fi
Je te recommande d'encadrer tes variables chaînes de caractères, ça peut t'éviter pas mal d'erreurs dans les cas où tes variables contiennent des espaces :
if [[ "$restart_download" == "oui" ]]; then function_reprise_auto >> /dev/null 2>&1; fi
idem quand tu accèdes à des répertoires, ça ne change rien d'encadrer tes chemins, et ça évite des plantages :
source "$path_lang/$user_lang"
Sinon, quand tu balances dans /dev/null, rien ne sert de concaténer (un seul chevron suffit) :
function_reprise_auto > /dev/null
Ligne 135
lien_arte=`wget -O - -q http://plus7.arte.tv/ | grep xmlURL | awk -F'"' '{print $4}'` ## Récuperation de la page sur Arte.tv
Ancienne syntaxe à proscrire et à remplacer par :
lien_arte="$(wget -O - -q http://plus7.arte.tv/ | grep xmlURL | awk -F'"' '{print $4}')" ## Récuperation de la page sur Arte.tv
Sinon, en général, plutôt que d'utiliser les pid pour créer des noms de fichiers temporaires, tu peux utiliser la commande mktemp qui est faite pour ça.
En espérant vous faire avancer
Dernière modification par BorX (Le 17/04/2009, à 10:04)
Hors ligne
#357 Le 17/04/2009, à 10:08
- bobuse
Re : Arte +7 recorder version 4
Ligne 25 et 48
if (test $? -eq 0) #Si l'utilisateur clique Oui, alors on ne choisi pas un autre Dossier
Plus classe :
if [ $? -eq 0 ]; then
Tant qu'on y est, encore plus classe :
commande && code si succès
Ajouter des accolades si besoin
commande && {
echo "Succès";
autre_commande;
}
Sinon, je rejoins BorX sur ses recommandations, qui contrairement à moi à pris le temps de corriger les erreurs de jeunesse
Hors ligne
#358 Le 17/04/2009, à 12:45
- Lord Northam
Re : Arte +7 recorder version 4
Lord Northam, j'ai (très) rapidement relu ton script.
En vrac, quelques remarques :
Merci pour ces conseils, mais en fait ce sont toutes des lignes auquel je n'ai pas touchées, elles étaient déjà comme ça.
Avant de m'y attaquer je ne savais même pas comment faire un IF, etc... (J'en ai perdu du temps car il n'y avait par exemple pas d'espaces de chaque côté d'un double égal...) J'ai appris l'équivalent substr() du php, variables tableau... J'ai compris comment fonctionnais SED, etc... mais j'ai évité de changer ce que je ne connaissais pas trop.
Au début j'avais mis des "" autour des chaînes, mais comme le script de base n'en avait pas, j'ai cru que c'était de l'optimisation. quelqu'un plus haut à justement spécifié qu'il avait un tel problème, je vais donc changer tout ça.
D'ailleurs hier j'ai fais un piti script pour renommer la date de toutes mes vieilles émissions, qu'on peut placer dans le dossier de Nautilus pour l'exécuter là où bon nous semble. (Maintenant c'est mieux rangé ^^)
#!/bin/bash
for nom_emission in $(ls); do
longueur_chaine=${#nom_emission}
if [[ ${nom_emission:$(($longueur_chaine-4)):4} == .wmv ]]; then
nouveau_nom=${nom_emission:0:$(($longueur_chaine-14))}${nom_emission:$(($longueur_chaine-8)):4}"-"${nom_emission:$(($longueur_chaine-11)):2}"-"${nom_emission:$(($longueur_chaine-14)):2}".wmv"
mv $nom_emission $nouveau_nom
echo "==> $nom_emission changé en $nouveau_nom"
fi
done
En tout cas c'est vraiment chouette le Shell, ça se refile facilement et c'est très vite personnalisable.
Hors ligne
#359 Le 17/04/2009, à 19:21
- taj
Re : Arte +7 recorder version 4
Bonsoir tout le monde
Merci à Bobuse pour la solution ssh
Merci infiniment à Lord Northam pour la ligne de code. Elle fonctionne merveilleusement bien. j'ai donc récupéré la vidéo ' La voie du chat'.
Le souci maintenant est donc de comment récupérer les adresses des autres vidéos.
Bien à vous
Taj
Hors ligne
#360 Le 18/04/2009, à 10:23
- bobuse
Re : Arte +7 recorder version 4
taj> tu peux utiliser mon script python
récupères Catalog.py et ensuite tu le lances avec le titre (sous-chaine) à rechercher en arguments, exemple :
python Catalog.py chat
Résultat de la recherche pour « chat » :
index : 19
previewVideoURL : http://dl.plus7.arte.tv/arteprod/A7_SGT_ENC_21_038327-000-A_TE_LQ_FR.flv?obj=76550b76c395fbc276f4e1ceaa9ac706
mmsURL : mms://a1942.v397591.c39759.g.vm.akamaistream.net/7/1942/39759/0d58175e83001e364f409d20ac81b1a9/artegeie.download.akamai.com/39759/mfile/arteprod/A7_SGT_ENC_08_038327-000-A_PG_HQ_FR.wmv
startDate : 2009-04-12T22:10:00
title : La voie du chat
previewPictureURL : http://plus7.arte.tv/i18n/content/tv/05__Programmes/plus7/2009/16/12__04__09__katzenlektionen.jpg/2552314,property=imageData,v=1.jpg
bigTitle : La voie du chat
targetURL : http://plus7.arte.tv/fr/detailPage/1697660,CmC=2556694,scheduleId=2524060.html
offlineDate : 2009-04-19T22:11:14
Hors ligne
#361 Le 18/04/2009, à 10:41
- bobuse
Re : Arte +7 recorder version 4
Encore plus simple, je viens d'envoyer une nouvelle version du script dlarte.py. Il suffit de l'appeler avec en argument une sous-chaine du titre, et il télécharge toutes les vidéos trouvées.
Les deux fichiers à télécharger sont là : http://bazaar.launchpad.net/~nicolas-dumoulin/arte+7recorder/python/files
Hors ligne
#362 Le 20/04/2009, à 11:39
- Mr_Piouf
Re : Arte +7 recorder version 4
J'aimerais modifier ce soft pour qu'il puisse faire la même chose pour France5 qui a aussi de super podcast video. Il y a des gens motivés pour m'aider ? Il ne devrait pas y avoir beaucoup de chose à changer : détection des podcasts, des string de titres, dates etc
-------------------------------------------------------------------------------------
Trouves-toi un moyen pour avoir une passerelle SSH en france smile
Tu peux le faire avec un particulier qui a un serveur sinon, il pourrai y avoir un échange de bon procédé entre une personne dans un pays exotique qui a besoin d'avoir acces aux podcast francais et une personne en france qui aimerai de temps en temps avoir une IP exotique...
Hors ligne
#363 Le 20/04/2009, à 11:59
- bobuse
Re : Arte +7 recorder version 4
Mr_Piouf> Moui, mais alors ça n'a pas grand chose à voir quand même …
Les vidéos sont au format FLV compressé. Sur la page d'une émission on retrouve son URL en faisant une recherche sur video_src.
Mais après téléchargement, je n'arrive pas à la lire avec mplayer j'ai l'erreur « Compressed SWF format not supported »
Hors ligne
#364 Le 20/04/2009, à 12:02
- bobuse
Re : Arte +7 recorder version 4
Enfin ils sont casse-pieds avec cet enfermement de la culture !
À la limite, je suis prêt à payer un abonnement pour accéder à leur catalogue VOD, mais là 1€ le dessous des cartes, ça revient vite cher …
Tant pis, on va se les enregistrer chacun de son côté
Hors ligne
#365 Le 20/04/2009, à 12:24
- Mr_Piouf
Re : Arte +7 recorder version 4
Mr_Piouf> Moui, mais alors ça n'a pas grand chose à voir quand même …
Les vidéos sont au format FLV compressé. Sur la page d'une émission on retrouve son URL en faisant une recherche sur video_src.
Mais après téléchargement, je n'arrive pas à la lire avec mplayer j'ai l'erreur « Compressed SWF format not supported »
Oui y a des souci avec les videos de france5 si je veux les voir sur le site mais si je les télécharge et utilise VLC je les lis parfaitement. Il y a deja des petits scripts pour télécharger la derniere video etc mais pas possible de faire ce que fait Arte+7 et qui est super c'est a dire pouvoir voir l'apercu. Ce qui permet de ne pas avoir a attendre deux heures que la video soit téléchargée pour commencer à la regarder...
J'ai passé mes parents sous ubuntu, ils sont content mais se formalisent tres vite sur ce genre de détails..."c'est nul on peut meme pas voir nos podcast préférés!"
Dernière modification par Mr_Piouf (Le 20/04/2009, à 12:41)
Hors ligne
#366 Le 20/04/2009, à 14:43
- bobuse
Re : Arte +7 recorder version 4
Ok, c'est que ce soit pas être le bon lien alors, car effectivement le fichier ne fait que 62k. Si tu as le courage de chercher comment trouver le lien …
Hors ligne
#367 Le 20/04/2009, à 15:43
- Mr_Piouf
Re : Arte +7 recorder version 4
J'avais trouvé deux choses :
Un premier que j'ai jamais réussi a faire fonctionner :
#!/bin/sh
#script de beudbeud
#creation du répertoire
mkdir -p $HOME/Vidéos/c_dans_l_air/
#récupération de l'id
IDART=`wget -O - -q http://www.france5.fr/c-dans-l-air/index-fr.php?page=videos | grep -m1 id_article= | awk -F= '{print $4}' | awk -F'"' '{print $1}'`
#récupération du titre de l'émission
TITREBASE=`wget -O - -q http://www.france5.fr/c-dans-l-air/index-fr.php?page=videos | grep id_article=$IDART | grep title | awk -F"'" '{print $6}'`
TITRE=`echo $TITREBASE | iconv -c | tr '[àâäéèêëîïôöùûü]' '[aaaeeeeiioouuu]' | sed -e "s/[[:space:]]/_/g" | sed -e "s/\/$//" | sed -e "s/'/_/g" | sed -e "s/-/_/g" | sed -e "s/__/_/g"`
#récupération de la date de l'émission
DATE=`wget -O - -q http://www.france5.fr/c-dans-l-air/index-fr.php?page=videos | grep id_article=$IDART | grep title | awk -F= '{print $6}' | awk -F"'" '{print $1}'`
#récupération du lien mms
URL="http://www.france5.fr/c-dans-l-air/index-fr.php?"
FILE1=`wget -O - -q $URL"page=resume&id_article=$IDART" | grep mms | awk -F= '{print $4}' | awk -F"&" '{print $1}'`
#téléchargement
mimms -c $FILE1 $HOME/Vidéos/c_dans_l_air/"$DATE"_"$TITRE".wmv
#message de fin
echo message:enregistrement de c dans lair terminé| zenity --notification --listen --window-icon="info"
Et un qui part du principe qu'on connait deja le lien mais qui pétera des que le site de france5 changera son formatage des liens :
#!/bin/bash
#Tous les chemins de ce script sont absolus. Ce script ne fonctionne que dans un environnement bien prcis.
annee=`date "+%Y"`
mois=`date "+%m"`
jour=`date "+%d"`
joursemaine=`date "+%u"`
heure=`date "+%H"`
we=0
negatif=0
#On se dbarasse du problme du week end
if [ $joursemaine == 6 ]; then
((jour = jour-1))
we=1
fi
if [ $joursemaine == 7 ]; then
((jour = jour-2))
we=1
fi
#S'il est moins de 20h, il faut prendre la vido du jour d'avant
if [[ $we == 0 && $heure < 20 ]]; then
if [ $joursemaine == 1 ]; then
((jour = jour-3))
else
((jour = jour-1))
fi
fi
#Maintenant, on a le bon jour, prenant en compte l'heure et le week end. Problme : les bornes des mois.
if [ $jour == -2 ]; then
negatif=1
#Mois prcdent de 31 jours
if [ $mois == 01 ] || [ $mois == 02 ] || [ $mois == 04 ] || [ $mois == 06 ] || [ $mois == 08 ] || [ $mois == 09 ] || [ $mois == 11 ]; then
jour=29
fi
#Mois prcdent de 30 jours
if [ $mois == 05 ] || [ $mois == 07 ] || [ $mois == 10 ] || [ $mois == 12 ]; then
jour=28
fi
#Le mois prcdant mars est fvrier, et c'est lourd...
if [ $mois == 03 ]; then
#On vrifie si l'anne est bissextile
if [ $((annee%4)) == 0 ]; then
jour=27
else
jour=26
fi
fi
fi
if [ $jour == -1 ]; then
negatif=1
#Mois prcdent de 31 jours
if [ $mois == 01 ] || [ $mois == 02 ] || [ $mois == 04 ] || [ $mois == 06 ] || [ $mois == 08 ] || [ $mois == 09 ] || [ $mois == 11 ]; then
jour=30
fi
#Mois prcdent de 30 jours
if [ $mois == 05 ] || [ $mois == 07 ] || [ $mois == 10 ] || [ $mois == 12 ]; then
jour=29
fi
#Le mois prcdant mars est fvrier, et c'est lourd...
if [ $mois == 03 ]; then
#On vrifie si l'anne est bissextile
if [ $((annee%4)) == 0 ]; then
jour=28
else
jour=27
fi
fi
fi
if [ $jour == 0 ]; then
negatif=1
#Mois prcdent de 31 jours
if [ $mois == 01 ] || [ $mois == 02 ] || [ $mois == 04 ] || [ $mois == 06 ] || [ $mois == 08 ] || [ $mois == 09 ] || [ $mois == 11 ]; then
jour=31
fi
#Mois prcdent de 30 jours
if [ $mois == 05 ] || [ $mois == 07 ] || [ $mois == 10 ] || [ $mois == 12 ]; then
jour=30
fi
#Le mois prcdant mars est fvrier, et c'est lourd...
if [ $mois == 03 ]; then
#On vrifie si l'anne est bissextile
if [ $((annee%4)) == 0 ]; then
jour=29
else
jour=28
fi
fi
fi
if [ $negatif == 1 ]; then
if [ $mois == 01 ]; then
mois=12
else
((mois = mois-1))
fi
fi
echo "Téléchargement de c'est dans l'air du $jour $mois $annee"
mimms mms://a533.v55778.c5577.e.vm.akamaistream.net/7/533/5577/42c40fe4/lacinq.download.akamai.com/5577/internet/cdanslair/cdanslair_$annee$mois$jour.wmv $HOME/Videos/c_dans_l_air/"$annee"_"$mois"_"$jour".wmv
mencoder
echo "Téléchargement Terminé !"
echo "La video est disponible dans Raccourcis/Videos/C_dans_l_air"
Pour riposte le lien est : http://www.france5.fr/images/emissions/009545/26/riposte_$annee$mois$jour.asx
Hors ligne
#368 Le 20/04/2009, à 16:12
- Lord Northam
Re : Arte +7 recorder version 4
Hello les amis,
Je suis Belge, et depuis la Belgique, le site de France5 envoie à la page : "Service réservé à la France Métropolitaine..."
Justement, je cherche à obtenir l'émission : "L'Homme des déserts dans les Dunes du Namib", vous auriez le lien MMS ? France5 est sur le site Francetvod, qui comme Arte héberge les vidéos sur Akamai.net. Donc à l'instar de Taj, si j'ai le lien je pourrais le télécharger (ça m'arrangerait, c'est pour un travail scolaire pour mercredi, on l'avait en VHS mais le lecteur à bouffé la bande...)
PS: Au sujet de mon script, quand il relance un téléchargement qui avait été coupé, le script ne change pas son statut en : C'est fini ^^. Je mettrais à jour bientôt, (j'ai fais les changements plus haut et c'est cassé pour le moment lol xD) M'enfin plutôt que de chacun faire son bazaar de son côté, il faudrait se réunir en Live un soir sur IRC pour peut-être tous bosser sur la même version.
Par contre je croule sous le poids de tout ça, j'ai pas bcp d'espace disque et j'ai déjà dépassé les 100 émissions, j'ai même causé avec Sarah Wiener, via le premier TchatVideo d'Arte (la Chef cuisto des Marmitons, pour qui regarde ^^) Après avec tout ces trucs intéressant qu'on a vu, le plus dur reste de trouver des gens qui l'ait vu aussi pour en causer...
Enfin, ça m'énerve d'avoir manqué les premiers épisodes d'"Albert Kahn", si l'un de vous les avait téléchargé, je veux bien lui envoyer par la poste, timbre, enveloppe et dvd vierge! (Et pour répondre au monsieur plus haut, je n'ai aucun tracks malheureusement pour lui):(
Hors ligne
#369 Le 20/04/2009, à 16:27
- bobuse
Re : Arte +7 recorder version 4
Salut,
Au sujet de la version utilisée pour dév, il est hors de question pour moi de me recoltiner du BASH
Donc si vous êtes intéressé par la vesion python, n'hésitez pas à me faire des remarques ou suggestions.
Sinon, je ne vois plus d'activité sur launchpad justement, il faudrait y mettre vos modifs pour être sûr de travailler avec la même version :-)
https://launchpad.net/arte+7recorder
Hors ligne
#370 Le 20/04/2009, à 18:26
- taj
Re : Arte +7 recorder version 4
Merci Bobuse pour les codes.
J'ai longtemps cherché à comprendre comment les utiliser ! Et là je vois comment faire.
Mais j'ai un retoiur erreur:
taj@ubuntu:~/Bureau$ python Catalog.py Jérusalem
File "Catalog.py", line 1
<?xml version="1.0"?>
^
SyntaxError: invalid syntax
bien à toi
Hors ligne
#371 Le 21/04/2009, à 09:40
- bobuse
Re : Arte +7 recorder version 4
Salut taj,
Merci pour ton test !
À mon avis, tu as du mal télécharger les fichiers En gros, tu as téléchargé la page web qui l'affiche plutôt que le fichier lui-même.
Quand tu es sur la page des sources :
http://bazaar.launchpad.net/~nicolas-dumoulin/arte+7recorder/python/files
il faut cliquer sur les boutons à droite avec une petite flèche verte, et pas sur le nom des fichiers.
Voilà, ensuite je viens de remarquer un bug. Les lettres accentuées posent problème pour la recherche. En attendant que je le corrige, il faudra que tu fasses par exemple :
python Catalog.py rusalem
NB: « python Catalog.py » sert uniquement à afficher les informations sur les vidéos, pour les télécharger il faut utiliser « python dlarte.py », cf https://code.launchpad.net/~nicolas-dumoulin/arte+7recorder/python
EDIT: je viens d'ajouter les instructions pour récupérer les scripts avec l'outil bzr sur https://code.launchpad.net/~nicolas-dumoulin/arte+7recorder/python
Dernière modification par bobuse (Le 21/04/2009, à 09:47)
Hors ligne
#372 Le 21/04/2009, à 15:01
- taj
Re : Arte +7 recorder version 4
Bonjour Bobuse
J'ai suivi la procédure par bzr mais il y a aussi des soucis. Plusieurs tentatives donnent le même résultat.
taj@ubuntu:~/Bureau/dl.plus7.arte$ python Catalog.py Sans lutte
Résultat de la recherche pour « Sans » :
Traceback (most recent call last):
File "Catalog.py", line 94, in <module>
catalog.dlDetails(videos)
File "Catalog.py", line 64, in dlDetails
url = self.wmvRE.search(page).group(1)
AttributeError: 'NoneType' object has no attribute 'group'
bien à toi
Hors ligne
#373 Le 22/04/2009, à 08:17
- bobuse
Re : Arte +7 recorder version 4
Salut,
C'est bizarre, chez moi ça marche
L'erreur veut dire que l'adresse du fichier contenant le lien MMS n'a pas été trouvé. En d'autres termes qu'il n'a pas trouvé la ligne contenant un truc du genre :
availableFormats = blablaHQblablawmv
Je sais pas trop d'où ça peut venir … tu es sûr que ta passerelle SSH a bien accès au contenu de arte+7 ?
Il faut que je rajoute le traitement des erreurs de ce type.
Hors ligne
#374 Le 22/04/2009, à 08:40
- beudbeud
Re : Arte +7 recorder version 4
salut en ce moment j'ai pas trop le temps de regarder tout ce qui se passe sur arte +7 recorder mais plusieurs personnes on commencé a modifier le script bash. Si c'est personne sont intéressé pour bosser avec moi je suis ok. rajouter moi sur jabber. de plus j'avais commencé une version avec un code plus propre la 4.3beta dispo sur launchpad je pense quil serai bien de ce basé sur cette version pour faire des forks.
Télécharger les émissions de Arte +7 avec Arte +7 recorder
Theme pour Ubuntu Bisigi Project
Vostro 1510 Ubuntu 10.04
Hors ligne
#375 Le 23/04/2009, à 12:04
- taj
Re : Arte +7 recorder version 4
Le problème Bobuse est que je ne sais pas monter et utiliser une passerelle ssh. Je travaille donc sans.
Hors ligne