Welcome, guest | Sign In | My Account | Store | Cart
import datetime, os, re, sys, urllib
fh = 'http://www.filehippo.com'
exts = ['.exe', '.msi', '.iso', '.zip']

def make_html(url): return urllib.urlopen(url).read()
  
def name_generator(name, ver):
    if name.endswith('/') or name.find('$') == -1: 
        final_name = name
    else: 
        final_name = name_replace(name, ver)
        while '$' in final_name: 
            final_name = name_replace(final_name, ver)
    if 'filehippo' in name:
        a = res('\<a.*?(Latest Version).*?span\>', make_html(name), 0)
        b = res('href=\"(.*?)\"', a, 1)
        final_name = fh + res('url\=(.*?)\"', make_html(fh + b), 1)
    return final_name

def name_replace(name, ver):
    name_rep = res('\$[^a-zA-Z]*\$', name, 0)
    delim_ver = ver.translate(None, '_.-"')
    name_list, name_str, c = [], '', 0
    for s in range(len(name_rep)):
        if name_rep[s] == '$':
            name_list.append(delim_ver[c])
            c += 1
        else: 
            name_list.append(name_rep[s])
    for s in range(len(name_list)): 
        name_str += name_list[s]
    return name.replace(name_rep, name_str)

def build_dict(filenames):
    dict, files = {}, [s for s in filenames for x in exts if s.endswith(x)]
    for s in files:
        dict[res('(.*)\-', s, 1)] = res('-([\d\.]*)\.\w+', s, 1)
    return dict

def res(regex, string, x):
    a = re.search(regex, string)
    try: 
        return a.group() if x == 0 else a.group(x)
    except AttributeError: 
        return ''

def main():
    print datetime.datetime.now().strftime("%m-%d-%Y")
    local_files = os.listdir(sys.argv[2])
    big_list = [s.split() for s in open(sys.argv[1], 'rU').read().split('\n') 
        if s != '' and not s.startswith('#')]
    final_list, url_list, final_dict, url_dict = [], [], {}, {}
    for list in big_list: 
        ver = res(list[3], make_html(list[1]), 0)
        url, final = name_generator(list[2], ver), name_generator(list[0], ver)
        print url
        url_list.append(url)
        final_list.append(final)
        name = res('(.*)\-', final, 1)
        url_dict[name], final_dict[name] = url, final
    local_dict, update_dict = build_dict(local_files), build_dict(final_list)
    c_up, c_new = 0,0
    for key in update_dict:
        down_loc = sys.argv[2] + final_dict[key]
        if key in local_dict:
            if local_dict[key] != update_dict[key]:
                c_up += 1
                print key
                del_var = key + '-' + local_dict[key]
                for s in local_files:
                    if s.find(del_var) != -1:
                        print '  Deleted', s
                        os.remove(sys.argv[2] + s)
              print '    Downloading', final_dict[key]
              urllib.urlretrieve(url_dict[key], down_loc)
        else:
            c_new += 1
            print key 
            print '  Downloading for first time!', '\n', '    Downloading', final_dict[key]
            urllib.urlretrieve(url_dict[key], down_loc)
    print
    if c_up == 1: 
        print '1 file updated.'
    else: 
        print c_up, 'files updated.'
    if c_new == 1: 
        print '1 new file.'
    else: 
        print c_new, 'new files.'
    print '', '\n'

main()

Diff to Previous Revision

--- revision 4 2012-07-27 20:53:51
+++ revision 5 2012-07-29 01:12:01
@@ -5,77 +5,88 @@
 def make_html(url): return urllib.urlopen(url).read()
   
 def name_generator(name, ver):
-  if name.endswith('/') or name.find('$') == -1: final_name = name
-  else: 
-    final_name = name_replace(name, ver)
-    while '$' in final_name: final_name = name_replace(final_name, ver)
-  if 'filehippo' in name:
-    a = res('\<a.*?(Latest Version).*?span\>', make_html(name), 0)
-    b = res('href=\"(.*?)\"', a, 1)
-    final_name = fh + res('url\=(.*?)\"', make_html(fh + b), 1)
-  return final_name
+    if name.endswith('/') or name.find('$') == -1: 
+        final_name = name
+    else: 
+        final_name = name_replace(name, ver)
+        while '$' in final_name: 
+            final_name = name_replace(final_name, ver)
+    if 'filehippo' in name:
+        a = res('\<a.*?(Latest Version).*?span\>', make_html(name), 0)
+        b = res('href=\"(.*?)\"', a, 1)
+        final_name = fh + res('url\=(.*?)\"', make_html(fh + b), 1)
+    return final_name
 
 def name_replace(name, ver):
