[script] Les news dans le terminal (résolu)

Autres projets et contributions
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

[script] Les news dans le terminal (résolu)

Message par 4nti7rust »

Bonjour,

J'aimerais récupérer les news de archlinuxfr pour les afficher dans le terminal juste avant la MAJ (histoire de pas faire de conneries).

J'ai commencé à faire un truc pour les afficher via les flux rss (je connais très mal sed, je n'ai fais que reprendre des exemples dispo sur le net) :

Code : Tout sélectionner

wget -q archlinux.fr/feed -O - | sed -n -e 's/.*<title>\(.*\)<\/title>.*/\1/p'
Ce qui me donne :

Code : Tout sélectionner

Archlinux.fr
Image d’installation 2012.08.04 disponible
pkgstats recueille désormais l&#8217;utilisation de modules
Modifications aux rc.conf et crypttab
Image d&#8217;installation 2012.07.15 disponible
GRUB legacy n&#8217;est plus supporté
Le répertoire /lib devient un lien symbolique
Mise à jour de filesystem &#8211; intervention manuelle requise
Vérification des paquets par pacman
systemd-tools remplace udev
Netcfg en 2.8.2
Outre la présentation très simpliste, il reste surtout le problème de la conversion des caractères spéciaux html en bash.

- Existe t'il une version texte brute des news ?
- Dois-je aller chercher la table de conversion et traiter les caractères au cas pas cas où existe t'il des outils déjà tout fait ?

Rq : Je suis évidement allé voir mon ami google, mais je ne dois pas avoir les bon mots pour lui parler car je ne suis pas encore arrivé à trouver une solution.

Je continue évidement à améliorer tousa et je vous mettrais mes avancées dans le domaine dans ce topic en éditant ce billet.
Dernière modification par 4nti7rust le dim. 12 août 2012, 14:33, modifié 1 fois.
Tristelune
Elfe
Messages : 516
Inscription : mer. 01 août 2007, 16:38

Re: [script] Les news dans le terminal

Message par Tristelune »

En me baladant sur les forum anglais d'archlinux j'ai trouvé ça:

https://bbs.archlinux.org/viewtopic.php?id=30155&p=3

Je n'ai pas testé, mais ça pourrait t'aider. Je vais
d'ailleurs aussi y jeter un coup d'oeil.
Avatar de l’utilisateur
MrMen
Chu Ko Nu
Messages : 479
Inscription : sam. 11 juil. 2009, 14:33
Localisation : (33)

Re: [script] Les news dans le terminal

Message par MrMen »

Je pense qu'avec recode tu devrais pouvoir t'en sortir : flux | recode h..utf8
Arch 64 | Awesome | Zsh | Bépo
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal

Message par 4nti7rust »

@Tristelune : Merci, ça donne des idées sympa. Par contre, il y a toujours le problème des caractères spéciaux.

@Mr_Men : C'est exactement cette commande que je cherchais ! Merci.

Après quelques tests infructueux je suis quand même allé vérifier que &#8217; et &#8211; étaient des caractères ISO-8859-1. Mais en fait non. WTF ? Il est bizarre ce flux rss non ?

Quoi qu'il en soit j'ai donc choisis la méthode ultra bourrin et j'ai juste remplacé les caractères récalcitrant avec sed :

Code : Tout sélectionner

