def __topic_29(db, funding): """ BAT又在这些领域出手了 187, 217, 117 """ investors = set(dbutil.get_funding_investor_ids( db, funding.id)) & {187, 217, 117} if investors: active = 'Y' if dbutil.get_topic_auto_pubilsh_status( db, 29) == 'Y' else 'P' cid = funding.companyId investors = ','.join( [dbutil.get_investor_name(db, iid) for iid in investors]) msg = u'%s投资了%s,%s' % \ (investors, dbutil.get_company_brief(db, cid), dbutil.get_company_name(db, cid)) tpm = dbutil.update_topic_message(db, 29, msg, active, 70, funding.id) # if active == 'Y': if tpm: send_msg(tpm, 'topic_message') tpc = dbutil.update_topic_company(db, 29, cid, active) if tpc: dbutil.update_topic_message_company(db, tpm, tpc) send_msg(tpc, 'topic_company') logger_track.info('29 for %s, add tpm %s' % (funding.id, tpm)) else: logger_track.info('29 not for %s' % funding.id)
def __topic_28(db, funding): """ 红杉真格经纬IDG 114, 122, 125, 109 """ investors = set(dbutil.get_funding_investor_ids( db, funding.id)) & {114, 122, 125, 109} if investors: active = 'Y' if dbutil.get_topic_auto_pubilsh_status( db, 28) == 'Y' else 'P' # cid = dbutil.get_corporate_companies(db, funding.corporateId)[0] cid = funding.companyId investors = ','.join( [dbutil.get_investor_name(db, iid) for iid in investors]) msg = u'%s投资了%s,%s' % \ (investors, dbutil.get_company_brief(db, cid), dbutil.get_company_name(db, cid)) tpm = dbutil.update_topic_message(db, 28, msg, active, 70, funding.id) # if active == 'Y': if tpm: send_msg(tpm, 'topic_message') # for cid in dbutil.get_corporate_companies(db, funding.corporateId): tpc = dbutil.update_topic_company(db, 28, cid, active) # if active == 'Y': if tpc: dbutil.update_topic_message_company(db, tpm, tpc) send_msg(tpc, 'topic_company') logger_track.info('28 for %s, add tpm %s' % (funding.id, tpm)) else: logger_track.info('28 not for %s' % funding.id)
def track_funding_for_investor_message(self, cid, fid, iids, funding_round, abstract): investor_names = ','.join( [dbutil.get_investor_name(self.db, i) for i in iids]) # 7002 for iid in iids: im = dbutil.update_investor_message(self.db, iid, abstract, 7002, 70, fid, active='Y') if im: self.send_investor_message_msg(im) # 7005 and 7006 previous_fundings = [ funding.id for funding in dbutil.get_company_funding(self.db, cid) if funding.id < fid ] previous_iids = chain(*[ dbutil.get_funding_investor_ids(self.db, funding) for funding in previous_fundings ]) if previous_iids: if funding_round == 1110: msg = u'%s完成IPO' % dbutil.get_company_name(self.db, cid) dimension = 7005 elif funding_round == 1120: msg = u'%s被%s收购' % (dbutil.get_company_name( self.db, cid), investor_names) dimension = 7005 else: dimension = 7006 for iid in previous_iids: if dimension == 7006: msg = u'%s已投项目, %s' % (dbutil.get_investor_name( self.db, iid), abstract) im = dbutil.update_investor_message(self.db, iid, msg, dimension, 70, fid) if im: self.send_investor_message_msg(im)
def create_single(self, db, funding): global logger_universale_index # funding that is not active if not dbutil.get_funding_index_type(db, funding.id): return event = {'fid': funding.id} event['investorId'] = dbutil.get_funding_investor_ids(db, funding.id) event['investor'] = [ dbutil.get_investor_name(db, iid) for iid in event.get('investorId', []) ] # previous investors if funding.fundingDate: previous_fundings = [ f.id for f in dbutil.get_company_funding(db, funding.companyId) if f.fundingDate and f.fundingDate < funding.fundingDate ] previous_iids = set( chain(*[ dbutil.get_funding_investor_ids(db, fid) for fid in previous_fundings ])) event['previous_investor'] = [ dbutil.get_investor_name(db, iid) for iid in previous_iids if iid ] event['location'] = dbutil.get_company_location(db, funding.companyId)[0] sectors = dbutil.get_company_sector_tag(db, funding.companyId) event['sector'] = sectors[0] if len(sectors) > 0 else 0 tags_info = dbutil.get_company_tags_idname(db, funding.companyId, tag_out_type=(11000, 11001, 11002)) if tags_info: for tid, tname, weight in tags_info: event.setdefault('tags', []).append(tname.lower()) event['round'] = funding.round event['sort_round'] = dbutil.get_round_sort(db, funding.round) if funding.investment: precise = {'Y': 1, 'N': 5}.get(funding.precise, 1) investment = funding.investment * precise * dbutil.get_currency_rate( db, funding.currency) / 10000 event['last_funding_amount'] = investment else: event['last_funding_amount'] = None event['last_funding_date'] = funding.fundingDate event[ 'funding_year'] = funding.fundingDate.year if funding.fundingDate else None event['publish_date'] = funding.publishDate event['source'] = funding.source if funding.source else 0 event['sort_sector'] = dbutil.get_tag_novelty( db, sectors[0]) if len(sectors) > 0 else None event['sort_location'] = dbutil.get_company_location( db, funding.companyId, True)[1] self.es.index(index="xiniudata2", doc_type='event', id=funding.id, body=event)
def feed_incremental(self): global producer_track, logger_track fundings = dbutil.get_untracked_fundings(self.db) for funding in fundings: try: logger_track.info('Processing track %s' % funding.id) cid, corpid, fid, funding_date = funding.companyId, funding.corporateId, funding.id, funding.fundingDate # for cid in dbutil.get_corporate_companies(self.db, copid): # none funding date if not funding_date: dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s not funding date' % fid) continue # funding date older than 1 year # if funding_date < datetime.now() - timedelta(days=365): # dbutil.mark_funding_tracked(self.db, fid) # logger_track.info('%s funding date 1 year ago' % fid) # continue # check if publish date is older than 7 days if funding.publishDate and funding.publishDate < datetime.now( ) - timedelta(days=7): dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s funding published 7 days ago' % fid) continue # check if there is publish date if not funding.publishDate: dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s funding no published date' % fid) continue # check if this funding is a new funding latest = dbutil.get_corporate_latest_funding(self.db, corpid) if latest and latest.fundingDate > funding_date: dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s not new, funding id %s, had %s' % (cid, fid, latest.id)) continue if latest and latest.fundingDate == funding_date and not latest.id == fid: dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s not new, funding id %s, had %s' % (cid, fid, latest.id)) continue # only from ipo sources = dbutil.get_company_source(self.db, cid) if len(sources) == 1 and len(sources & {13400, 13401, 13402}) == 1: dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s just IPO, funding id %s' % (cid, fid)) continue name = dbutil.get_company_name(self.db, cid) abstract = u'%s获得新一轮融资' % name track_msg_id = str( self.mongo.track.track.insert({ 'topic_id': 3, 'company_id': cid, 'abstract': abstract, 'createTime': datetime.today() })) self.track_funding(cid, track_msg_id, fid, abstract) self.track_funding_for_investor_message( cid, fid, dbutil.get_funding_investor_ids(self.db, fid), funding.round, abstract) dbutil.mark_funding_tracked(self.db, fid) logger_track.info('%s tracked, funding id %s' % (cid, fid)) except Exception, e: logger_track.exception('Failed %s, %s' % (funding.id, e))