-  name_rep = res('\$[^a-zA-Z]*\$', name, 0)
-  delim_ver = ver.replace('_', '').replace('.', '').replace('-', '').replace('"', '')
-  name_list, name_str, c = [], '', 0
-  for s in range(len(name_rep)):
-    if name_rep[s] == '$':
-      name_list.append(delim_ver[c])
-      c += 1
-    else: name_list.append(name_rep[s])
-  for s in range(len(name_list)): name_str += name_list[s]
-  return name.replace(name_rep, name_str)
+    name_rep = res('\$[^a-zA-Z]*\$', name, 0)
+    delim_ver = ver.translate(None, '_.-"')
+    name_list, name_str, c = [], '', 0
+    for s in range(len(name_rep)):
+        if name_rep[s] == '$':
+            name_list.append(delim_ver[c])
+            c += 1
+        else: 
+            name_list.append(name_rep[s])
+    for s in range(len(name_list)): 
+        name_str += name_list[s]
+    return name.replace(name_rep, name_str)
 
 def build_dict(filenames):
-  dict, files = {}, [s for s in filenames for x in exts if s.endswith(x)]
-  for s in files:
-    dict[res('(.*)\-', s, 1)] = res('-([\d\.]*)\.\w+', s, 1)
-  return dict
+    dict, files = {}, [s for s in filenames for x in exts if s.endswith(x)]
+    for s in files:
+        dict[res('(.*)\-', s, 1)] = res('-([\d\.]*)\.\w+', s, 1)
+    return dict
 
 def res(regex, string, x):
-  a = re.search(regex, string)
-  try: return a.group() if x == 0 else a.group(x)
-  except AttributeError: return ''
+    a = re.search(regex, string)
+    try: 
+        return a.group() if x == 0 else a.group(x)
+    except AttributeError: 
+        return ''
 
 def main():
-  print datetime.datetime.now().strftime("%m-%d-%Y")
-  local_files = os.listdir(sys.argv[2])
-  big_list = [s.split() for s in open(sys.argv[1], 'rU').read().split('\n') if s != '' and not s.startswith('#')]
-  final_list, url_list, final_dict, url_dict = [], [], {}, {}
-  for list in big_list: 
-    ver = res(list[3], make_html(list[1]), 0)
-    url, final = name_generator(list[2], ver), name_generator(list[0], ver)
-    print url
-    url_list.append(url)
-    final_list.append(final)
-    name = res('(.*)\-', final, 1)
-    url_dict[name], final_dict[name] = url, final
-  local_dict, update_dict = build_dict(local_files), build_dict(final_list)
-  c_up, c_new = 0,0
-  for key in update_dict:
-    down_loc = sys.argv[2] + final_dict[key]
-    if key in local_dict:
-      if local_dict[key] != update_dict[key]:
-        c_up += 1
-        print key
-        del_var = key + '-' + local_dict[key]
-        for s in local_files:
-          if s.find(del_var) != -1:
-            print '  Deleted', s
-            os.remove(sys.argv[2] + s)
-        print '    Downloading', final_dict[key]
-        urllib.urlretrieve(url_dict[key], down_loc)
-    else:
-      c_new += 1
-      print key
-      print '  Downloading for first time!', '\n', '    Downloading', final_dict[key]
-      urllib.urlretrieve(url_dict[key], down_loc)
-  print
-  if c_up == 1: print '1 file updated.'
-  else: print c_up, 'files updated.'
-  if c_new == 1: print '1 new file.'
-  else: print c_new, 'new files.'
-  print '', '\n'
+    print datetime.datetime.now().strftime("%m-%d-%Y")
+    local_files = os.listdir(sys.argv[2])
+    big_list = [s.split() for s in open(sys.argv[1], 'rU').read().split('\n') 
+        if s != '' and not s.startswith('#')]
+    final_list, url_list, final_dict, url_dict = [], [], {}, {}
+    for list in big_list: 
+        ver = res(list[3], make_html(list[1]), 0)
+        url, final = name_generator(list[2], ver), name_generator(list[0], ver)
+        print url
+        url_list.append(url)
+        final_list.append(final)
+        name = res('(.*)\-', final, 1)
+        url_dict[name], final_dict[name] = url, final
+    local_dict, update_dict = build_dict(local_files), build_dict(final_list)
+    c_up, c_new = 0,0
+    for key in update_dict:
+        down_loc = sys.argv[2] + final_dict[key]
+        if key in local_dict:
+            if local_dict[key] != update_dict[key]:
+                c_up += 1
+                print key
+                del_var = key + '-' + local_dict[key]
+                for s in local_files:
+                    if s.find(del_var) != -1:
+                        print '  Deleted', s
+                        os.remove(sys.argv[2] + s)
+              print '    Downloading', final_dict[key]
+              urllib.urlretrieve(url_dict[key], down_loc)
+        else:
+            c_new += 1
+            print key 
+            print '  Downloading for first time!', '\n', '    Downloading', final_dict[key]
+            urllib.urlretrieve(url_dict[key], down_loc)
+    print
+    if c_up == 1: 
+        print '1 file updated.'
+    else: 
+        print c_up, 'files updated.'
+    if c_new == 1: 
+        print '1 new file.'
+    else: 
+        print c_new, 'new files.'
+    print '', '\n'
 
 main()

History