Döviz Kurları Betiği

Başlatan alquirel, 16 Haziran 2010 - 14:23:20

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

alquirel

selamlar,

@ironic'in gönderdiği betikten esinlenerek kendi çapımda bişeyler denedim
http://forum.ubuntu-tr.net/index.php/topic,20035.0.html







#!/bin/bash

rm -f /tmp/doviz.*

wget -t 1 --quiet http://xml.altinkaynak.com.tr/doviz.xml -O /tmp/doviz.html & zenity --info --text "Döviz Kurları İndiriliyor... \nwww.altinkaynak.com.tr" --title "Döviz" --timeout 2

sed -n -e 's/.*<ADI>\(.*\)<\/ADI>.*/\1/p' -e 's/.*<ALIS>\(.*\)<\/ALIS>.*/Alış = \1/p' -e 's/.*<SATIS>\(.*\)<\/SATIS>/Satış = \1\n/p' /tmp/doviz.html > /tmp/doviz.txt

zenity --title "Döviz Kurları" --width="260" --height="240" --text-info  --editable --filename=/tmp/doviz.txt


Birkaç sorum var,

  • sed` i tam beceremedim, en iyi bu kadar şekil değişikliği yaptırabildim. bu noktada yardıma ihtiyacım var
  • indirilen xml dosyasında gereksiz kurlar da var, sadece bir kısmını gösterebilmek için de gawk komutunu denedim beceremedim :)
  • çıktımı görüntülemede daha güzel bir arayüz elde etmek için zenity'ye alternatif kod var mı bash'de

ironic

@alquirel, html2text paketiyle içeriği düzenlersen daha temiz çıktı alırsın.

örneğin şu şekilde içerik sorunu düzeliyor.


html2text /tmp/doviz.html | sed 's/.*Tarih/Tarih/'


Sed yaptığı iş gereği çok hassas bir işleyici. İçeriğin değişebileceğini göz önüne alarak öncelikle txt' ye  çevirip  daha  az sed darbesi yerinde olur.  :)

alquirel

sedi şu şekilde yaptım
#!/bin/bash

rm -f /tmp/doviz.*

wget -t 1 --quiet http://xml.altinkaynak.com.tr/doviz.xml -O /tmp/doviz.html & zenity --info --text "Döviz Kurları İndiriliyor... \nwww.altinkaynak.com.tr" --title "Döviz" --timeout 2

html2text /tmp/doviz.html | sed -e 's/.*Tarih /Tarih\n/' -e 's/\([A-Z]*\) \([0-9]\.[0-9]*\) \([0-9]\.[0-9]*\)/\n\n\1\nAlış = \2\nSatış = \3/g' > /tmp/doviz.txt

zenity --title "Döviz Kurları" --width="260" --height="240" --text-info  --editable --filename=/tmp/doviz.txt


ancak kur isimlerinden sonra boşluk değil de yeni satır varsa şekildeki gibi bir görüntü oluyor, yani çalışmıyor :)


hitokiri

#!/bin/bash

rm -f /tmp/doviz.*

for x in seq 0 4 ;  do echo $x ; sleep 1 ; done |zenity --progress --text "Döviz Kurları İndiriliyor... \nwww.altinkaynak.com.tr" --title "Döviz" --pulsate --auto-close &
wget -t 1 --quiet http://xml.altinkaynak.com.tr/doviz.xml -O /tmp/doviz.html  ;
html2text /tmp/doviz.html | sed -e 's/.*Tarih /Tarih\n/' -e 's/\([A-Z]*\) \([0-9]\.[0-9]*\) \([0-9]\.[0-9]*\)/\n\1\nAlış = \2\nSatış = \3/g' > /tmp/doviz.txt
sed -i -e 's_GBP_\nGBP_g'  /tmp/doviz.txt
sed -i -e 's_2.3030_alış2.3030\nsatış_g'  /tmp/doviz.txt
sed -i -e 's_JPY_\nJPY_g'  /tmp/doviz.txt
sed -i -e 's_SAR_\nSAR_g'  /tmp/doviz.txt
sleep 4
`grep $ /tmp/doviz.txt |zenity --title "Döviz Kurları" --width="460" --height="440"  --list   --column "Döviz"  --column "Alış"   --column "Satış"  --text="Döviz Kurları"` 

Şu şekilde biraz daha istediğin gibi olur gibi :)

alquirel

süpersin @hitokiri,



satırlardaki Alış Satış ifadelerini kaldırınca daha güzel oldu.
ama kurların arasını elle ayırdığın kod;
sed -i -e 's_2.3030_alış2.3030\nsatış_g'  /tmp/doviz.txt pek mantıklı değil,
sonuç olarak gün içinde bile değişen şeyler bunlar ;)

bunun üzerine senin zenity'yi list olarak kullanma fikrinden yola çıkarak
tüm kur isimlerinden ve değerlerinden sonra yeni satır koyan,
sonra da gereksiz yeni satırları silen bir düzenleme yaptım.

sonuç mükemmel ;)

windowsta iken bunların sadece hayalini kurardım, ama linuxta iki küçük koda bakıyor her şey :)

yaşasın özgürlük


#!/bin/bash

rm -f /tmp/doviz.*

for x in seq 0 4 ;  do echo $x ; sleep 1 ; done |zenity --progress --text "Döviz Kurları İndiriliyor... \nwww.altinkaynak.com.tr" --title "Döviz" --pulsate --auto-close &
wget -t 1 --quiet http://xml.altinkaynak.com.tr/doviz.xml -O /tmp/doviz.html  ;
html2text /tmp/doviz.html | sed -e 's/.*Tarih /Tarih\n/' > /tmp/doviz.txt
sed -i -e 's/\([A-Z]*\) /\1\n/g'  /tmp/doviz.txt
sed -i -e 's/\([0-9]\.[0-9]*\) /\1\n/g'  /tmp/doviz.txt
sed -i -e '/^$/ d' /tmp/doviz.txt
sleep 2
`grep $ /tmp/doviz.txt |zenity --title "Döviz Kurları" --width="460" --height="440"  --list   --column "Döviz"  --column "Alış"   --column "Satış"  --text="Döviz Kurları"` 


hitokiri

Alıntı Yapsed -i -e 's_2.3030_alış2.3030\nsatış_g'  /tmp/doviz.txt pek mantıklı değil,
sonuç olarak gün içinde bile değişen şeyler bunlar ;)
gece kapalıdır diye bi katakulle yaptım eline sağılık :D
Güzel olmuş :)
yaşasın özgürlük ;D

alquirel

Alıntı yapılan: hitokiri - 17 Haziran 2010 - 03:51:57
Alıntı Yapsed -i -e 's_2.3030_alış2.3030\nsatış_g'  /tmp/doviz.txt pek mantıklı değil,
sonuç olarak gün içinde bile değişen şeyler bunlar ;)
gece kapalıdır diye bi katakulle yaptım eline sağılık :D
Güzel olmuş :)
yaşasın özgürlük ;D

özgürlük yaşasın da bu kadar da değil :P

işin şakası bi yana, gerçekten bu konuda büyük katkınız oldu bana, sağolun :)

ironic

Elinize sağlık. Harika olmuş.  :)

alquirel

sağol @ironic

artık wi don't want tu sii dı bek, wi want tu sii dı front zamanı :D

CeYHuN07

altinkaynak.com.tr xml destegini kapatmis sanirim
tcmb kurlari ile betik guncellenebilinir mi acaba

if

@CeYHuN07, TCMB'deki ilgili sayfanın bağlantısını alayım.

sem

".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

ironic

#12