Metadata-Version: 2.1
Name: py-iMessage
Version: 1.2
Summary: Support for sending/receiving iMessages
Home-page: https://github.com/rolstenhouse/py-imessage
Author: Rob Olsthoorn
Author-email: rolsthoorn12@gmail.com
License: MIT
Platform: any
Classifier: Environment :: Web Environment
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Dist: MarkupSafe (==1.1.1)
Requires-Dist: pytz (==2019.3)

===========
py-imessage
===========
|License|

py-imessage is a library to send iMessages from your computer. It was originally used to build an API for iMessages; however, Apple doesn't support third-parties using iMessage over a few hundred marketing messages per day. 

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

Run the following commands on the terminal

.. code:: bash

    pip install py-imessage

    # Disable system integrity protection in order to allow access to chat.db
    csrutil disable

------------
Sample Usage
------------

.. code:: python

    from py_imessage import imessage

    phone = "1234567890"

    if not imessage.check_compatibility(phone):
        print("Not an iPhone")

    guid = imessage.send(phone, "Hello World!")

    # Let the recipient read the message
    sleep(5)
    resp = imessage.status(guid)

    print(f'Message was read at {resp.get("date_read")}')

-------------
Documentation
-------------

Sending a message
-----------------
Send a message to a new or an existing contact! 

**.send(phone, message)** 
~~~~~~~~~~~~~~~~~~~~~~~~~

*Args*

**Phone** | ten-digit phone number of string type format XXXXXXXXXXX i.e. "1234567890"

*Response*

**Message** | The message you plan to send. i.e. "Hi!"

.. list-table:: Returns a **string**, the GUID 
    :header-rows: 1

    * - Type
      - Description
    * - string
      - GUID unique to the message (used for checking on status)

Message status
--------------

Check whether a message you sent has been delivered and read (if read receipts turned on). 

**.status(guid)**
~~~~~~~~~~~~~~~~~

*Args*

**Guid** | guid returned from sending a message

*Response*

.. list-table:: Returns a **dict**, with following fields
    :header-rows: 1

    * - Field 
      - Type
      - Description
      - Sample
    * - **guid**
      - string
      - guid that was passed in to the function
      - "3A146100-D269-4F35-BDB4-EB2FF7DBDF0F"
    * - **date_submitted**
      - datetime
      - date message was submitted
      - "Sun, 12 Apr 2020 05:46:48 GMT"
    * - **date_delivered**
      - datetime
      - date message was delivered to recipient's phone
      - "Sun, 12 Apr 2020 05:46:49 GMT"
    * - **date_read**
      - datetime
      - date message was read on recipient's phone
      - "Sun, 12 Apr 2020 05:47:38 GMT"


Checking iMessage compatibility
-------------------------------

Check whether a phone number is registered to an iPhone or an Android device. NOTE: This method is exceptionally slow, so you should cache the response. 

**.check_compatibility(phone)**
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

*Args*

**Phone** | ten-digit phone number of string type format XXXXXXXXXXX i.e. "1234567890"

*Response*

.. list-table:: Returns a **boolean**, compatibility 
    :header-rows: 1

    * - Type
      - Description
    * - boolean
      - Whether number supports receiving iMessages


Contributing
------------
Please create an issue. Or feel free to add a PR!

.. |License| image:: http://img.shields.io/:license-mit-blue.svg
   :target: https://pypi.python.org/pypi/Flask-Cors/

