Hente forbruk for LUDO Mobil Terningkast 6 (OPPDATERT)
Jeg liker å vite hvor mye jeg bruker telefonen for til en hver tid. For et par måneder siden gikk jeg over til LUDO Mobil. Siden jeg ikke er av dem som bruker mobilen mest, gikk jeg for abonnementet Terningkast 6. Her får man 185kr "ringerabatt" per måned. Sidene til LUDO ga meg en ganske god oversikt over forbuket mitt, men sålenge jeg holdt meg under ringerabatten på sto det alltid 0kr på forbruksoversikten. Med andre ord visste jeg aldri helt hvor mye av jeg hadde brukt telefonen for.
For å løse dette problemet, og for å gi meg selv en litt bedre oversikt, lagde jeg LUDO.py. Dette er et Python-skript som logger seg inn, henter ut forbruk, og regner ut hvor mye av ringerabatten man har brukt. Jeg tok utgangspunkt i at rabatten var 185kr, og prisene LUDO oppga på sidene sine.
Når man kjører programmet får man opp en infoboble som viser forbruk, og hvor mye som er igjen av rabatten. Programmet er bare testet i Ubuntu, men det skal ikke mye til for å få det til å kjøre i andre Linux-distribusjoner heller. Når det gjelder Windows, er jeg litt mer usikker, da jeg ikke bruker Windows selv.
OPPDATERT 26.11.09: Fikset en feil som gjorde at skriptet ikke ville regne ut kostnader på samtaler over 1 minutt.
#!/usr/bin/python
import re
import os
try:
import pynotify
except:
print 'Klarte ikke laste "pynotify". Installer med "sudo apt-get install pynotify" (Ubuntu).'
try:
from mechanize import Browser
except:
print 'Klarte ikke laste "mechanize". Installer med "sudo apt-get install python-mechanize" (Ubuntu).'
try:
home = os.getenv("HOME")
lFile = open(home+'/.LUDO', 'r').read()
lFile = lFile.split('\n')
TELEFON = lFile[0]
PASSORD = lFile[1]
print '\n Henter forbruk...\n'
except:
print '\n Innloggingsfilen eksisterer ikke, logg inn her:'
TELEFON = raw_input(' Telefonnummer: ')
PASSORD = raw_input(' Passord: ')
lFile = open(home+'/.LUDO', 'w')
lFile.write(TELEFON+'\n'+PASSORD)
lFile.close()
print '\n Filen er lagret.'
COST = 0.0
RABATT = 185
br = Browser()
br.open('https://ludomobil.no/min.side/login.aspx')
br.select_form(name='aspnetForm')
br['ctl00$contentContainer$d299$Username'] = TELEFON
br['ctl00$contentContainer$d299$Password'] = PASSORD
br.submit()
br.select_form(name='aspnetForm')
forbruk = br.submit(name='ctl00$contentContainer$d289$SubscriptionViewerPostpaid$ctrl0$MyUsageButton')
forbruk = forbruk.read()
forbruk = forbruk.split('Mitt forbruk')[1].split('')[0].split('')[1]
forbruk = ''.join(forbruk.splitlines()).replace(' ', '').replace('\t', '')
pattern = re.compile(' ([0-9.: ]+) ([A-Za-z0-9()., ]+) ([A-Za-z0-9()., ]+) ([A-Za-z0-9()., ]+) ([A-Za-z0-9()., ]+)')
fListe = pattern.findall(forbruk)
fListe.reverse()
mnd = fListe[0][0][3:5]
for f in fListe:
if f[0][3:5] == mnd:
if f[1] == 'Tekstmelding(SMS)':
COST += 0.39
elif f[3][1]:
if 'kb' in f[3]:
# Datatrafikk:
kb = int(f[3].replace('kb', ''))
COST += kb/1024.0*4.0
else:
# Ringing:
if 'm' in f[3]:
tidSplit = f[3].split('m')
mins = tidSplit[0]
mins = int(mins)*0.79
sek = tidSplit[1]
else:
mins = 0.0
sek = f[3]
sek = int(sek.replace('s', ''))
sek = sek/60.0*0.79
total = mins+sek+0.59
COST += total
COST = round(COST, 2)
RABATT = RABATT-COST
cLen = len(str(COST))
rLen = len(str(RABATT))
COST = ' '*rLen+str(COST)
RABATT = ' '*cLen+str(RABATT)
try:
if pynotify.init('LUDO Mobil'):
n = pynotify.Notification('LUDO Mobil', 'Forbruk: '+COST+' kr\nRabatt igjen:'+RABATT+' kr')
n.show()
else:
print "Error!"
except:
print "ERROR!"
06. Nov, 2009 kl. 23:50
Hei, dette er akkurat det programmet jeg trenger, men jeg lurer på hvordan jeg kan bruke det i Windows? Hvis det las seg gjøre, kan du sende meg en mail om hvordan jeg kan få til dette? Mvh Markus