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

Similar a Como hacer un módulo para Visuse

Programación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetosProgramación Orientada a Objetos - Unidad 2: clases y objetos
Programación Orientada a Objetos - Unidad 2: clases y objetos
José Antonio Sandoval Acosta
 
Computación 2 java
Computación 2 javaComputación 2 java
Computación 2 java
Maestros Online
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataforma
Luis Beltran
 
la mejor forma de Conectar c# con mysql con archivos de configuracion
 la mejor forma de Conectar c# con mysql con archivos de configuracion  la mejor forma de Conectar c# con mysql con archivos de configuracion
la mejor forma de Conectar c# con mysql con archivos de configuracion
juandavid1118
 
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom VisionTaller IA 2B - Clasificacion de imagenes con Custom Vision
Taller IA 2B - Clasificacion de imagenes con Custom Vision
Luis Beltran
 
APIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptxAPIREST LARAVEL Y PHP.pptx
APIREST LARAVEL Y PHP.pptx
MarlonAlbertoGalvis
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con php
Fer Nando
 
Taller 1
Taller 1Taller 1
Taller 1
Elkin Rangel
 
Framework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetosFramework .NET 3.5 07 Programación orientada a objetos
Framework .NET 3.5 07 Programación orientada a objetos
Antonio Palomares Sender
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
Mario IC
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVA
MANUEL RAMIREZ
 
Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3Aplicación abc. asp net mvc 3
Aplicación abc. asp net mvc 3
jose luis barrientos
 
Sesion 02 clases en_vb_net
Sesion 02 clases en_vb_netSesion 02 clases en_vb_net
Sesion 02 clases en_vb_net
Santos Rivera Luján
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
ssuser2e6b96
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12
jack_corvil
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
betabeers
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeans
Emerson Garay
 
Atl
AtlAtl
Python django
Python djangoPython django
Python django
Colegio Metropolitano
 
Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!Php Bitter Sweet Symfony!
Php Bitter Sweet Symfony!
Ricard Luquero
 

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

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

Más de Jose Luis Lopez Pino

Lessons learnt from applying PyData to GetYourGuide marketing
Lessons learnt from applying PyData to GetYourGuide marketingLessons learnt from applying PyData to GetYourGuide marketing
Lessons learnt from applying PyData to GetYourGuide marketing
Jose Luis Lopez Pino
 
BDS14 Big Data Analytics to the masses
BDS14 Big Data Analytics to the massesBDS14 Big Data Analytics to the masses
BDS14 Big Data Analytics to the masses
Jose Luis Lopez Pino
 
Massive scale analytics with Stratosphere using R
Massive scale analytics with Stratosphere using RMassive scale analytics with Stratosphere using R
Massive scale analytics with Stratosphere using R
Jose Luis Lopez Pino
 
Metadata in Business Intelligence
Metadata in Business IntelligenceMetadata in Business Intelligence
Metadata in Business Intelligence
Jose Luis Lopez Pino
 
Scheduling and sharing resources in Data Clusters
Scheduling and sharing resources in Data ClustersScheduling and sharing resources in Data Clusters
Scheduling and sharing resources in Data Clusters
Jose Luis Lopez Pino
 
Distributed streaming k means
Distributed streaming k meansDistributed streaming k means
Distributed streaming k means
Jose Luis Lopez Pino
 
High level languages for Big Data Analytics (Report)
High level languages for Big Data Analytics (Report)High level languages for Big Data Analytics (Report)
High level languages for Big Data Analytics (Report)
Jose Luis Lopez Pino
 
High-level languages for Big Data Analytics (Presentation)
High-level languages for Big Data Analytics (Presentation)High-level languages for Big Data Analytics (Presentation)
High-level languages for Big Data Analytics (Presentation)
Jose Luis Lopez Pino
 
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itRDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use it
Jose Luis Lopez Pino
 
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itRDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use it
Jose Luis Lopez Pino
 
Firefox Vs. Chromium: Guerra de los navegadores libres
Firefox Vs. Chromium: Guerra de los navegadores libresFirefox Vs. Chromium: Guerra de los navegadores libres
Firefox Vs. Chromium: Guerra de los navegadores libres
Jose Luis Lopez Pino
 
Esteganografia
EsteganografiaEsteganografia
Esteganografia
Jose Luis Lopez Pino
 
Presentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De CarreraPresentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De Carrera
Jose Luis Lopez Pino
 
Memoria Proyecto Fin de Carrera
Memoria Proyecto Fin de CarreraMemoria Proyecto Fin de Carrera
Memoria Proyecto Fin de Carrera
Jose Luis Lopez Pino
 
Presentacion CUSL nacional
Presentacion CUSL nacionalPresentacion CUSL nacional
Presentacion CUSL nacional
Jose Luis Lopez Pino
 
Resumen del proyecto Visuse
Resumen del proyecto VisuseResumen del proyecto Visuse
Resumen del proyecto Visuse
Jose Luis Lopez Pino
 
Visuse: resumen del I Hackathon
Visuse: resumen del I HackathonVisuse: resumen del I Hackathon
Visuse: resumen del I Hackathon
Jose Luis Lopez Pino
 
Presentacion Visuse para el Hachathón
Presentacion Visuse para el HachathónPresentacion Visuse para el Hachathón
Presentacion Visuse para el Hachathón
Jose Luis Lopez Pino
 
Desarrollar un módulo para Visuse
Desarrollar un módulo para VisuseDesarrollar un módulo para Visuse
Desarrollar un módulo para Visuse
Jose Luis Lopez Pino
 
Control de versiones y Subversion
Control de versiones y SubversionControl de versiones y Subversion
Control de versiones y Subversion
Jose Luis Lopez Pino
 

Más de Jose Luis Lopez Pino (20)

Lessons learnt from applying PyData to GetYourGuide marketing
Lessons learnt from applying PyData to GetYourGuide marketingLessons learnt from applying PyData to GetYourGuide marketing
Lessons learnt from applying PyData to GetYourGuide marketing
 
BDS14 Big Data Analytics to the masses
BDS14 Big Data Analytics to the massesBDS14 Big Data Analytics to the masses
BDS14 Big Data Analytics to the masses
 
Massive scale analytics with Stratosphere using R
Massive scale analytics with Stratosphere using RMassive scale analytics with Stratosphere using R
Massive scale analytics with Stratosphere using R
 
Metadata in Business Intelligence
Metadata in Business IntelligenceMetadata in Business Intelligence
Metadata in Business Intelligence
 
Scheduling and sharing resources in Data Clusters
Scheduling and sharing resources in Data ClustersScheduling and sharing resources in Data Clusters
Scheduling and sharing resources in Data Clusters
 
Distributed streaming k means
Distributed streaming k meansDistributed streaming k means
Distributed streaming k means
 
High level languages for Big Data Analytics (Report)
High level languages for Big Data Analytics (Report)High level languages for Big Data Analytics (Report)
High level languages for Big Data Analytics (Report)
 
High-level languages for Big Data Analytics (Presentation)
High-level languages for Big Data Analytics (Presentation)High-level languages for Big Data Analytics (Presentation)
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 itRDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use it
 
RDFa: introduction, comparison with microdata and microformats and how to use it
RDFa: introduction, comparison with microdata and microformats and how to use itRDFa: 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
Firefox Vs. Chromium: Guerra de los navegadores libresFirefox Vs. Chromium: Guerra de los navegadores libres
Firefox Vs. Chromium: Guerra de los navegadores libres
 
Esteganografia
EsteganografiaEsteganografia
Esteganografia
 
Presentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De CarreraPresentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De Carrera
 
Memoria Proyecto Fin de Carrera
Memoria Proyecto Fin de CarreraMemoria Proyecto Fin de Carrera
Memoria Proyecto Fin de Carrera
 
Presentacion CUSL nacional
Presentacion CUSL nacionalPresentacion CUSL nacional
Presentacion CUSL nacional
 
Resumen del proyecto Visuse
Resumen del proyecto VisuseResumen del proyecto Visuse
Resumen del proyecto Visuse
 
Visuse: resumen del I Hackathon
Visuse: resumen del I HackathonVisuse: resumen del I Hackathon
Visuse: resumen del I Hackathon
 
Presentacion Visuse para el Hachathón
Presentacion Visuse para el HachathónPresentacion Visuse para el Hachathón
Presentacion Visuse para el Hachathón
 
Desarrollar un módulo para Visuse
Desarrollar un módulo para VisuseDesarrollar un módulo para Visuse
Desarrollar un módulo para Visuse
 
