示例#1
0
class Exporter:
    def __init__(self):
        self.client = Client(API_KEY, API_KEY, API_SECRET)
        self.series_filename = os.path.join(EXPORT_DIR, "series_info")

        if not os.path.exists(EXPORT_DIR):
            print "Making export directory"
            os.makedirs(EXPORT_DIR)

    def export_metadata(self):
        if os.path.isfile(self.series_filename):
            print "series_info exists, skipping series discovery"
            return

        print "Exporting series metadata"
        all_series = self.client.list_series()

        with open(self.series_filename, 'w') as outfile:
            for series in all_series.data:
                line = self.series_to_string(series) + "\n"
                outfile.write(line.encode("utf-8"))

    def series_to_string(self, series):
        local_id = uuid.uuid4()
        j = {"uuid": str(local_id)}  # Generate series UUID since keys
        for p in series.properties:  # could be inconvenient filenames
            j[p] = getattr(series, p)

        return json.dumps(j, ensure_ascii=False)

    def export_all_series(self):
        if not os.path.isfile(self.series_filename):
            print "ERROR: No series_info file found, can't export series data"
            return

        with open(self.series_filename, 'r') as series_list:
            for text in series_list:
                series = json.loads(text)
                self.export_single_series(series.get('key'),
                                          series.get('uuid'))

    def export_single_series(self, key, uuid):
        filename = os.path.join(EXPORT_DIR, uuid + ".csv")

        if os.path.isfile(filename):
            print "Data file exists for series " + key + ", skipping"
            return

        print "Exporting series " + key + " to " + filename
        response = self.client.read_data(key=key.encode('utf-8'),
                                         start=START_DATE,
                                         end=END_DATE)

        with open(filename, 'w') as outfile:
            for dp in response.data:
                line = dp.t.isoformat() + "," + str(dp.v) + "\n"
                outfile.write(line)
示例#2
0
class Exporter:
    def __init__(self):
        self.client = Client(API_KEY, API_KEY, API_SECRET)
        self.series_filename = os.path.join(EXPORT_DIR, "series_info")
 
        if not os.path.exists(EXPORT_DIR):
            print "Making export directory"
            os.makedirs(EXPORT_DIR)
 
    def export_metadata(self):
        if os.path.isfile(self.series_filename):
            print "series_info exists, skipping series discovery"
            return
 
        print "Exporting series metadata"
        all_series = self.client.list_series()
 
        with open(self.series_filename, 'w') as outfile:
            for series in all_series:
                line = self.series_to_string(series) + "\n"
                outfile.write(line.encode("utf-8"))
 
    def series_to_string(self, series):
        local_id = uuid.uuid4()
        j = {"uuid": str(local_id)}    # Generate series UUID since keys
        for p in series.properties:    # could be inconvenient filenames
            j[p] = getattr(series, p)
 
        return json.dumps(j, ensure_ascii=False)
 
    def export_all_series(self):
        if not os.path.isfile(self.series_filename):
            print "ERROR: No series_info file found, can't export series data"
            return
 
        with open(self.series_filename, 'r') as series_list:
            for text in series_list:
                series = json.loads(text)
                self.export_single_series(series.get('key'),
                                          series.get('uuid'))
 
    def export_single_series(self, key, uuid):
        filename = os.path.join(EXPORT_DIR, uuid + ".csv")
 
        if os.path.isfile(filename):
            print "Data file exists for series " + key + ", skipping"
            return
 
        print "Exporting series " + key + " to " + filename
        response = self.client.read_data(key=key.encode('utf-8'), start=START_DATE, end=END_DATE)
 
        with open(filename, 'w') as outfile:
            for dp in response:
                line = dp.t.isoformat() + "," + str(dp.v) + "\n"
                outfile.write(line)