handle media downloads
This commit is contained in:
parent
7eb4707397
commit
c3c76e4cb7
|
@ -302,81 +302,56 @@ class Session(YowsupApp):
|
|||
|
||||
# Called by superclass
|
||||
def onImage(self, image):
|
||||
self.logger.debug('Received image message: %s' % image)
|
||||
buddy = image._from.split('@')[0]
|
||||
participant = image.participant
|
||||
if image.caption is None:
|
||||
image.caption = ''
|
||||
|
||||
if image.isEncrypted():
|
||||
self.logger.debug('Received encrypted image message')
|
||||
if self.backend.specConf is not None and self.backend.specConf.__getitem__("service.web_directory") is not None and self.backend.specConf.__getitem__("service.web_url") is not None :
|
||||
ipath = "/" + str(image.timestamp) + image.getExtension()
|
||||
|
||||
with open(self.backend.specConf.__getitem__("service.web_directory") + ipath,"wb") as f:
|
||||
f.write(image.getMediaContent())
|
||||
url = self.backend.specConf.__getitem__("service.web_url") + ipath
|
||||
else:
|
||||
self.logger.warn('Received encrypted image: web storage not set in config!')
|
||||
url = image.url
|
||||
|
||||
else:
|
||||
url = image.url
|
||||
|
||||
if participant is not None: # Group message
|
||||
partname = participant.split('@')[0]
|
||||
if image._from.split('@')[1] == 'broadcast': # Broadcast message
|
||||
self.sendMessageToXMPP(partname, self.broadcast_prefix, image.timestamp)
|
||||
self.sendMessageToXMPP(partname, url, image.timestamp)
|
||||
self.sendMessageToXMPP(partname, image.caption, image.timestamp)
|
||||
else: # Group message
|
||||
self.sendGroupMessageToXMPP(buddy, partname, url, image.timestamp)
|
||||
self.sendGroupMessageToXMPP(buddy, partname, image.caption, image.timestamp)
|
||||
else:
|
||||
self.sendMessageToXMPP(buddy, url, image.timestamp)
|
||||
self.sendMessageToXMPP(buddy, image.caption, image.timestamp)
|
||||
self.sendReceipt(image._id, image._from, None, image.participant)
|
||||
self.recvMsgIDs.append((image._id, image._from, image.participant, image.timestamp))
|
||||
self.onMedia(image, "image")
|
||||
|
||||
|
||||
# Called by superclass
|
||||
def onAudio(self, audio):
|
||||
self.logger.debug('Received audio message: %s' % audio)
|
||||
buddy = audio._from.split('@')[0]
|
||||
participant = audio.participant
|
||||
message = audio.url
|
||||
if participant is not None: # Group message
|
||||
partname = participant.split('@')[0]
|
||||
if audio._from.split('@')[1] == 'broadcast': # Broadcast message
|
||||
self.sendMessageToXMPP(partname, self.broadcast_prefix, audio.timestamp)
|
||||
self.sendMessageToXMPP(partname, message, audio.timestamp)
|
||||
else: # Group message
|
||||
self.sendGroupMessageToXMPP(buddy, partname, message, audio.timestamp)
|
||||
else:
|
||||
self.sendMessageToXMPP(buddy, message, audio.timestamp)
|
||||
self.sendReceipt(audio._id, audio._from, None, audio.participant)
|
||||
self.recvMsgIDs.append((audio._id, audio._from, audio.participant, audio.timestamp))
|
||||
self.onMedia(audio, "audio")
|
||||
|
||||
|
||||
# Called by superclass
|
||||
def onVideo(self, video):
|
||||
self.logger.debug('Received video message: %s' % video)
|
||||
buddy = video._from.split('@')[0]
|
||||
participant = video.participant
|
||||
self.onMedia(video, "video")
|
||||
|
||||
|
||||
def onMedia(self, media, type):
|
||||
self.logger.debug('Received %s message: %s' % (type, media))
|
||||
buddy = media._from.split('@')[0]
|
||||
participant = media.participant
|
||||
|
||||
if media.isEncrypted():
|
||||
self.logger.debug('Received encrypted media message')
|
||||
if self.backend.specConf is not None and self.backend.specConf.__getitem__("service.web_directory") is not None and self.backend.specConf.__getitem__("service.web_url") is not None :
|
||||
ipath = "/" + str(media.timestamp) + media.getExtension()
|
||||
|
||||
with open(self.backend.specConf.__getitem__("service.web_directory") + ipath,"wb") as f:
|
||||
f.write(media.getMediaContent())
|
||||
url = self.backend.specConf.__getitem__("service.web_url") + ipath
|
||||
else:
|
||||
self.logger.warn('Received encrypted media: web storage not set in config!')
|
||||
url = media.url
|
||||
|
||||
else:
|
||||
url = media.url
|
||||
|
||||
message = video.url
|
||||
if participant is not None: # Group message
|
||||
partname = participant.split('@')[0]
|
||||
if video._from.split('@')[1] == 'broadcast': # Broadcast message
|
||||
self.sendMessageToXMPP(partname, self.broadcast_prefix, video.timestamp)
|
||||
self.sendMessageToXMPP(partname, message, video.timestamp)
|
||||
if media._from.split('@')[1] == 'broadcast': # Broadcast message
|
||||
self.sendMessageToXMPP(partname, self.broadcast_prefix, media.timestamp)
|
||||
self.sendMessageToXMPP(partname, url, media.timestamp)
|
||||
self.sendMessageToXMPP(partname, media.caption, media.timestamp)
|
||||
else: # Group message
|
||||
self.sendGroupMessageToXMPP(buddy, partname, message, video.timestamp)
|
||||
self.sendGroupMessageToXMPP(buddy, partname, url, media.timestamp)
|
||||
self.sendGroupMessageToXMPP(buddy, partname, media.caption, media.timestamp)
|
||||
else:
|
||||
self.sendMessageToXMPP(buddy, message, video.timestamp)
|
||||
self.sendReceipt(video._id, video._from, None, video.participant)
|
||||
self.recvMsgIDs.append((video._id, video._from, video.participant, video.timestamp))
|
||||
|
||||
self.sendMessageToXMPP(buddy, url, media.timestamp)
|
||||
self.sendMessageToXMPP(buddy, media.caption, media.timestamp)
|
||||
self.sendReceipt(media._id, media._from, None, media.participant)
|
||||
self.recvMsgIDs.append((media._id, media._from, media.participant, media.timestamp))
|
||||
|
||||
def onLocation(self, location):
|
||||
buddy = location._from.split('@')[0]
|
||||
|
|
Loading…
Reference in a new issue