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