1 # -*- coding: utf-8 -*-
2 # Rename files after download based on the episode title
3 # Copyright (c) 2011-04-04 Thomas Perl <thp.io>
4 # Licensed under the same terms as gPodder itself
9 from gpodder
import util
12 logger
= logging
.getLogger(__name__
)
16 __title__
= _('Rename episodes after download')
17 __description__
= _('Rename episodes to "<Episode Title>.<ext>" on download')
18 __author__
= 'Bernd Schlapsi <brot@gmx.info>, Thomas Perl <thp@gpodder.org>'
21 class gPodderExtension
:
22 def __init__(self
, container
):
23 self
.container
= container
25 def on_episode_downloaded(self
, episode
):
26 current_filename
= episode
.local_filename(create
=False)
28 new_filename
= self
.make_filename(current_filename
, episode
.title
)
30 if new_filename
!= current_filename
:
31 logger
.info('Renaming: %s -> %s', current_filename
, new_filename
)
32 os
.rename(current_filename
, new_filename
)
33 util
.rename_episode_file(episode
, new_filename
)
35 def make_filename(self
, current_filename
, title
):
36 dirname
= os
.path
.dirname(current_filename
)
37 filename
= os
.path
.basename(current_filename
)
38 basename
, ext
= os
.path
.splitext(filename
)
40 new_basename
= util
.sanitize_encoding(title
) + ext
41 new_filename
= os
.path
.join(dirname
, new_basename
)
43 if new_filename
== current_filename
:
44 return current_filename
46 for filename
in util
.generate_names(new_filename
):
47 # Avoid filename collisions
48 if not os
.path
.exists(filename
):