Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: hulp bij Lua script voor Conky  (gelezen 2697 keer)

Offline tabasco

  • Lid
hulp bij Lua script voor Conky
« Gepost op: 2012/02/03, 14:27:41 »
Hallo,

Ik ben me aan het oriƫnteren voor een Lua script dat onder Conky werkt.
Het doel is om de tijd die conky weer kan geven, om te zetten naar woorden:
dus 14:20 wordt > "tien voor half drie"

Weet iemand of het mogelijk is om met een script de cijfer genoteerde tijds output te veranderen naar woorden.
Bijvoorbeeld zoiets: (let niet op de script correctheid ik ben geen programmeur)

HOUR:MINUTES

When MINUTES="05" display "vijf over" HOUR
When MINUTES="20" display "tien voor half" HOUR+1
etcetera

Wie kan mij een duwtje in de goede richting geven om dit op te zetten?
Alvast bedankt!

Offline tabasco

  • Lid
Re: hulp bij Lua script voor Conky
« Reactie #1 Gepost op: 2012/02/24, 20:28:03 »
Inmiddels heb ik in Screenlets het Fuzzy clock script aangepast naar mijn wensen en werkt min of meer. Dit is echter in Python, ik wil het onder Conky laten draaien dmv een Lua script.

Wie heeft voor mij de link naar "Python naar Lua voor dummies" ;)

Zo gaat het er ongeveer uitzien...:
h = int(sensors.cal_get_hour24())
Hours = int(sensors.cal_get_hour12())


FuzzyMinute = int(sensors.cal_get_minute())

if (FuzzyMinute > 19):
Hours += 1

if (FuzzyMinute <= 19):
TextTime = _(" over ")
if (FuzzyMinute > 19):
TextTime = _(" voor half ")
if (FuzzyMinute > 25):
TextTime = _(" ")
if (FuzzyMinute > 34):
TextTime = _(" over half ")
if (FuzzyMinute > 44):
TextTime = _(" voor ")
if (FuzzyMinute < 4):
TextTime = _(" uur")

TextMins = [_('vijf'), _('tien'), _('kwart'), _('tien'), _('vijf'), _('half'), _('vijf'), _('tien'), _('kwart'), _('tien'), _('vijf')]
TextMin = TextMins[int(FuzzyMinute / 5 -1)]
TextHours = [_('een'), _('twee'), _('drie'), _('vier'), _('vijf'), _('zes'), _('zeven'), _('acht'), _('negen'), _('tien'), _('elf'), _('twaalf')]
TextHour = TextHours[Hours-1]
TextSay = 'Het is '

if FuzzyMinute < 5:
self.time = TextSay + TextHour + TextTime #+ TimeOfDay
else:
self.time = TextSay + TextMin + TextTime + TextHour #+ TimeOfDay

Re: hulp bij Lua script voor Conky
« Reactie #2 Gepost op: 2012/02/25, 11:49:11 »
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Offline tabasco

  • Lid
Re: hulp bij Python script voor Conky
« Reactie #3 Gepost op: 2012/02/25, 20:25:37 »
Inmiddels toch het Python script aangepast en gebruikt, ik wist niet dat het kon maar doormiddelvan ${exec python ~/.scripts/testtijd.py} kan ik mijn bestand testtijd.py aanroepen vanuit het bestand .conkyrc

Nu de volgende vraag mbt Python (dus geen Lua meer voorlopig)
Ik heb een voorwaarde wanneer iets getoond moet worden (print) alleen lukt het me niet om deze voorwaarde uit te breiden met groter dan kleiner dan tekens...

