git clone https://github.com/WuGomezCode/TextNow-API.git
pip install PyTextNow
Note: If there is an unexplained error with the pip install, try adding the --user flag to it.
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
client.send_sms("number", "Hello World!")
file_path = "./img.jpeg"
client.send_mms("number", file_path)
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)
messages = client.get_messages() -> MessageContainer list
# Same as above
sent_messages = client.get_sent_messages() -> MessageContainer list
#Same as above
filtered = client.get_messages().get(number="number")
# 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()
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)
csrf_token
header is automatically fetchedClient
it will overide the stored cookie.client.auth_reset()
TNAPI
to pytextnow
#Pre 1.1.0
import TNAPI as tn
# Now
import pytextnow as pytn
Client
has new function client.wait_for_response(number, timeout=True)
. Documentation on how to use it aboveMessage
has same function but the number argument is set to the number who sent the message. client.Message.wait_for_response(timeout=True)
MessageContainer
that acts as a list with some added functions and __str__()
MessageContainer
has method get
which will return a MessageContainer
that filtered through all messagesComplete overhaul of the way this module works.
client.get_new_messages()
is now deprecated and no longer in use. Instead of that use the new method client.get_unread_messages()
which will return all unread messages. It will return the same thing each time unless you mark the messages as read with Message.mark_as_read()
Message
and MultiMediaMessage
class have a new mark_as_read()
method to mark the message as read. mark_as_read()
will make a POST to the textnow.com server.
client.get_messages()
now returns a list of Message
or MultiMediaMessage
classes. For the old function which returned the raw dict use client.get_raw_messages()
client.get_sent_messages()
is a new method that gets all messages you have sent
client.get_received_messages()
is a new method that gets all messages you have received regardless of whether or not it has been read.
client.get_read_messages()
is a new method that returns all messages that have been read by you.
__file__
not absolute.
Used os.path.abspathClient = TNAPI.Client
in __init__.pyPull 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.