Jump to content
Nokioteca Forum

[python] sms Counter


ghost90
 Share

Recommended Posts

Salve,oggi ho iniziato un programma che ,partendo dalla data di sistema,calcola quanti messaggi sono stati inviati in tutta la giornata e,avendo settato un limite,ci dice quanti ne mancano al raggiungimento del suddetto.

Ho scelto il python perchè dovrebbe essere + facile ma è la prima volta che ho a che fare con il python.

VI posto il codice che ho realizzato fino ad ora..

Qualcuno mi aiuta a pulirlo(ci sono imports non necessari),correggerlo(mi da un errore sulla linea 35)e a completare il programma?

#!/usr/bin/python
# Sms Counter
# Copyright (c) 2008 Stefano Tenuta

# Importiamo i moduli necessari al programma

import appuifw
import messaging
import re
from datetime import *
import os 
import os.path
import time
import inbox
from time import ctime

# Definiamo il titolo del programma

Appuifw.app.title = u'Sms Counter'

# Dichiariamo le variabili del programma

inb = inbox.Inbox()
sms = inb.sms_messages()
num = 0
data = ctime()

# limite = appuifw.query(u”Limite Sms: “,”number”)

limite = 101

# Iniziamo il programma

for msg in msgs:
time = inb.time(msg)
while time = data:
sent = num + sms
appuifw.note(u'Hai inviato ',sent,' sms',”info”)
restanti = limite - sent
appuifw.note(u'Ti restano ',restanti,' sms',”info”)

Link to comment
Condividi su altri siti

  • Risposte 77
  • Created
  • Ultima Risposta

Top Posters In This Topic

Credo che dia errore alla linea 35... time non è definito!!

Quindi nel ciclo while alla fine (o dove vuoi, nel ciclo while xò))metti:time = ctime() e prima del ciclo e tt metti time=data, cosi che il cilo parta e rimanga attivo fino al prossimo giorno. Poi devi mettere un piccolo sleep alla fine del ciclo while altrimenti povero cellulare e tt si intaserebbe: import e32 e32.ao_sleep(1) #1 secondo di dormita

EDIT: scusa nn avevo visto, time lo definisci già!

Modificato da memoryn70
Link to comment
Condividi su altri siti

Quindi l'errore a cosa potrebbe essere dovuto?

Poi mi dici quali imports posso eliminare e se la "logica" del programma è giusta?

for msg in msgs: ?

cos'è msgs, nn è dikiarato!... al max

for msg in sms:

while time = data: ?

al massimo == data

inoltre, lì nn ti serve il while.. ma l'if

devi verificare una condizione.. nn è un ciclo quello che ti serve,

quindi if time==data:

inoltre

sent = num + sms ? sms in quell'ambito è un array! (sms = inb.sms_messages())

lì sent deve aumentare di 1, è un contatore!

devi mettere sent=sent+1

e fuori anzichè num=0 metti sent=0

x il resto nn ho notato altro

Modificato da dokkis
Link to comment
Condividi su altri siti

Ho aggiustato come mi hai suggerito tu dokkis ma ricevo questo errore :

"IndentationError: expected an indented block (sms_count_final.py, line 35)"

Ho visto ora l'altro suggerimento,modifico e faccio sapere

Ma per contare gli sms se uso while time == data

sent non dovrebbe aumentare di 1 ogni volta che la condizione time == data si verifica?

Perchè se non sbaglio l'if viene eseguita 1 volta sola

Modificato da ghost90
Link to comment
Condividi su altri siti

Ho aggiustato come mi hai suggerito tu dokkis ma ricevo questo errore :

"IndentationError: expected an indented block (sms_count_final.py, line 35)"

Ho visto ora l'altro suggerimento,modifico e faccio sapere

eh ci sono errori di indentazione... se riesci posta il codice sotto forma di un allegato txt... xkè sul forum si tolgono gli spazi delle indentature!!! (oppure usa il tag codebox anzichè code)

Link to comment
Condividi su altri siti

cos'è l'indentazione? lol è essenziale per python... xD

guarda ti ho ripostato il programma corretto utilizzando 1 algoritmo ottimale

