On Mon, 2008-08-04 at 01:36 +0600, Leonid Ponomarev wrote:
> I've adopted my first patch in this thread to current codebase, so we
> can try one more time!
I've cleaned up the patch a bit. I think you forgot to include sync.py
in the diff, because the function "device.available_space" does not
exist for me. Can you please send it to me?
Updated patch attached.
Thanks,
Thomas
diff --git a/bin/gpodder b/bin/gpodder
index 5bea945..66ef36f 100755
--- a/bin/gpodder
+++ b/bin/gpodder
@@ -101,6 +101,9 @@ def main( argv = sys.argv):
parser.add_option("-d", "--delete", dest="delete",
help=_("Delete channel specified by URL"), metavar="URL")
+ parser.add_option("-S", "--stats",
+ action="store_true", dest="stats", default=False,
+ help=_("Get sync statistics"))
(options, args) = parser.parse_args(argv)
@@ -135,6 +138,8 @@ def main( argv = sys.argv):
console.add_channel( options.add)
elif options.delete:
console.del_channel( options.delete)
+ elif options.stats:
+ console.sync_stats()
else:
#default run gui
from gpodder import gui
diff --git a/src/gpodder/console.py b/src/gpodder/console.py
index c18a0cc..568a641 100644
--- a/src/gpodder/console.py
+++ b/src/gpodder/console.py
@@ -20,6 +20,7 @@
from gpodder import util
from gpodder import download
from gpodder import sync
+from gpodder.libgpodder import gl
from gpodder.liblogger import msg
from libpodcasts import load_channels
@@ -136,3 +137,32 @@ def sync_device():
msg('error', _('Cannot close device.'))
return False
+def sync_stats():
+ size = 0
+ device = sync.open_device()
+ if device is None:
+ msg('error', _('No device configured. Please use the GUI.'))
+ return False
+
+ for channel in load_channels():
+ if not channel.sync_to_devices:
+ continue
+ for episode in channel.get_all_episodes():
+ if episode.was_downloaded(and_exists=True):
+ episode.calculate_filesize()
+ size += episode.length
+ msg('info', _('Free space on device %s: %s') % (gl.get_device_name(), gl.format_filesize(device.available_space())))
+ msg('info', _('Size of episodes to sync: %s') % gl.format_filesize(size))
+
+ difference = device.available_space() - size
+ if difference < 0:
+ msg('error', _('Need to free at least %s more') % gl.format_filesize(abs(difference)))
+ return False
+ else:
+ msg('info', _('Free space after sync: %s') % gl.format_filesize(abs(difference)))
+
+ if not device.close():
+ msg('error', _('Cannot close device.'))
+ return False
+
+ return True
_______________________________________________
gpodder-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/gpodder-devel