Poco a poco voy aprendiendo más cositas de Python. La verdad es que sigo impresionado por la facilidad y rapidez de desarrollo en este lenguaje. Me gusta mucho la cantidad de clases y paquetes ya existentes que facilitan las tareas tediosas. Aquí tenéis la documentación oficial de las librerías de clases existentes en Python.
Como pretendo seguir avanzando poco a poco en mi herramienta de gestión de blogs en modo texto, hoy he decidido que, para no tener que escribir el usuario, la contraseña y la dirección de nuestro wordpress cada vez, ésta podría estar guardada en un fichero de configuración simple en $HOME/.wp.py.conf (por ejemplo). De esta forma podríamos tener bloques como este en la configuración:
[BlogName]
User=foo
Pass=bar
Server=http://whatever.com
[BlogName2]
User=foo2
Pass=bar2
Server2=http://otherwordpress.org
...
Y para postear será tan fácil como hacer algo así:
./wp.py --blog=”BlogName” –title=”lo que quieras” --post=”fooo... bar...”
Para esto he encontrado la clase ConfigParser. Nos permite parsear este tipo de ficheros de una manera muy simple. He escrito este pequeño programita que muestra un ejemplo:
#!/usr/bin/python
import os
import sys
import ConfigParser
class configFile:
"""
Simple Configurator File Parser.
Developed for use with my WordPress (wp.py) blog manager application
The config file must be in $HOME/.wp.conf and must have this formar:
[BlogName]
User=foo
Pass=bar
Server=http://whatever.com
[BlogName2]
...
And so on
Available Methods:
getUSer -> returns the User field of a section
getPass -> returns the Pass field of a section
getServer -> returns the Server field of a section
"""
_confFile = ""
_section = ""
def __init__(self, section):
"""
Class constructor.
Params :
section : a string with the section name (blog name) of the conf file
"""
path = os.path.expanduser("~")
self._confFile = ConfigParser.ConfigParser();
try:
self._confFile.read(path + "/.wp.py.conf")
except err:
print "Error: " + err.__str__()
self._section = section
def getUser(self):
"""
returns the User field of a section
"""
user = ""
try:
user = self._confFile.get(self._section, "User")
except ConfigParser.NoSectionError:
print "Section " + self._section + " doesn't exists in conf file"
except err:
print "Error: " + err.__str__()
return user
def getPass(self):
"""
returns the Pass field of a section
"""
passwd = ""
try:
passwd = self._confFile.get(self._section, "Pass")
except ConfigParser.NoSectionError:
print "Section " + self._section + " doesn't exists in conf file"
except err:
print "Error: " + err.__str__()
return passwd
def getServer(self):
"""
returns the Server field of a section
"""
server = ""
try:
server = self._confFile.get(self._section, "Server")
except ConfigParser.NoSectionError:
print "Section " + self._section + " doesn't exists in conf file"
except err:
print "Error: " + err.__str__()
return server
def main():
conf = configFile(sys.argv[1])
print conf.getUser()
print conf.getPass()
print conf.getServer()
if __name__ == "__main__":
main()
Bastante fácil, ¿verdad? En cuanto integre esto con mi wp.py quedará de miedo. Además he añadido la opción a mi programita de que el cuerpo del post lo lea de la entrada estándar si yo quiero (stdin) así que en breve podré postear salidas de comandos directamente... algo como esto:
ps | ./wp.py –blog=”miblog” --title=”un ps” --post=”stdin”
Moooolaaaaa.... Os dejo aquí el pequeño ejemplo.
Saludos
Estas on fire eh? Cuando lo tengas completo cuelga el codigo que le echare un vistazo!
Saludos!
Escrito por Sergio a las Febrero 6, 2008 04:16 PM