Metadata-Version: 2.1
Name: smsutil
Version: 1.1.3
Summary: encode, decode and split SMS.
Home-page: https://github.com/jezeniel/smsutil
Author: Jezeniel Zapanta
Author-email: jezeniel.zapanta@gmail.com
License: MIT
Keywords: sms utils utilities smsutil short message service
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Telecommunications Industry
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Topic :: Software Development :: Libraries
Requires-Dist: future (>=0.16.0)

smsutil - encode, decode and split SMS
======================================
.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg
   :target: https://saythanks.io/to/jezeniel

.. image:: https://img.shields.io/pypi/pyversions/smsutil
   :target: https://pypi.org/project/smsutil/

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 <https://en.wikipedia.org/wiki/GSM_03.38>`_
- Message splitting for both ``UCS2/UTF-16`` and ``GSM 03.38``


Installation
------------

To install ``smsutil``:

.. code-block:: bash

  $ pip install smsutil


Basic Usage
-----------

Example for encoding and decoding:

.. code-block:: python

  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
------------

1. Fork repository.
2. Create a pull request.
3. ✨🍰✨


