Exemplo n.º 1
0
 def __repr__(self):
     readable = {
         'call_log': {
             'miss': "Missed Call",
         },
         'e2e_notification': {
             'encrypt': "Messages now Encrypted"
         },
         'gp2': {
             'invite': "Joined an invite link",
             'create': "Created group",
             'add': "Added to group",
             'remove': "Removed from group",
             'leave': "Left the group"
         }
     }
     sender = "" if not self.sender else (
         "from " + str(safe_str(self.sender.get_safe_name())))
     return "<NotificationMessage - {type} {recip} {sender} at {timestamp}>".format(
         type=readable[self.type][self.subtype],
         sender=sender,
         timestamp=self.timestamp,
         recip="" if not hasattr(self, 'recipients') else "".join(
             [safe_str(x.get_safe_name()) for x in self.recipients]),
     )
Exemplo n.º 2
0
 def __repr__(self):
     return "<VCardMessage - {type} from {sender} at {timestamp} ({contacts})>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()),
         timestamp=self.timestamp,
         contacts=self.contacts
     )
Exemplo n.º 3
0
 def __repr__(self):
     return "<Message - {type} from {sender} at {timestamp}: {content}>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()) if isinstance(
             self.sender, Contact) else self.sender,
         timestamp=self.timestamp,
         content=self.safe_content)
def whatsapp():
    last_message = None

    while True
        messages = driver.get_all_messages_in_chat(group_chat, True)

        new_messages = []
        for index, message in enumerate(messages):
            if last_message is None or message.timestamp > last_message.timestamp:
                new_messages = messages[index:]
                break

        for message in new_messages:
            raw_sender = safe_str(message.sender.get_safe_name())
            sender = raw_sender if raw_sender != "You" else config['whatsapp_user_name']
            content = message.safe_content

            # sc.api_call(
            #     "chat.postMessage",
            #     channel="#whatsapp",
            #     text=content,
            #     username=sender)

            print "[{timestamp}] {sender}: {content}".format(
                sender=sender,
                timestamp=message.timestamp,
                content=content)

        last_message = messages[-1]

        # Rate limit
        time.sleep(1)
Exemplo n.º 5
0
 def get_safe_name(self):
     name = (self.name or self.push_name or self.formatted_name)
     if (isinstance(name, six.string_types)):
         safe_name = safe_str(name)
     else:
         safe_name = "Unknown"
     return safe_name
Exemplo n.º 6
0
 def __repr__(self):
     return "<MediaMessage - {type} from {sender} at {timestamp} ({filename})>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()),
         timestamp=self.timestamp,
         filename=self.filename
     )
Exemplo n.º 7
0
 def __repr__(self):
     return "<GeoMessage - {type} from {sender} at {timestamp} ({lat}, {lng})>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()),
         timestamp=self.timestamp,
         lat=self.latitude,
         lng=self.longitude)
Exemplo n.º 8
0
 def __repr__(self):
     return "<MediaMessage - {type} from {sender} at {timestamp} ({filename})>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()) if isinstance(
             self.sender, Contact) else 'None',
         timestamp=self.timestamp,
         filename=self.filename)
Exemplo n.º 9
0
    def __init__(self, js_obj):
        """
        Constructor

        :param js_obj: Raw JS message obj
        :type js_obj: dict
        """
        self.sender = False if js_obj["sender"] == False else Contact(
            js_obj["sender"])
        self.timestamp = datetime.fromtimestamp(js_obj["timestamp"])
        if js_obj["content"]:
            self.content = js_obj["content"]
            self.safe_content = safe_str(self.content)
        self.js_obj = js_obj
Exemplo n.º 10
0
    def __init__(self, js_obj, driver=None):
        """
        Constructor

        :param js_obj: Raw JS message obj
        :type js_obj: dict
        """
        super(Message, self).__init__(js_obj, driver)
        self.sender = False if js_obj["sender"] == False else Contact(js_obj["sender"], driver)
        self.timestamp = datetime.fromtimestamp(js_obj["timestamp"])
        if js_obj["content"]:
            self.content = js_obj["content"]
            self.safe_content = safe_str(self.content[0:25]) + '...'
        self.js_obj = js_obj
Exemplo n.º 11
0
    def __init__(self, js_obj, driver=None):
        """
        Constructor

        :param js_obj: Raw JS message obj
        :type js_obj: dict
        """
        super(Message, self).__init__(js_obj, driver)

        self.id = js_obj["id"]
        self.type = js_obj["type"]
        self.sender = Contact(js_obj["sender"],
                              driver) if js_obj["sender"] else False
        self.timestamp = datetime.fromtimestamp(js_obj["timestamp"])
        self.chat_id = js_obj['chatId']

        if js_obj["content"]:
            self.content = js_obj["content"]
            self.safe_content = safe_str(self.content[0:25]) + '...'
Exemplo n.º 12
0
    def __init__(self, js_obj, driver=None):
        """
        Constructor

        :param js_obj: Raw JS message obj
        :type js_obj: dict
        """
        super(Message, self).__init__(js_obj, driver)

        self.id = js_obj["id"]
        self.wsp_mid = js_obj.get('wsp_mid', None)
        self.sender = False
        self.timestamp = datetime.fromtimestamp(js_obj["timestamp"])
        self.chat_id = js_obj['chatId']

        if js_obj["sender"]:
            self.sender = Contact(js_obj["sender"], driver)

        try:
            status = MessageStatus(js_obj.get('ack', 0))
        except ValueError as e:
            logger.error(str(e), exc_info=True)
            status = MessageStatus.ERROR

        self.lecture_status = status
        self.text = ""
        if js_obj["text"]:
            self.text = js_obj["text"]

        if js_obj["content"]:
            self.content = js_obj["content"]
            self.safe_content = safe_str(self.content[0:25]) + '...'
        else:
            logger.info("NON TEXT MESSAGE TYPE")
            logger.info(json.dumps(js_obj))
            self.content = 'NOT SUPPORTED CONTENT'
            self.safe_content = 'NOT SUPPORTED CONTENT'

        self.quotedMessage = None

        if js_obj.get('quotedMsgObj', None):
            self.quotedMessage = js_obj['quotedMsgObj']
Exemplo n.º 13
0
 def __repr__(self):
     safe_name = safe_str(self.name)
     return "<Broadcast chat - {name}: {id}>".format(name=safe_name,
                                                     id=self.id)
Exemplo n.º 14
0
 def __repr__(self):
     safe_name = safe_str(self.name)
     return "<Group chat - {name}: {id}, {participants} participants>".format(
         name=safe_name,
         id=self.id,
         participants=len(self.get_participants_ids()))
Exemplo n.º 15
0
 def __repr__(self):
     return "<Message - from {sender} at {timestamp}: {content}>".format(
         sender=safe_str(self.sender.get_safe_name()),
         timestamp=self.timestamp,
         content=self.safe_content)
Exemplo n.º 16
0
 def __repr__(self):
     return "<MMSMessage - {type} from {sender} at {timestamp}>".format(
         type=self.type,
         sender=safe_str(self.sender.get_safe_name()),
         timestamp=self.timestamp
     )
Exemplo n.º 17
0
 def __repr__(self):
     safe_chat_name = safe_str(self.chat.name)
     return "<MessageGroup - {num} {messages} in {chat}>".format(
         num=len(self.messages),
         messages="message" if len(self.messages) == 1 else "messages",
         chat=safe_chat_name)