#!/bin/bash url="http://www.developpez.com/index/rss" ua="Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:50.0) Gecko/20100101 Firefox/50.0" he="'Content-type: text/html; charset=UTF-8'" # recuperation flux rss wget \ --quiet \ --user-agent="$ua" \ --referer="$url" \ "$url" \ --output-document=rss_developpez.xml input="rss_developpez.xml" output="rss_developpez_minitest.xml" # suppression espaces debut lignes & lignes vides sed -i 's/^[[:space:]]*// ; /^\s*$/d' "$input" # test fichier if [[ -f "$output" ]] ; then truncate -s 0 "$output" else touch "$output" fi # parcourt xml du flux et on copie chaqueligne dans un nouveau fichier while read -r line ; do # chaque article est dans une balise item if [[ $line = \<item\> ]] ; then while read -r line ; do # en fonction des balises que l'on repère case "$line" in # on a besoin du lien de l'article pour récupérer l'ensemble du contenu *\<link\>*) link=$(echo "$line" | sed 's/<link>// ; s/<\/link>// ; s/^[[:space:]]*//') ;; # le résumé de l'article est dans la balise CDATA description *\<description\>*) # on va télécharger l'article complet via le lien et le garder en mémoire article="$(wget \ --quiet \ --header="$he" \ --user-agent="$ua" \ --referer="$url" \ "$link" \ -qO- | iconv -f ISO-8859-1 -t UTF-8 )" # on garde l'essentiel article=$(echo "$article" | awk '/<h1 class="actuTitle"/ { show=1 } show; /Et vous ?/ { show=0 }') # merci l'encodage d'un autre age... on convertit article=$(echo "$article" | sed 's//'\''/g ; s/ /…/g ; s//œ/g') # on échappe les slashes article_formate=$(echo "$article" | sed -e 's/[\/&]/\\&/g') # et on insert dans les balises echo "<description>[CDATA[" >> "$output" echo "$article_formate" >> "$output" echo "]]></description>" >> "$output" ;; # pour ne pas refermer encore la balise, on ne copie pas la ligne *\</description\>*) ;; # on sort de la boucle item *\</item\>*) echo "$line" >> "$output" break ;; # sinon on copie tout simplement *) echo "$line" >> "$output" ;; esac done fi # copie de la ligne echo "$line" >> "$output" done < "$input" exit 0