SlideShare una empresa de Scribd logo
Desarrollar un módulo para
                Visuse




                              José Luis López Pino
http://visuse.wordpress.com
¿Qué necesitamos para trabajar?

   Un editor para Python. Por ejemplo, Geany.
   Subversion: sistema de control de versiones.
   Python ~2.6.2.
   Elegir un buscador.
Empezamos
   Instalamos Python
       Ubuntu: sudo apt-get install python2.6
       Windows: descargar de python.org la 2.6.4.
   Alta en la forja de rediris.
   Descargamos el proyecto:
       svn checkout https://forja.rediris.es/svn/cusl4-visuse
   Los módulos los tenemos en
    trunk/visuse/modulos
       Añadimos la clase a classes.py
       Escribimos el módulo en Modulo_Nombre.py
Lo que hace un módulo:

   Obtenemos los datos del buscador (usando
    XML, JSON o lo que corresponda).
   Creamos una instancia de la clase por cada
    resultado.
   Creamos una lista de resultados.
   Mostramos la lista en pantalla para comprobar
    que no hay problemas.
Creando el módulo

   Creamos Modulo_NombreBuscador.py
   Contendrá la definición de dos clases:
       Clase NombreBuscador
               Heredará de Result y posiblemente de otro tipo
                 (como ImageResult)
               Habrá una instancia por cada resultado.
               Almacena los atributos relevantes del resultado.
       SearchNombreBuscador
               Heredará de SearchModule.
               Realiza todo el proceso de búsqueda.
   La configuración se mantiene en config.py
Clase NombreBuscador (I)

   Hereda de Result y posiblemente también de
    ImageResult:
    class Result():
        def __init__(self, name, url):
            self.name = name
            self.url = url
        def __str__(self):
            return self.name + "n" + self.url + "n"

    class ImageResult():
        def __init__(self, name, url, thumbnail):
            Result.__init__(self, name, url)
            self.thumbnail = thumbnail
        def __str__(self):
            return "%sn%sn%sn" % (self.name, self.url, self.thumbnail)
Clase NombreBuscador (II)

   Únicamente tiene un ”constructor”, que
    inicializa los parámetros necesarios:



class Wikicommons(Result, ImageResult):
   def __init__(self, name, url, thumbnail):
      ImageResult.__init__(self, name, url, thumbnail)
Clase SearchNombreBuscador (I)

   Hereda de SearchModule:
     class SearchModule():
         def __init__(self):
             self.resultList = []

         def __str__(self):
             str = ""
             for n in range(0, len(self.resultList)):
                 str += "===== %d =====n" % n
                 str += "%s" % self.resultList[n]
             return str

         def search(self, search_terms):
             return self.resultList

         def add(self, entry):
             pass
Clase SearchNombreBuscador (II)

   Obligatoriamente debe incluir un ”constructor”.
   En un principio basta con que éste llame al
    ”constructor” de la clase de la que hereda
    (ModuleSearch):
        def __init__(self):
           SearchModule.__init__(self)
SearchNombreBuscador (III)

   El método search se comunica con el
    buscador en el protocolo que corresponda
    (Json, XML, etc.) y obtiene el listado de
    resultados.
       def search(self, search_terms):
          gd_client = gdata.photos.service.PhotosService()

           photos = gd_client.SearchCommunityPhotos(search_terms,
    limit=config.picasa_limit)
           for iterador in photos.entry:
               print "kkk"
               self.add(iterador)

          return self.resultList
SearchNombreBuscador (IV)

   El método add trata cada uno de los resultados
    llamando al constructor de la clase que
    creamos anteriormente:
        def add(self, entry):

           self.resultList.append(Picasa( 
               entry.title.text, 
               entry.content.src, 
               entry.media.thumbnail[-1].url 
           ))
Probando el módulo

   En el diccionario modules_dictionary del fichero
    config.py debemos añadir un nuevo elemento
    para nuestro módulo.
   Se puede ejecutar un simple test mediante:
       python manage.py test
   Para probarlo visualmente, en el template
    inicial2.html añadimos la key del diccionario
    anterior al vector searchEngineList
       Acceder a http://127.0.0.1:8000/prueba/rock

Más contenido relacionado

PDF
Perceptron simple
PDF
12.gráficos y bases de datos
PDF
PDF
Presentacion cusl granadino
PPTX
Clase 12 jQuery basico
PDF
1 -programacion_oo
PDF
Computación 2 java
Perceptron simple
12.gráficos y bases de datos
Presentacion cusl granadino
Clase 12 jQuery basico
1 -programacion_oo
Computación 2 java

Similar a Como hacer un módulo para Visuse (20)

