SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
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 objetosJosé Antonio Sandoval Acosta
 
Taller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaTaller desarrollando sitios web multiplataforma
Taller desarrollando sitios web multiplataformaLuis 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 VisionLuis Beltran
 
Intro aplicaciones web con php
Intro aplicaciones web con phpIntro aplicaciones web con php
Intro aplicaciones web con phpFer Nando
 
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 objetosAntonio Palomares Sender
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Metodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMetodo constructor de una clase JAVA
Metodo constructor de una clase JAVAMANUEL RAMIREZ
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxssuser2e6b96
 
Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12Exposicion Capitulo 10,11,12
Exposicion Capitulo 10,11,12jack_corvil
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
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 NetBeansEmerson Garay
 
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 marketingJose 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 massesJose 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 RJose 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 ClustersJose 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 itJose 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 itJose 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 libresJose Luis Lopez Pino
 
Presentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De CarreraPresentacion Proyecto Fin De Carrera
Presentacion Proyecto Fin De CarreraJose 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ónJose 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 VisuseJose 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

infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxgustavovasquezv56
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfYanitza28
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORASMarc Liust
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfaxelv9257
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionEmanuelMuoz11
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosJhonJairoRodriguezCe
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...axelv9257
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfYanitza28
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptxdulcemonterroza
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendidaLuis Francisco Reyes Aceves
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8antoniopalmieriluna
 

Último (18)

infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptxinfor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
infor expo AVANCES TECNOLOGICOS DEL SIGLO 21.pptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Editorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdfEditorial. Grupo de 12B de La Salle Margarita.pdf
Editorial. Grupo de 12B de La Salle Margarita.pdf
 
QUINTA SEXTA GENERACION de COMPUTADORAS
QUINTA  SEXTA GENERACION de COMPUTADORASQUINTA  SEXTA GENERACION de COMPUTADORAS
QUINTA SEXTA GENERACION de COMPUTADORAS
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdfpresentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
presentacion_desamblado_de_una_computadora_base_a_las_normas_de_seguridad.pdf
 
Función del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacionFunción del analizador léxico.pdf presentacion
Función del analizador léxico.pdf presentacion
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...presentación del desensamble y ensamble del equipo de computo en base a las n...
presentación del desensamble y ensamble del equipo de computo en base a las n...
 
Editorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdfEditorial. Grupo de 12B. La Salle Margarita.pdf
Editorial. Grupo de 12B. La Salle Margarita.pdf
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptxAVANCES TECNOLOGICOS  DEL SIGLO XXI. 10-08..pptx
AVANCES TECNOLOGICOS DEL SIGLO XXI. 10-08..pptx
 
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
2023 07 Casos prácticos para Realidad aumentada, metaverso y realidad extendida
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
10°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-810°8 - Avances tecnologicos del siglo XXI 10-8
10°8 - Avances tecnologicos del siglo XXI 10-8
 

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