support for mp3 player cleanup
git-svn-id: svn://svn.berlios.de/gpodder/trunk@253 b0d088ad-0a06-0410-aad2-9ed5178a7e87
This commit is contained in:
parent
c05fe187d4
commit
bbd3128da2
|
@ -1,3 +1,9 @@
|
|||
Sat, 3 Mar 2007 14:08:18 +0100 <thp@perli.net>
|
||||
* src/gpodder/libgpodder.py: Added can_write_directory() function
|
||||
* src/gpodder/libipodsync.py: Add support for MP3 player cleanup
|
||||
* src/gpodder/gpodder.py: Add support for MP3 player cleanup
|
||||
* bin/gpodder: version + svn release date push
|
||||
|
||||
Tue, 27 Feb 2007 21:11:47 +0100 <thp@perli.net>
|
||||
* data/po/es.po: Updated Spanish translation by
|
||||
José Luis Fustel (dr_psy terra.es)
|
||||
|
|
|
@ -26,8 +26,8 @@
|
|||
# PLEASE DO NOT CHANGE FORMAT OF __version__ LINE (setup.py reads this)
|
||||
|
||||
__author__ = "Thomas Perl <thp@perli.net>"
|
||||
__version__ = "0.8.9+svn20070227"
|
||||
__date__ = "2007-02-27"
|
||||
__version__ = "0.8.9+svn20070303"
|
||||
__date__ = "2007-03-03"
|
||||
__copyright__ = "Copyright (c) 2005-2007 %s. All rights reserved." % __author__
|
||||
__licence__ = "GPL"
|
||||
|
||||
|
|
|
@ -354,6 +354,13 @@ class Gpodder(SimpleGladeApp):
|
|||
def sync_to_fs_proc( self, sync_win):
|
||||
gpl = gPodderLib()
|
||||
gpl.loadConfig()
|
||||
|
||||
if not gpl.can_write_directory( gpl.mp3_player_folder):
|
||||
gobject.idle_add( self.showMessage, _('Cannot write to %s.\nMake sure your MP3 player is connected.') % ( gpl.mp3_player_folder, ))
|
||||
if sync_win.close:
|
||||
sync_win.close()
|
||||
return False
|
||||
|
||||
sync = gPodder_FSSync( destination = gpl.mp3_player_folder, callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
|
||||
for channel in self.ldb.channel_list:
|
||||
|
@ -374,6 +381,21 @@ class Gpodder(SimpleGladeApp):
|
|||
sync.clean_playlist()
|
||||
sync.close()
|
||||
|
||||
def fs_cleanup_proc( self, sync_win):
|
||||
gpl = gPodderLib()
|
||||
gpl.loadConfig()
|
||||
|
||||
if not gpl.can_write_directory( gpl.mp3_player_folder):
|
||||
gobject.idle_add( self.showMessage, _('Cannot write to %s.\nMake sure your MP3 player is connected.') % ( gpl.mp3_player_folder, ))
|
||||
if sync_win.close:
|
||||
sync_win.close()
|
||||
return False
|
||||
|
||||
sync = gPodder_FSSync( destination = gpl.mp3_player_folder, callback_status = sync_win.set_status, callback_progress = sync_win.set_progress, callback_done = sync_win.close)
|
||||
|
||||
sync.clean_playlist()
|
||||
sync.close()
|
||||
|
||||
def update_feed_cache_callback( self, progressbar, position, count):
|
||||
try:
|
||||
progressbar.set_text( _("Updating: %s") % ( self.channels[position].title, ))
|
||||
|
@ -526,19 +548,24 @@ class Gpodder(SimpleGladeApp):
|
|||
#-- Gpodder.on_cleanup_ipod_activate {
|
||||
def on_cleanup_ipod_activate(self, widget, *args):
|
||||
gl = gPodderLib()
|
||||
target_function = None
|
||||
|
||||
if gl.device_type == 'none':
|
||||
self.showMessage( _('Configure your device in the preferences dialog first.'))
|
||||
elif gl.device_type == 'ipod':
|
||||
if not self.showConfirmation( _('Do you really want to truncate the Podcasts playlist on your iPod?')):
|
||||
return
|
||||
if self.showConfirmation( _('Do you really want to truncate the Podcasts playlist on your iPod?')):
|
||||
target_function = self.ipod_cleanup_proc
|
||||
elif gl.device_type == 'filesystem':
|
||||
if self.showConfirmation( _('Do you really want to delete all Podcasts from your MP3 player?')):
|
||||
target_function = self.fs_cleanup_proc
|
||||
|
||||
if target_function:
|
||||
sync_win = Gpoddersync()
|
||||
while gtk.events_pending():
|
||||
gtk.main_iteration( False)
|
||||
args = ( sync_win, )
|
||||
thread = Thread( target = self.ipod_cleanup_proc, args = args)
|
||||
thread = Thread( target = target_function, args = args)
|
||||
thread.start()
|
||||
elif gl.device_type == 'filesystem':
|
||||
self.showMessage( _('Cleanup of %s currently not supported.') % ( gl.mp3_player_folder, ))
|
||||
#-- Gpodder.on_cleanup_ipod_activate }
|
||||
|
||||
#-- Gpodder.on_itemPreferences_activate {
|
||||
|
|
|
@ -56,6 +56,8 @@ from os import environ
|
|||
from os import system
|
||||
from os import unlink
|
||||
from os import listdir
|
||||
from os import access
|
||||
from os import W_OK
|
||||
from glob import glob
|
||||
|
||||
# for the desktop symlink stuff:
|
||||
|
@ -253,6 +255,9 @@ class gPodderLibClass( object):
|
|||
def history_mark_downloaded( self, url):
|
||||
self.__download_history.mark_downloaded( url)
|
||||
|
||||
def can_write_directory( self, directory):
|
||||
return isdir( directory) and access( directory, W_OK)
|
||||
|
||||
def history_is_downloaded( self, url):
|
||||
return (url in self.__download_history)
|
||||
|
||||
|
|
|
@ -84,6 +84,7 @@ except:
|
|||
|
||||
import os
|
||||
import os.path
|
||||
import glob
|
||||
import shutil
|
||||
import sys
|
||||
import time
|
||||
|
@ -435,4 +436,17 @@ class gPodder_FSSync( gPodderSyncMethod):
|
|||
os.system('sync')
|
||||
except:
|
||||
pass
|
||||
|
||||
def clean_playlist( self):
|
||||
folders = glob.glob( os.path.join( self.destination, '*'))
|
||||
for folder in range( len( folders)):
|
||||
self.set_progress( folder+1, len( folders))
|
||||
self.set_status( channel = os.path.basename( folders[folder]), progressbar_text = _('%d of %d') % ( folder+1, len(folders), ))
|
||||
log( 'deleting: %s', folders[folder])
|
||||
shutil.rmtree( folders[folder])
|
||||
try:
|
||||
os.system('sync')
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
|
|
Loading…
Reference in a new issue