1# Copies cover art to a file based device
2#
3# (c) 2014-04-10 Alex Mayer <magictrick4906@aim.com>
4# Released under the same license terms as gPodder itself.
5
6# Use a logger for debug output - this will be managed by gPodder
7import logging
8import os
9import shutil
10
11import gpodder
12
13logger = logging.getLogger(__name__)
14_ = gpodder.gettext
15
16
17# Provide some metadata that will be displayed in the gPodder GUI
18__title__ = _('Rockbox Cover Art Sync')
19__description__ = _('Copy Cover Art To Rockboxed Media Player')
20__only_for__ = 'gtk, cli'
21__authors__ = 'Alex Mayer <magictrick4906@aim.com>'
22
23DefaultConfig = {
24    "art_name_on_device": "cover.jpg"  # The file name that will be used on the device for cover art
25}
26
27
28class gPodderExtension:
29
30    def __init__(self, container):
31        self.container = container
32        self.config = self.container.config
33
34    def on_episode_synced(self, device, episode):
35        # check that we have the functions we need
36        if hasattr(device, 'get_episode_folder_on_device'):
37            # get the file and folder names we need
38            episode_folder = os.path.dirname(episode.local_filename(False))
39            device_folder = device.get_episode_folder_on_device(episode)
40            episode_art = os.path.join(episode_folder, "folder.jpg")
41            device_art = os.path.join(device_folder, self.config.art_name_on_device)
42            # make sure we have art to copy and it doesnt already exist
43            if os.path.isfile(episode_art) and not os.path.isfile(device_art):
44                logger.info('Syncing cover art for %s', episode.channel.title)
45                # copy and rename art
46                shutil.copy(episode_art, device_art)
47