コード例 #1
0
    def update_3109(self, today=None):

        global logger_track
        today = today or datetime.today()
        one_week_before, three_month_before = today - timedelta(days=8), today - timedelta(days=90)
        types = ['free', 'charge', 'grossing']
        genres = self.__get_genres()
        for t in types:
            for g in genres:
                outstanding_apps_candidates = [item['_id'] for item in list(self.mongo.trend.appstore_rank.aggregate([
                    {'$match': {'date': {'$gt': one_week_before, '$lte': today}, 'rank': {'$lte': 10}, 'type': t,
                                'genre': g}},
                    {'$group': {'_id': '$trackId', 'times': {'$sum': 1}}},
                    {'$match': {'times': {'$gte': 7}}}]))]
                
                def previous_perform_poorly(track_id):
                    top_rank = list(self.mongo.trend.appstore_rank.find({'trackId': track_id, 'type': t, 'genre': g,
                                                                         'date': {'$gt': three_month_before,
                                                                                  '$lte': one_week_before}}
                                                                        ).sort([('rank', 1)]).limit(10))
                    return top_rank[-1]['rank'] > 30 if top_rank else True

                outstanding_apps = filter(previous_perform_poorly, outstanding_apps_candidates)
                for track_id in outstanding_apps:
                    for aid in dbutil.get_artifacts_from_iOS(self.db, track_id):
                        cid = dbutil.get_artifact_company(self.db, aid)
                        corp_round = dbutil.get_company_round(self.db, cid)
                        if corp_round < 1060:
                            msg = u'%s旗下 %s 近期在AppStore%s排名表现突出' % \
                                  (dbutil.get_company_name(self.db, cid),
                                   self.__normalize_iOS_name(dbutil.get_artifact_name(self.db, aid)),
                                   self.__get_rank_name(g, t))
                            detail = '%s,%s' % (g, t)
                            dbutil.update_continuous_company_message(self.db, cid, msg, 3109, 30, aid, 7, detail)
                            logger_track.info('3109, %s, %s, %s, %s' % (cid, aid, t, g))
コード例 #2
0
    def track_2004(self, logger=None):
        """
        update every day
        """

        yesterday = datetime.now() - timedelta(days=1)
        for record in list(
                self.mongo.market.itunes.find({
                    'offline_itunes': 'Y',
                    'offlineitunesDetectTime': {
                        '$gt': yesterday
                    }
                })):
            for aid in dbutil.get_artifacts_from_iOS(self.db,
                                                     record['trackId']):
                cid = dbutil.get_artifact_company(self.db, aid)
                aname = dbutil.get_artifact_name(self.db, aid)
                msg = u'%s的一款iOS应用%s下架' % \
                      (dbutil.get_company_name(self.db, cid), self.normalize_artifact_name(aname))
                feed_back = dbutil.update_daily_company_message(self.db,
                                                                cid,
                                                                msg,
                                                                2004,
                                                                20,
                                                                aid,
                                                                yesterday,
                                                                comments=aname)
                if feed_back:
                    self.send_company_message_msg(feed_back)
                if logger:
                    logger.info('2004, %s, mysql: %s' % (cid, feed_back))
コード例 #3
0
    def __process_artifact_2002_2003(self, aid, new_version, old_versions,
                                     yesterday, logger, market):

        cid = dbutil.get_artifact_company(self.db, aid)
        aname = dbutil.get_artifact_name(self.db, aid)
        if self.__import_update(new_version, old_versions):
            msg = u'%s的一款%s应用%s有重大版本%s更新' % \
                  (dbutil.get_company_name(self.db, cid), market, self.normalize_artifact_name(aname), new_version)
            feed_back = dbutil.update_detail_company_message(
                self.db,
                cid,
                msg,
                2002,
                20,
                aid,
                new_version,
                comments='version: %s, %s' % (new_version, aname))
        else:
            msg = u'%s的一款%s应用%s发布了新版本%s' % \
                  (dbutil.get_company_name(self.db, cid), market, self.normalize_artifact_name(aname), new_version)
            feed_back = dbutil.update_detail_company_message(
                self.db,
                cid,
                msg,
                2003,
                20,
                aid,
                new_version,
                comments='version: %s, %s' % (new_version, aname))
        if feed_back:
            self.send_company_message_msg(feed_back)
        if logger:
            logger.info('2002/2003, %s, mysql: %s' % (cid, feed_back))
