Ejemplo n.º 1
0
    def start_quote(
        self,
        date_str,
        time_str,
        author,
        message,
        sequence_id,
        quote_type,
        raw,
        attachment=None,
    ):
        """Make a quote from a line. Its message may not be finished on this line"""
        timestamp = self.parse_timestamp(date_str, time_str)

        if author == "You" or author == "you":
            author = self.you

        return Quote(
            self.channel,
            sequence_id,
            author,
            message,
            timestamp,
            quote_type,
            self.source,
            raw,
            attachment,
        )
Ejemplo n.º 2
0
    def handle(self, message: dict, sequence_id: int,
               all_messages: list[dict]):
        media_type = message["media_type"]
        text = self.join_text(message)
        attachment = None

        if media_type == "sticker":
            text = message.get("sticker_emoji", text)
            attachment = self.read_attachment(message["file"])
        elif media_type in [
                "animation", "video_file", "audio_file", "voice_message"
        ]:
            attachment = self.read_attachment(message["file"])

        return Quote(
            self.channel,
            sequence_id,
            message["from"],
            text,
            self.parse_date(message),
            QuoteType.attachment,
            self.source,
            json.dumps(message),
            attachment,
        )
Ejemplo n.º 3
0
 def handle(self, message: dict, sequence_id: int,
            all_messages: list[dict]):
     return Quote(
         self.channel,
         sequence_id,
         message["from"],
         self.join_text(message),
         self.parse_date(message),
         QuoteType.message,
         self.source,
         json.dumps(message),
     )
Ejemplo n.º 4
0
 def handle(self, message: dict, sequence_id: int,
            all_messages: list[dict]):
     return Quote(
         self.channel,
         sequence_id,
         message["actor"],
         message["title"],
         self.parse_date(message),
         QuoteType.subject,
         self.source,
         json.dumps(message),
     )
Ejemplo n.º 5
0
 def handle(self, message: dict, sequence_id: int,
            all_messages: list[dict]):
     return Quote(
         self.channel,
         sequence_id,
         message["actor"],
         f'Invited {", ".join(m for m in message["members"])}',
         self.parse_date(message),
         QuoteType.system,
         self.source,
         json.dumps(message),
     )
Ejemplo n.º 6
0
    def make_quote(self, datetime_str, author, message, sequence_id, quote_type, raw):
        """Make a quote from a line"""
        self.current_date = self.parse_timestamp(datetime_str)

        return Quote(
            self.channel,
            sequence_id,
            author,
            message or "",
            self.current_date,
            quote_type,
            self.source,
            raw,
        )
Ejemplo n.º 7
0
    def handle(self, message: dict, sequence_id: int,
               all_messages: list[dict]):
        attachment = self.read_attachment(message["photo"])

        return Quote(
            self.channel,
            sequence_id,
            message["actor"],
            message["action"],
            self.parse_date(message),
            QuoteType.subject,
            self.source,
            json.dumps(message),
            attachment,
        )
Ejemplo n.º 8
0
    def handle(self, message: dict, sequence_id: int,
               all_messages: list[dict]):
        pinned_id = message["message_id"]
        pinned_message = next(
            (m for m in all_messages if m["id"] == pinned_id), None)
        pinned_text = (f"{pinned_message['from']}: {pinned_message['text']}"
                       if pinned_message else "")

        return Quote(
            self.channel,
            sequence_id,
            message["actor"],
            pinned_text,
            self.parse_date(message),
            QuoteType.subject,
            self.source,
            json.dumps(message),
        )
Ejemplo n.º 9
0
    def make_quote(self, datetime_str, author, message, sequence_id,
                   quote_type, raw):
        """Make a quote from a line"""

        if author is None:
            author = ""
        if message is None:
            message = ""

        timestamp = self.parse_timestamp(datetime_str)
        return Quote(
            self.channel,
            sequence_id,
            author,
            message,
            timestamp,
            quote_type,
            self.source,
            raw,
        )
Ejemplo n.º 10
0
    def make_quote(self, date, time_str, author, message, sequence_id,
                   quote_type, raw):
        """Make a quote from a line"""
        (hours, minutes) = [int(x) for x in time_str.split(":")]

        local_dt = datetime(date.year,
                            date.month,
                            date.day,
                            hours,
                            minutes,
                            0,
                            tzinfo=self.tzinfo)
        timestamp = local_dt.astimezone(timezone.utc)

        return Quote(
            self.channel,
            sequence_id,
            author,
            message,
            timestamp,
            quote_type,
            self.source,
            raw,
        )