Пример #1
0
    def execute(self):
        driver = self.driver
        slack = Slack()
        try:

            for url in self.capTgtList['url']:
                img_path = SeleniumUtils.capureRange(driver, url)

                # post img to slack
                slack.post_img_to_channel("general", img_path)

        except WebDriverException:
            import traceback
            message = "occurred system error!!\n" + str(traceback.print_exc())
            slack.post_message_to_channel("general", message)
        finally:
            driver.close()
Пример #2
0
    def ipo_request(self):
        driver = self.driver
        slack = Slack()
        try:
            # SBI securities page
            driver.get("https://www.sbisec.co.jp/ETGate")

            for login_info in self.login_info_list:
                self.one_person_ipo_request(driver, login_info)

            # slack notice
            message = "everyone's ipo applied num:" + str(self.applyCount)
            slack.post_message_to_channel("general", message)
        except WebDriverException:
            import traceback
            message = "occurred system error!!\n" + str(traceback.print_exc())
            slack.post_message_to_channel("general", message)
        finally:
            driver.close()
Пример #3
0
    def settlement_notice(self):
        try:
            # holdings stock list
            stockInfoList = self.get_stockInfoList()

            # set finance info from kabtan
            self.set_settlementInfo(stockInfoList)

            # set display message
            sortedStockInfoList = sorted(stockInfoList,
                                         key=itemgetter("profitAnnoDay"))
            mesList = []
            mesLinkParam = []
            stockCount = 1
            for info in sortedStockInfoList:
                mesList.append(" ".join([val for val in info.values()]))
                if stockCount <= self.CHART_DISP_LIMIT:
                    mesLinkParam.append("&symbol" + str(stockCount) + "=" +
                                        info["stockCd"])
                    stockCount += 1

            mesStockInfo = '\n'.join(mesList)
            mesCompareChartLink = '<https://www.morningstar.co.jp/frstock_us/compare.html?term=1Y' + ''.join(
                mesLinkParam) + '|compare chart>'
            mesLineUpChart = '<https://stockcharts.com/freecharts/candleglance.html?$SPX,' + ",".join(
                stock["stockCd"]
                for stock in sortedStockInfoList) + '|line up chart>'

            message = "=== portfolio settlement day ===\n" + mesStockInfo + "\n" + mesCompareChartLink + "\n" + mesLineUpChart

            # slack notice
            slack = Slack()
            slack.post_message_to_channel("general", message)

        except NoSuchElementException as e:
            print('settlement info extraction error.')
            print('例外args:', e.args)

        finally:
            self.driver.quit()
Пример #4
0
def checkRate(jdata, rate):
    """ 取得したデータを評価する
	params:
		jdata 過去のデータ
		rate  現在の為替レート
	"""

    slack = Slack(SLACK_API)

    isOverSellRate = False
    isUnderBuyRate = False

    for row in jdata['data']:
        if (row['rate'] > SELL_RATE):
            isOverSellRate = True
            isUnderBuyRate = False

            if (row['rate'] > MAX_RATE):
                isOverSellRate = False

        elif (row['rate'] < BUY_RATE):
            isOverSellRate = False
            isUnderBuyRate = True

            if (row['rate'] < MIN_RATE):
                isUnderBuyRate = False

        if (row['rate'] < ALERT_RATE):
            isOverSellRate = False

    rateMessage = "為替レートが設定値[{}円]を"
    if (isOverSellRate):
        if (rate > MAX_RATE):
            slack.post_message_to_channel(
                "general",
                rateMessage.format(str(MAX_RATE)) + "超えました")
            print("max rate")
            jdata.update({"data": []})
        elif (rate < ALERT_RATE):
            slack.post_message_to_channel(
                "general",
                rateMessage.format(str(ALERT_RATE)) + "下回りました")
            print("alert")
        elif (rate < BUY_RATE):
            slack.post_message_to_channel(
                "general",
                rateMessage.format(str(BUY_RATE)) + "下回りました")
            print("buy")
    elif (isUnderBuyRate):
        if (rate < MIN_RATE):
            slack.post_message_to_channel(
                "general",
                rateMessage.format(str(MIN_RATE)) + "下回りました")
            print("min rate")
            jdata.update({"data": []})
        elif (rate > SELL_RATE):
            slack.post_message_to_channel(
                "general",
                rateMessage.format(str(SELL_RATE)) + "超えました")
            print("sell")

    return jdata
Пример #5
0
        (idx, channel, word, bookmark_count, last_post) = row
        xml = hatebu.get_rss_data(word, bookmark_count)
        parse_data = hatebu.parse_xml_data(xml)

        for data in parse_data:
            
            # last_post より はてブから取得した日付が 新しい場合はslackに投稿する。
            if judge_new_date(last_post, data["date"]):

                last_post = data["date"]
                message = """
                ブックマーク数: {0}
                タイトル: {1}
                URL: {2} 
                """.format(data["bookmark_count"], data["title"], data["url"])
                
                # slackに投稿する。
                slack.post_message_to_channel(channel, message)

                # データベースのlast_postを更新する
                sql = """
                UPDATE hatebu_list SET last_post = ? WHERE id = ?
                """
                cursor.execute(sql, (last_post, idx))
    
    # データベースの変更を更新
    connect.commit()
    # データベースを閉じる
    connect.close()