SSLV3_ALERT_HANDSHAKE_FAILURE when making requests to theforexapi.com
I am using the forex_python library to convert currency values to USD using historical rates. However, I am encountering an SSL handshake failure when the library makes HTTPS requests to 'theforexapi.com'. The error message is as follows:
Error converting AUD for year 2022: HTTPSConnectionPool(host='theforexapi.com', port=443): Max retries exceeded with url: /api/2022-01-01?base=AUD&symbols=USD&rtype=fpy (Caused by SSLError(SSLError(1, '[SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure (_ssl.c:997)')))
I have a csv file that contain multiple columns such as: symbol, date, year, open, currency.
Currency columns contain values such as: AUD, EUR, NZD, USD, GBP etc and trying to convert the $$$ from 'open' column to $USD based on a 'date' column.
Can someone try to help me? :)
Code below:
` import pandas as pd from forex_python.converter import CurrencyRates from datetime import datetime
def convert_to_usd(row, c): try: # Constructing a date object with the year from the row and default month and day date_obj = datetime(row['year'], 1, 1) rate = c.get_rate(row['currency'], 'USD', date_obj) return round(row['open'] * rate, 2) except Exception as e: print(f"Error converting {row['currency']} for year {row['year']}: {e}") return None
def main(): # Load the CSV file df = pd.read_csv('my_source_file_here_df.csv')
df['currency'] = df['currency'].str.strip().str.upper()
# Initialize currency converter
c = CurrencyRates()
# Convert prices to USD using historical rates
df['open_usd'] = df.apply(lambda row: convert_to_usd(row, c), axis=1)
# Save the updated dataframe to a new CSV file
df.to_csv('my_unpivoted_file_here_with_USD_df.csv', index=False)
print("Conversion completed and saved to 'converted_prices_with_historical_rates.csv'.")
if name == "main": main() `