Fetch Cryptopanic API for cryptocurrency news using Python

in cryptocurrency •  7 years ago 

I am running an automated trading bot on Binance and I have chosen to integrate Cryptopanic news to calculate scores based on which automatically trade.
Of course this is not the only parameter I am using, but this is the newest one.

First of all I have to:

  • call the API in my python program
  • reference my authentication token (You have to be registered on cryptopanic.com to have that, do not worry it is free).
  • load the JSON into a list of dictionaries to be able to interpret the data.
url_cryptopanic="https://cryptopanic.com/api/posts/?auth_token=xxxxxxxxxxxxxxxxxxxxxxxxx"
for i in range(0,10):
    try:
        print("Getting data from cryptopanic.com")
        response_cryptopanic = urllib.urlopen(url_cryptopanic)
    except IOError as e:
        print("Could not get data from cryptopanic.com")
        continue
    break

try:
    data_cryptopanic = json.loads(response_cryptopanic.read())
except Exception as e:
    print(traceback.format_exc())

Once I have the data loaded in the list I can interpret the data as I want and use it to calculate scores:

for i in binance_coins_filtered:
    for k in results:
        if(i == k['Currency']):
            print (i+" found on Binance!, starting data collection...")
            k['Binance'] = True

            total_market_cap += float(k['Market cap'])
            important_votes = 0.0
            negative_votes = 0.0
            liked_votes = 0.0
            disliked_votes = 0.0
            toxic_votes = 0.0

            j=0
            while j < len(data_cryptopanic['results']):

                print("Scanning the news...")
                print(data_cryptopanic['results'][j])
                try:
                    for x in data_cryptopanic['results'][j]['currencies']:
                        print(k['Currency'], x['code'])
                        if k['Currency'] == x['code']:
                            important_votes = float(data_cryptopanic['results'][j]['votes']['important'])
                            if (important_votes == 0):
                                important_votes = 1

                            negative_votes = float(data_cryptopanic['results'][j]['votes']['negative'])
                            if (negative_votes == 0):
                                negative_votes = 1

                            positive_votes = float(data_cryptopanic['results'][j]['votes']['positive'])
                            if (positive_votes == 0):
                                positive_votes = 1

                            liked_votes = float(data_cryptopanic['results'][j]['votes']['liked'])
                            if (liked_votes == 0):
                                liked_votes = 1

                            disliked_votes = float(data_cryptopanic['results'][j]['votes']['disliked'])
                            if (disliked_votes == 0):
                                disliked_votes = 1

                            toxic_votes = float(data_cryptopanic['results'][j]['votes']['toxic'])
                            if (toxic_votes == 0):
                                toxic_votes = 1

                            print("Found news on "+k['Currency']+" calculating news score...")
                            k['Score news'] += important_votes/negative_votes*positive_votes*liked_votes/disliked_votes/toxic_votes
                            

                except Exception as e:
                    print("Not able to find news score for "+k['Currency'])
                    print(traceback.format_exc())

The next plan is to parse Blocktivity website data to integrate blockchain activity data into my score calculations.

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!