コード例 #4
0
 def track_2001(self, logger=None):
     """
     update every day
     """
     yesterday = datetime.now() - timedelta(days=1)
     # day_gap = (datetime.now() - timedelta(days=self.max_2001_release_gap)).strftime('%Y-%m-%dT%H:%M:%SZ')
     day_gap = datetime.now() - timedelta(days=self.max_2001_release_gap)
     for aid, cid, atype, domain in dbutil.get_artifacts_by_date(
             self.db, yesterday):
         if logger:
             logger.info('Processing, aid %s, cid %s, type %s, domain %s' %
                         (aid, cid, atype, domain))
         if not self.__valid_artifact_release_date(atype, domain, day_gap):
             return
         aname = dbutil.get_artifact_name(self.db, aid)
         msg = u'%s发现了一款新的%s应用 %s' % \
               (dbutil.get_company_name(self.db, cid), dbutil.get_artifact_type(self.db, aid, string=True),
                self.normalize_artifact_name(aname))
         feed_back = dbutil.update_daily_company_message(self.db,
                                                         cid,
                                                         msg,
                                                         2001,
                                                         20,
                                                         aid,
                                                         yesterday,
                                                         comments=aname)
         if feed_back:
             self.send_company_message_msg(feed_back)
         if logger:
             logger.info('2001, %s, mysql: %s, check date %s' %
                         (cid, feed_back, yesterday))
コード例 #5
0
    def update_3108(self, todays, yesterdays, today):

        global logger_track
        newout = {}
        todays = set(item['trackId'] for item in todays)
        day_thirday = today - timedelta(days=30)
        for item in filter(lambda x: x['trackId'] not in todays, yesterdays):
            self.mongo.temp.appstore.insert_one({'type': 3108, 'createTime': today, 'item': item})
            for aid in dbutil.get_artifacts_from_iOS(self.db, item['trackId']):
                newout[aid] = item
        for aid, item in newout.items():
            cid = dbutil.get_artifact_company(self.db, aid)
            msg = u'%s旗下 %s跌出iOS%s前100名' % \
                  (dbutil.get_company_name(self.db, cid),
                   self.__normalize_iOS_name(dbutil.get_artifact_name(self.db, aid)),
                   self.__get_rank_name(item['genre'], item['type']))
            detail = '%s,%s' % (item['genre'], item['type'])
            comments = dbutil.get_artifact_name(self.db, aid)
            yield dbutil.update_daily_company_message(self.db, cid, msg, 3108, 30, aid, day_thirday, detail, comments)
            logger_track.info('3108, %s, %s' % (cid, aid))
コード例 #6
0
    def __process_artifact_2005(self, aid, yesterday, logger):

        cid = dbutil.get_artifact_company(self.db, aid)
        aname = dbutil.get_artifact_name(self.db, aid)
        msg = u'%s的一款%s应用%s超过90天未更新' % \
              (dbutil.get_company_name(self.db, cid), dbutil.get_artifact_type(self.db, aid, True),
               self.normalize_artifact_name(aname))
        feed_back = dbutil.update_daily_company_message(self.db,
                                                        cid,
                                                        msg,
                                                        2005,
                                                        20,
                                                        aid,
                                                        yesterday,
                                                        comments=aname)
        if feed_back:
            self.send_company_message_msg(feed_back)
        if logger:
            logger.info('2005, %s, mysql: %s' % (cid, feed_back))