Saltar al contenido

CommandLineFu con Python – PythonForBeginners.com

Visión general

Uno de los mejores métodos para practicar la codificación Python es estudiar algún código y probarlo usted mismo. Al hacer muchos ejercicios de código, obtendrá una mejor comprensión de lo que realmente hace.

En otras palabras, aprender haciendo. Para ayudarlo a mejorar su habilidad de codificación de Python, he creado un programa a continuación que usa la API de CommandLineFu.com

API CommandLineFu

Un primer paso común cuando desea utilizar un servicio basado en web es ver si tienen una API.

Afortunadamente para mí, Commandlinefu.com proporciona uno y se puede encontrar aquí:

“El contenido de commandlinefu.com está disponible en una variedad de formatos diferentes para que pueda hacer lo que quiera. Cualquier página que contenga una lista de comandos (como los listados por etiqueta, función o usuario) puede devolverse en el formato que elija mediante un simple cambio en la URL de la solicitud “.

La URL de ejemplo que proporcionan es:

http://www.commandlinefu.com/commands/’command-set’/’format’/

donde: command-set es el componente de URL que especifica qué conjunto de comandos devolver.

Los posibles valores son:

  • navegar / ordenar por votos
  • etiquetado / 163 / grep
  • coincidencia / ssh / c3No

El formato es uno de los siguientes:

Prefiero usar el formato json y eso también es lo que estoy usando en el programa a continuación.

Creación de la “Herramienta de búsqueda de línea de comandos”

Creo que tenemos toda la información de API que necesitamos, así que vayamos. El programa está bien documentado y debería ser sencillo.

Abra un editor de texto, copie y pegue el código a continuación. Guarde el archivo como: “commandlinefu.py” y salga del 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 + "https://www.pythonforbeginners.com/" + 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"

Cuando ejecute el programa, se le presentará un menú en el que puede hacer sus elecciones.


--------------------------------------------------------------------------------
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?
...
...

Entrenamiento de Python recomendado

Para el entrenamiento de Python, nuestra principal recomendación es DataCamp.