Contenu | Rechercher | Menus

Annonce

L'équipe des administrateurs et modérateurs du forum vous invite à prendre connaissance des nouvelles règles.
En cas de besoin, vous pouvez intervenir dans cette discussion.

Ubuntu 18.04 LTS
Ubuntu-fr propose des clés USB de Ubuntu et toutes ses « saveurs » ainsi qu'un magnifique t-shirt pour cette toute nouvelle version d'Ubuntu !

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.

#1 Le 06/05/2018, à 16:52

Lulux3

Télécharger et "en même temps" Encoder une Webvidéo: TEW.sh

Bonjour
J'utilise youtube-dl pour télécharger des vidéos, que je réencode en x265 pour économiser de l'espace disque.
Il est possible, grâce à ffmpeg, de réaliser l'encodage à la volée, ce qui économise pas mal de temps lorsqu'on a une connection un peu lente.
Cette manip est assez fastidieuses en ligne de commande, alors je me suis fait un petit script interactif pour simplifier tout ça.
Il se contente d'une url en paramètre (et en option un fichier de destination). Il récupère les données (dont les sous-titres si disponibles) avec youtube-dl, puis affiche un résumé.
On peut alors modifier chaque paramètre: choix de la qualité de la vidéo principale, choix des soustitres, ajouter un flux ou un fichier à muxer, mappage, et bien entendu codecs, destination et format.
Lorsque tout est OK, on lance le processus d'encodage, mais il est aussi possible de simplement télécharger les flux sélectionnés.
On peut donc en une seule opération, obtenir par exemple une vidéo multilingue avec sous-titres, encodée en x265.
Testé avec succès sur Arte et  France-tv, mais cela devrait marcher sur bien d'autres sites (en fait tous les sites sur lesquels youtube-dl est fonctionnel, dont bien sûr youtube)
Installation:
- Prérequis: youtube-dl et ffmpeg doivent être installés (dispos dans les dépots officiels).
- Copier le texte ci-dessous dans un éditeur de texte
- Adapter les paramètres (lignes 5à15) selon vos préférences.
- Sauver, de préférence dans un répertoire dédié, sous le nom: TEW.sh, et donner le droit d'exécution.
Utilisation:
- Se rendre sur la page de la vidéo souhaitée, et copier l'url dans le presse papier,
- Ouvrir un terminal dans le répertoire où se trouve le script,
- Taper la commande:

./TEW.sh <url> [destination]

- Vérifier les options résumées, et corriger si nécessaire en suivant les instructions
- Lorsque tout est OK, taper P pour lancer le processus, ou T pour un téléchargement classique

N'hésitez pas à me faire part de vos remarques.

Le script :
édit mis à  jour le 12/05/2018
édit mis à  jour le 30/05/2018

#!/bin/bash
# Téléchargement et Encodage simultané de Webvidéo.
# utilise youtube-dl (téléchargement) et ffmpeg (encodage).
# Mise à jour le 30 mai 2018
# Usage: ./TEW.sh <url>

# Variables de couleur
	export DataCoul="\e[1;32m"
	export SurCoul="\e[1;35;47m"
	export NoCoul="\e[0m"
	export InfoCoul="\e[1;36m"
	export ErrCoul="\e[1;31m"
# Options vidéos par défaut (changer à vos risques):
	VideoCodec="hevc -preset veryfast -crf 26 -x265-params info=false"
	AudioCodec="copy"
	SubCodec="subrip"
	SubLang="fr"
	VidFormat="mkv"
	VidQual="best"
	AltMap="a s"
	StreamTags="a:0 -l=fr a:0 -t=VF a:1 -t=VO s:0 -l=fr"
# Options pour les sous-titres:
	FiltreHI="red, cyan, magenta"
        ColDef="H00FFFFFF"
# Options Youtube-dl à conserver:
	YdlOpt="--restrict-filenames --prefer-ffmpeg --ignore-config"
# Noms de fichiers:
	ScriptName="Perm.tew"
	TempScriptName="Temp.tew"


#Fonction de selection et de nettoyage du répertoire
#Renomme les fichiers selectionnés en supprimmant les espaces
SelRen_Files ()
{
	Crit=$1
	n=1
	TmpList=$(ls -1 | grep -h "$Crit")
	ModList=""
	while read Line
	do
		ModLine=$(echo "${Line}" | sed -e 's/[[:blank:]/&,]/_/g')
		if [[ ! "${Line}" == "${ModLine}" ]]
		then mv "${Line}" "${ModLine}"
		fi
	done <<< $TmpList
	ModList=$(ls -1 | grep -h -n "$Crit")
	echo "${ModList}"
}

