From 7d7f9a7d98172d4cf26ecc1e5f0f9a889fb8acde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 21 Feb 2011 17:16:56 +0200 Subject: [PATCH 1/9] fix #99 --- openlp/plugins/songs/lib/cclifileimport.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 3d08584d0..28c487a78 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -78,7 +78,20 @@ class CCLIFileImport(SongImport): details = chardet.detect(detect_content) detect_file.close() infile = codecs.open(filename, u'r', details['encoding']) - lines = infile.readlines() + try: + lines = infile.readlines() + infile.close() + except UnicodeDecodeError: + # First 2kB were not sufficient to detect file encoding. + # This time we read entire file. + detect_file = open(filename, u'r') + detect_content = detect_file.read() + details = chardet.detect(detect_content) + detect_file.close() + # We read the contents again. Should it be a try as well? + infile = codecs.open(filename, u'r', details['encoding']) + lines = infile.readlines() + infile.close() ext = os.path.splitext(filename)[1] if ext.lower() == u'.usr': log.info(u'SongSelect .usr format file found %s: ', From 24519832dfb8ebf8b70a88d5af494013bd9639d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 21 Feb 2011 17:49:09 +0200 Subject: [PATCH 2/9] More informational noise to debug log, extensions by mimetype. To justify: it seems that extension list is an important thing. --- openlp/plugins/media/mediaplugin.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 12887a76c..bfe9dbff0 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -54,19 +54,16 @@ class MediaPlugin(Plugin): self._addToList(self.audio_list, mimetype) elif mimetype.startswith(u'video/'): self._addToList(self.video_list, mimetype) - log.info(u'MediaPlugin handles audio extensions: %s', - u' '.join(self.audio_list)) - log.info(u'MediaPlugin handles video extensions: %s', - u' '.join(self.video_list)) def _addToList(self, list, mimetype): - # Is it a media type extensions = mimetypes.guess_all_extensions(unicode(mimetype)) for extension in extensions: ext = u'*%s' % extension if ext not in list: list.append(ext) self.serviceManager.supportedSuffixes(extension[1:]) + log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, + u' '.join(extensions))) def about(self): about_text = translate('MediaPlugin', 'Media Plugin' From e8b6bbe14179ff37a6da5aa3b4c4bb1ad430f939 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 21 Feb 2011 17:56:23 +0200 Subject: [PATCH 3/9] revert a change --- openlp/plugins/songs/lib/cclifileimport.py | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/openlp/plugins/songs/lib/cclifileimport.py b/openlp/plugins/songs/lib/cclifileimport.py index 28c487a78..3d08584d0 100644 --- a/openlp/plugins/songs/lib/cclifileimport.py +++ b/openlp/plugins/songs/lib/cclifileimport.py @@ -78,20 +78,7 @@ class CCLIFileImport(SongImport): details = chardet.detect(detect_content) detect_file.close() infile = codecs.open(filename, u'r', details['encoding']) - try: - lines = infile.readlines() - infile.close() - except UnicodeDecodeError: - # First 2kB were not sufficient to detect file encoding. - # This time we read entire file. - detect_file = open(filename, u'r') - detect_content = detect_file.read() - details = chardet.detect(detect_content) - detect_file.close() - # We read the contents again. Should it be a try as well? - infile = codecs.open(filename, u'r', details['encoding']) - lines = infile.readlines() - infile.close() + lines = infile.readlines() ext = os.path.splitext(filename)[1] if ext.lower() == u'.usr': log.info(u'SongSelect .usr format file found %s: ', From fdb5c574683b755b99f5aaa29f192040ef381fdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Mon, 21 Feb 2011 22:37:18 +0200 Subject: [PATCH 4/9] Additional extensions hack. --- openlp/plugins/media/lib/mediaitem.py | 4 ++-- openlp/plugins/media/mediaplugin.py | 20 ++++++++++++++++---- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/openlp/plugins/media/lib/mediaitem.py b/openlp/plugins/media/lib/mediaitem.py index 9f3f98636..8bf201180 100644 --- a/openlp/plugins/media/lib/mediaitem.py +++ b/openlp/plugins/media/lib/mediaitem.py @@ -61,8 +61,8 @@ class MediaMediaItem(MediaManagerItem): self.onNewPrompt = translate('MediaPlugin.MediaItem', 'Select Media') self.onNewFileMasks = unicode(translate('MediaPlugin.MediaItem', 'Videos (%s);;Audio (%s);;%s (*)')) % ( - u' '.join(self.parent.video_list), - u' '.join(self.parent.audio_list), UiStrings.AllFiles) + u' '.join(self.parent.video_extensions_list), + u' '.join(self.parent.audio_extensions_list), UiStrings.AllFiles) self.replaceAction.setText(UiStrings.ReplaceBG) self.replaceAction.setToolTip(UiStrings.ReplaceLiveBG) self.resetAction.setText(UiStrings.ResetBG) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index bfe9dbff0..1514b6cb2 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -45,15 +45,19 @@ class MediaPlugin(Plugin): self.icon = build_icon(self.icon_path) # passed with drag and drop messages self.dnd_id = u'Media' - self.audio_list = [] - self.video_list = [] + # This is yet a dummy example: + self.additional_extensions = { + 'audio/msaudio': ['.mp3', '.aac'], + 'video/msvideo': ['.wmv', '.avi']} + self.audio_extensions_list = [] + self.video_extensions_list = [] mimetypes.init() for mimetype in Phonon.BackendCapabilities.availableMimeTypes(): mimetype = unicode(mimetype) if mimetype.startswith(u'audio/'): - self._addToList(self.audio_list, mimetype) + self._addToList(self.audio_extensions_list, mimetype) elif mimetype.startswith(u'video/'): - self._addToList(self.video_list, mimetype) + self._addToList(self.video_extensions_list, mimetype) def _addToList(self, list, mimetype): extensions = mimetypes.guess_all_extensions(unicode(mimetype)) @@ -64,6 +68,14 @@ class MediaPlugin(Plugin): self.serviceManager.supportedSuffixes(extension[1:]) log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, u' '.join(extensions))) + if mimetype in self.additional_extensions.keys(): + for extension in self.additional_extensions[mimetype]: + ext = u'*%s' % extensions + if ext not in list: + list.append(ext) + self.serviceManager.supportedSuffixes(extension[1:]) + log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, + u' '.join(self.additional_extensions[mimetype]))) def about(self): about_text = translate('MediaPlugin', 'Media Plugin' From a5e8833132f1893069a76cf71d76da32b0af4c2a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 22 Feb 2011 08:58:32 +0200 Subject: [PATCH 5/9] Remove bogus data. --- openlp/plugins/media/mediaplugin.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 1514b6cb2..51cf1b9ad 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -47,8 +47,7 @@ class MediaPlugin(Plugin): self.dnd_id = u'Media' # This is yet a dummy example: self.additional_extensions = { - 'audio/msaudio': ['.mp3', '.aac'], - 'video/msvideo': ['.wmv', '.avi']} + 'video/msvideo': ['.avi']} # only an example line, unnecessary self.audio_extensions_list = [] self.video_extensions_list = [] mimetypes.init() From 29207d8dffe07417ae968e742928092be86dcf59 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 22 Feb 2011 11:09:47 +0200 Subject: [PATCH 6/9] Added comments to code blocks. --- openlp/plugins/media/mediaplugin.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 51cf1b9ad..d76df6897 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -45,9 +45,8 @@ class MediaPlugin(Plugin): self.icon = build_icon(self.icon_path) # passed with drag and drop messages self.dnd_id = u'Media' - # This is yet a dummy example: - self.additional_extensions = { - 'video/msvideo': ['.avi']} # only an example line, unnecessary + self.additional_extensions = {} + #'video/msvideo': ['.avi']} This is an example line. self.audio_extensions_list = [] self.video_extensions_list = [] mimetypes.init() @@ -59,6 +58,7 @@ class MediaPlugin(Plugin): self._addToList(self.video_extensions_list, mimetype) def _addToList(self, list, mimetype): + # Add all extensions which mimetypes provides us for supported types. extensions = mimetypes.guess_all_extensions(unicode(mimetype)) for extension in extensions: ext = u'*%s' % extension @@ -67,6 +67,8 @@ class MediaPlugin(Plugin): self.serviceManager.supportedSuffixes(extension[1:]) log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, u' '.join(extensions))) + # Add all extensions listed in self.additional_extensions, to hack + # away mimetypes' shortcomings. if mimetype in self.additional_extensions.keys(): for extension in self.additional_extensions[mimetype]: ext = u'*%s' % extensions From 98d8b1f5902c481656ae9e6a850ad3f799403216 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 22 Feb 2011 17:01:07 +0200 Subject: [PATCH 7/9] More clear comment. Unfortunately there is no need to change few lines of code between these two changes, to include these into diff. That would be self-explanantory. --- openlp/plugins/media/mediaplugin.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index d76df6897..a92de5314 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -46,7 +46,7 @@ class MediaPlugin(Plugin): # passed with drag and drop messages self.dnd_id = u'Media' self.additional_extensions = {} - #'video/msvideo': ['.avi']} This is an example line. + # 'video/msvideo': ['.avi']} This is an example line. self.audio_extensions_list = [] self.video_extensions_list = [] mimetypes.init() @@ -67,8 +67,9 @@ class MediaPlugin(Plugin): self.serviceManager.supportedSuffixes(extension[1:]) log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, u' '.join(extensions))) - # Add all extensions listed in self.additional_extensions, to hack - # away mimetypes' shortcomings. + # Add all extensions listed in self.additional_extensions, which + # have this mimetype, previously claimed to be supported by Phonon, + # to hack away mimetypes' shortcomings in providing some extensions. if mimetype in self.additional_extensions.keys(): for extension in self.additional_extensions[mimetype]: ext = u'*%s' % extensions From 9f9720e3682fa6cdc2aa4a78dbdc6313e42e2868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 22 Feb 2011 23:32:07 +0200 Subject: [PATCH 8/9] Added some extensions. --- openlp/plugins/media/mediaplugin.py | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index a92de5314..08d21e6ce 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -45,8 +45,16 @@ class MediaPlugin(Plugin): self.icon = build_icon(self.icon_path) # passed with drag and drop messages self.dnd_id = u'Media' - self.additional_extensions = {} - # 'video/msvideo': ['.avi']} This is an example line. + self.additional_extensions = { + u'audio/ac3': [u'.ac3'], + u'audio/qcelp': [u'.qcp'], + u'audio/riff-midi': [u'.rmi'], + u'audio/x-alaw': [u'.alaw'], + u'audio/x-m4a': [u'.m4a'], + u'audio/x-mp3': [u'.mp3'], + u'audio/x-wma': [u'.wma'], + u'video/x-wmv': [u'.wmv'], + u'video/x-xvid': [u'.xvid']} self.audio_extensions_list = [] self.video_extensions_list = [] mimetypes.init() @@ -65,7 +73,7 @@ class MediaPlugin(Plugin): if ext not in list: list.append(ext) self.serviceManager.supportedSuffixes(extension[1:]) - log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, + log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, u' '.join(extensions))) # Add all extensions listed in self.additional_extensions, which # have this mimetype, previously claimed to be supported by Phonon, @@ -76,7 +84,7 @@ class MediaPlugin(Plugin): if ext not in list: list.append(ext) self.serviceManager.supportedSuffixes(extension[1:]) - log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, + log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, u' '.join(self.additional_extensions[mimetype]))) def about(self): From 158b358bae2ae16b96782847ea0e183249ca981a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mattias=20P=C3=B5ldaru?= Date: Tue, 22 Feb 2011 23:35:25 +0200 Subject: [PATCH 9/9] Removed hack, leave only more detailed logging. --- openlp/plugins/media/mediaplugin.py | 21 --------------------- 1 file changed, 21 deletions(-) diff --git a/openlp/plugins/media/mediaplugin.py b/openlp/plugins/media/mediaplugin.py index 08d21e6ce..74a8f3f2e 100644 --- a/openlp/plugins/media/mediaplugin.py +++ b/openlp/plugins/media/mediaplugin.py @@ -45,16 +45,6 @@ class MediaPlugin(Plugin): self.icon = build_icon(self.icon_path) # passed with drag and drop messages self.dnd_id = u'Media' - self.additional_extensions = { - u'audio/ac3': [u'.ac3'], - u'audio/qcelp': [u'.qcp'], - u'audio/riff-midi': [u'.rmi'], - u'audio/x-alaw': [u'.alaw'], - u'audio/x-m4a': [u'.m4a'], - u'audio/x-mp3': [u'.mp3'], - u'audio/x-wma': [u'.wma'], - u'video/x-wmv': [u'.wmv'], - u'video/x-xvid': [u'.xvid']} self.audio_extensions_list = [] self.video_extensions_list = [] mimetypes.init() @@ -75,17 +65,6 @@ class MediaPlugin(Plugin): self.serviceManager.supportedSuffixes(extension[1:]) log.info(u'MediaPlugin: %s extensions: %s' % (mimetype, u' '.join(extensions))) - # Add all extensions listed in self.additional_extensions, which - # have this mimetype, previously claimed to be supported by Phonon, - # to hack away mimetypes' shortcomings in providing some extensions. - if mimetype in self.additional_extensions.keys(): - for extension in self.additional_extensions[mimetype]: - ext = u'*%s' % extensions - if ext not in list: - list.append(ext) - self.serviceManager.supportedSuffixes(extension[1:]) - log.info(u'MediaPlugin: %s additional extensions: %s' % (mimetype, - u' '.join(self.additional_extensions[mimetype]))) def about(self): about_text = translate('MediaPlugin', 'Media Plugin'