Exemplo n.º 1
0
class cryptonews():
    def __init__(self, key):
        self.key = key
        self.api = CryptoControlAPI(key)
        self.proxyApi = CryptoControlAPI(
            key, "http://cryptocontrol_proxy/api/v1/public")

    def enableSentiment(self):
        self.sentiment = True

    def top_news(self, lang=None):
        return self.api.getTopNews(language=lang)

    def news_by_coin(self, coin, lang=None):
        return self.api.getTopNewsByCoin(coin=coin, language=lang)

    def get_top_tweets(self, coin, lang=None):
        return self.api.getTopTweetsByCoin(coin=coin, language=lang)

    def get_reddit(self, coin, lang=None):
        return self.api.getLatestRedditPostsByCoin(coin=coin, language=lang)

    def get_top_feed(self, coin, lang):
        return self.api.getTopFeedByCoin(coin=coin, language=lang)

    def get_latest(self, coin, lang):
        return self.api.getLatestItemsByCoin(coin=coin, language=lang)

    def get_coinDetails(self, coin, lang):
        return self.api.getCoinDetails(coin=coin, language=lang)
Exemplo n.º 2
0
# Connect to a self-hosted proxy server (to improve performance) that points to cryptocontrol.io
proxyApi = CryptoControlAPI(key2, "http://cryptocontrol_proxy/api/v1/public")

# Get top news
print(pd.DataFrame(api.getTopNews()))\
# returned dataframe can be viewed fully in the csv file, same for the other dataframes
pd.DataFrame(api.getTopNews()).to_csv('section1/task3/topnews.csv', index=False)

# get latest russian news
print(pd.DataFrame(api.getLatestNews("ru")))

# # get top bitcoin news
print(pd.DataFrame(api.getTopNewsByCoin("bitcoin")))

# get top EOS tweets
print(pd.DataFrame(api.getTopTweetsByCoin("eos")))

# get top Ripple reddit posts
print(pd.DataFrame(api.getLatestRedditPostsByCoin("ripple")))

# get reddit/tweets/articles in a single combined feed for NEO
feed = pd.DataFrame(api.getTopFeedByCoin("neo"))
print(feed)

# get latest reddit/tweets/articles (seperated) for Litecoin
print(pd.DataFrame(api.getLatestItemsByCoin("litecoin")))

# get details (subreddits, twitter handles, description, links) for ethereum
links = api.getCoinDetails("ethereum")['links']
print(pd.DataFrame(links))
Exemplo n.º 3
0
class News:
    def __init__(self, api_key):
        self.language = 'en'
        self.api = CryptoControlAPI(api_key)

    def set_language(self, language):
        # English (en default)
        # Chinese/Mandarin 'cn'
        # German 'de'
        # Italian 'it'
        # Japanese 'jp'
        # Korean 'ko'
        # Portuguese 'po'
        # Russian 'ru'
        # Spanish 'es'
        self.language = language

    def getTopNews(self):
        # Get the top news articles.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getTopNews(language=self.language)
            self.formated = self.format_news(self.data)
            print(self.formated)
        except Exception as e:
            print(e)

    def getLatestNews(self):
        # Get the latest news articles.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getLatestNews(language=self.language)  
            self.formated = self.format_news(self.data)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopNewsByCoin(self, coin):
        # Get the top news articles for a specific coin from the CryptoControl API.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getTopNewsByCoin(coin,language=self.language)
            self.formated = self.format_news(self.data)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopNewsByCategory(self):
        # Get news articles grouped by category.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getTopNewsByCategory(language=self.language)
        except Exception as e:
            print(e)
            return
        self.formated = pd.concat([self.format_news(self.data[i]) for i in self.data.keys()])
        print(self.formated)


    def getLatestNewsByCoin(self, coin):
        # Get the latest news articles for a specific coin.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getLatestNewsByCoin(coin, language= self.language) 
            self.formated = self.format_news(self.data)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopNewsByCoinCategory(self, coin):
        # Get news articles grouped by category for a specific coin.
        self.data, self.formated = None, None
        try:
            self.data = self.api.getTopNewsByCoinCategory(coin, language=self.language) 
            self.formated = self.format_news(self.data)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopTweetsByCoin(self, coin):
        # Get top tweets for a particular coin
        self.tweets, self.formated = None, None
        try:
            self.tweets = self.api.getTopTweetsByCoin(coin,language=self.language)
            self.formated = self.format_tweets(self.tweets)
            print(self.formated)
        except Exception as e:
            print(e)

    def getLatestTweetsByCoin(self, coin):
        # Get latest tweets for a particular coin
        self.tweets, self.formated = None, None
        try:
            self.tweets = self.api.getLatestTweetsByCoin(coin,language=self.language)
            self.formated = self.format_tweets(self.tweets)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopRedditPostsByCoin(self, coin):
        # Get top reddit posts for a particular coin
        self.reddit, self.formated = None, None
        try:
            self.reddit = self.api.getTopRedditPostsByCoin(coin,language=self.language)
            self.formated = self.format_reddit(self.reddit)
            print(self.formated)
        except Exception as e:
            print(e)

    def getTopFeedByCoin(self, coin):
        # Get a combined feed (reddit/tweets/articles) for a particular coin sort by time
        self.feed, self.formated = None, None
        try:
            self.feed = self.api.getTopFeedByCoin(coin,language=self.language)
            self.formated = self.format_feed(self.feed)
            print(self.formated)
        except Exception as e:
            print(e)    
    
    def getCoinDetails(self, coin):
        try:
            self.coin = self.api.getCoinDetails(coin,language=self.language)
            print(pd.DataFrame.from_dict(self.coin,orient = 'index'))
        except Exception as e:
            print(e)       

    def export_csv(self):
        # export formated data to csv
        self.formated.to_csv('section1/task3/Formated_Data.csv', index = 0)
    
    @staticmethod
    def format_news(data):
        news = pd.DataFrame(data)
        news = news[['primaryCategory', 'coins', 'title', 
            'url', 'source','publishedAt']]
        news['coins'] = [[i['tradingSymbol'] for i in news.coins[j]] for j in range(news.coins.size)]
        news['source'] = [i['name'] for i in news.source]
        return news 
    
    @staticmethod
    def format_tweets(data):
        tweets = pd.DataFrame(data)
        tweets = tweets[['text', 'url', 'publishedAt','retweetCount', 'favoriteCount']]
        return tweets
    @staticmethod
    def format_reddit(data):
        reddit = pd.DataFrame(data)
        reddit = reddit[['title', 'url', 'subreddit', 'publishedAt' , 'comments', 'upvotes']]
        return reddit

    def format_feed(self, data):
        feed = pd.DataFrame(data)
        article = self.format_news([x for x in feed.article.dropna()])
        tweet = self.format_tweets([x for x in feed.tweet.dropna()])
        reddit = self.format_reddit([x for x in feed.reddit.dropna()])
        tweet = tweet.rename(columns={'text':'title'})
        df = pd.concat([article,tweet,reddit]).sort_values('publishedAt',ascending=False)
        df = df.drop('coins', axis = 1)
        # df = df[['title','url','publishedAt']]
        return df
