예제 #1
0
 def get_data(self):
     data = {'element': 'SYSPRICE', 'dT': self.dt.strftime("%Y-%m-%d")}
     req = get_url(self.URL, data)
     if req is None or req.code != 200:
         print("Unable to get data...")
         return False
     return self._process(req)
예제 #2
0
파일: unit.py 프로젝트: mseaborn/pywind
    def get_list(self):
        self.units = []
        req = get_url(self.XLS_URL)
        f = NamedTemporaryFile(delete=False)
        with open(f.name, 'w') as fh:
            fh.write(req.read())

        wb = xlrd.open_workbook(f.name)
        sh = wb.sheet_by_name(u'Sheet1')

        for rownum in range(1, sh.nrows):
            ud = {
                'sett_id': sh.cell(rownum, 0).value,
                'ngc_id': sh.cell(rownum, 1).value,
                'name': sh.cell(rownum, 2).value,
                'reg_capacity': sh.cell(rownum, 3).value,
                'date_added': _mkdate(wb, sh, rownum, 4),
                'bmunit': self.yesno(sh.cell(rownum, 5).value),
                'cap': sh.cell(rownum, 6).value
            }
            if ud['ngc_id'] == '':
                break
            self.units.append(ud)

        try:
            os.unlink(f.name)
        except:
            pass
예제 #3
0
파일: unit.py 프로젝트: mseaborn/pywind
    def get_list(self):
        self.units = []
        req = get_url(self.XLS_URL)
        f = NamedTemporaryFile(delete=False)
        with open(f.name, 'w') as fh:
            fh.write(req.read())

        wb = xlrd.open_workbook(f.name)
        sh = wb.sheet_by_name(u'BMU Fuel Types')

        for rownum in range(1, sh.nrows):
            ud = {
                'ngc_id': sh.cell(rownum, 0).value,
                'sett_id': sh.cell(rownum, 1).value,
                'fuel_type': sh.cell(rownum, 2).value,
                'eff_from': _mkdate(wb, sh, rownum, 3),
                'eff_to': _mkdate(wb, sh, rownum, 4)
            }
            if ud['sett_id'] == 42:
                del (ud['sett_id'])

            self.units.append(ud)
        try:
            os.unlink(f.name)
        except:
            pass
예제 #4
0
    def get_prices(self):
        try:
            resp = get_url(self.URL)
        except:
            return False

        def alltext(el):
            return (''.join(el.text_content())).strip()

        def process_table(tbl):
            for row in tbl.findall('.//tr'):
                if len(row) == 0:
                    continue
                datestr = alltext(row[0])
                if 'Auction Date' in datestr:
                    continue

                try:
                    avg = float(alltext(row[1])[1:])
                    dt = datetime.strptime(datestr, "%d %B %Y")
                except ValueError:
                    continue

                numperiod = dt.year * 100 + dt.month
                if numperiod in self.periods:
                    self.periods[numperiod] = (self.periods[numperiod] +
                                               avg) / 2
                else:
                    self.periods[numperiod] = avg

        doc = html.parse(resp)
        for t in doc.findall('.//table'):
            if 'Auction Date' in alltext(t.findall('.//tr')[0]):
                process_table(t)
        return True
예제 #5
0
파일: eroc.py 프로젝트: jamiebull1/pywind
    def get_prices(self):
        try:
            resp = get_url(self.URL)
        except:
            return False

        def alltext(el):
            return ("".join(el.text_content())).strip()

        def process_table(tbl):
            for row in tbl.findall(".//tr"):
                if len(row) == 0:
                    continue
                datestr = alltext(row[0])
                if "Auction Date" in datestr:
                    continue

                try:
                    avg = float(alltext(row[1])[1:])
                    dt = datetime.strptime(datestr, "%d %B %Y")
                except ValueError:
                    continue

                numperiod = dt.year * 100 + dt.month
                if numperiod in self.periods:
                    self.periods[numperiod] = (self.periods[numperiod] + avg) / 2
                else:
                    self.periods[numperiod] = avg

        doc = html.parse(resp)
        for t in doc.findall(".//table"):
            if "Auction Date" in alltext(t.findall(".//tr")[0]):
                process_table(t)
        return True
예제 #6
0
파일: unit.py 프로젝트: mseaborn/pywind
    def get_data(self):
        base = self.as_params()
        self.data = []

        if self.historic:
            req = get_url(
                'http://www.bmreports.com/bsp/additional/soapfunctions.php?',
                base)
            if req is None or req.code != 200:
                return False
            return self._process(req)
        return False
예제 #7
0
    def get_data(self):
        """ Get data from the BM Reports website. Try 3 times.
        """
        resp = get_url(self.URL, self.PARAMS)
        if resp is None or resp.code != 200:
            return

        self.xml = parse_response_as_xml(resp)
        if self.xml is None:
            return

        for section in ['INST', 'HH', 'LAST24H']:
            self.sections.append(GenerationPeriod(self.xml.xpath(section)[0]))
예제 #8
0
    def get_data(self):
        """ Get data from the BM Reports website. Try 3 times.
        """
        resp = get_url(self.URL, self.PARAMS)
        if resp is None or resp.code != 200:
            return

        self.xml = parse_response_as_xml(resp)
        if self.xml is None:
            return

        for section in ['INST', 'HH', 'LAST24H']:
            self.sections.append(GenerationPeriod(self.xml.xpath(section)[0]))