tescomobile

Unofficial client for the Tesco Mobile account usage API


Keywords
tesco, tescomobile, api-client, mobile
License
WTFPL
Install
pip install tescomobile==0.1.0

Documentation

py-tescomobile

A Python library and command line tool for checking your remaining unit allowances (eg minutes, texts, data).

The user is authorised by sending an SMS to the given phone number containing a pin, the pin is then exchanged for an auth token used to authenticate all further requests. Auth tokens do not appear to expire and you can have multiple active tokens. A method is provided for invalidating tokens.

API

The TescoMobile class provides the following methods:

Method Action
__init__(phone_number, token, user_agent) Constructor. Only requires the phone number.
send_pin_sms() Send an auth pin to the user via SMS.
token_pin_exchange(pin) Exchange the pin for an auth token for future requests.
get_usage() Get used and total values for allowances, billing data etc.
get_invoices() Get a list of invoices for the account.
logout() Invalidate the auth token.

Example:

>>> from tescomobile import TescoMobile
>>> t = TescoMobile('07XXXXXXXXX')
>>> x = t.send_pin_sms()
>>> x = t.token_pin_exchange(YYYYY)
>>> x['token']
'ZZZZZZZZ-ZZZZ-ZZZZ-ZZZZ-ZZZZZZZZZZZZ'
>>> x = t.get_usage()
>>> x['allowances'][0]
{'allowanceType': 'MIN', 'totalAllowance': 750.0, 'startDate': 1489449600000, 'unlimited': 'NO', 'totalUsed': 32.0, 'totalRemaining': 718.0}

CLi

The CLi app calls the get_usage method and formats the output.

Tesco Mobile - 07XXX XXXXXX - £XX.00 Usage Contract (XX Months)
Bill cycle started      09/12/2017
Bill cycle ends         09/01/2018
Bill cycle                   18/31 [======================                ]  58%
Minutes                   113/2000 [==                                    ]   5%
Texts                      88/5000 [                                      ]   1%
Data                     2022/4096 [==================                    ]  49%
Safety buffer          £0.00/£2.50 [                                      ]   0%

The phone number and auth token are read from the TESCO_PHONENUMBER and TESCO_TOKEN env variables, read by dotenv. The script wil call send_pin_sms and token_pin_exchange if these are not set.