def _collect_price_time_series(self): """Parse the requested JSON for daily close time series data and daily average time series data. Returns: tuple: Ordered pair of dictionaries containing time series data for both the daily close time series and daily average time series. Keys are strings representing ms since epoch. Values are integers representing the signal (amount of gp) """ r = requests.get(self.GRAPH_URL) #dictionary of 2 dictionaries, "daily" and "average" response = r.json() daily_series = TimeSeries.from_dictionary(response["daily"]) average_series = TimeSeries.from_dictionary(response["average"]) return (daily_series, average_series)
def _collect_volume_time_series(self): """Parse the OSRS GX tradeable item webpage for trade volume data. Returns: dict: Single dictionary containing trade volume time series data. Keys are strings in `%Y-%m-%d` format. Values are integers representing the number of unites moved by close. """ #fetch the item page as text page_as_text = requests.get(self.VOLUME_URL).text #search the item page for tags that contain volume information volume_tags = re.findall("trade180.push.*", page_as_text) volume_series = {} #iterate over all the tags just found for match in volume_tags: tv_pairs = re.findall("Date\(.*\), \d+", match) #separate the timestamps from volume data for pair in tv_pairs: t, v = tuple(pair.split(',')) #remove text surrounding Y/M/D piece of timestamp t = t.strip("Date('").strip("')'") volume_series[t] = int(v) volume_series = TimeSeries.from_dictionary(volume_series) return volume_series