Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#351 Le 16/04/2009, à 17: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, à 17: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 big_smile

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, à 17:28)

Hors ligne

#353 Le 16/04/2009, à 17:43

Lord Northam

Re : Arte +7 recorder version 4

bobuse a écrit :

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/\&amp;/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, à 17:45)

Hors ligne

#354 Le 16/04/2009, à 17: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, à 08: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 smile
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 smile

Mais si tu apprends des trucs, c'est l'essentiel !
Bonne journée

Dernière modification par bobuse (Le 17/04/2009, à 08:43)

Hors ligne

#356 Le 17/04/2009, à 10: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 sad
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 smile
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 wink

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 smile

Dernière modification par BorX (Le 17/04/2009, à 11:04)

Hors ligne

#357 Le 17/04/2009, à 11:08

bobuse

Re : Arte +7 recorder version 4

BorX a écrit :

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 smile

Hors ligne

#358 Le 17/04/2009, à 13:45

Lord Northam

Re : Arte +7 recorder version 4

BorX a écrit :

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, à 20: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, à 11: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, à 11: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, à 12: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... tongue

Hors ligne

#363 Le 20/04/2009, à 12: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 hmm j'ai l'erreur « Compressed SWF format not supported »

Hors ligne

#364 Le 20/04/2009, à 13: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é roll

Hors ligne

#365 Le 20/04/2009, à 13:24

Mr_Piouf

Re : Arte +7 recorder version 4

bobuse a écrit :

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 hmm 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, à 13:41)

Hors ligne

#366 Le 20/04/2009, à 15: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, à 16: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, à 17: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. wink

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, à 17: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 big_smile
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, à 19: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, à 10: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 big_smile 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, à 10:47)

Hors ligne

#372 Le 21/04/2009, à 16: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, à 09:17

bobuse

Re : Arte +7 recorder version 4

Salut,

C'est bizarre, chez moi ça marche hmm

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, à 09: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, à 13: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