#!/usr/bin/python
"""
Blogatex
(C) 2002 Víctor R. Ruiz <rvr@infoastro.com>
blogalia.py - Programa para editar historias vía metaWeblog API
"""
import xmlrpclib
import re
class blogalia:
""" Clase para acceder a Blogalia. Utiliza los interfaces
Blogger y metaWeblog API, tal y como están comentadas
en desarrollo.blogalia.com
Modelo: Blogger/metaWeblog API
--> Vista: blogalia.py
Controlador: -
"""
def __init__(self, usuario, clave, montaje = 'http://www.blogalia.com/RPC.php'):
""" Constructor de la clase. No se comprueba si el usuario y la clave son correctos
"""
self.usuario = usuario
self.clave = clave
self.montaje = montaje
self.servidor = xmlrpclib.Server(self.montaje)
self.leerBitacoras()
def leerBitacoras(self):
""" Devuelve un diccionario con las bitácoras del usuario """
bitacoras = self.servidor.blogger.getUsersBlogs('APPKEY', self.usuario, self.clave)
self.bitacoras = bitacoras
return bitacoras
def leerHistorias(self, bitacoraId, numHistorias = 20):
""" Devuelve una lista con las numHistorias de la bitácora bitacoraId """
historias = self.servidor.blogger.getRecentPosts('APPKEY', bitacoraId, self.usuario, self.clave, numHistorias)
return historias
def crearHistoria(self, bitacoraId, historia):
""" Crea una historia en la bitácora bitacoraId. historia es un
diccionario que debe contener al menos las claves "title" y
"description"
"""
params = historia.keys()
if (("title" in params) and ("description" in params)):
return self.servidor.metaWeblog.newPost(bitacoraId, self.usuario, self.clave, historia, 1)
else:
return 0
def editarHistoria(self, historiaId, historia):
""" Edita la historia historiaId y cambia los contenidos por los
del diccionario historia, que debe contener al menos las claves
"title" y "description"
"""
params = historia.keys()
if (("title" in params) and ("description" in params)):
return self.servidor.metaWeblog.editPost(historiaId, self.usuario, self.clave, historia, 1)
else:
return 0
def borrarHistoria(self, historiaId):
""" Borra la historia historiaId """
return self.servidor.blogger.deletePost('APPKEY', historiaId, self.usuario, self.clave, 1)
def blogatex(self, texto):
""" Convierte un blogatex en HTML """
reg = re.compile("\[\{(.*?) (http\:\/\/.*|ftp\:\/\/.*|mailto\:.*?)\}\]")
texto = reg.sub("", texto)
reg = re.compile("/\[\{(http\:\/\/.*?|ftp\:\/\/.*?|mailto\:.*?)\}\]/")
texto = reg.sub("", texto)
reg = re.compile("/\[\*(.*?)\*\]/")
texto = reg.sub("<b></b>", texto)
reg = re.compile("/\[\/(.*?)\/\]/")
texto = reg.sub("<i></i>", texto)
reg = re.compile("/\[\_(.*?)\_\]/")
texto = reg.sub("<u></u>", texto)
reg = re.compile("/\[\((.*?)\)\][\s\n\r]*/")
texto = reg.sub("<h4></h4>", texto)
reg = re.compile("/\n([\r]{0,1})/U")
texto = reg.sub("<br />\n", texto)
return texto
def main():
blog = blogalia('usuario', 'clave')
print blog.leerBitacoras()
print blog.leerHistorias(5, 2)
historia = {'title' : 'Prueba', 'description': 'Probando, 1, 2, 3'}
print blog.crearHistoria(2, historia)
historia = {'title' : 'Prueba', 'description': 'Probando, 1, 2, 3, 4'}
print blog.editarHistoria(68, historia)
print blog.borrarHistoria(68)
if __name__ == '__main__':
main()