Exemplo n.º 4
0
             axis=1)
df['title'].apply(lambda x: x.strip())
df.to_csv('ru_data.csv', index=False)

# get top bitcoin news
bitcoin = api.getTopNewsByCoin("bitcoin")
df = pd.DataFrame(bitcoin)
df = df.drop([
    'similarArticles', 'coins', 'source', 'description', 'originalImageUrl',
    'url', 'thumbnail'
],
             axis=1)
df.to_csv('bitcoin_data.csv', index=False)

# get top EOS tweets
eos = api.getTopTweetsByCoin("eos")
df = pd.DataFrame(eos)
df = df.drop(['text', 'url'], axis=1)
df.to_csv('eos_data.csv', index=False)

# get top Ripple reddit posts
ripple = api.getLatestRedditPostsByCoin("ripple")
df = pd.DataFrame(ripple)
df = df.drop([
    'similarArticles', 'coins', 'source', 'description', 'originalImageUrl',
    'url', 'thumbnail'
],
             axis=1)
df.to_csv('ripple_data.csv', index=False)

# get reddit/tweets/articles in a single combined feed for NEO
save_csv(ln, 'latest_news.csv')

# get latest news by coin
latest_coin_news = api.getLatestNewsByCoin("bitcoin")
lcn = format_df(latest_coin_news)
save_j(latest_coin_news, 'latest_coin_news.json')
save_csv(lcn, 'latest_coin_news.csv')

# get top news by category for a paticular coin
top_news_coin_category = api.getTopNewsByCoinCategory("bitcoin")
tncc = format_df(top_news_coin_category)
save_j(top_news_coin_category, 'top_news_coin_category.json')
save_csv(tncc, 'top_news_coin_category.csv')

# get top tweets
top_coin_tweets = api.getTopTweetsByCoin("bitcoin")
tct = format_df(top_coin_tweets)
save_j(top_coin_tweets, 'top_coin_tweets.json')
save_csv(tct, 'top_coin_tweets.csv')

# get latest tweets by coin
latest_coin_tweets = api.getLatestTweetsByCoin('bitcoin')
lct = format_df(latest_coin_tweets)
save_j(latest_coin_tweets, 'latest_coin_tweets.json')
save_csv(lct, 'latest_coin_tweets.csv')

# get Get top reddit posts for a particular coin
top_coin_reddits = api.getTopRedditPostsByCoin("bitcoin")
tcr = format_df(top_coin_reddits)
save_j(top_coin_reddits, 'top_coin_reddits.json')
save_csv(tcr, 'top_coin_reddits.csv')