#Fonctions de filtres pour les sous-titres
Filtre_HI ()
{	LocFilter=$(echo "${1}" | grep -E -o "red|white|yellow|green|magenta|cyan")
	if [[ ! "${LocFilter}" == "" ]]
	then LocFilter=$(echo $LocFilter | tr -s "[:blank:]" "|")
		LocFile="${2}"
		if [ -f ${LocFile} ]
		then cp "${LocFile}" "${LocFile}.bak"
			if [[ $(echo "${LocFile}" | grep -E -o "\.vtt") == "" ]]
			then grep -E -v ",s_(${LocFilter})," "${LocFile}.bak" >"${LocFile}"
			else grep -E -v "<c\.(${LocFilter})>" "${LocFile}.bak" >"${LocFile}"
			fi
		fi
	fi
}

# Conversion de VTT vers ASS avec conservation des couleurs
vtt2ass ()
{	
	InFile="${1}"
	HeadLine="Dialogue: 0,"
	isValid=$(echo "$InFile" | grep -E "vtt$")
	if [[ ! "${isValid}" == "" ]]
	then OutFile=$(echo "$InFile" | sed -r 's/\.vtt$/.ass/')
		if [ -f $OutFile ]
		then cp "${OutFile}" "${OutFile}.bak"
			echo -e "${InfoCoul}fichier ${DataCoul}${OutFile}${InfoCoul} existant sauvegardé en ${DataCoul}${OutFile}.bak${NoCoul}"
		fi
		echo -e "${InfoCoul}Conversion en cours...${NoCoul}"
#Initialisation du fichier ass
		echo -e "[Script Info]" > $OutFile
		echo -e "ScriptType: v4.00+" >> $OutFile
		echo -e "PlayResX:" >> $OutFile
		echo -e "PlayResYX:" >> $OutFile
		echo -e "" >> $OutFile
		echo -e "[V4+ Styles]" >> $OutFile
		echo -e "Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding" >> $OutFile
		echo -e "Style: s_white, Sans, 18, &H00FFFFFF, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: s_yellow, Sans, 18, &H0000FFFF, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: s_red, Sans, 18, &H000000FF, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: s_magenta, Sans, 18, &H00FF00FF, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: s_cyan, Sans, 18, &H0000FFFF00, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: s_green, Sans, 18, &H00008000, &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "Style: defaut, Sans, 18, &""$ColDef"", &H00FFFF00, &H00000000, &H00000000, 0, 0, 0, 0, 100, 100, 0, 0.00, 1, 2, 2, 2, 30, 30, 30, 0" >> $OutFile
		echo -e "" >> $OutFile
		echo -e "[Events]" >> $OutFile
		echo -e "Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text" >> $OutFile

		NewLine=""
		isFirstLine=1
		while read line
		do
			fLine=$(echo -e "${line}" | tr -d "\n")
			if [[ ! "$fLine" == "" ]]
			then
				NewEvent=$(echo "${fLine}" | grep -e "-->")
				if [[ "${NewEvent}" == "" ]]
				then 
					isTextLine=$(echo "${fLine}" | grep -E -o "<c.*</c>" | tr -d '\n')
					if [[ ! $isTextLine == "" ]]
					then
						if [[ ! "${isFirstLine}" == "" ]]
						then NewText=$(echo "${fLine}" | sed 's+^[^[:print:][:blank:]]*<c.\([^>]*\)>\(.*\)</c>[^[:print:][:blank:]]*$+s_\1,,0,0,0,,\2+g')
							isFirstLine=""
						else NewText=$(echo "${fLine}" | sed 's+^[^[:print:][:blank:]]*<c.\([^>]*\)>\(.*\)</c>[^[:print:][:blank:]]*$+\\N\2+g')
						fi
						NewLine="${NewLine}""${NewText}"
					fi
				else
					if [[ "$isFirstLine" == "" ]]
					then
						echo "${NewLine}" >> $OutFile
					fi
					fLine=$(echo "${fLine}" | sed -r 's/^0//g' | sed -r 's/[0-9][^0-9]*$//g')
					NewTime=$(echo "${fLine}" | sed -r 's/[0-9][[:blank:]]*-*>[[:blank:]]*[0-9]/,/g')
					NewLine="${HeadLine}""${NewTime}"","
					isFirstLine=1
				fi
			fi
		done < $InFile
		if [[ $isTextLine == "" ]]
		then
			echo -e "${NewLine}" >> $OutFile
		fi
	else echo -e "${ErrCoul}Type de fichier incompatible${NoCoul}"
	fi
}

