Plugin to fetch an archive of messages using MAM
This commit is contained in:
parent
d909adcb5c
commit
258cb0ba08
1 changed files with 69 additions and 0 deletions
69
plugins/mam.py
Normal file
69
plugins/mam.py
Normal file
|
@ -0,0 +1,69 @@
|
|||
#! /usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
# vim:fenc=utf-8
|
||||
#
|
||||
# Copyright © 2019 Madhur Garg
|
||||
|
||||
"""
|
||||
Query and control an archive of messages stored on a server using
|
||||
XEP-0313: Message Archive Management(MAM).
|
||||
"""
|
||||
|
||||
import re
|
||||
import slixmpp
|
||||
|
||||
from datetime import datetime
|
||||
from datetime import timedelta
|
||||
from poezio.config import config
|
||||
from poezio.plugin import BasePlugin
|
||||
from poezio.decorators import command_args_parser
|
||||
from poezio import tabs
|
||||
from poezio.mam import MAM
|
||||
from poezio.text_buffer import Message, TextBuffer
|
||||
|
||||
|
||||
class Plugin(BasePlugin):
|
||||
"""MAM Plugin"""
|
||||
|
||||
def init(self):
|
||||
for tab in tabs.ConversationTab, tabs.PrivateTab, tabs.MucTab:
|
||||
self.api.add_tab_command(
|
||||
tab,
|
||||
'mam',
|
||||
self.command_mam,
|
||||
usage='[start_timestamp] [end_timestamp]',
|
||||
help='Query and control an archive of messages using MAM')
|
||||
|
||||
@command_args_parser.quoted(0, 2)
|
||||
def command_mam(self, args):
|
||||
"""Define mam command"""
|
||||
|
||||
tab = self.api.current_tab()
|
||||
jid = config.get('jid')
|
||||
password = config.get('password')
|
||||
remote_jid = tab.jid
|
||||
end = datetime.now()
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
start = datetime.strptime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Default start date is 10 days past the current day.
|
||||
start = start + timedelta(days=-10)
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
# Format for start and end timestamp is [dd:mm:yyyy]
|
||||
if len(args) == 1:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
elif len(args) == 2:
|
||||
try:
|
||||
start = datetime.strptime(args[0], '%d:%m:%Y')
|
||||
start = datetime.strftime(start, '%Y-%m-%dT%H:%M:%SZ')
|
||||
end = datetime.strptime(args[1], '%d:%m:%Y')
|
||||
end = datetime.strftime(end, '%Y-%m-%dT%H:%M:%SZ')
|
||||
except ValueError:
|
||||
pass
|
||||
|
||||
xmpp = MAM(jid, password, remote_jid, start, end, tab)
|
||||
xmpp.register_plugin('xep_0313')
|
||||
xmpp.connect()
|
Loading…
Reference in a new issue