comparison browser_side/radiocol.py @ 394:ee61b0765d6c

browser_side: radiocol supports MP3
author souliane <souliane@mailoo.org>
date Thu, 06 Mar 2014 01:06:19 +0100
parents 30d03d9f07e4
children 6148e9063069
comparison
equal deleted inserted replaced
393:a3d58514a4d0 394:ee61b0765d6c
34 from __pyjamas__ import JS 34 from __pyjamas__ import JS
35 35
36 from html_tools import html_sanitize 36 from html_tools import html_sanitize
37 from file_tools import FilterFileUpload 37 from file_tools import FilterFileUpload
38 from sat_frontends.tools.misc import DEFAULT_MUC 38 from sat_frontends.tools.misc import DEFAULT_MUC
39 from sat.core.i18n import _
39 40
40 41
41 class MetadataPanel(FlexTable): 42 class MetadataPanel(FlexTable):
42 43
43 def __init__(self): 44 def __init__(self):
84 self._parent = parent 85 self._parent = parent
85 vPanel = VerticalPanel() 86 vPanel = VerticalPanel()
86 87
87 types = [('audio/ogg', '*.ogg', 'Ogg Vorbis Audio'), 88 types = [('audio/ogg', '*.ogg', 'Ogg Vorbis Audio'),
88 ('video/ogg', '*.ogv', 'Ogg Vorbis Video'), 89 ('video/ogg', '*.ogv', 'Ogg Vorbis Video'),
89 ('application/ogg', '*.ogx', 'Ogg Vorbis Multiplex')] 90 ('application/ogg', '*.ogx', 'Ogg Vorbis Multiplex'),
91 ('audio/mpeg', '*.mp3', 'MPEG-Layer 3')]
90 self.file_upload = FilterFileUpload("song", 10, types) 92 self.file_upload = FilterFileUpload("song", 10, types)
91 vPanel.add(self.file_upload) 93 vPanel.add(self.file_upload)
92 94
93 hPanel = HorizontalPanel() 95 hPanel = HorizontalPanel()
94 self.upload_btn = Button("Upload song", getattr(self, "onBtnClick")) 96 self.upload_btn = Button("Upload song", getattr(self, "onBtnClick"))
95 hPanel.add(self.upload_btn) 97 hPanel.add(self.upload_btn)
96 self.status = Label() 98 self.status = Label()
97 self.updateStatus() 99 self.updateStatus()
98 hPanel.add(self.status) 100 hPanel.add(self.status)
99 #We need to know the referee 101 #We need to know the filename and the referee
102 self.filename_field = Hidden('filename', '')
103 hPanel.add(self.filename_field)
100 referee_field = Hidden('referee', self._parent.referee) 104 referee_field = Hidden('referee', self._parent.referee)
105 hPanel.add(self.filename_field)
101 hPanel.add(referee_field) 106 hPanel.add(referee_field)
102 vPanel.add(hPanel) 107 vPanel.add(hPanel)
103 108
104 self.add(vPanel) 109 self.add(vPanel)
105 self.addFormHandler(self) 110 self.addFormHandler(self)
120 self.status.setText("[The queue is currently full]") 125 self.status.setText("[The queue is currently full]")
121 self.status.setStyleName('radiocol_status') 126 self.status.setStyleName('radiocol_status')
122 127
123 def onBtnClick(self): 128 def onBtnClick(self):
124 if self.file_upload.check(): 129 if self.file_upload.check():
130 self.status.setText('[Submitting, please wait...]')
131 self.filename_field.setValue(self.file_upload.getFilename())
132 if self.file_upload.getFilename().lower().endswith('.mp3'):
133 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)
125 self.submit() 134 self.submit()
126 self.file_upload.setFilename("") 135 self.file_upload.setFilename("")
127 self.status.setText('[Submitting, please wait...]')
128 136
129 def onSubmit(self, event): 137 def onSubmit(self, event):
130 pass 138 pass
131 139
132 def blockUpload(self): 140 def blockUpload(self):
153 if result == "OK": 161 if result == "OK":
154 # the song can still be rejected (not readable, full queue...) 162 # the song can still be rejected (not readable, full queue...)
155 self.setTemporaryStatus('[Your song has been submitted to the radio]', "ok") 163 self.setTemporaryStatus('[Your song has been submitted to the radio]', "ok")
156 elif result == "KO": 164 elif result == "KO":
157 self.setTemporaryStatus('[Something went wrong during your song upload]', "ko") 165 self.setTemporaryStatus('[Something went wrong during your song upload]', "ko")
158 self._parent.radiocolSongRejected("Uploaded file is not Ogg Vorbis song, only Ogg Vorbis songs are acceptable") 166 self._parent.radiocolSongRejected(_("The uploaded file has been rejected, only Ogg Vorbis and MP3 songs are accepted."))
159 # TODO: would be great to re-use the original Exception class and message 167 # TODO: would be great to re-use the original Exception class and message
160 # but it is lost in the middle of the traceback and encapsulated within 168 # but it is lost in the middle of the traceback and encapsulated within
161 # a DBusException instance --> extract the data from the traceback? 169 # a DBusException instance --> extract the data from the traceback?
162 else: 170 else:
163 Window.alert('Submit error: %s' % result) 171 Window.alert('Submit error: %s' % result)
230 self.current_player = None 238 self.current_player = None
231 for player in self.players: 239 for player in self.players:
232 self.add(player) 240 self.add(player)
233 self.addClickListener(self) 241 self.addClickListener(self)
234 242
235 help_msg = HTML("""- This radio plays Ogg Vorbis files.<br /> 243 help_msg = HTML("""Accepted file formats: Ogg Vorbis (recommended), MP3.<br />
236 - What's that? I only know MP3!<br /> 244 Please do not submit files that are protected by copyright.<br />
237 - Click <a style="color: red;">here</a> if you need some support :) 245 Click <a style="color: red;">here</a> if you need some support :)
238 """) 246 """)
239 help_msg.setStyleName('chatTextInfo-link') 247 help_msg.setStyleName('chatTextInfo-link')
240 help_msg.addClickListener(lambda: self._parent.host.bridge.call('joinMUC', None, DEFAULT_MUC, self._parent.nick)) 248 help_msg.addClickListener(lambda: self._parent.host.bridge.call('joinMUC', None, DEFAULT_MUC, self._parent.nick))
241 self._parent.content.add(help_msg) 249 self._parent.content.add(help_msg)
242 250