Exemple #1
0
 def __init__(self):
     ProbeParser.__init__(self)
     # the HTML parser info
     self.__html_parser = MunimadridDotEsHTMLParser()
     
     # fill up the probe list. 
     # Note that all probes are updated from the same URL
     #
     self.probe_list.append(
         Probe(u'Madrid - Plaza España', MUNIMADRID_DOT_ES_PROBE_URL,
             MUNIMADRID_DOT_ES_PZAESPANA_LAT, MUNIMADRID_DOT_ES_PZAESPANA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Escuelas Aguirre', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_ESCUELASAGUIRRE_LAT, MUNIMADRID_DOT_ES_ESCUELASAGUIRRE_LON))
     self.probe_list.append(
         Probe(u'Madrid - Avda. Ramon y Cajal', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_RAMONYCAJAL_LAT, MUNIMADRID_DOT_ES_RAMONYCAJAL_LON))
     self.probe_list.append(
         Probe(u'Madrid - Arturo Soria', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_ARTUROSORIA_LAT, MUNIMADRID_DOT_ES_ARTUROSORIA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Villaverde', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_VILLAVERDE_LAT, MUNIMADRID_DOT_ES_VILLAVERDE_LON))
     self.probe_list.append(
         Probe(u'Madrid - Farolillo', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_FAROLILLO_LAT, MUNIMADRID_DOT_ES_FAROLILLO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Casa de Campo', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_CASADECAMPO_LAT, MUNIMADRID_DOT_ES_CASADECAMPO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Barajas pueblo', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_BARAJASPUEBLO_LAT, MUNIMADRID_DOT_ES_BARAJASPUEBLO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Plaza del Carmen', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_PZACARMEN_LAT, MUNIMADRID_DOT_ES_PZACARMEN_LON))
     self.probe_list.append(
         Probe(u'Madrid - Moratalaz', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_MORATALAZ_LAT, MUNIMADRID_DOT_ES_MORATALAZ_LON))
     self.probe_list.append(
         Probe(u'Madrid - Cuatro caminos', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_CUATROCAMINOS_LAT, MUNIMADRID_DOT_ES_CUATROCAMINOS_LON))
     self.probe_list.append(
         Probe(u'Madrid - Barrio del pilar', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_PILAR_LAT, MUNIMADRID_DOT_ES_PILAR_LON))
     self.probe_list.append(
         Probe(u'Madrid - Puente de Vallecas', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_VALLECAS_LAT, MUNIMADRID_DOT_ES_VALLECAS_LON))
     self.probe_list.append(
         Probe(u'Madrid - Mendez Alvaro', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_MENDEZALVARO_LAT, MUNIMADRID_DOT_ES_MENDEZALVARO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Castellana', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_CASTELLANA_LAT, MUNIMADRID_DOT_ES_CASTELLANA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Retiro', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_RETIRO_LAT, MUNIMADRID_DOT_ES_RETIRO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Plaza de Castilla', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_PZACASTILLA_LAT, MUNIMADRID_DOT_ES_PZACASTILLA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Ensanche de Vallecas', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_ENSANCHEVALLECAS_LAT, MUNIMADRID_DOT_ES_ENSANCHEVALLECAS_LON))
     self.probe_list.append(
         Probe(u'Madrid - Urbanizacion embajada', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_URBEMBAJADA_LAT, MUNIMADRID_DOT_ES_URBEMBAJADA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Fernandez Ladreda', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_FDEZLADREDA_LAT, MUNIMADRID_DOT_ES_FDEZLADREDA_LON))
     self.probe_list.append(
         Probe(u'Madrid - Sanchinarro', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_SANCHINARRO_LAT, MUNIMADRID_DOT_ES_SANCHINARRO_LON))
     self.probe_list.append(
         Probe(u'Madrid - El Pardo', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_PARDO_LAT, MUNIMADRID_DOT_ES_PARDO_LON))
     self.probe_list.append(
         Probe(u'Madrid - Juan Carlos I', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_JUANCARLOSI_LAT, MUNIMADRID_DOT_ES_JUANCARLOSI_LON))
     self.probe_list.append(
         Probe(u'Madrid - Tres Olivos', MUNIMADRID_DOT_ES_PROBE_URL,
              MUNIMADRID_DOT_ES_TRESOLIVOS_LAT, MUNIMADRID_DOT_ES_TRESOLIVOS_LON))
Exemple #2
0
class MunimadridDotEsLiveProbeParser(ProbeParser):
    """
        Parser to retrieve probe data from munimadrid.es
        
        One single URL updates all probes data feed in munimadrid.es.
    """
    
    def __init__(self):
        ProbeParser.__init__(self)
        # the HTML parser info
        self.__html_parser = MunimadridDotEsHTMLParser()
        
        # fill up the probe list. 
        # Note that all probes are updated from the same URL
        #
        self.probe_list.append(
            Probe(u'Madrid - Plaza España', MUNIMADRID_DOT_ES_PROBE_URL,
                MUNIMADRID_DOT_ES_PZAESPANA_LAT, MUNIMADRID_DOT_ES_PZAESPANA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Escuelas Aguirre', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_ESCUELASAGUIRRE_LAT, MUNIMADRID_DOT_ES_ESCUELASAGUIRRE_LON))
        self.probe_list.append(
            Probe(u'Madrid - Avda. Ramon y Cajal', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_RAMONYCAJAL_LAT, MUNIMADRID_DOT_ES_RAMONYCAJAL_LON))
        self.probe_list.append(
            Probe(u'Madrid - Arturo Soria', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_ARTUROSORIA_LAT, MUNIMADRID_DOT_ES_ARTUROSORIA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Villaverde', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_VILLAVERDE_LAT, MUNIMADRID_DOT_ES_VILLAVERDE_LON))
        self.probe_list.append(
            Probe(u'Madrid - Farolillo', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_FAROLILLO_LAT, MUNIMADRID_DOT_ES_FAROLILLO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Casa de Campo', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_CASADECAMPO_LAT, MUNIMADRID_DOT_ES_CASADECAMPO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Barajas pueblo', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_BARAJASPUEBLO_LAT, MUNIMADRID_DOT_ES_BARAJASPUEBLO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Plaza del Carmen', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_PZACARMEN_LAT, MUNIMADRID_DOT_ES_PZACARMEN_LON))
        self.probe_list.append(
            Probe(u'Madrid - Moratalaz', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_MORATALAZ_LAT, MUNIMADRID_DOT_ES_MORATALAZ_LON))
        self.probe_list.append(
            Probe(u'Madrid - Cuatro caminos', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_CUATROCAMINOS_LAT, MUNIMADRID_DOT_ES_CUATROCAMINOS_LON))
        self.probe_list.append(
            Probe(u'Madrid - Barrio del pilar', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_PILAR_LAT, MUNIMADRID_DOT_ES_PILAR_LON))
        self.probe_list.append(
            Probe(u'Madrid - Puente de Vallecas', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_VALLECAS_LAT, MUNIMADRID_DOT_ES_VALLECAS_LON))
        self.probe_list.append(
            Probe(u'Madrid - Mendez Alvaro', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_MENDEZALVARO_LAT, MUNIMADRID_DOT_ES_MENDEZALVARO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Castellana', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_CASTELLANA_LAT, MUNIMADRID_DOT_ES_CASTELLANA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Retiro', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_RETIRO_LAT, MUNIMADRID_DOT_ES_RETIRO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Plaza de Castilla', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_PZACASTILLA_LAT, MUNIMADRID_DOT_ES_PZACASTILLA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Ensanche de Vallecas', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_ENSANCHEVALLECAS_LAT, MUNIMADRID_DOT_ES_ENSANCHEVALLECAS_LON))
        self.probe_list.append(
            Probe(u'Madrid - Urbanizacion embajada', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_URBEMBAJADA_LAT, MUNIMADRID_DOT_ES_URBEMBAJADA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Fernandez Ladreda', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_FDEZLADREDA_LAT, MUNIMADRID_DOT_ES_FDEZLADREDA_LON))
        self.probe_list.append(
            Probe(u'Madrid - Sanchinarro', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_SANCHINARRO_LAT, MUNIMADRID_DOT_ES_SANCHINARRO_LON))
        self.probe_list.append(
            Probe(u'Madrid - El Pardo', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_PARDO_LAT, MUNIMADRID_DOT_ES_PARDO_LON))
        self.probe_list.append(
            Probe(u'Madrid - Juan Carlos I', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_JUANCARLOSI_LAT, MUNIMADRID_DOT_ES_JUANCARLOSI_LON))
        self.probe_list.append(
            Probe(u'Madrid - Tres Olivos', MUNIMADRID_DOT_ES_PROBE_URL,
                 MUNIMADRID_DOT_ES_TRESOLIVOS_LAT, MUNIMADRID_DOT_ES_TRESOLIVOS_LON))
    
    def update(self):
        print "parsing munimadrid.es..."
        # ensure the aprser is clean to start the parsing process
        self.__html_parser.reset()

        req = urllib2.Request(MUNIMADRID_DOT_ES_PROBE_URL, data=None, headers=HTTP_HEADERS)
        htmlFile = urllib2.urlopen(req)
    
        # what character encoding set is this file????
        charset = htmlFile.headers.getparam('charset')

        for line in htmlFile.readlines():
            # munimadrid is UTF-8, but still we should be doing things right
            line = line.strip().decode(charset).encode("utf-8")
            
            try:
                self.__html_parser.feed(line)
            except HTMLParseError, ex:
                print "Exception %s" % (ex.msg)

        htmlFile.close()
                
        for probeEntry in self.__html_parser.m_probePollutantsList:
            # look for the right probe to store the list of pollutants into it
            for probe in self.probe_list:
                if (probe.name[9:].upper() == probeEntry['Estaci\xc3\xb3n'].upper().decode("utf-8")):                    
                    thisMeasure = ProbeMeasure()
                    thisMeasure.sample_time = self.__html_parser.m_sampleTime
                    
                    if ('PM10' in probeEntry):
                        thisMeasure.pm10 = probeEntry['PM10']
                    if ('PM2.5' in probeEntry):
                        thisMeasure.pm25 = probeEntry['PM2.5']
                    if ('SO2' in probeEntry):
                        thisMeasure.so2 = probeEntry['SO2']                        
                    if ('CO' in probeEntry):
                        thisMeasure.co = probeEntry['CO']
                    if ('O3' in probeEntry):
                        thisMeasure.o3 = probeEntry['O3']
                    if ('NO2' in probeEntry):
                        thisMeasure.no2 = probeEntry['NO2']
                    if ('BEN' in probeEntry):
                        thisMeasure.ben = probeEntry['BEN']
                    if ('TOL' in probeEntry):
                        thisMeasure.tol = probeEntry['TOL']
                
                    probe.last_measure = thisMeasure
                    
                    # Found what we were looking for. Exit this loop
                    break
            else:               
                if (probeEntry['Estaci\xc3\xb3n'].upper().decode("utf-8") != 'MEDIA  RED'):
                    # There is no probe that matches this name. 
                    # it always happens with "MEDIA  RED" (network average)
                    print 'Error: Can\'t match probe name: ' + probeEntry['Estaci\xc3\xb3n'].upper()