PPTX
Programación Orientada a Objetos - Unidad 2: clases y objetos
PDF
Computación 2 java
PDF
Taller desarrollando sitios web multiplataforma
DOCX
la mejor forma de Conectar c# con mysql con archivos de configuracion
DOCX
Taller IA 2B - Clasificacion de imagenes con Custom Vision
PPTX
APIREST LARAVEL Y PHP.pptx
PDF
Intro aplicaciones web con php
PDF
Taller 1
PPTX
Framework .NET 3.5 07 Programación orientada a objetos
ODP
Taller introduccion symfony2
DOCX
Metodo constructor de una clase JAVA
PDF
Aplicación abc. asp net mvc 3
PDF
Sesion 02 clases en_vb_net
DOCX
Ejercicio de automatizacion IntelliJ+reporte.docx
PPT
Exposicion Capitulo 10,11,12
PDF
Taller de Django betabeers
PDF
Codificacion de clases en java con NetBeans
PPT
Python django
PPT
Php Bitter Sweet Symfony!
Programación Orientada a Objetos - Unidad 2: clases y objetos
Computación 2 java
Taller desarrollando sitios web multiplataforma
la mejor forma de Conectar c# con mysql con archivos de configuracion
Taller IA 2B - Clasificacion de imagenes con Custom Vision
APIREST LARAVEL Y PHP.pptx
Intro aplicaciones web con php
Taller 1
Framework .NET 3.5 07 Programación orientada a objetos
Taller introduccion symfony2
Metodo constructor de una clase JAVA
Aplicación abc. asp net mvc 3
Sesion 02 clases en_vb_net
Ejercicio de automatizacion IntelliJ+reporte.docx
Exposicion Capitulo 10,11,12
Taller de Django betabeers
Codificacion de clases en java con NetBeans
Python django
Php Bitter Sweet Symfony!
Publicidad

Más de Jose Luis Lopez Pino (20)

PDF
Lessons learnt from applying PyData to GetYourGuide marketing
PDF
BDS14 Big Data Analytics to the masses
PDF
Massive scale analytics with Stratosphere using R
PDF
Metadata in Business Intelligence
PDF
Scheduling and sharing resources in Data Clusters
PDF
Distributed streaming k means
PDF
High level languages for Big Data Analytics (Report)
PPTX
High-level languages for Big Data Analytics (Presentation)
PDF
RDFa: introduction, comparison with microdata and microformats and how to use it
PDF
RDFa: introduction, comparison with microdata and microformats and how to use it
PDF
Firefox Vs. Chromium: Guerra de los navegadores libres
PDF
Esteganografia
PDF
Presentacion Proyecto Fin De Carrera
PDF
Memoria Proyecto Fin de Carrera
PDF
Presentacion CUSL nacional
PDF
Resumen del proyecto Visuse
PDF
Visuse: resumen del I Hackathon
ODP
Presentacion Visuse para el Hachathón
PDF
Desarrollar un módulo para Visuse
PDF
Control de versiones y Subversion
Lessons learnt from applying PyData to GetYourGuide marketing
BDS14 Big Data Analytics to the masses
Massive scale analytics with Stratosphere using R
Metadata in Business Intelligence
Scheduling and sharing resources in Data Clusters
Distributed streaming k means
High level languages for Big Data Analytics (Report)
High-level languages for Big Data Analytics (Presentation)
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use it
Firefox Vs. Chromium: Guerra de los navegadores libres
Esteganografia
Presentacion Proyecto Fin De Carrera
Memoria Proyecto Fin de Carrera
Presentacion CUSL nacional
Resumen del proyecto Visuse
Visuse: resumen del I Hackathon
Presentacion Visuse para el Hachathón
Desarrollar un módulo para Visuse
Control de versiones y Subversion
Publicidad

Último (20)

