In [0]:
import requests
from datetime import datetime as dt
from pprint import pprint as pp


def request_alphavantage(**kwargs):
  params = {'apikey': 'YOUR_API_KEY'}
  params.update(kwargs)
  return requests.get('https://www.alphavantage.co/query', params=params).json()


def data2df_cur(data):
  '''
  currency data
  '''
  df = {'datetime': [], 'Open': [], 'High': [], 'Low': [], 'Close': [], 'Volume': []}
  for k, v in data.items():
#    df['datetime'].append(k)
    df['datetime'].append(dt.strptime(k, '%Y-%m-%d'))
    df['Open'].append(float(v['1b. open (USD)']))
    df['High'].append(float(v['2b. high (USD)']))
    df['Low'].append(float(v['3b. low (USD)']))
    df['Close'].append(float(v['4b. close (USD)']))
    df['Volume'].append(v['5. volume'])
  return df


def data2df_stk(data):
  '''
  stock data
  '''
  df = {'datetime': [], 'Open': [], 'High': [], 'Low': [], 'Close': [], 'Volume': []}
  for k, v in data.items():
#    df['datetime'].append(k)
    df['datetime'].append(dt.strptime(k, '%Y-%m-%d'))
    df['Open'].append(float(v['1. open']))
    df['High'].append(float(v['2. high']))
    df['Low'].append(float(v['3. low']))
    df['Close'].append(float(v['4. close']))
    df['Volume'].append(v['5. volume'])
  return df


def df2df_reversed(df):
  df_r = {'datetime': [], 'Open': [], 'High': [], 'Low': [], 'Close': [], 'Volume': []}
  i = len(df['Close'])-1
  while i > -1:
    df_r['datetime'].append(df['datetime'][i])
    df_r['Open'].append(df['Open'][i])
    df_r['High'].append(df['High'][i])
    df_r['Low'].append(df['Low'][i])
    df_r['Close'].append(df['Close'][i])
    df_r['Volume'].append(df['Volume'][i])
    i -= 1
  return df_r


# search for symbol:
#r = request_alphavantage(function='SYMBOL_SEARCH', keywords='bitcoin')
#pp (r)

# get symbol currency data:
r = request_alphavantage(function='DIGITAL_CURRENCY_DAILY', symbol='BTC', market='EUR')
#pp (r)
    
data = r['Time Series (Digital Currency Daily)']
print (len(data))

df = data2df_cur(data)
print (len(df['Close']))
df_r = df2df_reversed(df)
print (len(df_r['Close']))

#pp (df['datetime']) # normal order.
pp (df_r['datetime']) # reversed order.


# get symbol stock data:
#r = request_alphavantage(function='TIME_SERIES_DAILY', symbol='GBTC', outputsize='full')
#pp (r)

#data = r['Time Series (Daily)']
#print (len(data))

#df = data2df_stk(data)
#print (len(df['Close']))
#df_r = df2df_reversed(df)
#print (len(df_r['Close']))

#pp (df['datetime']) # normal order.
#pp (df_r['datetime']) # reversed order.