def get(self): ticker = self.request.get('ticker') category = self.request.get('category') subcategory = self.request.get('subcategory') entry = stock.get(ticker) entry.category = category entry.subcategory = subcategory stock.put(ticker, entry)
def __update_market_capital(self, market_capital): ticker = self.request.get('ticker') title = self.request.get('title') entry = stock.get(ticker) entry.ticker = ticker entry.title = title entry.market_capital = market_capital entry.market_capital_date = datetime.date.today() stock.put(ticker, entry)
def privmsg(self, user, channel, msg): """This will get called when the bot receives a message.""" source = user.split('!', 1)[0] global teddy_mute if msg.lower().startswith("!%s" % self.nickname): parse_last = re.split(' ', msg.strip()) if len(parse_last) == 2: if source == 'jason' and parse_last[1] == 'mute': teddy_mute = True self.msg(channel, 'i will stop talking now ' + source) elif source == 'jason' and parse_last[1] == 'unmute': teddy_mute = False self.msg(channel, 'lets talk ' + source) if msg.lower().startswith("!%s" % "all"): parse_last = re.split(' ', msg.strip()) if len(parse_last) == 2: for url in self.url_by_source(parse_last[1]): self.msg(source, url) if msg.lower().startswith("!%s" % "search"): parse_last = re.split(' ', msg.strip()) if len(parse_last) == 2: for url in self.url_by_search(parse_last[1]): self.msg(source, url) if msg.lower().startswith("!%s" % "last"): parse_last = re.split(' ', msg.strip()) if len(parse_last) == 2: short = self.get_short_from_db('source', parse_last[1]) title = self.get_title_from_db('short', short) self.msg(channel, title) self.msg(channel, "http://wgeturl.com/" + short) elif len(parse_last) == 1: short = self.get_short_from_db('source', source) title = self.get_title_from_db('short', short) self.msg(channel, title) self.msg(channel, "http://wgeturl.com/" + short) else: self.msg(channel, "!last username") if msg.lower().startswith("!%s" % "stock"): parse_last = re.split(' ', msg.strip()) try: stock_data = stock.get(parse_last[1]) self.msg(channel, stock_data) except: print "Unexpected error:", sys.exc_info() if msg.lower().startswith("!%s" % "flip"): parse_last = msg.strip()[6:] angry = '(╯°□°)╯︵' if parse_last: flip = upsidedown.transform(parse_last) flipit = '%s %s' % (angry, flip.encode('utf-8')) else: flipit = '%s %s' % (angry, '┻━┻ ') try: self.msg(channel, flipit) except: print "Unexpected error:", sys.exc_info() if msg.lower().startswith("!%s" % "moofi"): parse_last = re.split(' ', msg.strip()) try: items = woot.get(woot_key, event='moofi') for item in items: output = "%s - Sale:$%s List:$%s" % (item['title'], item['saleprice'], item['listprice']) short = self.write_url_to_db(source, item['url']) self.msg(channel, output) self.msg(channel, "http://wgeturl.com/" + short) except: print "Unexpected error:", sys.exc_info() # if msg.lower().startswith("!%s" % "woot"): # parse_last = re.split(' ', msg.strip()) # try: # item = woot.get(woot_key) # output = "%s - Sale:$%s List:$%s" % (item['title'], item['saleprice'], item['listprice']) # short = self.write_url_to_db(source, item['url']) # self.msg(channel, output) # self.msg(channel, "http://wgeturl.com/" + short) # except: # print "Unexpected error:", sys.exc_info() if "pug me" in msg.lower(): self.msg(channel, getpug()) if "lgtm" in msg.lower(): self.msg(channel, getlgtm()) if "t**s" in msg.lower(): self.msg(channel, getreddit('t**s')) if msg.lower().startswith("!r"): m = re.search('!r\W(.*)', msg.lower()) self.msg(channel, getreddit(m.group(1))) if msg.lower().endswith('++'): m = re.search('(.*)\+\+', msg.lower()) score.increment(m.group(1)) if msg.lower().endswith('--'): m = re.search('(.*)\-\-', msg.lower()) score.decrement(m.group(1)) if msg.lower().startswith('!score'): user_score_name = re.split(' ', msg.strip())[1] user_score = score.get_score(user_score_name) self.msg(channel, '%s has %s points!' % (user_score_name, user_score)) if msg.lower().startswith("!%s" % "dance"): self.msg(channel, ":D\<") self.msg(channel, ":D|<") self.msg(channel, ":D/<") self.msg(channel, ":D|<") if msg.lower().startswith("!%s" % "angrydance"): self.msg(channel, ">\D:") self.msg(channel, ">|D:") self.msg(channel, ">/D:") self.msg(channel, ">|D:") if re.search("http", msg.lower()) and source != 'wesley': try: parse_string = msg[msg.find("http"):] url = parse_string.strip() short = self.write_url_to_db(source, url) title = self.get_title_from_db('short', short) self.msg(channel, title) if (len(parse_string) >= 29): self.msg(channel, "http://wgeturl.com/" + short) except: print "Unexpected error:", sys.exc_info() if "teddy" in msg.lower(): try: teddy_response = self.teddy_ai(msg.lower()) self.msg(channel, source + ": " + teddy_response) except: self.msg(channel, source + ": My brain is broken :(")
def __update_earnings(self): ticker = self.request.get('ticker') entry = stock.get(ticker) balance = self.__get_balance_earnings() profit = self.__get_profit_earnings() year = datetime.date.today().year for i in range(3): earnings_date = self.__get_recent_earnings_date(year - i, balance, profit) if earnings_date is not None: break if earnings_date is None: logging.warn('There is no earnings date for %s' % (ticker)) return else: try: bank_flag = False if earnings_date.month == 12: this_earnings_date = earnings_date.strftime('%Y%m%d') ebit = self.__get_ebit(profit[this_earnings_date]) income = self.__get_income(profit[this_earnings_date]) enterprise_value = self.__get_enterprise_value(balance[this_earnings_date]) tangible_asset = self.__get_tangible_asset(balance[this_earnings_date]) ownership_interest = self.__get_ownership_interest(balance[this_earnings_date]) net_profit = self.__get_net_profit(profit[this_earnings_date]) total_assets = self.__get_total_assets(balance[this_earnings_date]) total_liability = self.__get_total_liability(balance[this_earnings_date]) else: this_earnings_date = earnings_date.strftime('%Y%m%d') last_earnings_date = earnings_date.replace(earnings_date.year - 1).strftime('%Y%m%d') last_year_date = datetime.date(year=earnings_date.year - 1, month=12, day=31).strftime('%Y%m%d') enterprise_value = self.__get_enterprise_value(balance[this_earnings_date]) tangible_asset = self.__get_tangible_asset(balance[this_earnings_date]) ownership_interest = self.__get_ownership_interest(balance[this_earnings_date]) total_assets = self.__get_total_assets(balance[this_earnings_date]) total_liability = self.__get_total_liability(balance[this_earnings_date]) ebit = (self.__get_ebit(profit[this_earnings_date]) + self.__get_ebit(profit[last_year_date]) - self.__get_ebit(profit[last_earnings_date])) income = (self.__get_income(profit[this_earnings_date]) + self.__get_income(profit[last_year_date]) - self.__get_income(profit[last_earnings_date])) net_profit = (self.__get_net_profit(profit[this_earnings_date]) + self.__get_net_profit(profit[last_year_date]) - self.__get_net_profit(profit[last_earnings_date])) except KeyError as ke: logging.exception(ke) bank_flag = True if earnings_date.month == 12: this_earnings_date = earnings_date.strftime('%Y%m%d') ownership_interest = string.atof(balance[this_earnings_date]['归属于母公司股东的权益']) net_profit = string.atof(profit[this_earnings_date]['归属于母公司的净利润']) total_assets = string.atof(balance[this_earnings_date]['资产总计']) total_liability = string.atof(balance[this_earnings_date]['负债合计']) else: this_earnings_date = earnings_date.strftime('%Y%m%d') last_earnings_date = earnings_date.replace(earnings_date.year - 1).strftime('%Y%m%d') last_year_date = datetime.date(year=earnings_date.year - 1, month=12, day=31).strftime('%Y%m%d') ownership_interest = string.atof(balance[this_earnings_date]['归属于母公司股东的权益']) total_assets = string.atof(balance[this_earnings_date]['资产总计']) total_liability = string.atof(balance[this_earnings_date]['负债合计']) net_profit = (string.atof(profit[this_earnings_date]['归属于母公司的净利润']) + string.atof(profit[last_year_date]['归属于母公司的净利润']) - string.atof(profit[last_earnings_date]['归属于母公司的净利润'])) entry.bank_flag = bank_flag entry.earnings_date = earnings_date entry.ownership_interest = ownership_interest entry.net_profit = net_profit entry.total_assets = total_assets entry.total_liability = total_liability stock.put(ticker, entry) logging.info("Firstly %s is a bank" % (ticker)) return entry.bank_flag = bank_flag entry.earnings_date = earnings_date entry.ebit = ebit entry.income = income entry.enterprise_value = enterprise_value entry.tangible_asset = tangible_asset entry.ownership_interest = ownership_interest entry.net_profit = net_profit entry.total_assets = total_assets entry.total_liability = total_liability stock.put(ticker, entry)
def __update_earnings(self): ticker = self.request.get('ticker') entry = stock.get(ticker) balance = self.__get_balance_earnings() profit = self.__get_profit_earnings() year = datetime.date.today().year for i in range(3): earnings_date = self.__get_recent_earnings_date(year - i, balance, profit) if earnings_date is not None: break if earnings_date is None: logging.warn('There is no earnings date for %s' % (ticker)) return else: try: bank_flag = False if earnings_date.month == 12: this_earnings_date = earnings_date.strftime('%Y%m%d') ebit = self.__get_ebit(profit[this_earnings_date]) income = self.__get_income(profit[this_earnings_date]) enterprise_value = self.__get_enterprise_value(balance[this_earnings_date]) tangible_asset = self.__get_tangible_asset(balance[this_earnings_date]) ownership_interest = self.__get_ownership_interest(balance[this_earnings_date]) net_profit = self.__get_net_profit(profit[this_earnings_date]) total_assets = self.__get_total_assets(balance[this_earnings_date]) total_liability = self.__get_total_liability(balance[this_earnings_date]) current_assets = self.__get_current_assets(balance[this_earnings_date]) else: this_earnings_date = earnings_date.strftime('%Y%m%d') last_earnings_date = earnings_date.replace(earnings_date.year - 1).strftime('%Y%m%d') last_year_date = datetime.date(year=earnings_date.year - 1, month=12, day=31).strftime('%Y%m%d') enterprise_value = self.__get_enterprise_value(balance[this_earnings_date]) tangible_asset = self.__get_tangible_asset(balance[this_earnings_date]) ownership_interest = self.__get_ownership_interest(balance[this_earnings_date]) total_assets = self.__get_total_assets(balance[this_earnings_date]) total_liability = self.__get_total_liability(balance[this_earnings_date]) current_assets = self.__get_current_assets(balance[this_earnings_date]) ebit = (self.__get_ebit(profit[this_earnings_date]) + self.__get_ebit(profit[last_year_date]) - self.__get_ebit(profit[last_earnings_date])) income = (self.__get_income(profit[this_earnings_date]) + self.__get_income(profit[last_year_date]) - self.__get_income(profit[last_earnings_date])) net_profit = (self.__get_net_profit(profit[this_earnings_date]) + self.__get_net_profit(profit[last_year_date]) - self.__get_net_profit(profit[last_earnings_date])) except KeyError as ke: logging.exception(ke) bank_flag = True if earnings_date.month == 12: this_earnings_date = earnings_date.strftime('%Y%m%d') ownership_interest = string.atof(balance[this_earnings_date]['归属于母公司股东的权益']) net_profit = string.atof(profit[this_earnings_date]['归属于母公司的净利润']) total_assets = string.atof(balance[this_earnings_date]['资产总计']) total_liability = string.atof(balance[this_earnings_date]['负债合计']) else: this_earnings_date = earnings_date.strftime('%Y%m%d') last_earnings_date = earnings_date.replace(earnings_date.year - 1).strftime('%Y%m%d') last_year_date = datetime.date(year=earnings_date.year - 1, month=12, day=31).strftime('%Y%m%d') ownership_interest = string.atof(balance[this_earnings_date]['归属于母公司股东的权益']) total_assets = string.atof(balance[this_earnings_date]['资产总计']) total_liability = string.atof(balance[this_earnings_date]['负债合计']) net_profit = (string.atof(profit[this_earnings_date]['归属于母公司的净利润']) + string.atof(profit[last_year_date]['归属于母公司的净利润']) - string.atof(profit[last_earnings_date]['归属于母公司的净利润'])) entry.bank_flag = bank_flag entry.earnings_date = earnings_date entry.ownership_interest = ownership_interest entry.net_profit = net_profit entry.total_assets = total_assets entry.total_liability = total_liability stock.put(ticker, entry) logging.info("Firstly %s is a bank" % (ticker)) return entry.bank_flag = bank_flag entry.earnings_date = earnings_date entry.ebit = ebit entry.income = income entry.enterprise_value = enterprise_value entry.tangible_asset = tangible_asset entry.ownership_interest = ownership_interest entry.net_profit = net_profit entry.total_assets = total_assets entry.total_liability = total_liability entry.current_assets = current_assets stock.put(ticker, entry)