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:
- browse/sort-by-votes
- tagged/163/grep
- matching/ssh/c3No
Format is one of the following:
Also Read: Java Menu Driven Program for String Operations
- plaintext
- json
- rss
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
- rss
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() def sortByVotes(): Banner('Sort By Votes') url = "http://www.commandlinefu.com/commands/browse/sort-by-votes/json" request = urllib2.Request(url) response = json.load(urllib2.urlopen(request)) #print json.dumps(response,indent=2) for c in response: print "-" * 60 print c['command'] def sortByVotesToday(): Banner('Printing All commands the last day (Sort By Votes) ') url = "http://www.commandlinefu.com/commands/browse/last-day/sort-by-votes/json" request = urllib2.Request(url) response = json.load(urllib2.urlopen(request)) for c in response: print "-" * 60 print c['command'] def sortByVotesWeek(): Banner('Printing All commands the last week (Sort By Votes) ') url = "http://www.commandlinefu.com/commands/browse/last-week/sort-by-votes/json" request = urllib2.Request(url) response = json.load(urllib2.urlopen(request)) for c in response: print "-" * 60 print c['command'] def sortByVotesMonth(): Banner('Printing: All commands from the last months (Sorted By Votes) ') url = "http://www.commandlinefu.com/commands/browse/last-month/sort-by-votes/json" request = urllib2.Request(url) response = json.load(urllib2.urlopen(request)) 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) response = json.load(urllib2.urlopen(request)) for c in response: print "-" * 60 print c['command'] print """ 1. Sort By Votes (All time) 2. Sort By Votes (Today) 3. Sort by Votes (Week) 4. Sort by Votes (Month) 5. Search for a command Press enter to quit """ while True: answer = raw_input("What would you like to do? ") if answer == "": sys.exit() elif answer == "1": sortByVotes() elif answer == "2": print sortByVotesToday() elif answer == "3": print sortByVotesWeek() elif answer == "4": print sortByVotesMonth() elif answer == "5": 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) 2. Sort By Votes (Today) 3. Sort by Votes (Week) 4. Sort by Votes (Month) 5. Search for a command Press enter to quit What would you like to do? ... ...