Control de versiones y Subversion
Control de versiones y SubversionControl de versiones y Subversion
Control de versiones y Subversion
 

Último

FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdfFOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
JosGregorioFernndezA
 
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDADPROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
241578066
 
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datosINTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
Fabián Descalzo
 
tecnosaramineiropalaciosegundoperiodo.docx
tecnosaramineiropalaciosegundoperiodo.docxtecnosaramineiropalaciosegundoperiodo.docx
tecnosaramineiropalaciosegundoperiodo.docx
SaraMineiropalacio
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
ADELAIDA90
 
Automatismos industriales Juan Martin y María Garcia.pdf
Automatismos industriales Juan Martin y María Garcia.pdfAutomatismos industriales Juan Martin y María Garcia.pdf
Automatismos industriales Juan Martin y María Garcia.pdf
AlbertoCarlosChauca2
 
Guía práctica DE INTELIGENCIA ARTIFICIAL
Guía práctica  DE INTELIGENCIA ARTIFICIALGuía práctica  DE INTELIGENCIA ARTIFICIAL
Guía práctica DE INTELIGENCIA ARTIFICIAL
samuel479747
 
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdfTRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
d87pgcmxqg
 
Presentacion de materiales FLEXIBLES tecnología e innovaciones
Presentacion de materiales FLEXIBLES tecnología e innovacionesPresentacion de materiales FLEXIBLES tecnología e innovaciones
Presentacion de materiales FLEXIBLES tecnología e innovaciones
ridunoge2
 
UiPath Community Data Service presentation
UiPath Community Data Service presentationUiPath Community Data Service presentation
UiPath Community Data Service presentation
DianaGray10
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Telefónica
 
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdfIPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
IPLOOK Networks
 
Bifurcaciones edición 18 - eHealth (salud digital)
Bifurcaciones edición 18 - eHealth (salud digital)Bifurcaciones edición 18 - eHealth (salud digital)
Bifurcaciones edición 18 - eHealth (salud digital)
Juan Jesús Velasco Rivera
 

Último (13)

FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdfFOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
FOROS, BLOGS Y CHATS HERRAMIENTAS PARA LA COMUNICACIÓN VIRTUAL.pdf
 
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDADPROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
PROYECTO INTEGRADOR: LAS TIC EN LA SOCIEDAD
 
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datosINTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
INTELIGENCIA ARTIFICIAL: Ciberseguridad, gobernanza y protección de datos
 
tecnosaramineiropalaciosegundoperiodo.docx
tecnosaramineiropalaciosegundoperiodo.docxtecnosaramineiropalaciosegundoperiodo.docx
tecnosaramineiropalaciosegundoperiodo.docx
 
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
PROTOCOLO DE NANOPOROS Kit de códigos de barras 16S (SQK-RAB204)
 
Automatismos industriales Juan Martin y María Garcia.pdf
Automatismos industriales Juan Martin y María Garcia.pdfAutomatismos industriales Juan Martin y María Garcia.pdf
Automatismos industriales Juan Martin y María Garcia.pdf
 
Guía práctica DE INTELIGENCIA ARTIFICIAL
Guía práctica  DE INTELIGENCIA ARTIFICIALGuía práctica  DE INTELIGENCIA ARTIFICIAL
Guía práctica DE INTELIGENCIA ARTIFICIAL
 
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdfTRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
TRABAJO TEGNOLOGICO (ISABELLA BERNAL GUETIO).pdf
 
Presentacion de materiales FLEXIBLES tecnología e innovaciones
Presentacion de materiales FLEXIBLES tecnología e innovacionesPresentacion de materiales FLEXIBLES tecnología e innovaciones
Presentacion de materiales FLEXIBLES tecnología e innovaciones
 
UiPath Community Data Service presentation
UiPath Community Data Service presentationUiPath Community Data Service presentation
UiPath Community Data Service presentation
 
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
Índice del libro "Metaverso y mundos virtuales: Tecnologías, Retos y Oportuni...
 
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdfIPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
IPLOOK Solución de core móvil convergente 4G&5G de punta a punta.pdf
 
Bifurcaciones edición 18 - eHealth (salud digital)
Bifurcaciones edición 18 - eHealth (salud digital)Bifurcaciones edición 18 - eHealth (salud digital)
Bifurcaciones edición 18 - eHealth (salud digital)
 

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