PPTX
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
PDF
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
PPTX
historia_web de la creacion de un navegador_presentacion.pptx
PPTX
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
PPTX
Sesion 1 de microsoft power point - Clase 1
PDF
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
PDF
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
PPTX
Presentación PASANTIAS AuditorioOO..pptx
PDF
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
DOCX
Zarate Quispe Alex aldayir aplicaciones de internet .docx
PDF
Influencia-del-uso-de-redes-sociales.pdf
PDF
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
PPTX
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
PPTX
Presentación de Redes de Datos modelo osi
PDF
clase auditoria informatica 2025.........
PPT
Que son las redes de computadores y sus partes
PDF
CyberOps Associate - Cisco Networking Academy
PPTX
REDES INFORMATICAS REDES INFORMATICAS.pptx
PDF
Estrategia de apoyo tecnología miguel angel solis
PPTX
Propuesta BKP servidores con Acronis1.pptx
IA de Cine - Como MuleSoft y los Agentes estan redefiniendo la realidad
programa-de-estudios-2011-guc3ada-para-el-maestro-secundarias-tecnicas-tecnol...
historia_web de la creacion de un navegador_presentacion.pptx
ANCASH-CRITERIOS DE EVALUACIÓN-FORMA-10-10 (2).pptx
Sesion 1 de microsoft power point - Clase 1
MÓDULO DE CALOR DE GRADO DE MEDIO DE FORMACIÓN PROFESIONAL
Instrucciones simples, respuestas poderosas. La fórmula del prompt perfecto.
Presentación PASANTIAS AuditorioOO..pptx
MANUAL TECNOLOGÍA SER MINISTERIO EDUCACIÓN
Zarate Quispe Alex aldayir aplicaciones de internet .docx
Influencia-del-uso-de-redes-sociales.pdf
5.1 Pinch y Bijker en libro Actos, actores y artefactos de Bunch Thomas (coor...
COMO AYUDAN LAS TIC EN LA EDUCACION SUPERIOR.pptx
Presentación de Redes de Datos modelo osi
clase auditoria informatica 2025.........
Que son las redes de computadores y sus partes
CyberOps Associate - Cisco Networking Academy
REDES INFORMATICAS REDES INFORMATICAS.pptx
Estrategia de apoyo tecnología miguel angel solis
Propuesta BKP servidores con Acronis1.pptx

Como hacer un módulo para Visuse

  • 1. Desarrollar un módulo para Visuse José Luis López Pino http://visuse.wordpress.com
  • 2. ¿Qué necesitamos para trabajar?  Un editor para Python. Por ejemplo, Geany.  Subversion: sistema de control de versiones.  Python ~2.6.2.  Elegir un buscador.
  • 3. Empezamos  Instalamos Python  Ubuntu: sudo apt-get install python2.6  Windows: descargar de python.org la 2.6.4.  Alta en la forja de rediris.  Descargamos el proyecto:  svn checkout https://forja.rediris.es/svn/cusl4-visuse  Los módulos los tenemos en trunk/visuse/modulos  Añadimos la clase a classes.py  Escribimos el módulo en Modulo_Nombre.py
  • 4. Lo que hace un módulo:  Obtenemos los datos del buscador (usando XML, JSON o lo que corresponda).  Creamos una instancia de la clase por cada resultado.  Creamos una lista de resultados.  Mostramos la lista en pantalla para comprobar que no hay problemas.
  • 5. Creando el módulo  Creamos Modulo_NombreBuscador.py  Contendrá la definición de dos clases:  Clase NombreBuscador  Heredará de Result y posiblemente de otro tipo (como ImageResult)  Habrá una instancia por cada resultado.  Almacena los atributos relevantes del resultado.  SearchNombreBuscador  Heredará de SearchModule.  Realiza todo el proceso de búsqueda.  La configuración se mantiene en config.py
  • 6. Clase NombreBuscador (I)  Hereda de Result y posiblemente también de ImageResult: class Result(): def __init__(self, name, url): self.name = name self.url = url def __str__(self): return self.name + "n" + self.url + "n" class ImageResult(): def __init__(self, name, url, thumbnail): Result.__init__(self, name, url) self.thumbnail = thumbnail def __str__(self): return "%sn%sn%sn" % (self.name, self.url, self.thumbnail)
  • 7. Clase NombreBuscador (II)  Únicamente tiene un ”constructor”, que inicializa los parámetros necesarios: class Wikicommons(Result, ImageResult): def __init__(self, name, url, thumbnail): ImageResult.__init__(self, name, url, thumbnail)
  • 8. Clase SearchNombreBuscador (I)  Hereda de SearchModule: class SearchModule(): def __init__(self): self.resultList = [] def __str__(self): str = "" for n in range(0, len(self.resultList)): str += "===== %d =====n" % n str += "%s" % self.resultList[n] return str def search(self, search_terms): return self.resultList def add(self, entry): pass
  • 9. Clase SearchNombreBuscador (II)  Obligatoriamente debe incluir un ”constructor”.  En un principio basta con que éste llame al ”constructor” de la clase de la que hereda (ModuleSearch): def __init__(self): SearchModule.__init__(self)
  • 10. SearchNombreBuscador (III)  El método search se comunica con el buscador en el protocolo que corresponda (Json, XML, etc.) y obtiene el listado de resultados. def search(self, search_terms): gd_client = gdata.photos.service.PhotosService() photos = gd_client.SearchCommunityPhotos(search_terms, limit=config.picasa_limit) for iterador in photos.entry: print "kkk" self.add(iterador) return self.resultList
  • 11. SearchNombreBuscador (IV)  El método add trata cada uno de los resultados llamando al constructor de la clase que creamos anteriormente: def add(self, entry): self.resultList.append(Picasa( entry.title.text, entry.content.src, entry.media.thumbnail[-1].url ))
  • 12. Probando el módulo  En el diccionario modules_dictionary del fichero config.py debemos añadir un nuevo elemento para nuestro módulo.  Se puede ejecutar un simple test mediante:  python manage.py test  Para probarlo visualmente, en el template inicial2.html añadimos la key del diccionario anterior al vector searchEngineList  Acceder a http://127.0.0.1:8000/prueba/rock