Ejemplo n.º 1
0
 def test_news(self):
     from pyEX import news
     with patch('requests.get') as mock, \
          patch('pickle.dump'):
         mock.return_value = MagicMock()
         mock.return_value.status_code = 200
         news('test')
Ejemplo n.º 2
0
    def test_news(self):
        from pyEX import news

        with patch("requests.get") as mock, patch("pickle.dump"):
            mock.return_value = MagicMock()
            mock.return_value.status_code = 200
            news("test")
Ejemplo n.º 3
0
    def test_news(self):
        from pyEX import news

        with patch("requests.get") as mock:
            mock.return_value = MagicMock()
            mock.return_value.status_code = 200
            news("test")
            news("test", language="en")
Ejemplo n.º 4
0
 def test_news(self):
     from pyEX import news
     news(C)
Ejemplo n.º 5
0
    def prepNews(self, ticker):
        daysAgo = 30
        sent_data = {}
        SENT_PATH = f'./news/sentiment/{ticker}.json'

        if os.path.exists(SENT_PATH):
            with open(SENT_PATH, 'r') as JSON:
                sent_data = json.load(JSON)

        with open('./ticker-dict.json') as JSON:
            tickers = json.load(JSON)
            subName = tickers[ticker]

        sia = SentimentIntensityAnalyzer()
        translator = Translator()

        if str(sent_data).count('{') < 5:
            print(f'Less than {daysAgo} news articles.')
            news = p.news(count=(daysAgo),
                          symbol=ticker,
                          token=self.secret,
                          version='v1')

            cc = 0
            print(f'News LENGTH: {len(news)}')
            for story in news:
                timestamp = story['datetime']
                date = str(
                    datetime.datetime.fromtimestamp(int(
                        str(timestamp)[0:-3]))).split(' ')[0]
                print(date)
                url = story['url']
                summary = story['summary']
                lang = story['lang']
                hasPaywall = story['hasPaywall']

                if lang != 'en':
                    try:
                        summary = translator.translate(summary).text
                    except:
                        summary = ''

                if hasPaywall != True:
                    HTML = requests.get(url, headers=self.agent).text
                    soup = BeautifulSoup(HTML, features="lxml")
                    paragraphs = soup.findAll('p')

                    allText = []
                    for peice in paragraphs:
                        if ticker.lower() in str(
                                peice).lower() or subName.lower().split(
                                    ' ')[0] in str(peice).lower():
                            txt = str(peice.getText())
                            if lang != 'en':
                                peice = translator.translate(txt).text
                            allText += [txt]

                    TEXT = ' '.join(allText)
                    if TEXT == '':
                        print('No text... using summary')
                        TEXT = summary
                    sentiment = sia.polarity_scores(TEXT)

                else:
                    sentiment = sia.polarity_scores(summary)

                formatted = {
                    'url': url,
                    'summary': summary,
                    'lang': lang,
                    'hasPaywall': hasPaywall,
                    'sentiment': sentiment,
                }

                try:
                    sent_data[date] = sent_data[date] + [formatted]
                except:
                    sent_data[date] = [formatted]
                cc += 1
                print(f'{cc} done.')
                #sentimentSummary = sia.polarity_scores(summary)

            last = int(str(news[-1]['datetime'])[0:-3])
            first = time.time()  #int(str(news[-1]['datetime'])[0:-3])
            delta = first - last
            DAYS = int(delta / 60 / 60 / 24)

            print(f'Delta: {DAYS}')
            date_list = self.genCalList(DAYS)

            KEYS = sent_data.keys()
            for dt in date_list:
                if dt not in KEYS:
                    sent_data[dt] = {}

            try:
                sent_data['lastDeltaAv'] = (sent_data['lastDeltaAv'] +
                                            DAYS) / 2
            except:
                sent_data['lastDeltaAv'] = DAYS

            with open(SENT_PATH, 'w') as JSON:
                json.dump(sent_data, JSON)
Ejemplo n.º 6
0
def pyEXNews(query):

    newsResult = pyEX.news(query, count=10)
    return newsResult