[script] Les news dans le terminal (résolu)
-
- 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)
L'algorithme que j'utilise ne traite que les trois noeuds utilisés par l'affichage.
Les modules pythons traitent une arborescence complète avec tous ses noeuds.
Ils font beaucoup de choses inutiles dans ce cas précis.
Comme disent nos amis de dwm et st : it's sucks
Les modules pythons traitent une arborescence complète avec tous ses noeuds.
Ils font beaucoup de choses inutiles dans ce cas précis.
Comme disent nos amis de dwm et st : it's sucks
Dernière modification par avi3000 le jeu. 21 nov. 2019, 13:04, modifié 1 fois.
Re: [script] Les news dans le terminal (résolu)
je ne comprends pas.
xml.etree parcourt "l'arbre" XML, puis ne retient et ne traite que les balises indiquées; comme le shell lit tout le fichier pour ne traiter que le motif indiqué, non ?
xml.etree parcourt "l'arbre" XML, puis ne retient et ne traite que les balises indiquées; comme le shell lit tout le fichier pour ne traiter que le motif indiqué, non ?
-
- 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)
etree commence par traiter tout le fichier pour constituer son arbre complet (parse ou elementTree).
Ensuite il ne traite que les balises demandées.
Ensuite il ne traite que les balises demandées.
Re: [script] Les news dans le terminal (résolu)
d'accord, c'est un peu plus clair.
merci.
je n'arrive pas encore à me défaire de l'idée que traiter un fichier à balises (XML, JSON) avec l'outil "conçu pour exprès" est préférable. :/
merci.
je n'arrive pas encore à me défaire de l'idée que traiter un fichier à balises (XML, JSON) avec l'outil "conçu pour exprès" est préférable. :/
-
- 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)
Dans ce fichier, il y a 557 balises.
Seule 30 nous intéressent (3 par news, 10 news). Pourquoi s'occuper des 527 restantes.
De plus tous ces analyseurs xml vérifient la conformité de l'arbre.
Ce que l'algorithme que j'utilise ne fait pas. Le lecteur des news verra sur son écran si le fichier téléchargé est conforme.
Seule 30 nous intéressent (3 par news, 10 news). Pourquoi s'occuper des 527 restantes.
De plus tous ces analyseurs xml vérifient la conformité de l'arbre.
Ce que l'algorithme que j'utilise ne fait pas. Le lecteur des news verra sur son écran si le fichier téléchargé est conforme.
-
- 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)
Voici la version "tout sur une seule ligne à la mode json". Au cas où le taquin voudrait jouer au con.
Ca reste décent au niveau performance.
Pour faire court, je n'aime pas python. C'est un langage pour les gens intelligents qui ont fait de longues études.
Code : Tout sélectionner
#!/bin/bash
red="\033[31m"
bleu="\033[34m"
defo="\033[0m"
on_one="\n\t\t>> News Archlinux.fr <<\n$defo"
parse_z () {
z=${z//‘/\\x27}
z=${z//’/\\x27}
z=${z//–/-}
z=${z//…/...}
z=${z//>/>}
}
while read -d '<' z; do
case ${z:0:1} in
't')
parse_z
[ "$on_one" = '' ] && titre=${z:6} || echo -e "$red$on_one";;
'p')
[ "${z:0:8}" = 'pubDate>' ] && echo -e "$bleu${z:13:((-15))}$defo $titre" ;;
'd')
[ "${z:0:12}" = 'description>' ] && {
read -d '<' z
z=${z#*A[}
z=${z%]]>*}
parse_z
[ "$on_one" = '' ] && echo -e "$z\n"
on_one=''
}
;;
esac
done < <(curl -s ${@:-https://archlinux.fr/feed})
echo
# vim: ts=4 sw=4 :
Code : Tout sélectionner
time for (( i=100; i>0; i-- )); do ./news.sh >/dev/null;done
real 0m2,019s user 0m1,388s sys 0m0,635s
Re: [script] Les news dans le terminal (résolu)
pov' python.
je suis entrain de commencer à regarder la doc de
je suis entrain de commencer à regarder la doc de
zsh
, et je m'en dis la même chose, l'inimitié en moins. 8O- benjarobin
- Maître du Kyudo
- Messages : 17262
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [script] Les news dans le terminal (résolu)
@avi3000 Il faudrait être de mauvaise fois pour dire que la version de python est moins lisible que toutes les autres versions.
De plus le temps d’exécution du script est négligeable par rapport au temps de téléchargement.
Note: Ce n'est pas le script python qui est lent (le décodage du XML est super rapide), mais le fait de lancer l’interpréteur python.
Attention de ne pas tirer des raccourcis !
PS: Oui le XML est bien trop lourd comme format, c'est lent à parser (mais ici totalement négligeable !)
De plus le temps d’exécution du script est négligeable par rapport au temps de téléchargement.
Note: Ce n'est pas le script python qui est lent (le décodage du XML est super rapide), mais le fait de lancer l’interpréteur python.
Attention de ne pas tirer des raccourcis !
PS: Oui le XML est bien trop lourd comme format, c'est lent à parser (mais ici totalement négligeable !)
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [script] Les news dans le terminal (résolu)
Tout à fait d'accord, python ou bash, la vitesse et l’empreinte mémoire est ici insignifiante - compte plus les dépendances
Me suis permis quelques modification à sukolyn
- requests, non : pour moi il faut utiliser le moins possible de dépendances
- wrap auto et decode html avec bibliothèque incluse dans python
- test des dates : pas d’intérêt d'afficher tout le flux (sinon on va directement à l’accueil du site) - pourrait être passé comme paramètre optionnel ...
ps: du coup plus lent que l'original
Me suis permis quelques modification à sukolyn
- requests, non : pour moi il faut utiliser le moins possible de dépendances
- wrap auto et decode html avec bibliothèque incluse dans python
- test des dates : pas d’intérêt d'afficher tout le flux (sinon on va directement à l’accueil du site) - pourrait être passé comme paramètre optionnel ...
ps: du coup plus lent que l'original
Code : Tout sélectionner
#!/usr/bin/python
import os
import urllib.request
import html
from xml.etree import ElementTree as ET
import textwrap
import datetime
max_jours = 40 # limiter l'historique à ...
try:
with urllib.request.urlopen('https://archlinux.fr/feed') as f_url:
news = f_url.read()
except urllib.error.HTTPError:
exit(1)
root = ET.fromstring(news)
aujourdhui = datetime.datetime.today().date()
cols, _ = os.get_terminal_size(0)
for t in root.findall("channel/item"):
title = t.find('title').text
odate = datetime.datetime.strptime(t.find('pubDate').text, '%a, %d %b %Y %H:%M:%S %z').date()
delta = aujourdhui - odate
if delta.days > max_jours:
break
date = f"{odate.strftime('%d/%m/%Y')} \t({delta.days} jours)"
desc = html.unescape(t.find('description').text)
print("%s\n\033[01;31m%s\n\033[00;36m%s\033[00m\n"%(date, title, textwrap.fill(desc, width=cols-5, initial_indent=" ", subsequent_indent=" ")))
print("https://archlinux.fr/")
Dernière modification par papajoke le jeu. 21 nov. 2019, 00:21, modifié 1 fois.
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
-
- 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)
@benjarobin la version de python est moins lisible que toutes les autres versions.
Je ne crois pas avoir écrit ce genre de chose. Quand tu veux programmer en python, Il faut juste aller à la pêche dans des doc modules rédigés par des gens instruits et intelligents, pour des gens instruits et intelligents.
Ce que je ne suis pas.
Lancer l'interpréteur fait partie de temps de traitement.
J'ai effectués des tests de rapidité avec un fichier local, pour éviter de fausser les résultats avec des vitesses de téléchargement aléatoires.
Avec le lancement de l'interpréteur tcc à chaque boucle, python est dans les cordes.
En 2014, les pythonistes de developpez.com, avaient fait les mêmes analyses que toi.
J'ai donc fait des tests avec un seul chargement d'interpréteur et une grosse boucle interne sur des traitements simples de chaînes de caractères.
J'ai fait la même chose sur de simples calculs arithmétiques.
bash ne faisait pas partie de ce test, il aurait terminé bon dernier.
Les résultats étaient également parlants du plus rapide au plus lent :
C compilé glibc
tcc interprété
Perl
Php
Python 2
Python 3
Python a des avantages que je ne nie pas, notamment la rapidité d'écriture quand on le pratique régulièrement, mais pour moi ses défauts sont rédhibitoires.
Je ne crois pas avoir écrit ce genre de chose. Quand tu veux programmer en python, Il faut juste aller à la pêche dans des doc modules rédigés par des gens instruits et intelligents, pour des gens instruits et intelligents.
Ce que je ne suis pas.
Lancer l'interpréteur fait partie de temps de traitement.
J'ai effectués des tests de rapidité avec un fichier local, pour éviter de fausser les résultats avec des vitesses de téléchargement aléatoires.
Avec le lancement de l'interpréteur tcc à chaque boucle, python est dans les cordes.
Code : Tout sélectionner
time for (( i= 100; i >0; i-- )); do cat feed | ./news.c > /dev/null; done
real 0m0,291s user 0m0,288s sys 0m0,081s
J'ai donc fait des tests avec un seul chargement d'interpréteur et une grosse boucle interne sur des traitements simples de chaînes de caractères.
J'ai fait la même chose sur de simples calculs arithmétiques.
bash ne faisait pas partie de ce test, il aurait terminé bon dernier.
Les résultats étaient également parlants du plus rapide au plus lent :
C compilé glibc
tcc interprété
Perl
Php
Python 2
Python 3
Python a des avantages que je ne nie pas, notamment la rapidité d'écriture quand on le pratique régulièrement, mais pour moi ses défauts sont rédhibitoires.
Dernière modification par avi3000 le jeu. 21 nov. 2019, 12:22, modifié 1 fois.
-
- 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)
@papajoke question lisibilité, il y a mieux
La page html ne contient que 10 news pourquoi tester la date ?
Code : Tout sélectionner
print("%s\n\033[01;31m%s\n\033[00;36m%s\033[00m\n"%(date, title, textwrap.fill(desc, width=cols-5, initial_indent=" ", subsequent_indent=" ")))
- benjarobin
- Maître du Kyudo
- Messages : 17262
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [script] Les news dans le terminal (résolu)
@avi3000 Je n'ai jamais remis en cause le fait que python soit plus lent a être lancé qu'une application native. Je dis juste, pour être plus clair, que tu "encules les mouches par pack de centaines" (désolé ne le prend pas mal). Dans ce cas précis les performances du parsing du résultat n'ont aucune importance, il faut bien plus longtemps pour télécharger la chose.
Tu ne tiens pas en compte les critères suivant : maintenabilité, lisibilité et rapidité d'écriture du code.
PS: Je suis un développeur en système embarqué, donc je fais du C très bas niveau tous les jours, c'est ma spécialité, et je pense très sérieusement que je me débrouille très bien (mes chevilles vont très bien ). Et bien je peux te garantir que personnellement jamais j’irai écrire la chose en C natif. C'est bien plus rapide à écrire dans un langage de script (après peut importe le choix du langage tant que c'est adapté et lisible...)
Ici tu critique python sans aucune raison, je ne comprend pas pourquoi tu dis que c'est compliqué, c'est bien plus simple que bash (la syntaxe est horrible et illisible, après je peux comprendre que c'est très personnel comme vision).
De plus je peux te dire que dans mon boulot, à choisir entre bash, perl, php ou python, tout le monde va choisir ce dernier (surtout pour faire quelque chose comme cela).
Essaye de coder simplement ce qu'il a fait en bash / perl
Il faut avouer que la version de papajoke, bien que améliorable sur le style / lisibilité, cela reste 1000 fois plus lisible, bien plus robuste, gère tous les caractères d’échappement du html sans essayer de réinventer la roue en la faisant carrée
Tu ne tiens pas en compte les critères suivant : maintenabilité, lisibilité et rapidité d'écriture du code.
PS: Je suis un développeur en système embarqué, donc je fais du C très bas niveau tous les jours, c'est ma spécialité, et je pense très sérieusement que je me débrouille très bien (mes chevilles vont très bien ). Et bien je peux te garantir que personnellement jamais j’irai écrire la chose en C natif. C'est bien plus rapide à écrire dans un langage de script (après peut importe le choix du langage tant que c'est adapté et lisible...)
Ici tu critique python sans aucune raison, je ne comprend pas pourquoi tu dis que c'est compliqué, c'est bien plus simple que bash (la syntaxe est horrible et illisible, après je peux comprendre que c'est très personnel comme vision).
De plus je peux te dire que dans mon boulot, à choisir entre bash, perl, php ou python, tout le monde va choisir ce dernier (surtout pour faire quelque chose comme cela).
Pour ne pas afficher des news de 2018 ?
Essaye de coder simplement ce qu'il a fait en bash / perl
Il faut avouer que la version de papajoke, bien que améliorable sur le style / lisibilité, cela reste 1000 fois plus lisible, bien plus robuste, gère tous les caractères d’échappement du html sans essayer de réinventer la roue en la faisant carrée
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Re: [script] Les news dans le terminal (résolu)
oui, ici la syntaxe n'est pas top mais pas liée à python
on peut comme en bash utiliser des constantes
------------
Comme dit plus haut, quel intérêt que l'un prend 0.5 seconde et l'autre 2 secondes ? pour l'utilisateur c'est complètement transparent !
Perso, je pense que ton script bash sera toujours valable dans 5 ans alors que le script python pourrait être à retoucher dans 5 ans. Donc bon point pour bash (mais ici on est dans du scripting donc changer 2..3 mots tous les 3 ans ne pose pas de problème)
Pourquoi les dates ?
Justement pour optimiser le temps (mais de l'utilisateur) !!!! quel est l’intérêt d'avoir un script qui s'exécute en 0.1 seconde si je suis obligé de scroller pour voir si une chose m’intéresse ?
Ou alors afficher les news dans le sens inverse
Moi, je me soucis avant tout de l'utilisateur du script et pas du code ou de l'interpréteur (bash ou python, pour moi les 2 sont excellents pour faire des scripts console). Lorsque j'ai modifié le code de sukolyn, je n'est pas hésité 10 secondes sur une seule ligne de son code ; ton bash ...
on peut comme en bash utiliser des constantes
Code : Tout sélectionner
c_title = '\033[00;31m'
c_txt = '\033[00;36m'
c_none = '\33[0m'
...
print(f"{date}\n{c_title}{title}{c_none}\n{c_txt}{desc}{c_none}\n")
Comme dit plus haut, quel intérêt que l'un prend 0.5 seconde et l'autre 2 secondes ? pour l'utilisateur c'est complètement transparent !
Perso, je pense que ton script bash sera toujours valable dans 5 ans alors que le script python pourrait être à retoucher dans 5 ans. Donc bon point pour bash (mais ici on est dans du scripting donc changer 2..3 mots tous les 3 ans ne pose pas de problème)
Pourquoi les dates ?
Justement pour optimiser le temps (mais de l'utilisateur) !!!! quel est l’intérêt d'avoir un script qui s'exécute en 0.1 seconde si je suis obligé de scroller pour voir si une chose m’intéresse ?
Ou alors afficher les news dans le sens inverse
Moi, je me soucis avant tout de l'utilisateur du script et pas du code ou de l'interpréteur (bash ou python, pour moi les 2 sont excellents pour faire des scripts console). Lorsque j'ai modifié le code de sukolyn, je n'est pas hésité 10 secondes sur une seule ligne de son code ; ton bash ...
Arch stable - Kde 5 / zsh - btrfs/mbr - Intel Core i3 - 6Go RAM - GeForce 405 video-nouveau
-
- 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)
@papajoke
10 news = 63 lignes de 109 colonnes sur mon écran, pas de pagination
tu peux aussi compter les news pour limiter l'affichage et la pagination si nécessaire
Comme tu le dis, afficher les news en sens chronologique croissant règle le problème de pagination, mais c'est plus lourd à programmer.
@benjarobin Je dis juste, pour être plus clair, que tu "encules les mouches par pack de centaines"
D'une part ce n'est pas un argument, d'autre part je ne me suis pas permis ce genre de réflexion.
Ton expérience professionnelle est éminemment respectable. La mienne ne l'est pas moins.
32 ans d'informatique professionnelle en tant que développeur. Du cobol au C, en passant par le gap, le pl1 et bien d'autres.
J'ai également pratiqué en tant qu'ingénieur système (un peu) et administrateur de base de données.
A la retraite depuis quelques années, je pratique, comme je l'ai écrit plus haut, le codage récréatif.
Chacun peut utiliser le langage qu'il veut.
Il me semble que cette partie du forum, intitulée "autres contributions", est l'endroit adéquat pour débattre, proposer et échanger des idées, des pratiques bonnes ou mauvaises, éventuellement des solutions.
Je ne pense pas que l'invective y ait sa place.
sukolyn nous a présenté une solution python qui est propre.
J'ai donné les raisons pour lesquelles, personnellement je ne l'aimais pas (9 modules, 5 Mo à installer, pour remplacer 35 lignes de script).
Le reste était un échange de point de vue, qui ne justifie en rien une telle réaction. Tu m'avais habitué à mieux.
10 news = 63 lignes de 109 colonnes sur mon écran, pas de pagination
tu peux aussi compter les news pour limiter l'affichage et la pagination si nécessaire
Comme tu le dis, afficher les news en sens chronologique croissant règle le problème de pagination, mais c'est plus lourd à programmer.
@benjarobin Je dis juste, pour être plus clair, que tu "encules les mouches par pack de centaines"
D'une part ce n'est pas un argument, d'autre part je ne me suis pas permis ce genre de réflexion.
Ton expérience professionnelle est éminemment respectable. La mienne ne l'est pas moins.
32 ans d'informatique professionnelle en tant que développeur. Du cobol au C, en passant par le gap, le pl1 et bien d'autres.
J'ai également pratiqué en tant qu'ingénieur système (un peu) et administrateur de base de données.
A la retraite depuis quelques années, je pratique, comme je l'ai écrit plus haut, le codage récréatif.
Chacun peut utiliser le langage qu'il veut.
Il me semble que cette partie du forum, intitulée "autres contributions", est l'endroit adéquat pour débattre, proposer et échanger des idées, des pratiques bonnes ou mauvaises, éventuellement des solutions.
Je ne pense pas que l'invective y ait sa place.
sukolyn nous a présenté une solution python qui est propre.
J'ai donné les raisons pour lesquelles, personnellement je ne l'aimais pas (9 modules, 5 Mo à installer, pour remplacer 35 lignes de script).
Le reste était un échange de point de vue, qui ne justifie en rien une telle réaction. Tu m'avais habitué à mieux.
- benjarobin
- Maître du Kyudo
- Messages : 17262
- Inscription : sam. 30 mai 2009, 15:48
- Localisation : Lyon
Re: [script] Les news dans le terminal (résolu)
Je ne voulais pas faire d’attaque personnelle ni être méchant, juste un peu d'humour...
Je le répète encore, "après peut importe le choix du langage tant que c'est adapté et lisible". Donc je ne critique pas les autres langages
J'ai essayé de défendre python, car tu étais très virulent envers ce dernier (alors que de mon point de vue il n'y avait pas de bonne raison) !!!
Je le répète encore, "après peut importe le choix du langage tant que c'est adapté et lisible". Donc je ne critique pas les autres langages
J'ai essayé de défendre python, car tu étais très virulent envers ce dernier (alors que de mon point de vue il n'y avait pas de bonne raison) !!!
Zsh | KDE | PC fixe : core i7, carte nvidia
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
-
- 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)
La tempête tropicale ayant été rétrogradée au niveau d'une simple averse, nous allons repasser aux choses sérieuses et divertissantes.
Nouvelle version bash avec :
le traitement du fichier 'feed' avec ou sans sauts de ligne;
le remplacement des 'html entities' figurant dans ce fichier.
l'affichage des nouvelles en ordre chronologique croissant (plus de problèmes de pagination)
la gestion de la largeur d'affichage pour la description.
Pour que les pythonistes puissent modifier ce code, les sous-traitements ont été isolés dans 3 petites fonctions :
parse_z, print_reverse, textwrap.
et voila.
Si vous voulez la version C, je l'ai aussi.
faut pas faire chier le marin.
Nouvelle version bash avec :
le traitement du fichier 'feed' avec ou sans sauts de ligne;
le remplacement des 'html entities' figurant dans ce fichier.
l'affichage des nouvelles en ordre chronologique croissant (plus de problèmes de pagination)
la gestion de la largeur d'affichage pour la description.
Pour que les pythonistes puissent modifier ce code, les sous-traitements ont été isolés dans 3 petites fonctions :
parse_z, print_reverse, textwrap.
Code : Tout sélectionner
#!/bin/bash
IFS=$'\n'
WRAPMIN=80
WRAPMAX=100
INDENT=' '
red="\033[31m"
bleu="\033[34m"
defo="\033[0m"
les_news="\t\t>> News Archlinux.fr <<\n$defo"
textwrap () {
local l=${#1} i=0 j=$WRAPMAX lf=''
while (( j < l )); do
while (( j-- > i )); do
[ "${1:j:1}" = ' ' ] && break
done
(( j - i < WRAPMIN )) && j=$(( i + WRAPMAX ))
printf "$lf$INDENT${1:i:j - i + 1}"
i=$(( j + 1 ))
(( j+=WRAPMAX ))
lf='\n'
done
printf "$lf$INDENT${1:i}\n"
}
print_reverse () {
local i=${#tit[*]}
while (( i-- )); do
echo -e "${tit[i]}"
textwrap "${dsc[i]}"
done
}
parse_z () {
z=${z//‘/\\x27}
z=${z//’/\'}
z=${z//’/\'} # pour les TTY
z=${z//–/-}
z=${z//…/...}
z=${z//>/>}
}
echo -e "$red$les_news"
while read -d '<' z; do
case ${z:0:1} in
't')
parse_z
[ -z "$on_one" ] || titre=${z:6};;
'p')
[ "${z:0:8}" = 'pubDate>' ] && tit+=("$bleu${z:13:((-15))}$defo $titre");;
'd')
[ "${z:0:12}" = 'description>' ] && {
read -d '<' z
z=${z#*CDATA[}
z=${z%]]>*}
parse_z
[ -z "$on_one" ] || dsc+=("$z\n")
on_one='no'
};;
esac
done < <(curl -s ${@:-https://archlinux.fr/feed})
print_reverse
echo -e "$red$les_news"
# vim: ts=4 sw=4 :
Si vous voulez la version C, je l'ai aussi.
faut pas faire chier le marin.
Re: [script] Les news dans le terminal (résolu)
j'aime bien l'idée d'un dictionnaire (tableau associatif en bash) traité par une boucle :
Code : Tout sélectionner
#!/bin/bash
declare -A entities=( ["‘"]="'" ["’"]="'" ["–"]="-" ["…"]="..." [">"]=">" )
#...
parse_z()
(
for e in "${!entities[@]}"; do set -- "${@//$e/${entities["$e"]}}"; done
echo "$@"
)
#...
Dernière modification par sukolyn le jeu. 21 nov. 2019, 14:32, modifié 1 fois.
-
- 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)
C'est vrai que l'idée est intéressante. Je n'ai pas toujours le réflexe en bash, car l'ajout de cette fonctionnalité est relativement récent.
Il me semble que tu as laissé une coquille dans ton copier/coller text au lieu de @.
Le dictionnaire est plus facile à maintenir si l'on doit gérer une grosse quantité de remplacements.
La version directe que j'utilise est plus rapide à l'exécution.
J'ai ajouté un remplacement pour les TTY.
Il me semble que tu as laissé une coquille dans ton copier/coller text au lieu de @.
Le dictionnaire est plus facile à maintenir si l'on doit gérer une grosse quantité de remplacements.
La version directe que j'utilise est plus rapide à l'exécution.
J'ai ajouté un remplacement pour les TTY.
Re: [script] Les news dans le terminal (résolu)
ah, oui. j'édite.
Re: [script] Les news dans le terminal (résolu)
Autre approche avec elinks et sed, fonction shell :
version fr
version en
Quelles sont les news ?
Et éventuellement clic droit sur la news pour ouvrir le lien.
version fr
Code : Tout sélectionner
lesnews() {elinks https://www.archlinux.fr/feed -dump | sed -n '/^\s\s\shttps/ {1d; s/^\s\s\s//; h; $!N; s/.*\n//; s/^\s\s\s//; G; s/^...,\s//; s/..:..:..\s+0000.*\n//; p}' | tac}
Code : Tout sélectionner
thenews() {elinks https://www.archlinux.org/feeds/news -dump | sed -n '/^\s\s\s+0000tag/ {s/^.*:\(.*\),\(.*\):/\2 \1/; p}' | tac}
Code : Tout sélectionner
lesnews
05 May 2018 https://archlinux.fr/news/la-mise-a-jour-de-js52-52-7-3-2-requiert-une-intervention-manuelle
14 Jul 2018 https://archlinux.fr/accueil/la-mise-a-jour-de-libutf8proc2-1-1-3-requiert-une-intervention-manuelle
27 Jun 2019 https://archlinux.fr/news/la-mise-a-jour-de-mariadb-10-4-x-requiert-une-intervention-manuelle
11 Jul 2019 https://archlinux.fr/news/la-mise-a-jour-de-libbloom1-6-2-requiert-une-intervention-manuelle
21 Aug 2019 https://archlinux.fr/non-classe/la-mise-a-jour-de-tensorflow1-14-0-5-requiert-une-intervention-manuelle
26 Aug 2019 https://archlinux.fr/news/la-mise-a-jour-de-astyle3-1-2-requiert-une-intervention-manuelle
07 Oct 2019 https://archlinux.fr/news/remplacement-du-groupe-base-par-le-paquet-obligatoire-base-intervention-manuelle-requise
16 Oct 2019 https://archlinux.fr/accueil/mise-a-jour-requise-vers-une-version-recente-de-libarchive
26 Oct 2019 https://archlinux.fr/accueil/clarification-concernant-lactivite-recente-sur-la-liste-arch-announce
14 Nov 2019 https://archlinux.fr/news/nouveaux-paquets-kernel-et-hooks-mkinitcpio Thu,
Code : Tout sélectionner
thenews
2018-05-04 www.archlinux.org/news/js52-5273-2-upgrade-requires-intervention/
2018-07-14 www.archlinux.org/news/libutf8proc211-3-update-requires-manual-intervention/
2019-06-27 www.archlinux.org/news/mariadb-104x-update-requires-manual-intervention/
2019-07-11 www.archlinux.org/news/libbloom16-2-update-requires-manual-intervention/
2019-08-20 www.archlinux.org/news/tensorflow1140-5-update-requires-manual-intervention/
2019-08-26 www.archlinux.org/news/astyle31-2-update-requires-manual-intervention/
2019-10-06 www.archlinux.org/news/base-group-replaced-by-mandatory-base-package-manual-intervention-required/
2019-10-16 www.archlinux.org/news/required-update-to-recent-libarchive/
2019-10-25 www.archlinux.org/news/clarification-regarding-recent-email-activity-on-the-arch-announce-list/
2019-11-10 www.archlinux.org/news/new-kernel-packages-and-mkinitcpio-hooks/