winfreed.py: sort packages by name before processing
[winfreed.git] / winfreed.py
index 6051d24..c49de16 100755 (executable)
@@ -2,7 +2,7 @@
 #
 # winfreed - download a selection of Free Software for MS Windows.
 #
-# Copyright (C) 2011  Antonio Ospite <ospite@studenti.unina.it>
+# Copyright (C) 2011-2014  Antonio Ospite <ao2@ao2.it>
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -24,14 +24,12 @@ import ConfigParser
 import urllib2
 from progressbar import Bar, ETA, FileTransferSpeed, Percentage, ProgressBar
 
-# TODO:
-#   - support win64
-
-# TODO make OUTPUT_DIR and LANGCODE configurable from command line
 OUTPUT_DIR = 'downloads'
 LANGCODE = 'en-US'
 
-# TODO PKG_DIR in $(datadir) or something like that for python projects
+# One of i386 or x64
+ARCHITECTURE = 'x64'
+
 PKG_DIR = 'pkgs'
 CHUNK_SIZE = 8192
 
@@ -51,7 +49,7 @@ def get_pkg(pkg_file):
 
 
 def process_all(path, cb):
-    listing = glob.glob(os.path.join(path, '*.ini'))
+    listing = sorted(glob.glob(os.path.join(path, '*.ini')))
     for pkg_file in listing:
         pkg = get_pkg(pkg_file)
         if not pkg:
@@ -63,6 +61,8 @@ def process_all(path, cb):
 def show(pkg):
     print 'Package:  ', pkg['package_name']
     print 'Program:  ', pkg['name']
+    if pkg.has_key('version'):
+        print 'Version:  ', pkg['version']
     print 'Homepage: ', pkg['homepage']
     print
 
@@ -72,9 +72,9 @@ def download_file(src_url, dest_dir):
         response = urllib2.urlopen(src_url)
     except Exception, e:
         if hasattr(e, 'reason'):
-            print 'Download failed. Reason: ', e.reason
+            print 'Downloading from', src_url, 'failed. Reason: ', e.reason
         elif hasattr(e, 'code'):
-            print 'Download failed. Error code: ', e.code
+            print 'Downloading from', src_url, 'failed. Error code: ', e.code
         return
 
     # get the final URL after possible redirect have been followed
@@ -130,7 +130,10 @@ def download_file(src_url, dest_dir):
 
 
 def download(pkg):
-    pkg_url = pkg['url']
+    try:
+        pkg_url = pkg['url_' + ARCHITECTURE]
+    except KeyError:
+        pkg_url = pkg['url']
     download_file(pkg_url, OUTPUT_DIR)