in pratica nn scorre tutti i msg (ci metterebbe trpp, nel mio caso erano tipo 500 e ci metteva 20 secondi circa)

ma scorre i msg dal + recente, al meno recente.. in pratica se il giorno è lo stesso del giorno attuale, incrementa sent di 1, altrimenti ferma il ciclo (xkè + va avanti con il ciclo e + i messaggi sono meno recenti!)

te lo allego sotto! ciao b)

sms.txt

Link to comment
Condividi su altri siti

Grazie,potevi togliere il mio copyright visto che hai fatto tu b)

sai,ho iniziato questa mattina a programmare in python,ho sempre avuto a che fare solo con il php

Link to comment
Condividi su altri siti

Grazie,potevi togliere il mio copyright visto che hai fatto tu b)

sai,ho iniziato questa mattina a programmare in python,ho sempre avuto a che fare solo con il php

asd

vbbè nn mi interessava era per aggiustarti lo script xD

all'inizio credevo andasse bene come logica poi andandolo a provare ho dovuto sostituire il codice con una logica più efficiente b)

ed ora dovrebbe funzionare abbastanza bene.. l'hai provato no?

Link to comment
Condividi su altri siti

Lo sto mettendo come pacchetto SIS perchè se funziona lo tengo..

Già che ci sei puoi aiutarmi ad aggiungere 2 altre features che avevo in mente?

Volevo mettere 1 menù iniziale con il quale scegliere quale promo si usa e poi tenere il programma in background in modo tale da farlo apparire con un avviso quando mancano 10 sms al termine di quelli gratuiti.

Per la prima feature avevo pensato a qualcosa di simile

promo=[u’Promo1’,u’Promo2’,u’Promo3’,u’Promo4’]
promo_in_uso=appuifw.selection_list(choices=promo,search_field=1)
if promo_in_uso == Promo1:
limite = 101
if promo_in_uso == Promo2:
limite = 50

ecc

Potrebbe funzionare?

Link to comment
Condividi su altri siti

  • 2 settimane dopo...
Ho provato il programma per un poco e ho notato che inizia a contare gli sms partendo dal terzo inviato durante la giornata

dal terzo messaggio inviato? o.O strano a me non risulta...

cmq sia se avessi tempo a disposizione ti aiuterei pure a fare sto programma.. ma già non ho tempo di portare avanti miei programmi, figurati di impegnarmi nello sviluppo di altri b) mi spiace xD

ciao

PS: cmq puoi tentare di continuare il prg da solo e postare sempre qui i tuoi problemi...

Link to comment
Condividi su altri siti

Anche io avevo in mente da tempo di creare un programma che mi contasse gli sms ricevuti ma non avevo mai tempo per poterlo realizzare.Finchè una settimana fa mi sono letto tutta la guida introduttiva al Python e ho provato a realizzarlo. Il programma funziona e mi conta tutti gli sms inviati. Ho tenuto conto anche dei messaggi più lunghi di 160 caratteri che vengono inviati in + parti. E qui è nato il mio problema. Infatti il Python non gestisce messaggi con più di 256 caratteri. Cioè mi spiego meglio. Se io invio un messaggio di 300 caratteri e poi chimo il metodo len(inb.content(id_sms)) avrò come risultato sempre 256! E non so davvero come risolvere il problema!!! Però ho notato che se non invio messaggi più lunghi di 256 caratteri i messaggi inviati vengono contati correttamente ! ;)

Intanto vi posto il codice che ho realizzato e aspetto vostri consigli, suggerimenti e anche critiche b)b)SmsCount.txt

Link to comment
Condividi su altri siti

  • 2 settimane dopo...

Ho provato a far girare entrambi e devo dire che sono ottimi, erano settimane che cercavo sul web un programmino che mi dicesse gli sms restanti della giornata. Una cosa mi interesserebbe sapere: è possibile far si che la scritta con i messaggi restanti rimanga sempre fissa sulla schermata iniziale?

