commit 429e8d81790fdddcf3aa608fa4e4b20b7a4939dd
Author: dsorber <david.sorber@gmail.com>
Date:   Sun Feb 3 11:37:25 2013 -0500

    Adding some old code starting with bashquote.

diff --git a/bashquote/bashquote b/bashquote/bashquote
new file mode 100644
index 0000000..c5a6273
--- /dev/null
+++ b/bashquote/bashquote
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+
+import cPickle
+import os
+import random
+import sys
+
+BQ_DIR = '/Users/dsorber/.bashquote'
+BQ_CACHE = '/Users/dsorber/.bashquote/bq_cache'
+
+def main():
+
+    # Create the cache file, or open it if it already exists    
+    if not os.path.exists(BQ_CACHE):
+        print 'bashquote cache does not exist!'
+        sys.exit()
+    else :
+        cache = open(BQ_CACHE, 'r')
+        quotes = cPickle.load(cache)
+        cache.close()
+
+    # Choose a random quote from the list
+    num_quotes = len(quotes)
+    if num_quotes == 1:
+        # Repopulate the list manually if there is only one quote remaining
+        print 'Low on quotes, grabbing some more...',
+        os.system('bashquote_populate')
+        print 'Done'
+    index = random.randint(0, num_quotes - 1)
+    quote = quotes.pop(index)
+    
+    # Print it out
+    print 'bashquote #%s ------ %s' % (quote[0], quote[1])
+    print quote[2]
+
+    # Re-store the remaining quotes and exit
+    cache = open(BQ_CACHE, 'w')
+    cPickle.dump(quotes, cache, -1)
+    cache.close()
+    sys.exit()
+
+if __name__=="__main__":
+    main()
\ No newline at end of file
diff --git a/bashquote/bashquote_populate b/bashquote/bashquote_populate
new file mode 100644
index 0000000..a9e0715
--- /dev/null
+++ b/bashquote/bashquote_populate
@@ -0,0 +1,71 @@
+#!/usr/bin/env python
+
+import cPickle
+import os
+import re
+import sys
+import urllib 
+
+BQ_DIR = '/Users/dsorber/.bashquote'
+BQ_CACHE = '/Users/dsorber/.bashquote/bq_cache'
+
+def main():
+    
+    # Create a list to hold the quotes
+    quotes = []
+
+    # Create the bashquote directory if it does not exist
+    if not os.path.exists(BQ_DIR):
+        print 'Creating bashquote directory...',
+        os.mkdir(BQ_DIR)
+        print 'Done'
+        
+    # Create the cache file, or open it if it already exists    
+    if not os.path.exists(BQ_CACHE):
+        print 'Creating bashquote cache...',
+        cache = open(BQ_CACHE, 'w')
+        cache.close()
+        print 'Done'
+    else:
+        cache = open(BQ_CACHE, 'r')
+        quotes = cPickle.load(cache)
+        cache.close()
+
+        
+    # Only grab fresh quotes if there are less than 50 in the cache    
+    if not len(quotes) < 50:
+        print 'plenty left'
+        sys.exit()
+
+	# Goto to the random >0 bash quotes page
+    listpage = urllib.urlopen("http://www.bash.org/?random1")
+    listpagetext = listpage.read()
+
+    quote_regex = '<p class="quote".+<b>#(\d+)</b>.+</a>\((\d+)\)<a .+<p class="qt">([\s\S]+?)</p>'
+
+    quotes = []
+    for quote_match in re.finditer(quote_regex, listpagetext):
+        quotes.append((quote_match.group(1),
+	                   quote_match.group(2),
+	                   unhtmlify(quote_match.group(3))))
+	
+	# Store the list of quotes in the cache file, using the highest protocol
+    cache = open(BQ_CACHE, 'w')
+    cPickle.dump(quotes, cache, -1)
+    cache.close()
+    sys.exit()
+
+
+def unhtmlify(quote):
+    # Filter out that HTML bullshit
+    return quote.replace("&lt;", "<").replace("\'&lt;", "<")\
+                .replace("&gt;", ">").replace("&quot;", "\"")\
+                .replace("&nbsp;", " ").replace("\\'", "'")\
+                .replace("\\x92", "'").replace("<br />\\r\\n', '", "\n")\
+                .replace("<br />\\r\\n\", '", "\n").replace("&amp;", "&")\
+                .replace("<br />\\r\\n', \"", "\n")\
+                .replace("<br />\\r\\n\", \"", "\n").replace("<br />", "")
+
+
+if __name__=="__main__":
+    main()
