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.

#1 Le 19/04/2014, à 13:56

rezemika

[Script] Convertisseur de devises en ligne de commande

Bonjour !

Naviguant beaucoup sur des sites de vente anglais, j'avais besoin d'une conversion rapide et efficace des devises.
Ne trouvant pas de convertisseur de devises en ligne de commande déjà fait, j'ai donc décidé de le faire moi-même.
Comme ça peut-être utile à pas mal de gens, je vous le donne ici.
Etant en manque d'inspiration, je l'ai temporairement baptisé dconv.
Il est actuellement en version 0.2 (il sera en v1 quand la TODO list sera satisfaite).

Fonctionnement

L'appel du script se fait ainsi :

dconv $valeur $devise1 $devise2

Si vous tapez :

dconv 2 € $

OU

dconv 2 euros dollars

Le script va alors convertir 2 euros en dollars.
Il donne au passage le taux de conversion.

Quand la commande est tappée, il télécharge un fichier .csv depuis le convertisseur de devise de Yahoo.
Ce fichier contient le taux de change entre les deux devises.
Un simple calcul suffit alors pour obtenir la valeur convertie.

Pour la version actuelle, ce script a besoin du paquet "calc".

Script

#!/bin/bash
# DevConv v0.2
# Convertisseur de devises en ligne de commande
# Merci à FreeTools : http://free-tools.fr/code/php-javascript-ajax-conversion-de-devise-994/

### Variables

version="v0.2"
Option=""
devise_origine=""
devise_sortie=""
taux=""
valeur=""
valeur_entree=""

### Fonctions

f_erreur() {
if [ $1="arg-inv" ]; then
	echo "Opérande invalide"
	exit 1
fi
}

f_conv() {
wget "http://quote.yahoo.com/d/quotes.csv?s=$devise_origine$devise_sortie=X&f=l1&e=.csv" &>/dev/null
taux=$(cat /tmp/quotes.csv*)
echo "Taux"
cat /tmp/quotes.csv*
# Conversion avec le taux et l'entrée $1
valeur=$(calc $valeur_entree*$taux)
echo "Valeur"
echo "$valeur"
rm quotes.csv*
exit 0
}

### Programme
cd /tmp
valeur_entree=$1
	
case $1 in
	"info")
		echo "          dConv"
		echo ""
		echo "   Script convertisseur de devises"
		echo "Exemple :"
		echo "dconv 4 € £"
		echo "Converti 4€ en £."
		echo "Supporte : € £ $"
		echo "Version : $version"
		echo ""
		echo "Par rezemika - CC By - SA"
		exit 0
		;;
	*)
		;;
esac

case $2 in
	"€" | "e" | "euro" | "euros")
		devise_origine="EUR"
		;;
	"$" | "d" | "dollar" | "dollars")
		devise_origine="USD"
		;;
	"£" | "l" | "livre" | "livres")
		devise_origine="GBP"
		;;
	*)
		f_erreur arg-inv # Ou un support d'autres devises à l'avenir
		;;
esac

case $3 in
	"€" | "e" | "euro" | "euros")
		devise_sortie="EUR"
		;;
	"$" | "d" | "dollar" | "dollars")
		devise_sortie="USD"
		;;
	"£" | "l" | "livre" | "livres")
		devise_sortie="GBP"
		;;
	*)
		f_erreur arg-inv # Ou un support d'autres devises à l'avenir
		;;
esac

f_conv

exit 0

TODO
- supporter d'autres devises
- utiliser une autre méthode de calcul ("let" me renvoi une erreur que je tente de corriger)
- accelerer la réponse du script
- rendre le script plus propre


Voilà, si vous avez des suggestions, des remarques ou des questions, je suis tout ouïe.
Bon week-end !

Dernière modification par rezemika (Le 19/04/2014, à 14:06)

Hors ligne

#2 Le 19/04/2014, à 14:16

serged

