# HG changeset patch # User souliane # Date 1394064379 -3600 # Node ID ee61b0765d6c5b7b5d95e72de9fe8f49f6ab9569 # Parent a3d58514a4d0ad769d61a0a7020cd94c6f66fe9c browser_side: radiocol supports MP3 diff -r a3d58514a4d0 -r ee61b0765d6c browser_side/panels.py --- a/browser_side/panels.py Wed Mar 05 21:42:03 2014 +0100 +++ b/browser_side/panels.py Thu Mar 06 01:06:19 2014 +0100 @@ -291,7 +291,7 @@ self._popup = None self._timer = Timer(notify=self._timeCb) - def showWarning(self, type_=None, msg=None): + def showWarning(self, type_=None, msg=None, duration=2000): """Display a popup information message, e.g. to notify the recipient of a message being composed. If type_ is None, a popup being currently displayed will be hidden. @type_: a type determining the CSS style to be applied (see __showWarning) @@ -306,7 +306,7 @@ self._timeCb(None) # we remove the popup self.__showWarning(type_, msg) - self._timer.schedule(2000) + self._timer.schedule(duration) def __showWarning(self, type_, msg): """Display a popup information message, e.g. to notify the recipient of a message being composed. @@ -324,7 +324,6 @@ elif type_ == "GROUP": style = "targetGroup" elif type_ == "STATUS": - msg = "This will be your new status message" style = "targetStatus" elif type_ == "ONE2ONE": style = "targetOne2One" diff -r a3d58514a4d0 -r ee61b0765d6c browser_side/radiocol.py --- a/browser_side/radiocol.py Wed Mar 05 21:42:03 2014 +0100 +++ b/browser_side/radiocol.py Thu Mar 06 01:06:19 2014 +0100 @@ -36,6 +36,7 @@ from html_tools import html_sanitize from file_tools import FilterFileUpload from sat_frontends.tools.misc import DEFAULT_MUC +from sat.core.i18n import _ class MetadataPanel(FlexTable): @@ -86,7 +87,8 @@ types = [('audio/ogg', '*.ogg', 'Ogg Vorbis Audio'), ('video/ogg', '*.ogv', 'Ogg Vorbis Video'), - ('application/ogg', '*.ogx', 'Ogg Vorbis Multiplex')] + ('application/ogg', '*.ogx', 'Ogg Vorbis Multiplex'), + ('audio/mpeg', '*.mp3', 'MPEG-Layer 3')] self.file_upload = FilterFileUpload("song", 10, types) vPanel.add(self.file_upload) @@ -96,8 +98,11 @@ self.status = Label() self.updateStatus() hPanel.add(self.status) - #We need to know the referee + #We need to know the filename and the referee + self.filename_field = Hidden('filename', '') + hPanel.add(self.filename_field) referee_field = Hidden('referee', self._parent.referee) + hPanel.add(self.filename_field) hPanel.add(referee_field) vPanel.add(hPanel) @@ -122,9 +127,12 @@ def onBtnClick(self): if self.file_upload.check(): + self.status.setText('[Submitting, please wait...]') + self.filename_field.setValue(self.file_upload.getFilename()) + if self.file_upload.getFilename().lower().endswith('.mp3'): + self._parent._parent.host.showWarning('STATUS', 'For a better support, it is recommended to submit Ogg Vorbis file instead of MP3. You can convert your files easily, ask for help if needed!', 5000) self.submit() self.file_upload.setFilename("") - self.status.setText('[Submitting, please wait...]') def onSubmit(self, event): pass @@ -155,7 +163,7 @@ self.setTemporaryStatus('[Your song has been submitted to the radio]', "ok") elif result == "KO": self.setTemporaryStatus('[Something went wrong during your song upload]', "ko") - self._parent.radiocolSongRejected("Uploaded file is not Ogg Vorbis song, only Ogg Vorbis songs are acceptable") + self._parent.radiocolSongRejected(_("The uploaded file has been rejected, only Ogg Vorbis and MP3 songs are accepted.")) # TODO: would be great to re-use the original Exception class and message # but it is lost in the middle of the traceback and encapsulated within # a DBusException instance --> extract the data from the traceback? @@ -232,9 +240,9 @@ self.add(player) self.addClickListener(self) - help_msg = HTML("""- This radio plays Ogg Vorbis files.
- - What's that? I only know MP3!
- - Click here if you need some support :) + help_msg = HTML("""Accepted file formats: Ogg Vorbis (recommended), MP3.
+ Please do not submit files that are protected by copyright.
+ Click here if you need some support :) """) help_msg.setStyleName('chatTextInfo-link') help_msg.addClickListener(lambda: self._parent.host.bridge.call('joinMUC', None, DEFAULT_MUC, self._parent.nick)) diff -r a3d58514a4d0 -r ee61b0765d6c libervia_server/__init__.py --- a/libervia_server/__init__.py Wed Mar 05 21:42:03 2014 +0100 +++ b/libervia_server/__init__.py Thu Mar 06 01:06:19 2014 +0100 @@ -926,7 +926,8 @@ NAME = 'song' def _getFileName(self, request): - return "%s.ogg" % str(uuid.uuid4()) #XXX: chromium doesn't seem to play song without the .ogg extension, even with audio/ogg mime-type + extension = os.path.splitext(request.args['filename'][0])[1] + return "%s%s" % (str(uuid.uuid4()), extension) # XXX: chromium doesn't seem to play song without the .ogg extension, even with audio/ogg mime-type def _fileWritten(self, request, filepath): """Called once the file is actually written on disk