From cf0cba98fe2bd985af3b44820aa68e5898cfb309 Mon Sep 17 00:00:00 2001
From: phoenix <phoenix@pxhome.(none)>
Date: Mon, 4 Aug 2008 01:35:12 +0600
Subject: [PATCH] Remember the --stats!
 Introducing forgotten --stats CLI option

---
 bin/gpodder            |    5 +++++
 doc/man/gpodder.1      |    5 ++++-
 src/gpodder/console.py |   29 +++++++++++++++++++++++++++++
 3 files changed, 38 insertions(+), 1 deletions(-)

diff --git a/bin/gpodder b/bin/gpodder
index 4ae3474..28f5f72 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/doc/man/gpodder.1 b/doc/man/gpodder.1
index 04b1836..6c370ea 100644
--- a/doc/man/gpodder.1
+++ b/doc/man/gpodder.1
@@ -1,5 +1,5 @@
 .\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.36.
-.TH GPODDER "1" "July 2008" "gpodder 0.12.0" "User Commands"
+.TH GPODDER "1" "August 2008" "gpodder 0.12.1+svn" "User Commands"
 .SH NAME
 gpodder \- A Media aggregator and Podcast catcher
 .SH SYNOPSIS
@@ -45,3 +45,6 @@ Subscribe to channel from URL
 .TP
 \fB\-d\fR URL, \fB\-\-delete\fR=\fIURL\fR
 Delete channel specified by URL
+.TP
+\fB\-S\fR, \fB\-\-stats\fR
+Get sync statistics
diff --git a/src/gpodder/console.py b/src/gpodder/console.py
index c18a0cc..6263073 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,31 @@ 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') % (device.destination,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
-- 
1.5.6.1