Hier het Conky configuratiebestand:
Code: (.conkyrc) [Selecteer]
#!/usr/bin/conky -d -c
## .conkyrc configuration
alignment bottom_left
background yes
#border_margin 20
border_width 1
color0 555555
color1 FCAF3E
color2 2a2a2a
color3 a82553
color4 5e1014
color5 64574e
color6 2a2a2a
color7 8888CC
color8 9d9c61
color9 525276
cpu_avg_samples 2
default_color ffffff
default_outline_color 000000 # Black
default_shade_color 000000 # Black
double_buffer yes
draw_borders no
draw_graph_borders no
draw_outline no
draw_shades no
gap_x 40
gap_y 30
max_specials 1024
max_user_text 10000
maximum_width 1000
minimum_size 1000
net_avg_samples 2
no_buffers yes
override_utf8_locale yes
own_window yes
own_window_colour 000000 # Black
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_transparent yes
own_window_type normal l
pad_percents 2
short_units yes
stippled_borders 7
text_buffer_size 8000
total_run_times 0
update_interval 1.0
uppercase no
use_spacer right
use_xft yes
xftalpha 1
xftfont Freesans:pixelsize=9

TEXT

${font Zegoe Light - U:pixelsize=32}${exec python ~/.scripts/testtijd.py}${font}
${font Zegoe Light - U:pixelsize=20} ${time %A} - ${time  %d %B, %Y}${font}

en het Python script:
Code: (testtijd.py) [Selecteer]
#!/usr/bin/python
# testtijd.py (Dutch)
import time
from time import strftime

Hours = int(time.strftime('%I'))
minute = int(time.strftime('%M'))

TextHours = [' een', ' twee', ' drie', ' vier', ' vijf', ' zes', ' zeven', ' acht', ' negen', ' tien', ' elf', ' twaalf']
TextHour = TextHours[Hours-1]

TextMins = [' vijf over', ' tien over', ' kwart over', ' tien voor half', ' vijf voor half', ' half', ' vijf over half', ' tien over half', ' kwart voor', ' tien voor', ' vijf voor']
TextMin = TextMins[int(minute / 5 -1)]

if minute == 00:
print ("Het is") + TextHour + (" uur")
elif minute < 5 > 00 :
print ("Het is") + TextHour + (" uur geweest")
elif minute > 5 < 19:        
print ("Het is") + TextMin + (TextHour)
elif minute > 19 < 59:        
print ("Het is") + TextMin + (TextHours[Hours])

Nu is mijn probleem dat ik uitgebreidere voorwaarde wil stellen wanneer de 19 minuten worden overschreden, zodat er bij de uurs aanduiding 1 wordt opgeteld >> 8:20 = acht uur twintig = tien voor half negen

Dit lukt mij niet met bovenstaande probeersels, misschien kan iemand mij (bij dit meer specifiekere probleem) verder helpen?
Alvast bedankt voor het meedenken!
« Laatst bewerkt op: 2012/02/25, 20:27:46 door tabasco »

Offline MKe

  • Lid
Re: hulp bij Python script voor Conky
« Reactie #4 Gepost op: 2012/02/25, 21:45:30 »
Dan kun je toch gewoon een voorwaarde erin zetten dat als minute groter is dan 19, dat hij dan TextHour = TextHours[Hours] doet i.p.v. TextHours[Hours-1]?
Werkt dit?

Code: (testtijd.py) [Selecteer]
#!/usr/bin/python
# testtijd.py (Dutch)
import time
from time import strftime

Hours = int(time.strftime('%I'))
minute = int(time.strftime('%M'))

TextHours = [' een', ' twee', ' drie', ' vier', ' vijf', ' zes', ' zeven', ' acht', ' negen', ' tien', ' elf', ' twaalf', ' een']

if minute>19:
    TextHour = TextHours[Hours]
else:
    TextHour = TextHours[Hours-1]

TextMins = [' vijf over', ' tien over', ' kwart over', ' tien voor half', ' vijf voor half', ' half', ' vijf over half', ' tien over half', ' kwart voor', ' tien voor', ' vijf voor']
TextMin = TextMins[int(minute / 5 -1)]

if minute == 00:
print ("Het is") + TextHour + (" uur")
elif minute < 5 > 00 :
print ("Het is") + TextHour + (" uur geweest")
elif minute > 5 < 19:        
print ("Het is") + TextMin + (TextHour)
elif minute > 19 < 59:        
print ("Het is") + TextMin + (TextHours[Hours])

