Change Listing.getFeedUpdateTime to return a relative time string.
authorNeal H. Walfield <neal@walfield.org>
Tue, 6 Sep 2011 11:06:43 +0000 (13:06 +0200)
committerNeal H. Walfield <neal@walfield.org>
Tue, 6 Sep 2011 11:06:43 +0000 (13:06 +0200)
src/rss_sqlite.py

index 75c0f34..6551d93 100644 (file)
@@ -965,9 +965,37 @@ class Listing:
     def getFeedUpdateTime(self, key):
         update_time = self.db.execute(
             "SELECT updateTime FROM feeds WHERE id=?;", (key,)).fetchone()[0]
+
         if not update_time:
             return "Never"
-        return time.ctime(update_time)
+
+        delta = time.time() - update_time
+
+        delta_hours = delta / (60. * 60.)
+        if delta_hours < .1:
+            return "A few minutes ago"
+        if delta_hours < .75:
+            return "Less than an hour ago"
+        if delta_hours < 1.5:
+            return "About an hour ago"
+        if delta_hours < 18:
+            return "About %d hours ago" % (int(delta_hours + 0.5),)
+
+        delta_days = delta_hours / 24.
+        if delta_days < 1.5:
+            return "About a day ago"
+        if delta_days < 18:
+            return "%d days ago" % (int(delta_days + 0.5),)
+
+        delta_weeks = delta_days / 7.
+        if delta_weeks <= 8:
+            return "%d weeks ago" % int(delta_weeks + 0.5)
+
+        delta_months = delta_days / 30.
+        if delta_months <= 30:
+            return "%d months ago" % int(delta_months + 0.5)
+
+        return time.strftime("%x", time.gmtime(update_time))
         
     def getFeedNumberOfUnreadItems(self, key):
         return self.db.execute("SELECT unread FROM feeds WHERE id=?;", (key,)).fetchone()[0]