# Récupération des données et soustitres
	echo -e "#Liste éphémère de tâches TEW" > $TempScriptName
	url=$1
	while [[ ! ${url} == "" ]]
	do
		Saisie=$(youtube-dl $YdlOpt $url --get-id)
		if [[ ${#Saisie} -eq 0 ]]
		then echo -e "${ErrCoul}impossible de résoudre cette URL${NoCoul}"
#			read 
			url=""
		else
			if [[ ! "${Saisie}" == "${VidId}" ]]
			then 
				VidId=$Saisie
				download_url=$(youtube-dl $YdlOpt -f $VidQual $url -g)
					if [[ "${#download_url}" -eq 0 ]]
					then echo -e "${InfoCoul}Format ${DataCoul}${VidQual}${InfoCoul} indisponible${NoCoul}" 
						download_url=$(youtube-dl $YdlOpt $url -g)
						VidQual="best"
					fi
				if [[ ! "${AltSource}" == "" ]]
				then
					if [[ ! "$AltSource" == "$AltUrl" ]]
					then AltUrl=$(youtube-dl $YdlOpt -f $AltSource $url -g)
						if [[ "${#AltUrl}" -eq 0 ]]
						then echo -e "${InfoCoul}Qualité ${DataCoul}${AltSource}${InfoCoul} indisponible: sélectioner manuellement${NoCoul}"
							read -p "[OK]"
							AltSource=""
							AltUrl=""
						fi
					else echo -e "${InfoCoul}Confirmer la sélection du fichier complémentaire ${DataCoul}${AltSource}${NoCoul}" 
						read -p "(O,N)" $Saisie
						if [[ $(echo "${Saisie}" | grep '[OoYy]' ) == "" ]]
						then AltSource=""
							AlTUrl=""
						fi
					fi
				fi
				youtube-dl $url $YdlOpt "--write-sub" "-o" "%(id)s.%(ext)s" "--all-subs" "--skip-download" 
				VidName=$(youtube-dl $YdlOpt $url -e)
				ExtFiles=$(SelRen_Files "${VidId}") 
				read SubFile <<< $(echo "${ExtFiles}" | grep -h "\."$SubLang"\.")
				SubFile=$(echo $SubFile | sed -e 's/^[0-9]*://')
				Tag0=$(echo ${VidName} | sed -e 's/[[:blank:]/&,]/_/g')
				VidDest="${Tag0}-${VidId}.${VidFormat}"
			else
				ExtFiles=$(SelRen_Files "${VidId}")	
			fi

# Résumé et choix
			Saisie=""
			Key=""
			while [[ $(echo "$Key" | grep '[PpYyRr]') == "" ]]
			do
				echo -e "${InfoCoul}============================================================================${NoCoul}"
				echo -e "${InfoCoul}Résumé des paramètres:${NoCoul}"
				echo -e "Nom de la vidéo: ${DataCoul} ${VidName}"
				echo -e "${NoCoul}Vidéo ID       : ${DataCoul}" $VidId
				echo -e "${NoCoul}----------------------------------------------------------------------------"
				echo -e "${SurCoul}F${NoCoul}ormat      : ${DataCoul} $VidQual${NoCoul}"
				echo -e "Fichiers homonymes trouvés:"
				echo -e "${DataCoul}${ExtFiles}${NoCoul}"
				echo -e "Source complémentaire: fichier ${SurCoul}n°${NoCoul} ou ${SurCoul}Q${NoCoul}ualité. (Aucune = ${SurCoul}0${NoCoul}):\n${DataCoul}$AltSource${NoCoul}" 
				echo -e "${SurCoul}M${NoCoul}appage de la source complémentaire: ${DataCoul}$AltMap${NoCoul}" 
				echo -e "Fichier de so${SurCoul}U${NoCoul}s-titres: ${DataCoul}$SubFile${NoCoul}"
				echo -e "Options des sous-titres (VTT uniquement):"
				echo -e "${DataCoul}-f${NoCoul}: filtrage des sous-titres malentendants"
				echo -e "${DataCoul}-c${NoCoul}: conversion de VTT vers ASS en couleurs"
				echo -e "----------------------------------------------------------------------------"
				echo -e "Codec ${SurCoul}V${NoCoul}idéo et paramètres: ${DataCoul}$VideoCodec${NoCoul}" 
				echo -e "Codec ${SurCoul}A${NoCoul}udio et paramètres: ${DataCoul}$AudioCodec${NoCoul}" 
				echo -e "Codec ${SurCoul}S${NoCoul}oustitres         : ${DataCoul}$SubCodec${NoCoul}" 
				echo -e "${SurCoul}D${NoCoul}estination de la vidéo  : ${DataCoul}$VidDest${NoCoul}"
				echo -e "${SurCoul}T${NoCoul}ags des flux de sortie  : ${DataCoul}$StreamTags${NoCoul}"  
				echo -e "${InfoCoul}============================================================================${NoCoul}"
				echo -e "\e[1;5;32mF n° Q 0 M U V A S D T ${NoCoul}: modifier un paramètre,"
				echo -e "\e[1;5;32mP${NoCoul} [-option]: lancer le processus (ffmpeg)"
				echo -e "\e[1;5;32mY${NoCoul} [-option]: téléchargement simple (youtube-dl)"
				echo -e "Options:\n${DataCoul}-a${NoCoul}: afficher la commande\n${DataCoul}-s${NoCoul}: ajouter à la liste de tâches"
				#NON IMPLEMENTE: "\n${DataCoul}-x${NoCoul}: exécuter dans un nouveau terminal"
				echo -e "\e[1;5;32mR${NoCoul}: Sortir"
				echo -e "${InfoCoul}============================================================================${NoCoul}"
				read -p "votre choix [P]: " Key Opt
				if [[ ${#Key} -eq 0 ]]
				then Key="P"
				fi
				case $Key in
					[0-9]*)
						AltSource=$(echo "$ExtFiles" | grep "^$Key" | sed -e 's/[0-9]*://g')
						AltUrl=$AltSource
					;;
					"F"|"f")
						youtube-dl "-F" $url
						read -p "sélectionner le code format (Source principale): " Saisie
						if [[ ! "$Saisie" == "" ]]
						then
							VerSaisie=$(youtube-dl $YdlOpt "-f" "$Saisie" "-g" $url)
							if [[ ! "$VerSaisie" == "" ]]
							then download_url=$VerSaisie
								VidQual=$Saisie
							else echo -e "${ErrCoul}impossible de trouver une URL pour cette source${NoCoul}"
							fi
						fi
					;;
					"Q"|"q")
						youtube-dl "-F" $url
						read -p "sélectionner le code format (Source complémentaire): " Saisie
						VerSaisie=$(youtube-dl $YdlOpt "-f" "$Saisie" "-g" $url)
						if [[ ! "$Saisie" == "" ]]
						then
							if [[ ! "$VerSaisie" == "" ]]
							then AltSource=$Saisie
								AltUrl=$VerSaisie
							else echo -e "${InfoCoul}impossible de trouver une URL pour cette source${NoCoul}"
							fi
						fi
					;;
					"M"|"m")
						echo -e "sélectionner le(s) flux à mapper: ${SurCoul}A${NoCoul}udio, ${SurCoul}V${NoCoul}idéo, ${SurCoul}S${NoCoul}oustitres."
						read -p "plusieurs choix possibles, [:n°] de flux en option: " Saisie
						Saisie=$(echo "${Saisie,,}" | grep -o -E -e '-?[vas](:[0-9]*)?' | tr "\n$" "\ ")				
						if [[ ! $Saisie == "" ]]
						then AltMap=$Saisie
						fi
					;;
					"U"|"u")
						if [[ ! $(echo ${SubFile} | grep -E -o -e '\.vtt$') == "" ]]
						then							
							if [[ ! $(echo $Opt | grep -E -o -e "-[cC]") == "" ]]
							then 
								vtt2ass "${SubFile}"
								if [ -f $OutFile ]
								then 
									SubFile="${OutFile}"
									SubCodec="copy"
									echo -e "${InfoCoul}le fichier ${DataCoul}${SubFile}${InfoCoul} a été créé et sélectionné${NoCoul}"
									ExtFiles=$(SelRen_Files "${VidId}")
								fi
							fi
							if [[ ! $(echo $Opt | grep -E -o -e "-[fF]") == "" ]]
							then 
								Filtre_HI "${FiltreHI}" "${SubFile}"
								echo -e "${InfoCoul}le fichier ${DataCoul}${SubFile}${InfoCoul} a été filtré${NoCoul}"
							fi					
						fi

						read -p "saisir le filtre de langue (fr, en, etc..) " Filtre
						if [[ "${Filtre}" == "" ]]
						then Filtre="${SubLang}"
						fi
						VerSaisie=$(echo "$ExtFiles" | grep -i "\."$Filtre"\.")
						if [[ ! "$VerSaisie" == "" ]]
						then SubLang=$Filtre
							echo -e "${DataCoul}${VerSaisie}${NoCoul}"
							read -p "saisir le n° d'un fichier dans la liste ci-dessus (0 pour aucun) " Saisie
							case "${Saisie}" in						
								"0")
									SubFile=""
									;;	
								[1-9])
									VerSaisie=$(echo "$VerSaisie" | grep -h "$Saisie:" | sed -e 's/^[0-9]*://')
									if [[ ! "$VerSaisie" == "" ]]
										then SubFile=$VerSaisie
										else echo -e "${ErrCoul}pas de fichier correspondant${NoCoul}"
									fi
							esac
						else  echo -e "${ErrCoul}pas de fichier correspondant${NoCoul}"
						fi
					;;
					"V"|"v")
						read -p "saisir le codec vidéo et ses paramètres: " Saisie
						if [[ ! "$Saisie" == "" ]]
						then VideoCodec=$Saisie
						fi
					;;
					"A"|"a")
						read -p "saisir le codec audio et ses paramètres: " Saisie
						if [[ ! "$Saisie" == "" ]]
						then AudioCodec=$Saisie
						fi			
					;;
					"S"|"s")
						read -p "saisir le codec soustitre et ses paramètres: " Saisie
						if [[ ! "$Saisie" == "" ]]
						then SubCodec=$Saisie
						fi			
					;;
					"D"|"d")
						read -p "saisir le nom du fichier de sortie: " Saisie
						if [[ ! "$Saisie" == "" ]]
						then VidDest=$(echo "$Saisie" | sed -e 's/[[:blank:]/&,]/_/g')
						fi
					;;
					"T"|"t")
						echo -e "ajouter un flux à tagger: ${SurCoul}A${NoCoul}udio, ${SurCoul}V${NoCoul}idéo, ${SurCoul}S${NoCoul}oustitres"
						echo -e "un numéro de flux optionnel ${SurCoul}[:n°]${NoCoul} et un tag à associer: ${DataCoul}-l=<langue>, -t=<Titre>${NoCoul} ou ${SurCoul}[E]${NoCoul}ffacer"
						read  Saisie Opt
						Saisie=$(echo "${Saisie,,}" | grep -o -E -e "([vas](:[0-9]*)?).*")
						if [[ ! "${Saisie}" == "" ]]
						then							
							if [[ $(echo ${Opt} | grep -o -E -e '^[Ee]') == "" ]]
							then Opt=$(echo "${Opt}" | sed -r 's/[[:blank:]]/_/g' | grep -o -E -e "-[LlTtl]=[^,]*")
								while read tag 
								do	
									if [[ ! ${#tag} -eq 0 ]]
									then 
										StreamTags="${StreamTags} ${Saisie} ${tag}"
									fi
								done <<< "${Opt}"
							else
								StreamTags=$(echo ${StreamTags} | sed -E "s/${Saisie}(:[0-9]*)?(\ -[LlTt]=[^ ]*)?//g")
							fi						
						fi
					;;
					
					[Pp]*)
						Command="ffmpeg -y -i ${download_url}"
						Map="-map 0"
						Tags=$(echo "${StreamTags}" | sed -E 's/[vas](:[0-9]*)? *-[lLtT]/-metadata:s:&/g' | sed -E 's/-[Ll]=/language=/g' | sed -E 's/-[Tt]=/title=/g')								
						Tags="-metadata title=${Tag0} ${Tags}"
						if [[ ! "${#AltUrl}" -eq 0 ]]
						then
							Saisie=$(echo $AltMap | sed 's/[vas]/1:&/g' | sed -E 's/(-?1:[vas](:[0-9]*)?)/-map &?/g')
							Map="${Map} ${Saisie}"					
							Command="$Command -i ${AltUrl}"
							n=2
						else n=1
						fi					
						if [[ ! $SubFile == "" ]]
						then
							Command="$Command -i ${SubFile}"
							Map=$Map" -map $n:s?"
						fi
						Command="$Command $Map $Tags -c copy -c:a $AudioCodec -c:s $SubCodec -c:v:0 $VideoCodec ${VidDest}"
					;;
					[Yy]*)
						Saisie="$VidQual"
						if [[ ! "$AltSource" == "$AltUrl" ]]
						then Saisie="$Saisie,$AltSource"
						fi
						Command="youtube-dl -o '%(title)s-%(id)s-%(format)s.%(ext)s' -f ${Saisie} ${url}"
					;;
				esac
			done
			case $Opt in
				"-A"|"-a")	
					echo -e "\n${SurCoul}${Command}${NoCoul}\n"
				;;
				"-S"|"-s")	
					if [[ ! ${#Queue} -eq 0 ]]
					then Queue=$Queue"\n"
					fi
					Line="#["$(date '+%D_%H:%M:%S')"]\n${Command}"
					Queue="${Queue}""${Line}"
					echo -e $Line >> $TempScriptName
				;;
				*)
					${Command}
				;;
			esac		
		fi
		Command=""
		Key="0"
		until [[ $Key == "" ]]
		do
			echo -e "${InfoCoul}================================================================${NoCoul}"
			if [[ ! ${#Queue} -eq 0 ]]
			then
				echo -e "\e[1;5;32mA${NoCoul}fficher la liste de tâches"
				echo -e "\e[1;5;32mV${NoCoul}ider la liste de tâches"
				echo -e "\e[1;5;32mC${NoCoul}réer un script avec la liste des tâches"
				if [ -f $ScriptName ]
				then
					echo -e "\e[1;5;32mS${NoCoul}auver la liste à la fin du script existant"
				fi
				echo -e "e\e[1;5;32mX${NoCoul}écuter la liste des tâches"
			fi
			echo -e "\e[1;5;32mQ${NoCoul}uitter"	
			read -p "votre choix, <nouvelle url> ou [Retour]: " Key
			case $Key in
				"A"|"a")	
					echo -e "\n${SurCoul}${Queue}${NoCoul}\n"
				;;
				"V"|"v")	
					Queue=""
					rm $TempScriptName
				;;
				"C"|"c")
					echo -e "#Liste des tâches TEW" > $ScriptName	
					echo -e "${Queue}" >> $ScriptName
					chmod "a+x" ${ScriptName}
					echo -e "${InfoCoul}Le script ${DataCoul}${ScriptName}${InfoCoul} a été créé${NoCoul}"
				;;
				"S"|"s")
					echo -e "${Queue}" >> $ScriptName
					echo -e "${InfoCoul}Le script ${DataCoul}${ScriptName}${InfoCoul} a été mis à jour${NoCoul}"
				;;
				"X"|"x")
					chmod "a+x" ${TempScriptName}
					echo -e "\e[1;5;32mFonction non implémentée.${NoCoul}\nSolution provisoire:"
					echo -e "- Ouvrir Nautilus sans fermer ce terminal"
					echo -e "- Naviguer vers le fichier ${DataCoul}$TempScriptName${NoCoul}"
					echo -e "- Choisir ${DataCoul}Lancer dans un Terminal${NoCoul}"
					read -p "[Retour]" 
				;;
				"Q"|"q")
					exit
				;;
				*)
					if [[ ! ${#Key} -eq 0 ]]
					then url="${Key}"
						Key=""
					fi
				;;
			esac
		done		
	done

Dernière modification par Lulux3 (Le 30/05/2018, à 18:25)

Hors ligne

#2 Le 12/05/2018, à 22:28

Lulux3

Re : Télécharger et "en même temps" Encoder une Webvidéo: TEW.sh

Bonjour
Je viens de poster une mise à jour assez sympa:
- L'ensemble du processus prend place dans une boucle: on garde donc tous les paramètres après l'éxécution, même en cas de plantage de ffmpeg ou ydl.
- On peut changer l'url et relancer un traitement avec les mêmes paramètres (ou pas): pratique pour les séries par exemple.
- On peut opter pour une mise en queue au lieu d'une exécution immédiate: pas besoin d'attendre pour préparer la tâche suivante.
- Le mappage reconnait les "stream-specifiers" de ffmpeg de la forme [-]{a,v,s}[:n]
- Les métadonnées peuvent être ajoutées aux flux.

Hors ligne

#3 Le 30/05/2018, à 18:20

Lulux3

Re : Télécharger et "en même temps" Encoder une Webvidéo: TEW.sh

Nouvelle mise à jour ce 30 mai:
- correctons de bugs mineurs
- amélioration de la lisibilité
- fonctions de prétraitement pour les sous-titres en VTT (france TV par exemple): filtrage des ST pour malentendants + conversion en ASS couleur (ffmpeg ne conserve pas les couleurs).

Hors ligne