From 2ea7c29c647934c2e53214e0531078aa70b2255a Mon Sep 17 00:00:00 2001 From: Yannik Enss Date: Sun, 10 Mar 2019 17:13:53 +0100 Subject: [PATCH] use OOB for relaying images XMPP->TG --- xmpp_tg/xmpp.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/xmpp_tg/xmpp.py b/xmpp_tg/xmpp.py index 7524014..a3dffa5 100644 --- a/xmpp_tg/xmpp.py +++ b/xmpp_tg/xmpp.py @@ -59,6 +59,7 @@ class XMPPTelegram(ComponentXMPP): self.register_plugin('xep_0030') # Service discovery self.register_plugin('xep_0054') # VCard-temp self.register_plugin('xep_0172') # NickNames + self.register_plugin('xep_0066') # OOB self.add_event_handler('message', self.message) self.add_event_handler('presence_unsubscribe', self.event_presence_unsub) @@ -164,17 +165,20 @@ class XMPPTelegram(ComponentXMPP): result = None # detect media - #TODO: fix - #TODO: implement OOB for images - if msg.startswith('http') and re.match(r'(?:http\:|https\:)?\/\/.*\.(?:' + self.config['media_external_formats'] + ')', msg): - urls = re.findall(r'(?:http\:|https\:)?\/\/.*\.(?:' + self.config['media_external_formats'] + ')', msg) - message = msg.replace(urls[0], '') - media = InputMediaPhotoExternal(urls[0], "Image") - try: - result = self.tg_connections[jid].invoke(SendMediaRequest(tg_peer, media, message, random_id = generate_random_long(), reply_to_msg_id = reply_mid)) - except Exception: - print('Media upload failed.') - + + if "oob" in msg: + logging.debug("Found OOB content in message") + if "url" in msg['oob']: + url = msg['oob']['url'] + logging.debug("Found OOB URL: {}".format(url)) + if url.split('.')[-1] in self.config['media_external_formats']: + logging.debug("Media found") + media = InputMediaPhotoExternal(url, "Image") + try: + result = self.tg_connections[jid].invoke(SendMediaRequest(tg_peer, media, "Image", random_id = generate_random_long(), reply_to_msg_id = reply_mid)) + except Exception: + print('Media upload failed.') + # media send failed. # if not result: result = self.tg_connections[jid].invoke(SendMessageRequest(tg_peer, msg, generate_random_long(), reply_to_msg_id=reply_mid))