### Overview

One of the best methods to practice Python coding is to study some code and try them out yourself. By doing a lot of code exercises, you will get a much better understanding of what it really does.

In other words, learning by doing. To help you improve your Python coding skill, I’ve created a program below which is using the API from CommandLineFu.com

### CommandLineFu API

A common first step when you want to use a Web-based services is to see if they have an API.

Luckily for me, Commandlinefu.com provides one and can be found here:

“The content of commandlinefu.com is available in a variety of different formats for you to do what you like with. Any page which contains a list of commands (such as the listings by tag, function or user) can be returned in a format of your choice through a simple change to the request URL.”

The example URL that they provide is:

where: command-set is the URL component which specifies which set of commands to return.

Possible values are:

• tagged/163/grep
• matching/ssh/c3No

Format is one of the following:

• plaintext
• json

I prefer using the json format and that is also what I’m using in the program below.

## Creating the “Command Line Search Tool”

I think we have all the API information we need, so let’s get to it. The program is well documented and should be straightforward.

Open up a text editor, copy & paste the code below. Save the file as: “commandlinefu.py” and exit the editor.

• plaintext
• json

I prefer using the json format and that is also what I’m using in the program below.

### Creating the “Command Line Search Tool”

I think we have all the API information we need, so let’s get to it. The program is well documented and should be straightforward.

Open up a text editor, copy & paste the code below. Save the file as: “commandlinefu.py” and exit the editor.

#!/usr/bin/env python27
import urllib2
import base64
import json
import os
import sys
import re

os.system("clear")
print "-" * 80
print "Command Line Search Tool"
print "-" * 80

def Banner(text):
print "=" * 70
print text
print "=" * 70
sys.stdout.flush()

request = urllib2.Request(url)
#print json.dumps(response,indent=2)
for c in response:
print "-" * 60
print c['command']

Banner('Printing All commands the last day (Sort By Votes) ')
request = urllib2.Request(url)
for c in response:
print "-" * 60
print c['command']

Banner('Printing All commands the last week (Sort By Votes) ')
request = urllib2.Request(url)
for c in response:
print "-" * 60
print c['command']

Banner('Printing: All commands from the last months (Sorted By Votes) ')
request = urllib2.Request(url)
for c in response:
print "-" * 60
print c['command']

def sortByMatch():
#import base64
Banner("Sort By Match")
match = raw_input("Please enter a search command: ")
bestmatch = re.compile(r' ')
search = bestmatch.sub('+', match)
b64_encoded = base64.b64encode(search)
url = "http://www.commandlinefu.com/commands/matching/" + search + "/" + b64_encoded + "/json"
request = urllib2.Request(url)
for c in response:
print "-" * 60
print c['command']

print """
1. Sort By Votes (All time)
5. Search for a command

Press enter to quit
"""

while True:
answer = raw_input("What would you like to do? ")

sys.exit()

print sortByMatch()

else:
print "Not a valid choice"

When you run the program, you will be presented with a menu in which you can make your choices.

--------------------------------------------------------------------------------
Command Line Search Tool
--------------------------------------------------------------------------------

1. Sort By Votes (All time)
...