Cerco di spiegarmi meglio, preciso anche che non sono ancora riuscito a trasformare i file in sis per installarli nel cell ma ho solo fatto girare gli script, a me interesserebbe riuscire ad avere sulla schermata principale del cellulare, come plug-in, la scritta con gli sms che ho ancora a disposizione e che si aggiorni automaticamente.

OT: la stessa cosa sarebbe possibile con le chiamate? Io ho a disposizione un'ora di chiamate al giorno e mi sarebbe molto comodo che a schermo mi comparisse quanti minuti mi mancano.

Grazie.

Link to comment
Condividi su altri siti

Per la chiamate penso sia + difficile...

Il prog di Simon funziona,ora dovresti cercare di mandarlo in background e far si che quando mancano 1 tot di sms appare un avviso...

Link to comment
Condividi su altri siti

Per la chiamate penso sia + difficile...

Il prog di Simon funziona,ora dovresti cercare di mandarlo in background e far si che quando mancano 1 tot di sms appare un avviso...

Per le chiamate non so dovrei informarmi e leggere meglio la guida del Python per sapere se la cosa sia realizzaile (ho iniziato da poco b) )

Per quanto riguarda l'avviso già ci avevo pensato infatti come ho un attimo di tempo riguarderò il codice e aggiungerò questa possibilità..b) Magari aggiungerò anche un opzione dove l'utente potrà scegliere quanti sms prima del raggiungimento della soglia dovrà essere avvertito..che ne dite? ;)

Link to comment
Condividi su altri siti

Io avevo pensato di mettere una lista alla prima apertura del programma con la quale si sceglieva la promozione in uso e quindi il relativo limite e poi magari aggiungere alla lista la possibilità di mettere un valore personalizzato..non dovrebbe essere difficile solo che non saprei come far ricordare al programma la scelta effettuata quindi lascio fare a chi se ne intende

Link to comment
Condividi su altri siti

Io avevo pensato di mettere una lista alla prima apertura del programma con la quale si sceglieva la promozione in uso e quindi il relativo limite e poi magari aggiungere alla lista la possibilità di mettere un valore personalizzato..non dovrebbe essere difficile solo che non saprei come far ricordare al programma la scelta effettuata quindi lascio fare a chi se ne intende

Si infatti avevo pensato anche a questo...Solo che ultimamente non ho poi così tanto tempo da dedicare alla programmazione con gli esami imminenti che mi aspettano all'università! :( Riprenderò appena passato questo periodo di "fuoco" ;) Allo tempo stesso però sono felice di ascoltare vostri consigli per migliorare il programma! b)b)

Link to comment
Condividi su altri siti

scusate, posso chiedere una cosa, anche se forse è OT?

come si usa python (o cmq dove ne trovo le istruzioni complete, facili e in italiano)? l'idea di potermi creare un SMS counter o un counter per le chiamate esattamente con le feature che desidero mi ispira moltissimo, visto che il counter di messaggi nel mio 6234 c'è di default, ma non nel 6680 e nell'E51 che posseggo... b) visto che vado avanti a promozioni, mi piacerebbe assai potermi creare i programmini che vogli in formato .sis o .sisx :-)

Link to comment
Condividi su altri siti

scusate, posso chiedere una cosa, anche se forse è OT?

come si usa python (o cmq dove ne trovo le istruzioni complete, facili e in italiano)? l'idea di potermi creare un SMS counter o un counter per le chiamate esattamente con le feature che desidero mi ispira moltissimo, visto che il counter di messaggi nel mio 6234 c'è di default, ma non nel 6680 e nell'E51 che posseggo... b) visto che vado avanti a promozioni, mi piacerebbe assai potermi creare i programmini che vogli in formato .sis o .sisx :-)

python non si "usa" b) è un linguaggio di programmazione non un programma, comunque guarda in rilievo in questa sezione.

Link to comment
Condividi su altri siti

Please sign in to comment

You will be able to leave a comment after signing in



Accedi Ora
 Share


×
×
  • Crea Nuovo...

Informazione Importante

Questo sito utilizza i cookie per analisi, contenuti personalizzati e pubblicità. Continuando la navigazione, accetti l'utilizzo dei cookie da parte nostra | Privacy Policy