Skip to content

Commit

Permalink
M4A Converter: Check file extension (bug 1770)
Browse files Browse the repository at this point in the history
  • Loading branch information
brot authored and thp committed Feb 12, 2013
1 parent 9cfbbdb commit b8d188e
Showing 1 changed file with 16 additions and 4 deletions.
20 changes: 16 additions & 4 deletions share/gpodder/extensions/m4a_converter.py
Expand Up @@ -29,7 +29,8 @@
}

class gPodderExtension:
MIME_TYPES = ['audio/x-m4a', 'audio/mp4']
MIME_TYPES = ['audio/x-m4a', 'audio/mp4', 'audio/mp4a-latm']
EXT = '.m4a'

def __init__(self, container):
self.container = container
Expand All @@ -41,14 +42,24 @@ def __init__(self, container):
def on_episode_downloaded(self, episode):
self._convert_episode(episode)

def _check_mp4(self, episode):
if episode.mime_type in self.MIME_TYPES:
return True

# Also check file extension (bug 1770)
if episode.extension() == self.EXT:
return True

return False

def on_episodes_context_menu(self, episodes):
if not self.config.context_menu:
return None

if not all(e.was_downloaded(and_exists=True) for e in episodes):
return None

if not any(e.mime_type in self.MIME_TYPES for e in episodes):
if not any(self._check_mp4(episode) for e in episodes):
return None

target_format = ('OGG' if self.config.use_ogg else 'MP3')
Expand All @@ -57,15 +68,16 @@ def on_episodes_context_menu(self, episodes):
return [(menu_item, self._convert_episodes)]

def _convert_episode(self, episode):
if episode.mime_type not in self.MIME_TYPES:
old_filename = episode.local_filename(create=False)

if not self._check_mp4(episode):
return

if self.config.use_ogg:
extension = '.ogg'
else:
extension = '.mp3'

old_filename = episode.local_filename(create=False)
filename, old_extension = os.path.splitext(old_filename)
new_filename = filename + extension

Expand Down

0 comments on commit b8d188e

Please sign in to comment.