leogomezz4t / PyTextNow_API

Python texting API utilizing TextNow API
MIT License
69 stars 42 forks source link

TextNow API

TNAPI is a python module that uses TextNow to enable free programmable texting

THIS PROJECT IS NO LONGER BEING MAINTAINED

Credit

Installation

Method One: Using git clone

git clone https://github.com/WuGomezCode/TextNow-API.git

Method Two: Using pip

pip install PyTextNow

Note: If there is an unexplained error with the pip install, try adding the --user flag to it.

Usage

How to get the cookie

How to get the cookie

How to get your username

How to get TextNow username

Ways to authenticate

import pytextnow

# Way 1. Include connect.sid and csrf cookie in the constructor
client = pytextnow.Client("username", sid_cookie="sid", csrf_cookie="csrf").

# Way 2. Just instantiate and a prompt will appear on the command line

# Way 3. If you inputed the wrong cookie and are getting RequestFailed. This is how to reset it
client.auth_reset()
# will redo the prompt

How to send an sms message

client.send_sms("number", "Hello World!")

How to send an mms message

file_path = "./img.jpeg"
client.send_mms("number", file_path)

How to get new messages

new_messages = client.get_unread_messages() -> MessageContainer list
for message in new_messages:
    message.mark_as_read()
    print(message)
    # Class Message | Class MultiMediaMessage
    # Message
    # content: "body of sms"
    # number: "number of sender"
    # date: datetime object of when the message was received
    # read: bool
    # id: int
    # direction: SENT_MESSAGE_TYPE or RECEIVED_MESSAGE_TYPE
    # first_contact: bool if its the first time that number texted you
    # type: MESSAGE_TYPE if class is Message and MULTIMEDIAMESSAGE_TYPE if class is MultiMediaMessage

    # Functions
    # mark_as_read() will post the server as read
    # send_sms() will send an sms to the number who sent the message
    # send_mms() will send an mms to the number who sent the message

    # MultiMediaMessage
    # All the attributes of Message
    # content: url of media
    # raw_data: bytes of the media
    # content_type: str the MIME type ie. "image/jpeg" or "video/mp4"
    # extension: str of the file extension is. "jpeg" or "mp4"
    # Functions
    # mv(file_path): downloads the file to file_path

    print(message.number)
    print(message.content)

    # MultiMediaMessage

    print(message.content_type)
    message.mv("./image." + message.extension)

How to get all messages

messages = client.get_messages() -> MessageContainer list
# Same as above

How to get all sent messages

sent_messages = client.get_sent_messages() -> MessageContainer list
#Same as above

How to filter messages

filtered = client.get_messages().get(number="number")

How to synchronously block until a response

# This will wait for a response from someone and return the Message

msg = client.wait_for_response("number")

# This function will work with a message object too

unreads = client.get_unread_messages()
for unread in unreads:
    msg = unread.wait_for_response()

NEW Simple bot snippet

import pytextnow as pytn

client = pytn.Client("username", sid_cookie="connect.sid", csrf_token="_csrf")

@client.on("message")
def handler(msg):
    print(msg)
    if msg.type == pytn.MESSAGE_TYPE:
        if msg.content == "ping":
            msg.send_sms("pong")
        else:
            msg.mv("test" + msg.extension)

Custom Module Exceptions

FailedRequest:

This API runs on web requests and if the request fails this Exception will be raised

AuthError:

During an auth reset if a cookie is not passed and there is no stored cookie in the file it will raise this error.

Patch Notes

1.2.1

1.2.0

1.1.9

1.1.8

1.1.7

1.1.6

1.1.5

1.1.4

1.1.3

1.1.2

1.1.1

1.1.0

1.0.3

1.0.2

1.0.1

1.0.0

0.9.8

0.9.7

0.9.6

0.9.5

0.9.4

0.9.3

0.9.2

0.9.1

0.9.0

0.8.0

0.7.0

0.5.0

0.4.0

0.3.0

0.2.0

0.1.0

Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

Please make sure to update tests as appropriate.

License

MIT