edit:

nog een wijziging, je moet nog weer "een" toevoegen bij Hours, anders kom je in de problemen bij 12 uur:
TextHours = [' een', ' twee', ' drie', ' vier', ' vijf', ' zes', ' zeven', ' acht', ' negen', ' tien', ' elf', ' twaalf', 'een']
« Laatst bewerkt op: 2012/02/25, 22:03:06 door MKe »
Mijn blokkendoos blog: http://mke21.wordpress.com/

Offline tabasco

  • Lid
Re: hulp bij Lua script voor Conky
« Reactie #5 Gepost op: 2012/02/25, 21:53:07 »
Bedankt voor je reactie,
Dit werkt inderdaad , ik moet nog even mijn klok aanpassen om alle momenten te controleren.
Ik heb hetgeen wat ik nu heb bij elkaar ge-jat en ge-plakt... Ik ben geen ervaren programmeur, het is een beetje proberen zegmaar.

Waar ik nu niet uitkom zijn die meerdere voorwaarden achter elkaar plaatsen, daar ken ik geen goede syntaxis van en ook het groterdan > en kleinerdan < in een opdracht samen plaatsen... om uiteindelijk voorvoegsels e.d. toe te kunnen voegen.

Maar ik kan weer even vooruit denk ik....
« Laatst bewerkt op: 2012/02/25, 22:00:26 door tabasco »

Offline MKe

  • Lid
Re: hulp bij Lua script voor Conky
« Reactie #6 Gepost op: 2012/02/25, 21:55:25 »
Heb nog een wijziging doorgevoerd, omdat je anders in de problemen komt na 12:19u.

Is het nu zoals je wilt?

Offline tabasco

  • Lid
Re: hulp bij Lua script voor Conky
« Reactie #7 Gepost op: 2012/02/25, 22:01:29 »
Super! die had ik inderdaad nog niet gezien...

Re: hulp bij Lua script voor Conky
« Reactie #8 Gepost op: 2012/02/25, 22:37:24 »
Volgens mij kan je voldoen met:

Code: (testtijd.py) [Selecteer]
#!/usr/bin/python
# testtijd.py (Dutch)
import time

Hours = int(time.strftime('%I'))
minute = int(time.strftime('%M'))

Je roept strfime namelijk nooit 'los' aan. En het scheelt een (zinloze) import. :)

Offline tabasco

  • Lid
Re: hulp bij Lua script voor Conky
« Reactie #9 Gepost op: 2012/02/25, 23:11:25 »
okee dus de 4e regel weglaten...
Code: (regel 4) [Selecteer]
from time import strftime

Re: hulp bij Lua script voor Conky
« Reactie #10 Gepost op: 2012/02/26, 01:34:49 »
In Python is het gebruikelijk dat klassen met hoofdletters beginnen, lokale variabelen of attributen worden ofwel in camelCase of klein_met_underscore geschreven. Stijltipje.

In het volgende blok klopt er vanalles niet:
if minute == 00:
print ("Het is") + TextHour + (" uur")
elif minute < 5 > 00 :
print ("Het is") + TextHour + (" uur geweest")
elif minute > 5 < 19:       
print ("Het is") + TextMin + (TextHour)
elif minute > 19 < 59:       
print ("Het is") + TextMin + (TextHours[Hours])

In elke elif-blok is de tweede voorwaarde altijd waar en is dus overbodig. Voorbeeld:
elif minute < 5 > 00 :Word gezien als: als minute is kleiner dan 5 en 5 is groter dan 0
Volgens mij wilt ge: als minute is kleiner dan 5 en minute is groter dan 0
Dat kan op 2 manieren:
elif 0 < minute < 5:
# Of, misschien duidelijker, maar langer:
elif minute > 0 and minute < 5:
Bij de andere 2 elif-blokken hetzelfde.

00 is trouwens hetzelfde als 0. En de haakjes bij de prints hoeven niet.