Re : [Script] Convertisseur de devises en ligne de commande

Prévoir un mode "off-line" : Quand le fichier chez Yahoo est indisponible, utiliser le dernier fichier téléchargé...


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#3 Le 19/04/2014, à 16:32

rezemika

Re : [Script] Convertisseur de devises en ligne de commande

Excellente idée.
Par contre, je n'arrive pas (pour l'instant) à la concrétiser.
Avec stat, je vérifie la date de dernière modif' du fichier csv, si elle est différente de la date d'aujourd'hui (car les taux de change varient) ou si stat renvoi une erreur (parce que le .csv est absent), wget télécharge à nouveau le fichier.
S'il échoue, on déclare un mode hors-ligne.
Après, il suffit de vérifier si le fichier .csv existe. Si oui et qu'il n'est pas trop vieux, on l'utilise. Sinon, on renvoi une erreur.
Mais j'ai du mal à voir comment faire pour les fichiers .csv de plusieurs taux de changes.
J'ai pensé faire un dossier où on stock un "euros.csv" contenant son propre taux de change, et idem pour les autres devises, mais ce serait "lourd" et complexe.

Je pense avoir atteint la limite de mes connaissances en BASH.
Je continue d'essayer diverses méthodes, mais je ne promets pas de résultat rapide.

Désolé.

Hors ligne

#4 Le 20/04/2014, à 09:27

serged

Re : [Script] Convertisseur de devises en ligne de commande

Je ferais plutôt :

Récupérer le fichier
Si fichier récupérable alors
  Sauvegarder fichier
fin si

Calculer le change avec le fichier sauvegardé


LinuxMint Vera Cinnamon et d'autres machines en MATE, XFCE... 20.x , 21.x ou 19.x
Tour : Asus F2A55 / AMD A8-5600K APU 3,6GHz / RAM 16Go / Nvidia GeForce GT610 / LM21.1 Cinnamon
Portable : LDLC Mercure MH : Celeron N3450 /RAM 4Go / Intel HD graphics 500 i915 / biboot Win 10 (sur SSD) - LM21.1 MATE (sur HDD)

Hors ligne

#5 Le 22/04/2014, à 15:01

rezemika

Re : [Script] Convertisseur de devises en ligne de commande

Désolé du retard, j'étais pas chez moi ce week-end.
J'ai du mal à comprendre ce que tu veut dire.
Si on fait un mode hors-ligne, il faut séparer les taux de change de chaque devise.

Eventuellement :
Faire un fichier .csv qui contiendrait dans un ordre défini les taux de change de l'euro, du dollar et de la livre.
On les récupère par un cut.

A chaque lancement du script, on ping yahoo.
Si ça répond, on télécharge les nouveaux taux de change, sauf si ceux qui sont stockés sont récents, on cut le fichier .csv et on calcule.
Si ça répond pas, on cut quand même, on calcule mais un message averti d'une obsolescence potentielle.


En ce moment je suis pas mal occupé donc ça risque d'avancer lentement, mais je vais quand même m'y mettre quand j'aurais un peu de temps.
Si vous voulez, je peux mettre mes essais de codes ici aussi, vous jugerez de mon avancement.

Hors ligne

#6 Le 07/02/2017, à 16:21

pec

Re : [Script] Convertisseur de devises en ligne de commande

Salut

Merci pour ce script !

Juste pour dire que y'a pas besoin d'installer le paquet calc (apcalc sous debian). Suffit de remplacer cette ligne :

valeur=$(calc $valeur_entree*$taux)

par :

valeur=$(echo "$valeur_entree*$taux" | bc -l)

Ça évite de devoir installer un paquet pour un script comme celui-ci.


LINUX est à une jolie fille ce que Windows est à une prostituée. La jolie fille, il faut la séduire et la comprendre pour obtenir ce que l'on désire, la prostituée , il suffit de la payer, et surtout bien se protéger.

Hors ligne