echo -e "$(curl -s archlinux.fr/feed | sed -n -e 's/.*<title>\(.*\)<\/title>.*/- \1/p' | sed "s/\&\#8217\;/\'/" | sed 's/&#8211;/\:/' | sed 's/- Archlinux.fr/\\e[01;31m\t\t >> News Archlinux.fr << \\e[00m/')"
Ce qui donne (sans la couleur sur le titre que j'ai rajouté suite au lien de @Tristelune :wink:) :

Code : Tout sélectionner

sed: -e expression n°1, caractère 27: option inconnue pour `s'
		 >> News Archlinux.fr << 
- Image d’installation 2012.08.04 disponible
- pkgstats recueille désormais l'utilisation de modules
- Modifications aux rc.conf et crypttab
- Image d'installation 2012.07.15 disponible
- GRUB legacy n'est plus supporté
- Le répertoire /lib devient un lien symbolique
- Mise à jour de filesystem : intervention manuelle requise
- Vérification des paquets par pacman
- systemd-tools remplace udev
- Netcfg en 2.8.2
Il reste cette erreur "sed: -e expression n°1, caractère 27: option inconnue pour `s'" que je comprends pas ... Si quelqu'un qui connait bien sed peut me donner des pistes ça me ferait drôlement plaisir.

J'avais aussi fait une version avec les dates, mais je n'arrive pas à enlever les retours à la lignes ...

Code : Tout sélectionner

echo -e "$(curl -s archlinux.fr/feed | sed -n -e 's/.*<title>\(.*\)<\/title>.*/- \1/p' -e 's/.*<pubDate>\(.*\) [0-9][0-9][0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9] +0000<\/pubDate>.*/\1/p' | sed "s/\&\#8217\;/\'/" | sed 's/&#8211;/\:/' | sed 's/- Archlinux.fr/\\e[01;31m\t\t >> News Archlinux.fr << \\e[00m/')"
Résultat (avec cette ù*$ù! d'erreur):

Code : Tout sélectionner

sed: -e expression n°1, caractère 27: option inconnue pour `s'
		 >> News Archlinux.fr << 
- Image d’installation 2012.08.04 disponible
Sat, 04 Aug
- pkgstats recueille désormais l'utilisation de modules
Mon, 30 Jul
- Modifications aux rc.conf et crypttab
Mon, 30 Jul
- Image d'installation 2012.07.15 disponible
Sun, 22 Jul
- GRUB legacy n'est plus supporté
Fri, 20 Jul
- Le répertoire /lib devient un lien symbolique
Sat, 14 Jul
- Mise à jour de filesystem : intervention manuelle requise
Thu, 07 Jun
- Vérification des paquets par pacman
Mon, 04 Jun
- systemd-tools remplace udev
Fri, 01 Jun
- Netcfg en 2.8.2
Tue, 22 May
Dernière modification par 4nti7rust le dim. 12 août 2012, 01:54, modifié 1 fois.
Avatar de l’utilisateur
MrMen
Chu Ko Nu
Messages : 479
Inscription : sam. 11 juil. 2009, 14:33
Localisation : (33)

Re: [script] Les news dans le terminal

Message par MrMen »

Chez moi pas d'erreur.

Par contre au lieu d'enchainer les | tu peux séparer tes bouts de sed par ;
Arch 64 | Awesome | Zsh | Bépo
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal

Message par 4nti7rust »

J'utilise zsh (edit : toi aussi ?), à mon avis le pb viens de là. Je vais fouiller dans ce sens.

Ça change quoi les ; et | ? (edit : ça marche pas chez moi avec les ";" )

Des idées pour enlever les retours à la ligne (j'ai édité mon post pendant que tu répondais, je pensais pas avoir de réponses à 2h du mat 8) )
Avatar de l’utilisateur
MrMen
Chu Ko Nu
Messages : 479
Inscription : sam. 11 juil. 2009, 14:33
Localisation : (33)

Re: [script] Les news dans le terminal

Message par MrMen »

Bon désolé, je suis un peu reparti de zéro pour voir comment rendre ça plus court et mettre des ; voilà le résultat.

Code : Tout sélectionner

curl -s archlinux.fr/feed | sed '/<title\|<pubDate/!d;s/\t*//g;s/<\/*title>//g;s/[0-9]*:.*//g;s/&#8217;/'"'"'/g;s/&#8211;/-/g' | sed 'N;s/\n<pubDate>/ : /g;P;D;'  
C'est la dernière commande qui permet de passer sur la même ligne.

Pour le clash ;/|, sed peut enchainer les commandes, donc il est plus intéressant de ne pas faire trop d'appels si on peut.
Arch 64 | Awesome | Zsh | Bépo
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal

Message par 4nti7rust »

@Mr_Men : Tu es tout excusé, c'est vraiment impressionnant ! Merci ! Je viens de passer bien 30 min à comprendre ce que tu as fait, je connaissais ni le !d ni le P et encore moi le D. Sed est vraiment un outil impressionnant quand on le maîtrise. Encore merci.

Je mets le sujet en résolu et je mettrais un peu des news de ce que j'en fais :)
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal (résolu)

Message par 4nti7rust »

J'ai rajouté un peu de couleur et un peu de mise en page :

Code : Tout sélectionner

echo -e "\\e[01;31m\t\t >> News Archlinux.fr << \\e[00m\n$(curl -s archlinux.fr/feed | sed '/<title\|<pubDate/!d;s/\t*//g;s/<\/*title>/ - /g;s/[0-9]*:.*/\\e[00m/g;s/&#8217;/'"'"'/g;s/&#8211;/-/g;/Archlinux.fr/d' | sed 'N;s/\n<pubDate>/\\033[1;34m/g;P;D;')"
Ça me donne toujours des erreurs à cause de caractères spéciaux qui doivent traîner là-dedans :/ Si un oeil entrainé passe par là et à une idée, je suis preneur.

Ça donne ça au final :
sed: -e expression n°1, caractère 4: commande `s' inachevée
sed: -e expression n°1, caractère 42: option inconnue pour `s'
>> Archlinux.fr
- netcfg-2.8.9 abandonne la compatibilité à initscripts - Sun, 12 Aug 2012
- Image d’installation 2012.08.04 disponible - Sat, 04 Aug 2012
- pkgstats recueille désormais l'utilisation de modules - Mon, 30 Jul 2012
- Modifications aux rc.conf et crypttab - Mon, 30 Jul 2012
- Image d'installation 2012.07.15 disponible - Sun, 22 Jul 2012
- GRUB legacy n'est plus supporté - Fri, 20 Jul 2012
- Le répertoire /lib devient un lien symbolique - Sat, 14 Jul 2012
- Mise à jour de filesystem - intervention manuelle requise - Thu, 07 Jun 2012
- Vérification des paquets par pacman - Mon, 04 Jun 2012
- systemd-tools remplace udev - Fri, 01 Jun 2012
Je vais mettre ça dans mon zshrc.conf et ça sera nickel !
Avatar de l’utilisateur
MrMen
Chu Ko Nu
Messages : 479
Inscription : sam. 11 juil. 2009, 14:33
Localisation : (33)

Re: [script] Les news dans le terminal (résolu)

Message par MrMen »

Tu avais des erreurs avec ma ligne ? Moi avec la tienne ça passe avec un copier-coller…
Arch 64 | Awesome | Zsh | Bépo
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal (résolu)

Message par 4nti7rust »

Non ta ligne passe nickel et la mienne ne retourne pas d'erreur quand je la met dans le zshrc.conf. Peut être une option que j'ai mit dans zsh ? Pas la peine de te prendre la tête avec ça, ça marche parfaitement de toute façon.

Je mets aussi le contenu de mon zshrc.conf, pour ceux qui passeront après :

Code : Tout sélectionner

alias update='arch_news && yaourt -Syua'
arch_news () {echo -e "\n \\e[01;31m\t\t >> News Archlinux.fr << \\e[00m\n$(curl -s archlinux.fr/feed | sed '/<title\|<pubDate/!d;s/\t*//g;s/<\/*title>/ - /g;s/[0-9]*:.*/\\e[00m/g;s/&#8217;/'"'"'/g;s/&#8211;/-/g;/Archlinux.fr/d' | sed 'N;s/\n<pubDate>/\\033[1;34m/g;P;D;') \n"}
Avatar de l’utilisateur
vlamy
yeomen
Messages : 268
Inscription : ven. 20 juil. 2012, 15:19
Localisation : Grenoble

Re: [script] Les news dans le terminal (résolu)

Message par vlamy »

Je passe pour dire merci et : ça marche chez moi aussi :)
4nti7rust
Hankyu
Messages : 34
Inscription : dim. 13 nov. 2011, 15:22

Re: [script] Les news dans le terminal (résolu)

Message par 4nti7rust »

Bon ben j'ai ajouté le script à mon tuto sur la-vache-libre. Vu le nombre impressionnant de lecteurs (*ironique*) je communique un peu. J’espère que mon travail servira à certains.
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [script] Les news dans le terminal (résolu)

Message par waitnsea »

Je remonte ce vieux forum :
j'utilisais l'alias "update" de 4nti7rust pour mes mises à jour, mais depuis quelque temps l'adresse du rss "News" a changé et j'obtiens :

Code : Tout sélectionner

update

                 >> News Archlinux.fr << 
 head> - 301 Moved Permanently - </head>
Je pense qu'il n'y a que l'adresse à corriger dans

Code : Tout sélectionner

alias update='arch_news && yaourt -Syua'
arch_news () {echo -e "\n \\e[01;31m\t\t >> News Archlinux.fr << \\e[00m\n$(curl -s archlinux.fr/feed | sed '/<title\|<pubDate/!d;s/\t*//g;s/<\/*title>/ - /g;s/[0-9]*:.*/\\e[00m/g;s/&#8217;/'"'"'/g;s/&#8211;/-/g;/Archlinux.fr/d' | sed 'N;s/\n<pubDate>/\\033[1;34m/g;P;D;') \n"}
Mais je ne trouve pas la bonne
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [script] Les news dans le terminal (résolu)

Message par benjarobin »

https://archlinux.fr/feed au lieu de archlinux.fr/feed
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [script] Les news dans le terminal (résolu)

Message par waitnsea »

Code : Tout sélectionner

 update

                 >> News Archlinux.fr << 
 - MariaDB 10.0 entre dans [extra] - Sat, 12 Jul 2014 
 - Mise à jour de perl en 5.20 - Wed, 04 Jun 2014 
 - Gestion des paquets Haskell avec GHC 7.8.2 - Sun, 04 May 2014 
 - screen-4.2.1 ne peut pas rattacher d’anciennes instances - Tue, 29 Apr 2014 
 - screen-4.2.0 ne peut pas rattacher d'anciennes instances - Sun, 20 Apr 2014 
 - Linux 3.13 AVERTISSEMENTFri, 21 Feb 2014 
 - Dépréciation de /etc/sysctl.conf - Tue, 17 Sep 2013 
 - /dev/pts et glibc 2.18 - Mon, 19 Aug 2013 
 - PHP 5.5 disponible dans le dépôt [extra] - Sat, 17 Aug 2013 
 - La mise à jour de TeXLive 2013 nécessite une intervention manuelle - Mon, 15 Jul 2013
Merci benjarobin !
avi3000
Chu Ko Nu
Messages : 404
Inscription : dim. 19 juin 2011, 18:53
Localisation : dans le neuf trois

Re: [script] Les news dans le terminal (résolu)

Message par avi3000 »

peut-être plus simple avec awk.

Code : Tout sélectionner

curl https://archlinux.fr/feed -s|awk '/<title>/ {z=substr($0,10,length($0)-17)} /<pubDate>/ {print z "||" $2" " $3 " " $4} '
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [script] Les news dans le terminal (résolu)

Message par waitnsea »

Effectivement la commande est plus simple et tout à fait efficace, mais elle ne se laisse pas transformer en alias:

Code : Tout sélectionner

alias news='curl https://archlinux.fr/feed -s|awk '/<title>/ {z=substr($0,10,length($0)-17)} /<pubDate>/ {print z "||" $2" " $3 " " $4} ''

Code : Tout sélectionner

~/ news
zsh: correct 'news' to 'znew' [nyae]? 
Avec un script News.sh

Code : Tout sélectionner

#!/bin/bash
curl https://archlinux.fr/feed -s|awk '/<title>/ {z=substr($0,10,length($0)-17)} /<pubDate>/ {print z "||" $2" " $3 " " $4} '
l'alias fonctionne parfaitement

Code : Tout sélectionner

alias update='~/News.sh  && yaourt -Syua'
Merci
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17188
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [script] Les news dans le terminal (résolu)

Message par benjarobin »

Elle est peut être légèrement plus simple, mais ne fait même pas 1% de l'autre... Pas de couleur, pas d'interprétation des caractères spéciaux... Enfin ce n'est que mon avis, je ne l'utilise pas de toute façon, mais si j'avais le choix j'utiliserai le script initial
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
waitnsea
Maître du Kyudo
Messages : 2114
Inscription : jeu. 15 mars 2012, 05:08

Re: [script] Les news dans le terminal (résolu)

Message par waitnsea »

elle est plus rapide aussi (l'initiale)...
Merci à vous deux
Répondre