smsutil - encode, decode and split SMS
Simple set of utility functions for encoding, decoding and splitting sms messages. Shift tables is currently not supported.
Features
- Codecs for encoding and decoding GSM 03.38
- Message splitting for both
UCS2/UTF-16
andGSM 03.38
Installation
To install smsutil
:
$ pip install smsutil
Basic Usage
Example for encoding and decoding:
import smsutil
smsutil.is_valid_gsm('nobita and doraemon') # True
smsutil.is_valid_gsm('π') # False
gsm = smsutil.encode('the quick brown fox jumps over the lazy dog {@}')
# b'the quick brown fox jumps over the lazy dog \x1b(\x00\x1b)'
smsutil.decode(gsm) # encoding='gsm0338'
# 'the quick brown fox jumps over the lazy dog {@}'
utf16 = smsutil.encode('ζι«γ§γγ π')
# b'g\x00\x9a\xd80g0W0_\x00 \xd8<\xdfT'
smsutil.decode(utf16, encoding='utf_16_be') # should specify encoding
# 'ζι«γ§γγ π'
sms = smsutil.split('[the quick brown fox]')
len(sms.parts) # 1
sms.encoding # 'gsm0338'
sms.parts[0].content # '[the quick brown fox]'
sms.parts[0].length # 21
sms.parts[0].bytes # 23
sms = smsutil.split('ζι«γ§γγ π')
len(sms.parts) # 1
sms.encoding # 'utf_16_be'
sms.parts[0].content # 'ζι«γ§γγ π'
sms.parts[0].length # 7
sms.parts[0].bytes # 16
smsutil is just using python's builtin codecs for UCS2/UTF-16.
Contributing
- Fork repository.
- Create a pull request.
-
β¨ π° β¨