Parcourir la source

Merge branch 'main' into wyp/articleSensitive

# Conflicts:
#	long-article-recommend-service/pom.xml
wangyunpeng il y a 11 mois
Parent
commit
a753111190
33 fichiers modifiés avec 3861 ajouts et 76 suppressions
  1. 5 0
      long-article-recommend-service/pom.xml
  2. 1 1
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/Application.java
  3. 17 3
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/config/PiaoquanCrawlerMysqlConfiguration.java
  4. 3 1
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/Content.java
  5. 35 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/ArticlePreDistributeAccount.java
  6. 13 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/ArticlePreDistributeAccountRepository.java
  7. 30 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/AccountContentPoolConfigService.java
  8. 2 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/RecommendService.java
  9. 3 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/FilterParam.java
  10. 5 3
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/FilterService.java
  11. 67 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/AccountPreDistributeStrategy.java
  12. 0 26
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/CategoryStrategy.java
  13. 0 25
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/DuplicateStrategy.java
  14. 1 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/RankItem.java
  15. 3 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/RankService.java
  16. 161 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/strategy/RankV3Strategy.java
  17. 1 1
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/ContentCategory.java
  18. 3 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/FilterParamFactory.java
  19. 2 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/RecallParam.java
  20. 10 4
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/strategy/DefaultRecallStrategy.java
  21. 15 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/AvgReadDTO.java
  22. 19 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDTO.java
  23. 63 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDatastatDTO.java
  24. 1 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ScoreParam.java
  25. 5 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ScoreService.java
  26. 8 8
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/SimilarityStrategy.java
  27. 97 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/ViewMultiplierStrategy.java
  28. 1 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/util/JSONUtils.java
  29. 4 0
      long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/util/NormalizationUtils.java
  30. 4 0
      long-article-recommend-service/src/main/resources/application-dev.yml
  31. 4 4
      long-article-recommend-service/src/main/resources/application-prod.yml
  32. 3242 0
      long-article-recommend-service/src/main/resources/file/AccountInfo.json
  33. 36 0
      long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/ScoreStrategyTest.java

+ 5 - 0
long-article-recommend-service/pom.xml

@@ -102,6 +102,11 @@
             <artifactId>aliyun-log-logback-appender</artifactId>
             <version>0.1.18</version>
         </dependency>
+        <dependency>
+            <groupId>cn.hutool</groupId>
+            <artifactId>hutool-core</artifactId>
+            <version>5.8.18</version>
+        </dependency>
         <dependency>
             <groupId>com.tencentcloudapi</groupId>
             <artifactId>tencentcloud-sdk-java-tms</artifactId>

+ 1 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/Application.java

@@ -1,6 +1,5 @@
 package com.tzld.longarticle.recommend.server;
 
-// import com.tzld.piaoquan.recommend.feature.client.FeatureClient;
 
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -20,6 +19,7 @@ import org.springframework.context.annotation.EnableAspectJAutoProxy;
         "com.tzld.longarticle.recommend.server.remote",
         "com.tzld.longarticle.recommend.server.config",
         "com.tzld.longarticle.recommend.server.web",
+        "com.tzld.longarticle.recommend.server.repository",
 })
 @EnableAspectJAutoProxy
 public class Application {

+ 17 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/config/PiaoquanCrawlerMysqlConfiguration.java

@@ -4,14 +4,14 @@ import com.zaxxer.hikari.HikariDataSource;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.jdbc.core.JdbcTemplate;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 
 
 @Configuration(proxyBeanMethods = false)
 public class PiaoquanCrawlerMysqlConfiguration {
 
     @Bean(name = "piaoquanCrawlerJdbcTemplate")
-    public JdbcTemplate piaoquanCrawlerJdbcTemplate() {
+    public NamedParameterJdbcTemplate piaoquanCrawlerJdbcTemplate() {
         DataSourceProperties dataSourceProperties = new DataSourceProperties();
         dataSourceProperties.setUsername("crawler");
         dataSourceProperties.setPassword("crawler123456@");
@@ -21,6 +21,20 @@ public class PiaoquanCrawlerMysqlConfiguration {
         dataSource.setMinimumIdle(5);
         dataSource.setMaximumPoolSize(10);
         dataSource.setConnectionTestQuery("select 1");
-        return new JdbcTemplate(dataSource);
+        return new NamedParameterJdbcTemplate(dataSource);
+    }
+
+    @Bean(name = "programDataJdbcTemplate")
+    public NamedParameterJdbcTemplate programDataJdbcTemplate() {
+        DataSourceProperties dataSourceProperties = new DataSourceProperties();
+        dataSourceProperties.setUsername("wx2023_ad");
+        dataSourceProperties.setPassword("wx2023_adP@assword1234");
+        dataSourceProperties.setUrl("jdbc:mysql://rm-bp12k5fuh5zyx31d28o.mysql.rds.aliyuncs.com:3306/adplatform?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull");
+        dataSourceProperties.setDriverClassName("com.mysql.jdbc.Driver");
+        HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
+        dataSource.setMinimumIdle(5);
+        dataSource.setMaximumPoolSize(10);
+        dataSource.setConnectionTestQuery("select 1");
+        return new NamedParameterJdbcTemplate(dataSource);
     }
 }

+ 3 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/Content.java

@@ -5,6 +5,8 @@ import lombok.Getter;
 import lombok.NoArgsConstructor;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author dyp
  */
@@ -28,7 +30,7 @@ public class Content {
      */
     private String contentPoolType; // 内容池类别
     private String crawlerChannelContentId; // 抓取内容channelContentId
-    private String category; // 品类
+    private List<String> category; // 品类
     //    private String crawlerLink;
 //    private String crawlerTitle;
     private String crawlerCoverUrl;

+ 35 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/ArticlePreDistributeAccount.java

@@ -0,0 +1,35 @@
+package com.tzld.longarticle.recommend.server.repository;
+
+import lombok.Data;
+
+import javax.persistence.*;
+import java.io.Serializable;
+
+@Data
+@Entity
+@Table(name = "article_pre_distribute_account")
+@IdClass(ArticlePreDistributeAccount.PK.class)
+public class ArticlePreDistributeAccount implements Serializable {
+
+    @Id
+    private String ghId;
+    // YYYY-mm-dd
+    @Id
+    private String date;
+
+    @Column(name = "article_list", columnDefinition = "TEXT")
+    private String articleList;
+
+
+    @Data
+    public static class PK implements Serializable {
+        private String ghId;
+        // YYYY-mm-dd
+        private String date;
+
+        public PK() {
+        }
+
+
+    }
+}

+ 13 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/ArticlePreDistributeAccountRepository.java

@@ -0,0 +1,13 @@
+package com.tzld.longarticle.recommend.server.repository;
+
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.Optional;
+
+@Repository
+public interface ArticlePreDistributeAccountRepository extends JpaRepository<ArticlePreDistributeAccount,
+        ArticlePreDistributeAccount.PK> {
+
+    ArticlePreDistributeAccount findFirstByGhIdOrderByDateDesc(String ghId);
+}

+ 30 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/AccountContentPoolConfigService.java

@@ -1,9 +1,14 @@
 package com.tzld.longarticle.recommend.server.service;
 
+import com.ctrip.framework.apollo.model.ConfigChangeEvent;
+import com.ctrip.framework.apollo.spring.annotation.ApolloConfigChangeListener;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.google.common.collect.BiMap;
+import com.google.common.collect.HashBiMap;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.PostConstruct;
 import java.util.Map;
 
 /**
@@ -16,10 +21,35 @@ public class AccountContentPoolConfigService {
     @ApolloJsonValue("${accountContentPoolConfig:{}}")
     private Map<String, String[]> accountContentPoolMap;
 
+    private BiMap<String, Integer> contentPoolLevelMap;
+
+    @ApolloJsonValue("${contentPoolLevelConfig:{}}")
+    private Map<String, Integer> contentPoolLevelConfig;
+
+    @PostConstruct
+    public void init() {
+        contentPoolLevelMap = HashBiMap.create(contentPoolLevelConfig);
+    }
+
+
+    @ApolloConfigChangeListener(interestedKeys = {"contentPoolLevelConfig"})
+    public void configChange(ConfigChangeEvent changeEvent) {
+        init();
+    }
+
     public String[] getContentPools(String accountName) {
         if (accountContentPoolMap.containsKey(accountName)) {
             return accountContentPoolMap.get(accountName);
         }
         return accountContentPoolMap.get("default");
     }
+
+    public String getContentPoolByLevel(int level) {
+
+        return contentPoolLevelMap.inverse().getOrDefault(level, "");
+    }
+
+    public Integer getLevelByContentPool(String contentPool) {
+        return contentPoolLevelMap.get(contentPool);
+    }
 }

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/RecommendService.java

@@ -84,6 +84,8 @@ public class RecommendService {
     public RecallParam convertToRecallParam(RecommendParam param) {
         RecallParam recallParam = new RecallParam();
         BeanUtils.copyProperties(param, recallParam);
+        recallParam.setStrategy(param.getStrategy());
+        recallParam.setGhId(param.getGhId());
         return recallParam;
     }
 

+ 3 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/FilterParam.java

@@ -12,4 +12,7 @@ import java.util.List;
 public class FilterParam {
     private String accountName;
     private List<Content> contents;
+    private String accountId;
+    private String strategy;
+    private String ghId;
 }

+ 5 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/FilterService.java

@@ -3,6 +3,7 @@ package com.tzld.longarticle.recommend.server.service.filter;
 import com.tzld.longarticle.recommend.server.common.ThreadPoolFactory;
 import com.tzld.longarticle.recommend.server.model.Content;
 import com.tzld.longarticle.recommend.server.service.ServiceBeanFactory;
+import com.tzld.longarticle.recommend.server.service.filter.strategy.AccountPreDistributeStrategy;
 import com.tzld.longarticle.recommend.server.service.filter.strategy.BadStrategy;
 import com.tzld.longarticle.recommend.server.service.filter.strategy.HistoryTitleStrategy;
 import com.tzld.longarticle.recommend.server.service.filter.strategy.SensitiveStrategy;
@@ -10,6 +11,7 @@ import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
 import com.tzld.longarticle.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
 
 import java.util.ArrayList;
@@ -90,11 +92,11 @@ public class FilterService {
     private List<FilterStrategy> getStrategies(FilterParam param) {
         List<FilterStrategy> strategies = new ArrayList<>();
         strategies.add(ServiceBeanFactory.getBean(HistoryTitleStrategy.class));
-//        strategies.add(ServiceBeanFactory.getBean(DuplicateStrategy.class));
-//        strategies.add(ServiceBeanFactory.getBean(CategoryStrategy.class));
         strategies.add(ServiceBeanFactory.getBean(BadStrategy.class));
         strategies.add(ServiceBeanFactory.getBean(SensitiveStrategy.class));
-
+        if (StringUtils.equals(param.getStrategy(), "ArticleRankV3")) {
+            strategies.add(ServiceBeanFactory.getBean(AccountPreDistributeStrategy.class));
+        }
         return strategies;
     }
 }

+ 67 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/AccountPreDistributeStrategy.java

@@ -0,0 +1,67 @@
+package com.tzld.longarticle.recommend.server.service.filter.strategy;
+
+import com.google.common.reflect.TypeToken;
+import com.tzld.longarticle.recommend.server.model.Content;
+import com.tzld.longarticle.recommend.server.repository.ArticlePreDistributeAccount;
+import com.tzld.longarticle.recommend.server.repository.ArticlePreDistributeAccountRepository;
+import com.tzld.longarticle.recommend.server.service.AccountContentPoolConfigService;
+import com.tzld.longarticle.recommend.server.service.filter.FilterParam;
+import com.tzld.longarticle.recommend.server.service.filter.FilterResult;
+import com.tzld.longarticle.recommend.server.service.filter.FilterStrategy;
+import com.tzld.longarticle.recommend.server.util.JSONUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.*;
+
+/**
+ * @author dyp
+ */
+@Component
+@Slf4j
+public class AccountPreDistributeStrategy implements FilterStrategy {
+    @Autowired
+    private AccountContentPoolConfigService accountContentPoolConfigService;
+    @Autowired
+    private ArticlePreDistributeAccountRepository articlePreDistributeAccountRepository;
+
+    @Override
+    public FilterResult filter(FilterParam param) {
+        FilterResult filterResult = new FilterResult();
+        List<String> result = new ArrayList<>();
+        List<Content> contents = param.getContents();
+        List<Content> filterContents = new ArrayList<>();
+        Set<String> articles = new HashSet<>();
+        String[] pools = accountContentPoolConfigService.getContentPools(param.getAccountName());
+        if (pools.length >= 3) {
+            try {
+                ArticlePreDistributeAccount optional = articlePreDistributeAccountRepository.findFirstByGhIdOrderByDateDesc(param.getGhId());
+                if (optional != null && StringUtils.isNotEmpty(optional.getArticleList())) {
+                    List<String[]> list = JSONUtils.fromJson(optional.getArticleList(), new TypeToken<List<String[]>>() {
+                    }, Collections.emptyList());
+                    for (String[] s : list) {
+                        articles.add(s[0]);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+
+        for (Content content : contents) {
+            if (StringUtils.equals(pools[2], content.getContentPoolType())) {
+                if (articles.contains(content.getCrawlerChannelContentId())) {
+                    result.add(content.getId());
+                }
+            } else {
+                result.add(content.getId());
+            }
+        }
+        filterResult.setContentIds(result);
+        filterResult.setFilterContent(filterContents);
+        return filterResult;
+    }
+
+}

+ 0 - 26
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/CategoryStrategy.java

@@ -1,26 +0,0 @@
-package com.tzld.longarticle.recommend.server.service.filter.strategy;
-
-import com.tzld.longarticle.recommend.server.model.Content;
-import com.tzld.longarticle.recommend.server.service.filter.FilterParam;
-import com.tzld.longarticle.recommend.server.service.filter.FilterResult;
-import com.tzld.longarticle.recommend.server.service.filter.FilterStrategy;
-import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.stereotype.Component;
-
-/**
- * @author dyp
- */
-@Component
-@Slf4j
-public class CategoryStrategy implements FilterStrategy {
-
-    @Override
-    public FilterResult filter(FilterParam param) {
-        FilterResult filterResult = new FilterResult();
-        filterResult.setContentIds(CommonCollectionUtils.toList(param.getContents(), Content::getId));
-        return filterResult;
-    }
-
-}

+ 0 - 25
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/filter/strategy/DuplicateStrategy.java

@@ -1,25 +0,0 @@
-package com.tzld.longarticle.recommend.server.service.filter.strategy;
-
-import com.tzld.longarticle.recommend.server.model.Content;
-import com.tzld.longarticle.recommend.server.service.filter.FilterParam;
-import com.tzld.longarticle.recommend.server.service.filter.FilterResult;
-import com.tzld.longarticle.recommend.server.service.filter.FilterStrategy;
-import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.stereotype.Component;
-
-/**
- * @author dyp
- */
-@Component
-@Slf4j
-public class DuplicateStrategy implements FilterStrategy {
-
-    @Override
-    public FilterResult filter(FilterParam param) {
-        FilterResult filterResult = new FilterResult();
-        filterResult.setContentIds(CommonCollectionUtils.toList(param.getContents(), Content::getId));
-        return filterResult;
-    }
-
-}

+ 1 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/RankItem.java

@@ -12,6 +12,7 @@ import java.util.Map;
 public class RankItem {
     private Content content;
     private Map<String, Double> scoreMap;
+    private double score;
 
     public double getScore(String strategy) {
         return scoreMap.get(strategy) == null

+ 3 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/RankService.java

@@ -4,6 +4,7 @@ package com.tzld.longarticle.recommend.server.service.rank;
 import com.tzld.longarticle.recommend.server.service.ServiceBeanFactory;
 import com.tzld.longarticle.recommend.server.service.rank.strategy.DefaultRankStrategy;
 import com.tzld.longarticle.recommend.server.service.rank.strategy.RankV2Strategy;
+import com.tzld.longarticle.recommend.server.service.rank.strategy.RankV3Strategy;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
 
@@ -23,6 +24,8 @@ public class RankService {
         switch (param.getStrategy()) {
             case "ArticleRankV2":
                 return ServiceBeanFactory.getBean(RankV2Strategy.class);
+            case "ArticleRankV3":
+                return ServiceBeanFactory.getBean(RankV3Strategy.class);
             default:
                 return ServiceBeanFactory.getBean(DefaultRankStrategy.class);
         }

+ 161 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/rank/strategy/RankV3Strategy.java

@@ -0,0 +1,161 @@
+package com.tzld.longarticle.recommend.server.service.rank.strategy;
+
+
+import com.tzld.longarticle.recommend.server.model.Content;
+import com.tzld.longarticle.recommend.server.service.AccountContentPoolConfigService;
+import com.tzld.longarticle.recommend.server.service.rank.RankItem;
+import com.tzld.longarticle.recommend.server.service.rank.RankParam;
+import com.tzld.longarticle.recommend.server.service.rank.RankResult;
+import com.tzld.longarticle.recommend.server.service.rank.RankStrategy;
+import com.tzld.longarticle.recommend.server.service.score.ScoreParam;
+import com.tzld.longarticle.recommend.server.service.score.ScoreResult;
+import com.tzld.longarticle.recommend.server.service.score.ScoreService;
+import com.tzld.longarticle.recommend.server.service.score.strategy.SimilarityStrategy;
+import com.tzld.longarticle.recommend.server.service.score.strategy.ViewMultiplierStrategy;
+import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
+import com.tzld.longarticle.recommend.server.util.JSONUtils;
+import com.tzld.longarticle.recommend.server.util.TitleSimilarCheckUtil;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+
+/**
+ * @author dyp
+ */
+@Service
+@Slf4j
+public class RankV3Strategy implements RankStrategy {
+
+    @Autowired
+    private ScoreService scoreService;
+    @Autowired
+    private AccountContentPoolConfigService accountContentPoolConfigService;
+
+    public RankResult rank(RankParam param) {
+
+        log.info("RankParam {}", JSONUtils.toJson(param));
+        ScoreResult scoreResult = scoreService.score(convertToScoreParam(param));
+        log.info("ScoreResult {}", JSONUtils.toJson(scoreResult));
+
+        Map<String, Map<String, Double>> scoreMap = scoreResult.getScoreMap();
+
+        List<RankItem> items = CommonCollectionUtils.toList(param.getContents(), c -> {
+            RankItem item = new RankItem();
+            item.setContent(c);
+            item.setScoreMap(scoreMap.get(c.getId()));
+            double score = 2 * item.getScore(SimilarityStrategy.class.getSimpleName())
+                    + item.getScore(ViewMultiplierStrategy.class.getSimpleName());
+            item.setScore(score);
+            return item;
+        });
+
+        // 1 排序
+        Collections.sort(items, (o1, o2) -> -Double.compare(o1.getScore(), o2.getScore()));
+        log.info("SortResult {}", JSONUtils.toJson(items));
+        // 2 相似去重
+        List<Content> contents = CommonCollectionUtils.toList(items, RankItem::getContent);
+        contents = deduplication(contents);
+        log.info("Deduplication {}", JSONUtils.toJson(contents));
+
+        // 3 文章按照内容池分组
+        Map<String, List<Content>> contentMap = new HashMap<>();
+        for (Content c : contents) {
+            List<Content> data = contentMap.computeIfAbsent(c.getContentPoolType(), k -> new ArrayList<>());
+            data.add(c);
+        }
+        log.info("ContentMap {}", JSONUtils.toJson(contentMap));
+        // 4 选文章
+        List<Content> result = new ArrayList<>();
+        String[] contentPools = accountContentPoolConfigService.getContentPools(param.getAccountName());
+
+
+        // 头、次
+        if (StringUtils.equals(contentPools[0], contentPools[1])) {
+            List<Content> pool = contentMap.get(contentPools[0]);
+            Integer level = accountContentPoolConfigService.getLevelByContentPool(contentPools[0]);
+            if (level == 1) {
+                if (CollectionUtils.isNotEmpty(pool)) {
+                    result.add(pool.get(0));
+                    if (pool.size() > 2) {
+                        result.add(pool.get(2));
+                    }
+                } else {
+                    // level2 兜底
+                    pool = contentMap.get(accountContentPoolConfigService.getContentPoolByLevel(2));
+                    if (CollectionUtils.isNotEmpty(pool)) {
+                        result.add(pool.get(0));
+                        if (pool.size() > 1) {
+                            result.add(pool.get(1));
+                        }
+                    }
+                }
+            } else if (level == 2) {
+                if (CollectionUtils.isNotEmpty(pool)) {
+                    pool = pool.subList(0, Math.max(10, pool.size()));
+                    Collections.shuffle(pool);
+                    result.add(pool.get(0));
+                    if (pool.size() > 1) {
+                        result.add(pool.get(1));
+                    }
+                }
+            }
+        } else {
+            // 配置错误 兜底
+            List<Content> pool1 = contentMap.get(contentPools[0]);
+            List<Content> pool2 = contentMap.get(contentPools[1]);
+            if (CollectionUtils.isNotEmpty(pool1)) {
+                result.add(pool1.get(0));
+                if (CollectionUtils.isNotEmpty(pool2)) {
+                    result.add(pool2.get(0));
+                }
+            } else if (CollectionUtils.isNotEmpty(pool2)) {
+                result.add(pool2.get(0));
+                if (pool2.size() > 1) {
+                    result.add(pool2.get(1));
+                }
+            }
+        }
+
+        // 3-8
+        List<Content> pool = contentMap.get(contentPools[2]);
+        if (CollectionUtils.isNotEmpty(pool)) {
+            Collections.shuffle(pool);
+            result.addAll(pool.subList(0, Math.min(pool.size(), param.getSize() - result.size())));
+        }
+
+        return new RankResult(result);
+    }
+
+    private ScoreParam convertToScoreParam(RankParam param) {
+        ScoreParam scoreParam = new ScoreParam();
+        scoreParam.setAccountName(param.getAccountName());
+        scoreParam.setContents(param.getContents());
+        scoreParam.setStrategy(param.getStrategy());
+        return scoreParam;
+    }
+
+    private List<Content> deduplication(List<Content> contents) {
+        List<String> titles = new ArrayList<>();
+        List<Content> result = new ArrayList<>();
+        // 遍历所有列表
+        for (Content c : contents) {
+            if (similarity(c.getTitle(), titles)) {
+                continue;
+            } else {
+                result.add(c);
+                titles.add(c.getTitle());
+            }
+        }
+
+        return result;
+    }
+
+    private boolean similarity(String title, List<String> titles) {
+        return TitleSimilarCheckUtil.isDuplicateContent(title, titles);
+    }
+
+}

+ 1 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/ContentCategory.java

@@ -4,6 +4,6 @@ import lombok.Data;
 
 @Data
 public class ContentCategory {
-    private String channelContentId;
+    private String contentChannelId;
     private String category;
 }

+ 3 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/FilterParamFactory.java

@@ -13,6 +13,9 @@ public class FilterParamFactory {
         FilterParam filterParam = new FilterParam();
         filterParam.setAccountName(param.getAccountName());
         filterParam.setContents(contents);
+        filterParam.setAccountId(param.getAccountId());
+        filterParam.setStrategy(param.getStrategy());
+        filterParam.setGhId(param.getGhId());
         return filterParam;
     }
 }

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/RecallParam.java

@@ -11,4 +11,6 @@ public class RecallParam {
     private String accountName;
     private Integer publishNum;
     private String planId;
+    private String strategy;
+    private String ghId;
 }

+ 10 - 4
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/strategy/DefaultRecallStrategy.java

@@ -13,6 +13,8 @@ import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
 import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
 import org.springframework.stereotype.Component;
 
+import javax.annotation.Resource;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -27,7 +29,7 @@ public class DefaultRecallStrategy implements RecallStrategy {
     private FilterService filterService;
     @Autowired
     private AIGCRemoteService aigcRemoteService;
-    @Autowired
+    @Resource(name="piaoquanCrawlerJdbcTemplate")
     NamedParameterJdbcTemplate piaoquanCrawlerJdbcTemplate;
 
     @Override
@@ -53,18 +55,22 @@ public class DefaultRecallStrategy implements RecallStrategy {
         if (CollectionUtils.isEmpty(categoryList)) {
             return;
         }
-        Map<String, String> categoryMap = categoryList.stream().collect(Collectors.toMap(ContentCategory::getChannelContentId,
-                ContentCategory::getCategory));
+        Map<String, List<String>> categoryMap = categoryList.stream().collect(Collectors.groupingBy(ContentCategory::getContentChannelId,
+                Collectors.mapping(ContentCategory::getCategory, Collectors.toList())));
         for (Content content : contentList) {
             content.setCategory(categoryMap.get(content.getCrawlerChannelContentId()));
         }
     }
 
     private List<ContentCategory> getContentCategoryByChannelContentId(List<String> channelContentIds) {
+        if (CollectionUtils.isEmpty(channelContentIds)) {
+            return new ArrayList<>();
+        }
         MapSqlParameterSource parameters = new MapSqlParameterSource();
         parameters.addValue("channelContentIds", channelContentIds);
         List<ContentCategory> result = piaoquanCrawlerJdbcTemplate.query(
-                "select content_channel_id, category from cold_start_article_pool where content_channel_id in (:channelContentIds)",
+                "select distinct content_channel_id, category from cold_start_article_pool where content_channel_id " +
+                        "in (:channelContentIds)",
                 parameters,
                 new BeanPropertyRowMapper<>(ContentCategory.class));
         return result;

+ 15 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/AvgReadDTO.java

@@ -0,0 +1,15 @@
+package com.tzld.longarticle.recommend.server.service.score;
+
+import lombok.Data;
+
+@Data
+public class AvgReadDTO {
+
+    private String accountName;
+    private String ghID;
+    private long fans;
+    private String position;
+    private double readAvg;
+    private double likeAvg;
+
+}

+ 19 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDTO.java

@@ -0,0 +1,19 @@
+package com.tzld.longarticle.recommend.server.service.score;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ChangwenArticleDTO {
+    private String id;
+    private String accountId;
+    private Long publishTimestamp;
+    private Integer itemIndex;
+    private String title;
+    private String link;
+    private String rootSourceIds;
+    private Long createTimestamp;
+}

+ 63 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ChangwenArticleDatastatDTO.java

@@ -0,0 +1,63 @@
+package com.tzld.longarticle.recommend.server.service.score;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.experimental.Accessors;
+
+import java.math.BigDecimal;
+
+@Getter
+@Setter
+@Accessors(chain = true)
+public class ChangwenArticleDatastatDTO {
+    private String articleId;
+    private Integer increaseReadCount;
+    private Integer readCount;
+    private BigDecimal increaseIncome;
+    private BigDecimal income;
+    private Integer increaseShareCount;
+    private Integer shareCount;
+    private Long updateTimestamp;
+
+    public Integer getIncreaseReadCount() {
+        if (increaseReadCount == null) {
+            return 0;
+        }
+        return increaseReadCount;
+    }
+
+    public Integer getReadCount() {
+        if (readCount == null) {
+            return 0;
+        }
+        return readCount;
+    }
+
+    public BigDecimal getIncreaseIncome() {
+        if (increaseIncome == null) {
+            return new BigDecimal(0);
+        }
+        return increaseIncome;
+    }
+
+    public BigDecimal getIncome() {
+        if (income == null) {
+            return new BigDecimal(0);
+        }
+        return income;
+    }
+
+    public Integer getIncreaseShareCount() {
+        if (increaseShareCount == null) {
+            return 0;
+        }
+        return increaseShareCount;
+    }
+
+    public Integer getShareCount() {
+        if (shareCount == null) {
+            return 0;
+        }
+        return shareCount;
+    }
+}

+ 1 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ScoreParam.java

@@ -18,4 +18,5 @@ import java.util.List;
 public class ScoreParam {
     private String accountName;
     private List<Content> contents;
+    private String strategy;
 }

+ 5 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/ScoreService.java

@@ -4,9 +4,11 @@ package com.tzld.longarticle.recommend.server.service.score;
 import com.tzld.longarticle.recommend.server.common.ThreadPoolFactory;
 import com.tzld.longarticle.recommend.server.service.score.strategy.SimilarityStrategy;
 import com.tzld.longarticle.recommend.server.service.score.strategy.ViewCountStrategy;
+import com.tzld.longarticle.recommend.server.service.score.strategy.ViewMultiplierStrategy;
 import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
 import com.tzld.longarticle.recommend.server.util.JSONUtils;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
 import org.springframework.context.ApplicationContextAware;
@@ -85,6 +87,9 @@ public class ScoreService implements ApplicationContextAware {
         List<ScoreStrategy> strategies = new ArrayList<>();
         strategies.add(strategyMap.get(SimilarityStrategy.class.getSimpleName()));
         strategies.add(strategyMap.get(ViewCountStrategy.class.getSimpleName()));
+        if (StringUtils.equals(param.getStrategy(), "ArticleRankV3")) {
+            strategies.add(strategyMap.get(ViewMultiplierStrategy.class.getSimpleName()));
+        }
 
         return strategies;
     }

+ 8 - 8
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/SimilarityStrategy.java

@@ -5,7 +5,6 @@ import com.tzld.longarticle.recommend.server.service.score.Score;
 import com.tzld.longarticle.recommend.server.service.score.ScoreParam;
 import com.tzld.longarticle.recommend.server.service.score.ScoreStrategy;
 import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
-import com.tzld.longarticle.recommend.server.util.NormalizationUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
@@ -31,18 +30,19 @@ public class SimilarityStrategy implements ScoreStrategy {
         }
         Map<String, Double> scoreMap = nlpRemoteService.score(param.getAccountName(), param.getContents());
 
-        double min = scoreMap.values().stream()
-                .min(Double::compareTo)
-                .orElse(0.0);
-        double max = scoreMap.values().stream()
-                .max(Double::compareTo)
-                .orElse(0.0);
+//        double min = scoreMap.values().stream()
+//                .min(Double::compareTo)
+//                .orElse(0.0);
+//        double max = scoreMap.values().stream()
+//                .max(Double::compareTo)
+//                .orElse(0.0);
 
         List<Score> scores = CommonCollectionUtils.toList(param.getContents(), c -> {
             Score score = new Score();
             score.setContentId(c.getId());
             double val = scoreMap.get(c.getId()) == null ? 0.0 : scoreMap.get(c.getId());
-            score.setScore(NormalizationUtils.minMax(val, min, max));
+            // score.setScore(NormalizationUtils.minMax(val, min, max));
+            score.setScore(val);
             score.setStrategy(this);
             return score;
         });

+ 97 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/score/strategy/ViewMultiplierStrategy.java

@@ -0,0 +1,97 @@
+package com.tzld.longarticle.recommend.server.service.score.strategy;
+
+import cn.hutool.core.io.resource.ResourceUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.model.Content;
+import com.tzld.longarticle.recommend.server.service.score.*;
+import com.tzld.longarticle.recommend.server.util.CommonCollectionUtils;
+import com.tzld.longarticle.recommend.server.util.NormalizationUtils;
+import org.springframework.jdbc.core.BeanPropertyRowMapper;
+import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
+import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
+import org.springframework.stereotype.Component;
+import org.springframework.util.CollectionUtils;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.Resource;
+import java.util.*;
+import java.util.stream.Collectors;
+
+/**
+ * @author dyp
+ */
+@Component
+public class ViewMultiplierStrategy implements ScoreStrategy {
+
+    @Resource(name = "programDataJdbcTemplate")
+    NamedParameterJdbcTemplate programDataJdbcTemplate;
+    private JSONObject jsonObject;
+
+    @PostConstruct
+    public void init() {
+        String cardJSON = ResourceUtil.readUtf8Str("file/AccountInfo.json");
+        jsonObject = JSONObject.parseObject(cardJSON);
+    }
+
+    @Override
+    public List<Score> score(ScoreParam param) {
+
+        if (CollectionUtils.isEmpty(param.getContents())) {
+            return Collections.emptyList();
+        }
+        List<String> channelContentIds = param.getContents().stream().map(Content::getCrawlerChannelContentId).collect(Collectors.toList());
+        Map<String, ChangwenArticleDTO> changwenArticleDTOMap = getContentIndex(channelContentIds);
+        Map<String, ChangwenArticleDatastatDTO> changwenArticleDatastatDTOMap = getContentViewCount(channelContentIds);
+
+        List<Score> scores = CommonCollectionUtils.toList(param.getContents(), c -> {
+            Score score = new Score();
+            score.setContentId(c.getId());
+            ChangwenArticleDTO articleDTO = changwenArticleDTOMap.get(c.getCrawlerChannelContentId());
+            ChangwenArticleDatastatDTO datastatDTO = changwenArticleDatastatDTOMap.get(c.getCrawlerChannelContentId());
+
+            if (Objects.nonNull(articleDTO) && Objects.nonNull(datastatDTO)) {
+                double avgReadCount = getAvgReadCount(articleDTO.getAccountId(), articleDTO.getItemIndex());
+                Integer readCount = datastatDTO.getReadCount();
+                score.setScore(NormalizationUtils.min(Math.max(readCount, 0) / avgReadCount - 1));
+            } else {
+                score.setScore(-1.0);
+            }
+            score.setStrategy(this);
+            return score;
+        });
+        return scores;
+    }
+
+    private Map<String, ChangwenArticleDTO> getContentIndex(List<String> channelContentIds) {
+        MapSqlParameterSource parameters = new MapSqlParameterSource();
+        parameters.addValue("channelContentIds", channelContentIds);
+        List<ChangwenArticleDTO> result = programDataJdbcTemplate.query(
+                "select id, account_id, item_index from changwen_article where id in (:channelContentIds) ",
+                parameters,
+                new BeanPropertyRowMapper<>(ChangwenArticleDTO.class));
+        if (CollectionUtils.isEmpty(result)) {
+            return new HashMap<>();
+        }
+        Map<String, ChangwenArticleDTO> map = result.stream().collect(Collectors.toMap(ChangwenArticleDTO::getId, o -> o));
+        return map;
+    }
+
+    private Map<String, ChangwenArticleDatastatDTO> getContentViewCount(List<String> channelContentIds) {
+        MapSqlParameterSource parameters = new MapSqlParameterSource();
+        parameters.addValue("channelContentIds", channelContentIds);
+        List<ChangwenArticleDatastatDTO> result = programDataJdbcTemplate.query(
+                "select article_id, read_count from changwen_article_datastat where article_id in (:channelContentIds) ",
+                parameters,
+                new BeanPropertyRowMapper<>(ChangwenArticleDatastatDTO.class));
+        if (CollectionUtils.isEmpty(result)) {
+            return new HashMap<>();
+        }
+        Map<String, ChangwenArticleDatastatDTO> map = result.stream().collect(Collectors.toMap(ChangwenArticleDatastatDTO::getArticleId, o -> o));
+        return map;
+    }
+
+    private double getAvgReadCount(String ghId, Integer index) {
+        AvgReadDTO dto = jsonObject.getObject(ghId + "_" + index, AvgReadDTO.class);
+        return dto == null ? 1.0 : dto.getReadAvg();
+    }
+}

+ 1 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/util/JSONUtils.java

@@ -21,6 +21,7 @@ public class JSONUtils {
             return "";
         }
     }
+
     public static String toJson(Object obj) {
         if (obj == null) {
             return "";

+ 4 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/util/NormalizationUtils.java

@@ -10,4 +10,8 @@ public final class NormalizationUtils {
         }
         return (value - min) / (max - min);
     }
+
+    public static double min(double value) {
+        return Math.min(value - 1, 1);
+    }
 }

+ 4 - 0
long-article-recommend-service/src/main/resources/application-dev.yml

@@ -24,6 +24,10 @@ spring:
       maximum-pool-size: 10
       auto-commit: true
       idle-timeout: 30000
+  jpa:
+    hibernate:
+      ddl-auto: validate
+    database: mysql
 
 apollo:
   meta: http://devapolloconfig-internal.piaoquantv.com

+ 4 - 4
long-article-recommend-service/src/main/resources/application-prod.yml

@@ -3,14 +3,14 @@ server:
 
 spring:
   datasource:
-    url: jdbc:mysql://rm-bp1jjv3jv98133plv285-vpc-rw.mysql.rds.aliyuncs.com:3306/longvideo?useSSL=true&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
-    username: wx2016_longvideo
-    password: wx2016_longvideoP@assword1234
+    url: jdbc:mysql://rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com:3306/piaoquan-crawler?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
+    username: crawler
+    password: crawler123456@
     driver-class-name: com.mysql.jdbc.Driver
     hikari:
       connection-timeout: 30000
       minimum-idle: 5
-      maximum-pool-size: 100
+      maximum-pool-size: 10
       auto-commit: true
       idle-timeout: 30000
   jpa:

+ 3242 - 0
long-article-recommend-service/src/main/resources/file/AccountInfo.json

@@ -0,0 +1,3242 @@
+{
+    "gh_6d205db62f04_1": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "1",
+        "readAvg": 17612.61,
+        "likeAvg": 49.95
+    },
+    "gh_56ca3dae948c_1": {
+        "accountName": "老友闲谈",
+        "ghId": "gh_56ca3dae948c",
+        "fans": 857670,
+        "position": "1",
+        "readAvg": 15220.42,
+        "likeAvg": 34.95
+    },
+    "gh_c69776baf2cd_1": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "1",
+        "readAvg": 11657.52,
+        "likeAvg": 38.64
+    },
+    "gh_9877c8541764_1": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "1",
+        "readAvg": 10019.59,
+        "likeAvg": 33.36
+    },
+    "gh_6cfd1132df94_1": {
+        "accountName": "趣味晚年",
+        "ghId": "gh_6cfd1132df94",
+        "fans": 957374,
+        "position": "1",
+        "readAvg": 9891.27,
+        "likeAvg": 30.05
+    },
+    "gh_058e41145a0c_1": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "1",
+        "readAvg": 9046.74,
+        "likeAvg": 29.42
+    },
+    "gh_89ef4798d3ea_1": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "1",
+        "readAvg": 8826.29,
+        "likeAvg": 23.27
+    },
+    "gh_56ca3dae948c_2": {
+        "accountName": "老友闲谈",
+        "ghId": "gh_56ca3dae948c",
+        "fans": 857670,
+        "position": "2",
+        "readAvg": 8787.56,
+        "likeAvg": 16.75
+    },
+    "gh_b15de7c99912_1": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "1",
+        "readAvg": 8510.52,
+        "likeAvg": 29.62
+    },
+    "gh_6d205db62f04_2": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "2",
+        "readAvg": 8322.2,
+        "likeAvg": 22.73
+    },
+    "gh_d4dffc34ac39_1": {
+        "accountName": "情为老友",
+        "ghId": "gh_d4dffc34ac39",
+        "fans": 828444,
+        "position": "1",
+        "readAvg": 8179.1,
+        "likeAvg": 24.44
+    },
+    "gh_744cb16f6e16_1": {
+        "accountName": "趣史论",
+        "ghId": "gh_744cb16f6e16",
+        "fans": 242817,
+        "position": "1",
+        "readAvg": 8177.88,
+        "likeAvg": 32.85
+    },
+    "gh_c91b42649690_1": {
+        "accountName": "农耕趣时刻",
+        "ghId": "gh_c91b42649690",
+        "fans": 226994,
+        "position": "1",
+        "readAvg": 7669.17,
+        "likeAvg": 23.54
+    },
+    "gh_970460d9ccec_1": {
+        "accountName": "生活之大全",
+        "ghId": "gh_970460d9ccec",
+        "fans": 277699,
+        "position": "1",
+        "readAvg": 7433.5,
+        "likeAvg": 26.0
+    },
+    "gh_5ae65db96cb7_1": {
+        "accountName": "路边闲聊社",
+        "ghId": "gh_5ae65db96cb7",
+        "fans": 264349,
+        "position": "1",
+        "readAvg": 6758.06,
+        "likeAvg": 16.98
+    },
+    "gh_c5cdf60d9ab4_1": {
+        "accountName": "老友快乐谈",
+        "ghId": "gh_c5cdf60d9ab4",
+        "fans": 512895,
+        "position": "1",
+        "readAvg": 6640.98,
+        "likeAvg": 18.24
+    },
+    "gh_4c058673c07e_1": {
+        "accountName": "家家生活指南",
+        "ghId": "gh_4c058673c07e",
+        "fans": 272538,
+        "position": "1",
+        "readAvg": 6277.29,
+        "likeAvg": 18.35
+    },
+    "gh_30816d8adb52_1": {
+        "accountName": "日常巧思集",
+        "ghId": "gh_30816d8adb52",
+        "fans": 255337,
+        "position": "1",
+        "readAvg": 6185.7,
+        "likeAvg": 23.3
+    },
+    "gh_c69776baf2cd_2": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "2",
+        "readAvg": 5717.82,
+        "likeAvg": 17.75
+    },
+    "gh_a2901d34f75b_1": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "1",
+        "readAvg": 5595.2,
+        "likeAvg": 16.62
+    },
+    "gh_0c89e11f8bf3_1": {
+        "accountName": "幸福启示",
+        "ghId": "gh_0c89e11f8bf3",
+        "fans": 486906,
+        "position": "1",
+        "readAvg": 5041.48,
+        "likeAvg": 14.96
+    },
+    "gh_9877c8541764_2": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "2",
+        "readAvg": 4981.66,
+        "likeAvg": 14.88
+    },
+    "gh_d49df5e974ca_1": {
+        "accountName": "生活指示录",
+        "ghId": "gh_d49df5e974ca",
+        "fans": 437523,
+        "position": "1",
+        "readAvg": 4904.91,
+        "likeAvg": 14.55
+    },
+    "gh_bff0bcb0694a_1": {
+        "accountName": "喜乐生活派",
+        "ghId": "gh_bff0bcb0694a",
+        "fans": 404179,
+        "position": "1",
+        "readAvg": 4886.4,
+        "likeAvg": 13.74
+    },
+    "gh_e24da99dc899_1": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "1",
+        "readAvg": 4468.55,
+        "likeAvg": 9.67
+    },
+    "gh_bfe5b705324a_1": {
+        "accountName": "奇趣百味生活",
+        "ghId": "gh_bfe5b705324a",
+        "fans": 323615,
+        "position": "1",
+        "readAvg": 4397.41,
+        "likeAvg": 10.65
+    },
+    "gh_b15de7c99912_2": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "2",
+        "readAvg": 4247.91,
+        "likeAvg": 16.02
+    },
+    "gh_89ef4798d3ea_2": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "2",
+        "readAvg": 4247.33,
+        "likeAvg": 12.2
+    },
+    "gh_970460d9ccec_2": {
+        "accountName": "生活之大全",
+        "ghId": "gh_970460d9ccec",
+        "fans": 277699,
+        "position": "2",
+        "readAvg": 4178.0,
+        "likeAvg": 12.0
+    },
+    "gh_080bb43aa0dc_1": {
+        "accountName": "态度说",
+        "ghId": "gh_080bb43aa0dc",
+        "fans": 435916,
+        "position": "1",
+        "readAvg": 4166.75,
+        "likeAvg": 10.63
+    },
+    "gh_7f5075624a50_1": {
+        "accountName": "都市镜头",
+        "ghId": "gh_7f5075624a50",
+        "fans": 199214,
+        "position": "1",
+        "readAvg": 4122.41,
+        "likeAvg": 15.34
+    },
+    "gh_d4dffc34ac39_2": {
+        "accountName": "情为老友",
+        "ghId": "gh_d4dffc34ac39",
+        "fans": 828444,
+        "position": "2",
+        "readAvg": 3933.26,
+        "likeAvg": 14.81
+    },
+    "gh_9eef14ad6c16_1": {
+        "accountName": "快乐精选集",
+        "ghId": "gh_9eef14ad6c16",
+        "fans": 515674,
+        "position": "1",
+        "readAvg": 3932.46,
+        "likeAvg": 13.71
+    },
+    "gh_45beb952dc74_1": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "1",
+        "readAvg": 3813.2,
+        "likeAvg": 37.6
+    },
+    "gh_6cfd1132df94_2": {
+        "accountName": "趣味晚年",
+        "ghId": "gh_6cfd1132df94",
+        "fans": 957374,
+        "position": "2",
+        "readAvg": 3811.49,
+        "likeAvg": 11.27
+    },
+    "gh_0e4fd9e88386_1": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "1",
+        "readAvg": 3694.2,
+        "likeAvg": 12.6
+    },
+    "gh_ac43eb24376d_1": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "1",
+        "readAvg": 3630.53,
+        "likeAvg": 13.0
+    },
+    "gh_058e41145a0c_5": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "5",
+        "readAvg": 3595.0,
+        "likeAvg": 14.5
+    },
+    "gh_dd4c857bbb36_1": {
+        "accountName": "无忧自在生活",
+        "ghId": "gh_dd4c857bbb36",
+        "fans": 354334,
+        "position": "1",
+        "readAvg": 3560.54,
+        "likeAvg": 11.55
+    },
+    "gh_3ed305b5817f_1": {
+        "accountName": "看不够妙招",
+        "ghId": "gh_3ed305b5817f",
+        "fans": 368223,
+        "position": "1",
+        "readAvg": 3509.22,
+        "likeAvg": 10.3
+    },
+    "gh_008ef23062ee_1": {
+        "accountName": "日常生活小技巧集",
+        "ghId": "gh_008ef23062ee",
+        "fans": 218145,
+        "position": "1",
+        "readAvg": 3492.08,
+        "likeAvg": 14.83
+    },
+    "gh_be8c29139989_1": {
+        "accountName": "退休无忧生活",
+        "ghId": "gh_be8c29139989",
+        "fans": 197750,
+        "position": "1",
+        "readAvg": 3453.08,
+        "likeAvg": 17.33
+    },
+    "gh_de9f9ebc976b_1": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "1",
+        "readAvg": 3345.95,
+        "likeAvg": 12.19
+    },
+    "gh_5ae65db96cb7_2": {
+        "accountName": "路边闲聊社",
+        "ghId": "gh_5ae65db96cb7",
+        "fans": 264349,
+        "position": "2",
+        "readAvg": 3318.04,
+        "likeAvg": 8.96
+    },
+    "gh_058e41145a0c_2": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "2",
+        "readAvg": 3313.19,
+        "likeAvg": 10.76
+    },
+    "gh_744cb16f6e16_2": {
+        "accountName": "趣史论",
+        "ghId": "gh_744cb16f6e16",
+        "fans": 242817,
+        "position": "2",
+        "readAvg": 3287.73,
+        "likeAvg": 12.96
+    },
+    "gh_7e5818b2dd83_1": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "1",
+        "readAvg": 3276.38,
+        "likeAvg": 10.19
+    },
+    "gh_de9f9ebc976b_5": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "5",
+        "readAvg": 3133.25,
+        "likeAvg": 12.5
+    },
+    "gh_57573f01b2ee_1": {
+        "accountName": "那些历史",
+        "ghId": "gh_57573f01b2ee",
+        "fans": 148233,
+        "position": "1",
+        "readAvg": 3126.46,
+        "likeAvg": 12.38
+    },
+    "gh_058e41145a0c_6": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "6",
+        "readAvg": 3040.4,
+        "likeAvg": 13.4
+    },
+    "gh_c91b42649690_2": {
+        "accountName": "农耕趣时刻",
+        "ghId": "gh_c91b42649690",
+        "fans": 226994,
+        "position": "2",
+        "readAvg": 2852.0,
+        "likeAvg": 9.05
+    },
+    "gh_058e41145a0c_8": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "8",
+        "readAvg": 2851.6,
+        "likeAvg": 11.2
+    },
+    "gh_30816d8adb52_2": {
+        "accountName": "日常巧思集",
+        "ghId": "gh_30816d8adb52",
+        "fans": 255337,
+        "position": "2",
+        "readAvg": 2693.2,
+        "likeAvg": 9.1
+    },
+    "gh_4c058673c07e_2": {
+        "accountName": "家家生活指南",
+        "ghId": "gh_4c058673c07e",
+        "fans": 272538,
+        "position": "2",
+        "readAvg": 2625.41,
+        "likeAvg": 8.59
+    },
+    "gh_789a40fe7935_1": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "1",
+        "readAvg": 2600.54,
+        "likeAvg": 11.62
+    },
+    "gh_c5cdf60d9ab4_2": {
+        "accountName": "老友快乐谈",
+        "ghId": "gh_c5cdf60d9ab4",
+        "fans": 512895,
+        "position": "2",
+        "readAvg": 2583.53,
+        "likeAvg": 7.35
+    },
+    "gh_a2901d34f75b_2": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "2",
+        "readAvg": 2557.0,
+        "likeAvg": 7.57
+    },
+    "gh_0c89e11f8bf3_2": {
+        "accountName": "幸福启示",
+        "ghId": "gh_0c89e11f8bf3",
+        "fans": 486906,
+        "position": "2",
+        "readAvg": 2517.93,
+        "likeAvg": 7.45
+    },
+    "gh_3e91f0624545_1": {
+        "accountName": "趣谈史记",
+        "ghId": "gh_3e91f0624545",
+        "fans": 123680,
+        "position": "1",
+        "readAvg": 2482.44,
+        "likeAvg": 8.78
+    },
+    "gh_969f5ea5fee1_1": {
+        "accountName": "心海情澜起",
+        "ghId": "gh_969f5ea5fee1",
+        "fans": 166686,
+        "position": "1",
+        "readAvg": 2463.08,
+        "likeAvg": 7.92
+    },
+    "gh_1d887d61088c_1": {
+        "accountName": "乐享生活小窍门",
+        "ghId": "gh_1d887d61088c",
+        "fans": 214677,
+        "position": "1",
+        "readAvg": 2422.35,
+        "likeAvg": 6.16
+    },
+    "gh_03d32e83122f_1": {
+        "accountName": "快乐生活妙技巧",
+        "ghId": "gh_03d32e83122f",
+        "fans": 201051,
+        "position": "1",
+        "readAvg": 2403.0,
+        "likeAvg": 9.17
+    },
+    "gh_d49df5e974ca_2": {
+        "accountName": "生活指示录",
+        "ghId": "gh_d49df5e974ca",
+        "fans": 437523,
+        "position": "2",
+        "readAvg": 2399.95,
+        "likeAvg": 8.05
+    },
+    "gh_058e41145a0c_7": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "7",
+        "readAvg": 2391.6,
+        "likeAvg": 8.0
+    },
+    "gh_192c9cf58b13_1": {
+        "accountName": "天天学生活技巧",
+        "ghId": "gh_192c9cf58b13",
+        "fans": 200829,
+        "position": "1",
+        "readAvg": 2391.12,
+        "likeAvg": 6.43
+    },
+    "gh_d2cc901deca7_1": {
+        "accountName": "票圈极速版",
+        "ghId": "gh_d2cc901deca7",
+        "fans": 203462,
+        "position": "1",
+        "readAvg": 2370.97,
+        "likeAvg": 14.5
+    },
+    "gh_ff487cb5dab3_1": {
+        "accountName": "趣味生活达人",
+        "ghId": "gh_ff487cb5dab3",
+        "fans": 240559,
+        "position": "1",
+        "readAvg": 2370.86,
+        "likeAvg": 6.75
+    },
+    "gh_de9f9ebc976b_7": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "7",
+        "readAvg": 2346.75,
+        "likeAvg": 9.75
+    },
+    "gh_d5f935d0d1f2_1": {
+        "accountName": "繁花史阁",
+        "ghId": "gh_d5f935d0d1f2",
+        "fans": 144435,
+        "position": "1",
+        "readAvg": 2300.38,
+        "likeAvg": 8.69
+    },
+    "gh_9cf3b7ff486b_1": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "1",
+        "readAvg": 2288.4,
+        "likeAvg": 29.8
+    },
+    "gh_51e4ad40466d_1": {
+        "accountName": "日常小妙招秘籍",
+        "ghId": "gh_51e4ad40466d",
+        "fans": 153526,
+        "position": "1",
+        "readAvg": 2234.6,
+        "likeAvg": 9.7
+    },
+    "gh_ac43eb24376d_5": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "5",
+        "readAvg": 2232.67,
+        "likeAvg": 7.83
+    },
+    "gh_efaf7da157f5_1": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "1",
+        "readAvg": 2229.8,
+        "likeAvg": 27.8
+    },
+    "gh_b6f2c5332c72_1": {
+        "accountName": "巷尾风声",
+        "ghId": "gh_b6f2c5332c72",
+        "fans": 109057,
+        "position": "1",
+        "readAvg": 2189.07,
+        "likeAvg": 7.85
+    },
+    "gh_adca24a8f429_1": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "1",
+        "readAvg": 2168.87,
+        "likeAvg": 8.06
+    },
+    "gh_e24da99dc899_2": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "2",
+        "readAvg": 2157.14,
+        "likeAvg": 3.63
+    },
+    "gh_6b7c2a257263_1": {
+        "accountName": "幸福晚年知音",
+        "ghId": "gh_6b7c2a257263",
+        "fans": 243535,
+        "position": "1",
+        "readAvg": 2155.98,
+        "likeAvg": 4.56
+    },
+    "gh_95ed5ecf9363_1": {
+        "accountName": "生活小优招",
+        "ghId": "gh_95ed5ecf9363",
+        "fans": 156489,
+        "position": "1",
+        "readAvg": 2134.0,
+        "likeAvg": 9.2
+    },
+    "gh_7f5075624a50_2": {
+        "accountName": "都市镜头",
+        "ghId": "gh_7f5075624a50",
+        "fans": 199214,
+        "position": "2",
+        "readAvg": 2100.24,
+        "likeAvg": 9.25
+    },
+    "gh_bff0bcb0694a_2": {
+        "accountName": "喜乐生活派",
+        "ghId": "gh_bff0bcb0694a",
+        "fans": 404179,
+        "position": "2",
+        "readAvg": 2099.55,
+        "likeAvg": 5.09
+    },
+    "gh_bfe5b705324a_2": {
+        "accountName": "奇趣百味生活",
+        "ghId": "gh_bfe5b705324a",
+        "fans": 323615,
+        "position": "2",
+        "readAvg": 2074.87,
+        "likeAvg": 5.76
+    },
+    "gh_e0eb490115f5_1": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "1",
+        "readAvg": 2057.45,
+        "likeAvg": 6.62
+    },
+    "gh_03d32e83122f_2": {
+        "accountName": "快乐生活妙技巧",
+        "ghId": "gh_03d32e83122f",
+        "fans": 201051,
+        "position": "2",
+        "readAvg": 2022.0,
+        "likeAvg": 4.4
+    },
+    "gh_72bace6b3059_1": {
+        "accountName": "幸福妙招合集",
+        "ghId": "gh_72bace6b3059",
+        "fans": 425935,
+        "position": "1",
+        "readAvg": 1982.73,
+        "likeAvg": 7.75
+    },
+    "gh_9f8dc5b0c74e_1": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "1",
+        "readAvg": 1982.36,
+        "likeAvg": 7.96
+    },
+    "gh_de9f9ebc976b_6": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "6",
+        "readAvg": 1982.25,
+        "likeAvg": 7.0
+    },
+    "gh_080bb43aa0dc_2": {
+        "accountName": "态度说",
+        "ghId": "gh_080bb43aa0dc",
+        "fans": 435916,
+        "position": "2",
+        "readAvg": 1956.73,
+        "likeAvg": 5.55
+    },
+    "gh_0e4fd9e88386_2": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "2",
+        "readAvg": 1951.0,
+        "likeAvg": 6.8
+    },
+    "gh_6d9f36e3a7be_1": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "1",
+        "readAvg": 1934.88,
+        "likeAvg": 4.25
+    },
+    "gh_7b4a5f86d68c_1": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "1",
+        "readAvg": 1929.08,
+        "likeAvg": 6.17
+    },
+    "gh_b676b7ad9b74_1": {
+        "accountName": "无忧生活小妙招",
+        "ghId": "gh_b676b7ad9b74",
+        "fans": 215401,
+        "position": "1",
+        "readAvg": 1833.66,
+        "likeAvg": 6.36
+    },
+    "gh_ac43eb24376d_6": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "6",
+        "readAvg": 1813.67,
+        "likeAvg": 8.33
+    },
+    "gh_b8baac4296cb_1": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "1",
+        "readAvg": 1812.4,
+        "likeAvg": 15.0
+    },
+    "gh_95ed5ecf9363_2": {
+        "accountName": "生活小优招",
+        "ghId": "gh_95ed5ecf9363",
+        "fans": 156489,
+        "position": "2",
+        "readAvg": 1806.4,
+        "likeAvg": 3.6
+    },
+    "gh_183d80deffb8_1": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "1",
+        "readAvg": 1801.56,
+        "likeAvg": 6.78
+    },
+    "gh_29074b51f2b7_1": {
+        "accountName": "老来生活家",
+        "ghId": "gh_29074b51f2b7",
+        "fans": 197360,
+        "position": "1",
+        "readAvg": 1801.53,
+        "likeAvg": 5.12
+    },
+    "gh_9eef14ad6c16_2": {
+        "accountName": "快乐精选集",
+        "ghId": "gh_9eef14ad6c16",
+        "fans": 515674,
+        "position": "2",
+        "readAvg": 1789.82,
+        "likeAvg": 6.43
+    },
+    "gh_0e4fd9e88386_5": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "5",
+        "readAvg": 1788.67,
+        "likeAvg": 6.67
+    },
+    "gh_3ed305b5817f_2": {
+        "accountName": "看不够妙招",
+        "ghId": "gh_3ed305b5817f",
+        "fans": 368223,
+        "position": "2",
+        "readAvg": 1761.12,
+        "likeAvg": 6.0
+    },
+    "gh_7e5818b2dd83_2": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "2",
+        "readAvg": 1737.68,
+        "likeAvg": 5.58
+    },
+    "gh_dd4c857bbb36_2": {
+        "accountName": "无忧自在生活",
+        "ghId": "gh_dd4c857bbb36",
+        "fans": 354334,
+        "position": "2",
+        "readAvg": 1663.8,
+        "likeAvg": 5.88
+    },
+    "gh_de9f9ebc976b_8": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "8",
+        "readAvg": 1650.5,
+        "likeAvg": 8.5
+    },
+    "gh_b32125c73861_1": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "1",
+        "readAvg": 1568.4,
+        "likeAvg": 13.8
+    },
+    "gh_f25b5fb01977_1": {
+        "accountName": "生活晓常识",
+        "ghId": "gh_f25b5fb01977",
+        "fans": 177200,
+        "position": "1",
+        "readAvg": 1524.62,
+        "likeAvg": 4.77
+    },
+    "gh_adca24a8f429_5": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "5",
+        "readAvg": 1502.0,
+        "likeAvg": 5.0
+    },
+    "gh_0e4fd9e88386_6": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "6",
+        "readAvg": 1501.5,
+        "likeAvg": 7.67
+    },
+    "gh_adca24a8f429_6": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "6",
+        "readAvg": 1493.5,
+        "likeAvg": 4.5
+    },
+    "gh_008ef23062ee_2": {
+        "accountName": "日常生活小技巧集",
+        "ghId": "gh_008ef23062ee",
+        "fans": 218145,
+        "position": "2",
+        "readAvg": 1486.0,
+        "likeAvg": 5.62
+    },
+    "gh_4568b5a7e2fe_1": {
+        "accountName": "窦都事说",
+        "ghId": "gh_4568b5a7e2fe",
+        "fans": 329707,
+        "position": "1",
+        "readAvg": 1471.94,
+        "likeAvg": 5.82
+    },
+    "gh_ac43eb24376d_2": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "2",
+        "readAvg": 1455.21,
+        "likeAvg": 4.89
+    },
+    "gh_ac43eb24376d_8": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "8",
+        "readAvg": 1450.17,
+        "likeAvg": 5.0
+    },
+    "gh_adca24a8f429_7": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "7",
+        "readAvg": 1443.5,
+        "likeAvg": 6.5
+    },
+    "gh_ac43eb24376d_7": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "7",
+        "readAvg": 1440.5,
+        "likeAvg": 6.67
+    },
+    "gh_be8c29139989_2": {
+        "accountName": "退休无忧生活",
+        "ghId": "gh_be8c29139989",
+        "fans": 197750,
+        "position": "2",
+        "readAvg": 1423.85,
+        "likeAvg": 6.08
+    },
+    "gh_de9f9ebc976b_2": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "2",
+        "readAvg": 1365.0,
+        "likeAvg": 5.71
+    },
+    "gh_1d887d61088c_2": {
+        "accountName": "乐享生活小窍门",
+        "ghId": "gh_1d887d61088c",
+        "fans": 214677,
+        "position": "2",
+        "readAvg": 1358.86,
+        "likeAvg": 3.84
+    },
+    "gh_192c9cf58b13_2": {
+        "accountName": "天天学生活技巧",
+        "ghId": "gh_192c9cf58b13",
+        "fans": 200829,
+        "position": "2",
+        "readAvg": 1349.96,
+        "likeAvg": 3.37
+    },
+    "gh_adca24a8f429_8": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "8",
+        "readAvg": 1329.5,
+        "likeAvg": 8.5
+    },
+    "gh_45beb952dc74_2": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "2",
+        "readAvg": 1324.67,
+        "likeAvg": 17.83
+    },
+    "gh_adca24a8f429_2": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "2",
+        "readAvg": 1287.87,
+        "likeAvg": 5.23
+    },
+    "gh_5ff48e9fb9ef_1": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "1",
+        "readAvg": 1287.22,
+        "likeAvg": 5.66
+    },
+    "gh_f902cea89e48_1": {
+        "accountName": "无忧潮生活",
+        "ghId": "gh_f902cea89e48",
+        "fans": 162528,
+        "position": "1",
+        "readAvg": 1271.74,
+        "likeAvg": 4.55
+    },
+    "gh_ff487cb5dab3_2": {
+        "accountName": "趣味生活达人",
+        "ghId": "gh_ff487cb5dab3",
+        "fans": 240559,
+        "position": "2",
+        "readAvg": 1267.53,
+        "likeAvg": 3.13
+    },
+    "gh_789a40fe7935_2": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "2",
+        "readAvg": 1263.0,
+        "likeAvg": 3.85
+    },
+    "gh_3e91f0624545_2": {
+        "accountName": "趣谈史记",
+        "ghId": "gh_3e91f0624545",
+        "fans": 123680,
+        "position": "2",
+        "readAvg": 1233.89,
+        "likeAvg": 4.22
+    },
+    "gh_57573f01b2ee_2": {
+        "accountName": "那些历史",
+        "ghId": "gh_57573f01b2ee",
+        "fans": 148233,
+        "position": "2",
+        "readAvg": 1222.0,
+        "likeAvg": 4.0
+    },
+    "gh_0e4fd9e88386_7": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "7",
+        "readAvg": 1200.17,
+        "likeAvg": 4.5
+    },
+    "gh_b3ffc1ca3a04_1": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "1",
+        "readAvg": 1166.0,
+        "likeAvg": 13.4
+    },
+    "gh_058e41145a0c_3": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "3",
+        "readAvg": 1161.73,
+        "likeAvg": 3.45
+    },
+    "gh_b6f2c5332c72_2": {
+        "accountName": "巷尾风声",
+        "ghId": "gh_b6f2c5332c72",
+        "fans": 109057,
+        "position": "2",
+        "readAvg": 1146.07,
+        "likeAvg": 4.49
+    },
+    "gh_51e4ad40466d_2": {
+        "accountName": "日常小妙招秘籍",
+        "ghId": "gh_51e4ad40466d",
+        "fans": 153526,
+        "position": "2",
+        "readAvg": 1082.7,
+        "likeAvg": 4.5
+    },
+    "gh_0e4fd9e88386_4": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "4",
+        "readAvg": 1059.18,
+        "likeAvg": 4.45
+    },
+    "gh_0e4fd9e88386_3": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "3",
+        "readAvg": 1054.27,
+        "likeAvg": 6.09
+    },
+    "gh_e0eb490115f5_2": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "2",
+        "readAvg": 1053.91,
+        "likeAvg": 3.65
+    },
+    "gh_72bace6b3059_2": {
+        "accountName": "幸福妙招合集",
+        "ghId": "gh_72bace6b3059",
+        "fans": 425935,
+        "position": "2",
+        "readAvg": 1039.64,
+        "likeAvg": 5.11
+    },
+    "gh_084a485e859a_1": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "1",
+        "readAvg": 1022.07,
+        "likeAvg": 3.69
+    },
+    "gh_9cf3b7ff486b_2": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "2",
+        "readAvg": 1002.33,
+        "likeAvg": 23.67
+    },
+    "gh_058e41145a0c_4": {
+        "accountName": "多彩妙生活",
+        "ghId": "gh_058e41145a0c",
+        "fans": 253532,
+        "position": "4",
+        "readAvg": 988.43,
+        "likeAvg": 3.24
+    },
+    "gh_9f8dc5b0c74e_2": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "2",
+        "readAvg": 969.79,
+        "likeAvg": 3.79
+    },
+    "gh_b676b7ad9b74_2": {
+        "accountName": "无忧生活小妙招",
+        "ghId": "gh_b676b7ad9b74",
+        "fans": 215401,
+        "position": "2",
+        "readAvg": 961.81,
+        "likeAvg": 3.03
+    },
+    "gh_efaf7da157f5_2": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "2",
+        "readAvg": 955.4,
+        "likeAvg": 20.8
+    },
+    "gh_d2cc901deca7_2": {
+        "accountName": "票圈极速版",
+        "ghId": "gh_d2cc901deca7",
+        "fans": 203462,
+        "position": "2",
+        "readAvg": 955.1,
+        "likeAvg": 6.77
+    },
+    "gh_45beb952dc74_5": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "5",
+        "readAvg": 954.5,
+        "likeAvg": 10.17
+    },
+    "gh_1b27dd1beeca_1": {
+        "accountName": "小贝生活课堂",
+        "ghId": "gh_1b27dd1beeca",
+        "fans": 155419,
+        "position": "1",
+        "readAvg": 942.95,
+        "likeAvg": 2.58
+    },
+    "gh_d5f935d0d1f2_2": {
+        "accountName": "繁花史阁",
+        "ghId": "gh_d5f935d0d1f2",
+        "fans": 144435,
+        "position": "2",
+        "readAvg": 938.15,
+        "likeAvg": 4.08
+    },
+    "gh_7b4a5f86d68c_2": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "2",
+        "readAvg": 922.33,
+        "likeAvg": 2.62
+    },
+    "gh_45beb952dc74_3": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "3",
+        "readAvg": 878.83,
+        "likeAvg": 12.67
+    },
+    "gh_6d9f36e3a7be_2": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "2",
+        "readAvg": 862.12,
+        "likeAvg": 2.0
+    },
+    "gh_ee78360d06f5_1": {
+        "accountName": "实用妙招800个",
+        "ghId": "gh_ee78360d06f5",
+        "fans": 120597,
+        "position": "1",
+        "readAvg": 841.79,
+        "likeAvg": 2.55
+    },
+    "gh_45beb952dc74_4": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "4",
+        "readAvg": 829.33,
+        "likeAvg": 10.83
+    },
+    "gh_0e4fd9e88386_8": {
+        "accountName": "持家有妙招",
+        "ghId": "gh_0e4fd9e88386",
+        "fans": 171774,
+        "position": "8",
+        "readAvg": 828.17,
+        "likeAvg": 3.5
+    },
+    "gh_29074b51f2b7_2": {
+        "accountName": "老来生活家",
+        "ghId": "gh_29074b51f2b7",
+        "fans": 197360,
+        "position": "2",
+        "readAvg": 827.29,
+        "likeAvg": 2.73
+    },
+    "gh_744cb16f6e16_3": {
+        "accountName": "趣史论",
+        "ghId": "gh_744cb16f6e16",
+        "fans": 242817,
+        "position": "3",
+        "readAvg": 825.78,
+        "likeAvg": 4.26
+    },
+    "gh_6b7c2a257263_2": {
+        "accountName": "幸福晚年知音",
+        "ghId": "gh_6b7c2a257263",
+        "fans": 243535,
+        "position": "2",
+        "readAvg": 816.58,
+        "likeAvg": 2.28
+    },
+    "gh_183d80deffb8_2": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "2",
+        "readAvg": 792.57,
+        "likeAvg": 3.02
+    },
+    "gh_9cf3b7ff486b_3": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "3",
+        "readAvg": 746.33,
+        "likeAvg": 17.0
+    },
+    "gh_ac43eb24376d_4": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "4",
+        "readAvg": 731.42,
+        "likeAvg": 2.53
+    },
+    "gh_b8baac4296cb_2": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "2",
+        "readAvg": 725.33,
+        "likeAvg": 7.67
+    },
+    "gh_f25b5fb01977_2": {
+        "accountName": "生活晓常识",
+        "ghId": "gh_f25b5fb01977",
+        "fans": 177200,
+        "position": "2",
+        "readAvg": 705.11,
+        "likeAvg": 2.28
+    },
+    "gh_ac43eb24376d_3": {
+        "accountName": "麒阁史记",
+        "ghId": "gh_ac43eb24376d",
+        "fans": 108877,
+        "position": "3",
+        "readAvg": 703.06,
+        "likeAvg": 3.17
+    },
+    "gh_970460d9ccec_3": {
+        "accountName": "生活之大全",
+        "ghId": "gh_970460d9ccec",
+        "fans": 277699,
+        "position": "3",
+        "readAvg": 668.8,
+        "likeAvg": 2.8
+    },
+    "gh_b32125c73861_2": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "2",
+        "readAvg": 668.0,
+        "likeAvg": 5.17
+    },
+    "gh_9cf3b7ff486b_5": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "5",
+        "readAvg": 660.67,
+        "likeAvg": 6.17
+    },
+    "gh_969f5ea5fee1_2": {
+        "accountName": "心海情澜起",
+        "ghId": "gh_969f5ea5fee1",
+        "fans": 166686,
+        "position": "2",
+        "readAvg": 638.42,
+        "likeAvg": 2.25
+    },
+    "gh_45beb952dc74_6": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "6",
+        "readAvg": 624.83,
+        "likeAvg": 7.83
+    },
+    "gh_5ff48e9fb9ef_2": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "2",
+        "readAvg": 622.37,
+        "likeAvg": 2.86
+    },
+    "gh_efaf7da157f5_3": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "3",
+        "readAvg": 616.0,
+        "likeAvg": 9.29
+    },
+    "gh_45beb952dc74_8": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "8",
+        "readAvg": 601.71,
+        "likeAvg": 9.57
+    },
+    "gh_b8baac4296cb_3": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "3",
+        "readAvg": 596.57,
+        "likeAvg": 7.57
+    },
+    "gh_56ca3dae948c_3": {
+        "accountName": "老友闲谈",
+        "ghId": "gh_56ca3dae948c",
+        "fans": 857670,
+        "position": "3",
+        "readAvg": 550.27,
+        "likeAvg": 2.03
+    },
+    "gh_b32125c73861_3": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "3",
+        "readAvg": 542.71,
+        "likeAvg": 5.14
+    },
+    "gh_9cf3b7ff486b_4": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "4",
+        "readAvg": 527.33,
+        "likeAvg": 7.83
+    },
+    "gh_b8baac4296cb_5": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "5",
+        "readAvg": 518.0,
+        "likeAvg": 3.33
+    },
+    "gh_c91b42649690_3": {
+        "accountName": "农耕趣时刻",
+        "ghId": "gh_c91b42649690",
+        "fans": 226994,
+        "position": "3",
+        "readAvg": 513.41,
+        "likeAvg": 1.59
+    },
+    "gh_b32125c73861_5": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "5",
+        "readAvg": 505.0,
+        "likeAvg": 4.67
+    },
+    "gh_084a485e859a_2": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "2",
+        "readAvg": 497.68,
+        "likeAvg": 1.93
+    },
+    "gh_b3ffc1ca3a04_2": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "2",
+        "readAvg": 495.0,
+        "likeAvg": 6.67
+    },
+    "gh_f902cea89e48_2": {
+        "accountName": "无忧潮生活",
+        "ghId": "gh_f902cea89e48",
+        "fans": 162528,
+        "position": "2",
+        "readAvg": 472.73,
+        "likeAvg": 2.12
+    },
+    "gh_1b27dd1beeca_2": {
+        "accountName": "小贝生活课堂",
+        "ghId": "gh_1b27dd1beeca",
+        "fans": 155419,
+        "position": "2",
+        "readAvg": 462.3,
+        "likeAvg": 1.14
+    },
+    "gh_c91b42649690_4": {
+        "accountName": "农耕趣时刻",
+        "ghId": "gh_c91b42649690",
+        "fans": 226994,
+        "position": "4",
+        "readAvg": 452.64,
+        "likeAvg": 1.86
+    },
+    "gh_26a307578776_1": {
+        "accountName": "票圈美文速递",
+        "ghId": "gh_26a307578776",
+        "fans": 18670,
+        "position": "1",
+        "readAvg": 446.54,
+        "likeAvg": 10.36
+    },
+    "gh_45beb952dc74_7": {
+        "accountName": "票圈乐活",
+        "ghId": "gh_45beb952dc74",
+        "fans": 126479,
+        "position": "7",
+        "readAvg": 425.83,
+        "likeAvg": 5.83
+    },
+    "gh_6d205db62f04_3": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "3",
+        "readAvg": 424.75,
+        "likeAvg": 1.9
+    },
+    "gh_5e543853d8f0_1": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "1",
+        "readAvg": 418.83,
+        "likeAvg": 4.67
+    },
+    "gh_789a40fe7935_8": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "8",
+        "readAvg": 417.0,
+        "likeAvg": 2.0
+    },
+    "gh_ee78360d06f5_2": {
+        "accountName": "实用妙招800个",
+        "ghId": "gh_ee78360d06f5",
+        "fans": 120597,
+        "position": "2",
+        "readAvg": 413.32,
+        "likeAvg": 1.25
+    },
+    "gh_b8baac4296cb_4": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "4",
+        "readAvg": 412.71,
+        "likeAvg": 4.86
+    },
+    "gh_b3ffc1ca3a04_5": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "5",
+        "readAvg": 402.83,
+        "likeAvg": 4.83
+    },
+    "gh_b32125c73861_4": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "4",
+        "readAvg": 398.43,
+        "likeAvg": 3.86
+    },
+    "gh_e24da99dc899_3": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "3",
+        "readAvg": 395.57,
+        "likeAvg": 0.72
+    },
+    "gh_970460d9ccec_4": {
+        "accountName": "生活之大全",
+        "ghId": "gh_970460d9ccec",
+        "fans": 277699,
+        "position": "4",
+        "readAvg": 394.0,
+        "likeAvg": 2.8
+    },
+    "gh_9cf3b7ff486b_6": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "6",
+        "readAvg": 384.17,
+        "likeAvg": 2.83
+    },
+    "gh_efaf7da157f5_5": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "5",
+        "readAvg": 363.33,
+        "likeAvg": 4.67
+    },
+    "gh_b3ffc1ca3a04_3": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "3",
+        "readAvg": 359.83,
+        "likeAvg": 5.5
+    },
+    "gh_4c058673c07e_3": {
+        "accountName": "家家生活指南",
+        "ghId": "gh_4c058673c07e",
+        "fans": 272538,
+        "position": "3",
+        "readAvg": 356.59,
+        "likeAvg": 1.41
+    },
+    "gh_4568b5a7e2fe_2": {
+        "accountName": "窦都事说",
+        "ghId": "gh_4568b5a7e2fe",
+        "fans": 329707,
+        "position": "2",
+        "readAvg": 338.16,
+        "likeAvg": 1.41
+    },
+    "gh_9cf3b7ff486b_8": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "8",
+        "readAvg": 336.0,
+        "likeAvg": 2.33
+    },
+    "gh_b3ffc1ca3a04_4": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "4",
+        "readAvg": 327.14,
+        "likeAvg": 4.57
+    },
+    "gh_56ca3dae948c_5": {
+        "accountName": "老友闲谈",
+        "ghId": "gh_56ca3dae948c",
+        "fans": 857670,
+        "position": "5",
+        "readAvg": 324.94,
+        "likeAvg": 0.96
+    },
+    "gh_b32125c73861_8": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "8",
+        "readAvg": 324.0,
+        "likeAvg": 3.0
+    },
+    "gh_26a307578776_2": {
+        "accountName": "票圈美文速递",
+        "ghId": "gh_26a307578776",
+        "fans": 18670,
+        "position": "2",
+        "readAvg": 323.44,
+        "likeAvg": 8.19
+    },
+    "gh_03d32e83122f_3": {
+        "accountName": "快乐生活妙技巧",
+        "ghId": "gh_03d32e83122f",
+        "fans": 201051,
+        "position": "3",
+        "readAvg": 323.4,
+        "likeAvg": 0.4
+    },
+    "gh_b8baac4296cb_8": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "8",
+        "readAvg": 321.14,
+        "likeAvg": 2.86
+    },
+    "gh_56ca3dae948c_4": {
+        "accountName": "老友闲谈",
+        "ghId": "gh_56ca3dae948c",
+        "fans": 857670,
+        "position": "4",
+        "readAvg": 321.07,
+        "likeAvg": 0.79
+    },
+    "gh_b8baac4296cb_6": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "6",
+        "readAvg": 312.33,
+        "likeAvg": 2.83
+    },
+    "gh_744cb16f6e16_4": {
+        "accountName": "趣史论",
+        "ghId": "gh_744cb16f6e16",
+        "fans": 242817,
+        "position": "4",
+        "readAvg": 308.68,
+        "likeAvg": 2.41
+    },
+    "gh_e75dbdc73d80_1": {
+        "accountName": "票圈正能量",
+        "ghId": "gh_e75dbdc73d80",
+        "fans": 21179,
+        "position": "1",
+        "readAvg": 306.86,
+        "likeAvg": 2.02
+    },
+    "gh_6d205db62f04_4": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "4",
+        "readAvg": 303.67,
+        "likeAvg": 0.92
+    },
+    "gh_efaf7da157f5_4": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "4",
+        "readAvg": 297.0,
+        "likeAvg": 4.29
+    },
+    "gh_b32125c73861_6": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "6",
+        "readAvg": 296.83,
+        "likeAvg": 2.17
+    },
+    "gh_9cf3b7ff486b_7": {
+        "accountName": "票圈热门",
+        "ghId": "gh_9cf3b7ff486b",
+        "fans": 42450,
+        "position": "7",
+        "readAvg": 294.5,
+        "likeAvg": 2.33
+    },
+    "gh_c69776baf2cd_3": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "3",
+        "readAvg": 292.97,
+        "likeAvg": 1.92
+    },
+    "gh_e24da99dc899_5": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "5",
+        "readAvg": 292.31,
+        "likeAvg": 0.62
+    },
+    "gh_789a40fe7935_5": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "5",
+        "readAvg": 289.67,
+        "likeAvg": 2.0
+    },
+    "gh_30816d8adb52_3": {
+        "accountName": "日常巧思集",
+        "ghId": "gh_30816d8adb52",
+        "fans": 255337,
+        "position": "3",
+        "readAvg": 280.67,
+        "likeAvg": 1.56
+    },
+    "gh_789a40fe7935_3": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "3",
+        "readAvg": 276.56,
+        "likeAvg": 0.67
+    },
+    "gh_4c058673c07e_4": {
+        "accountName": "家家生活指南",
+        "ghId": "gh_4c058673c07e",
+        "fans": 272538,
+        "position": "4",
+        "readAvg": 276.0,
+        "likeAvg": 0.76
+    },
+    "gh_b3ffc1ca3a04_8": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "8",
+        "readAvg": 272.0,
+        "likeAvg": 3.43
+    },
+    "gh_95ed5ecf9363_3": {
+        "accountName": "生活小优招",
+        "ghId": "gh_95ed5ecf9363",
+        "fans": 156489,
+        "position": "3",
+        "readAvg": 270.6,
+        "likeAvg": 1.0
+    },
+    "gh_30816d8adb52_4": {
+        "accountName": "日常巧思集",
+        "ghId": "gh_30816d8adb52",
+        "fans": 255337,
+        "position": "4",
+        "readAvg": 261.44,
+        "likeAvg": 1.22
+    },
+    "gh_789a40fe7935_7": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "7",
+        "readAvg": 258.67,
+        "likeAvg": 2.67
+    },
+    "gh_789a40fe7935_4": {
+        "accountName": "史记有言",
+        "ghId": "gh_789a40fe7935",
+        "fans": 135657,
+        "position": "4",
+        "readAvg": 256.42,
+        "likeAvg": 0.67
+    },
+    "gh_6d205db62f04_5": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "5",
+        "readAvg": 253.39,
+        "likeAvg": 0.52
+    },
+    "gh_03d32e83122f_4": {
+        "accountName": "快乐生活妙技巧",
+        "ghId": "gh_03d32e83122f",
+        "fans": 201051,
+        "position": "4",
+        "readAvg": 250.2,
+        "likeAvg": 0.6
+    },
+    "gh_f902cea89e48_5": {
+        "accountName": "无忧潮生活",
+        "ghId": "gh_f902cea89e48",
+        "fans": 162528,
+        "position": "5",
+        "readAvg": 246.5,
+        "likeAvg": 0.5
+    },
+    "gh_b3ffc1ca3a04_6": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "6",
+        "readAvg": 237.33,
+        "likeAvg": 2.17
+    },
+    "gh_b8baac4296cb_7": {
+        "accountName": "票圈原创视频精选",
+        "ghId": "gh_b8baac4296cb",
+        "fans": 49884,
+        "position": "7",
+        "readAvg": 235.0,
+        "likeAvg": 1.67
+    },
+    "gh_3e91f0624545_3": {
+        "accountName": "趣谈史记",
+        "ghId": "gh_3e91f0624545",
+        "fans": 123680,
+        "position": "3",
+        "readAvg": 233.78,
+        "likeAvg": 0.89
+    },
+    "gh_e24da99dc899_4": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "4",
+        "readAvg": 230.85,
+        "likeAvg": 0.57
+    },
+    "gh_6d205db62f04_6": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "6",
+        "readAvg": 228.62,
+        "likeAvg": 0.5
+    },
+    "gh_b32125c73861_7": {
+        "accountName": "票圈奇闻",
+        "ghId": "gh_b32125c73861",
+        "fans": 30063,
+        "position": "7",
+        "readAvg": 225.67,
+        "likeAvg": 2.67
+    },
+    "gh_57573f01b2ee_3": {
+        "accountName": "那些历史",
+        "ghId": "gh_57573f01b2ee",
+        "fans": 148233,
+        "position": "3",
+        "readAvg": 213.38,
+        "likeAvg": 0.54
+    },
+    "gh_9877c8541764_3": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "3",
+        "readAvg": 213.02,
+        "likeAvg": 1.74
+    },
+    "gh_9e559b3b94ca_1": {
+        "accountName": "票圈大事件",
+        "ghId": "gh_9e559b3b94ca",
+        "fans": 20375,
+        "position": "1",
+        "readAvg": 212.05,
+        "likeAvg": 2.1
+    },
+    "gh_6cfd1132df94_3": {
+        "accountName": "趣味晚年",
+        "ghId": "gh_6cfd1132df94",
+        "fans": 957374,
+        "position": "3",
+        "readAvg": 209.54,
+        "likeAvg": 1.66
+    },
+    "gh_efaf7da157f5_6": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "6",
+        "readAvg": 208.83,
+        "likeAvg": 3.33
+    },
+    "gh_008ef23062ee_3": {
+        "accountName": "日常生活小技巧集",
+        "ghId": "gh_008ef23062ee",
+        "fans": 218145,
+        "position": "3",
+        "readAvg": 206.0,
+        "likeAvg": 1.23
+    },
+    "gh_6d205db62f04_7": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "7",
+        "readAvg": 201.33,
+        "likeAvg": 0.2
+    },
+    "gh_c69776baf2cd_4": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "4",
+        "readAvg": 197.91,
+        "likeAvg": 1.55
+    },
+    "gh_5ae65db96cb7_3": {
+        "accountName": "路边闲聊社",
+        "ghId": "gh_5ae65db96cb7",
+        "fans": 264349,
+        "position": "3",
+        "readAvg": 189.53,
+        "likeAvg": 1.42
+    },
+    "gh_008ef23062ee_4": {
+        "accountName": "日常生活小技巧集",
+        "ghId": "gh_008ef23062ee",
+        "fans": 218145,
+        "position": "4",
+        "readAvg": 188.92,
+        "likeAvg": 1.33
+    },
+    "gh_5e543853d8f0_2": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "2",
+        "readAvg": 188.71,
+        "likeAvg": 2.71
+    },
+    "gh_b3ffc1ca3a04_7": {
+        "accountName": "票圈内容精选",
+        "ghId": "gh_b3ffc1ca3a04",
+        "fans": 17876,
+        "position": "7",
+        "readAvg": 188.33,
+        "likeAvg": 2.5
+    },
+    "gh_efaf7da157f5_8": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "8",
+        "readAvg": 183.43,
+        "likeAvg": 4.29
+    },
+    "gh_6d205db62f04_8": {
+        "accountName": "指尖奇文",
+        "ghId": "gh_6d205db62f04",
+        "fans": 845936,
+        "position": "8",
+        "readAvg": 183.27,
+        "likeAvg": 0.33
+    },
+    "gh_be8c29139989_3": {
+        "accountName": "退休无忧生活",
+        "ghId": "gh_be8c29139989",
+        "fans": 197750,
+        "position": "3",
+        "readAvg": 182.62,
+        "likeAvg": 1.23
+    },
+    "gh_c69776baf2cd_6": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "6",
+        "readAvg": 181.24,
+        "likeAvg": 1.0
+    },
+    "gh_51e4ad40466d_3": {
+        "accountName": "日常小妙招秘籍",
+        "ghId": "gh_51e4ad40466d",
+        "fans": 153526,
+        "position": "3",
+        "readAvg": 181.0,
+        "likeAvg": 0.7
+    },
+    "gh_d4dffc34ac39_3": {
+        "accountName": "情为老友",
+        "ghId": "gh_d4dffc34ac39",
+        "fans": 828444,
+        "position": "3",
+        "readAvg": 178.35,
+        "likeAvg": 1.37
+    },
+    "gh_89ef4798d3ea_3": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "3",
+        "readAvg": 178.32,
+        "likeAvg": 0.93
+    },
+    "gh_95ed5ecf9363_4": {
+        "accountName": "生活小优招",
+        "ghId": "gh_95ed5ecf9363",
+        "fans": 156489,
+        "position": "4",
+        "readAvg": 173.6,
+        "likeAvg": 0.4
+    },
+    "gh_b15de7c99912_3": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "3",
+        "readAvg": 173.59,
+        "likeAvg": 1.41
+    },
+    "gh_57573f01b2ee_4": {
+        "accountName": "那些历史",
+        "ghId": "gh_57573f01b2ee",
+        "fans": 148233,
+        "position": "4",
+        "readAvg": 166.08,
+        "likeAvg": 0.62
+    },
+    "gh_e75dbdc73d80_2": {
+        "accountName": "票圈正能量",
+        "ghId": "gh_e75dbdc73d80",
+        "fans": 21179,
+        "position": "2",
+        "readAvg": 160.46,
+        "likeAvg": 0.98
+    },
+    "gh_5e543853d8f0_3": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "3",
+        "readAvg": 159.38,
+        "likeAvg": 2.0
+    },
+    "gh_5ae65db96cb7_4": {
+        "accountName": "路边闲聊社",
+        "ghId": "gh_5ae65db96cb7",
+        "fans": 264349,
+        "position": "4",
+        "readAvg": 156.3,
+        "likeAvg": 1.35
+    },
+    "gh_3e91f0624545_4": {
+        "accountName": "趣谈史记",
+        "ghId": "gh_3e91f0624545",
+        "fans": 123680,
+        "position": "4",
+        "readAvg": 151.22,
+        "likeAvg": 1.0
+    },
+    "gh_d2cc901deca7_3": {
+        "accountName": "票圈极速版",
+        "ghId": "gh_d2cc901deca7",
+        "fans": 203462,
+        "position": "3",
+        "readAvg": 150.04,
+        "likeAvg": 1.5
+    },
+    "gh_c69776baf2cd_5": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "5",
+        "readAvg": 147.1,
+        "likeAvg": 0.33
+    },
+    "gh_9f8dc5b0c74e_3": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "3",
+        "readAvg": 143.42,
+        "likeAvg": 0.49
+    },
+    "gh_efaf7da157f5_7": {
+        "accountName": "票圈热议",
+        "ghId": "gh_efaf7da157f5",
+        "fans": 20306,
+        "position": "7",
+        "readAvg": 141.17,
+        "likeAvg": 2.17
+    },
+    "gh_c69776baf2cd_7": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "7",
+        "readAvg": 140.13,
+        "likeAvg": 0.67
+    },
+    "gh_c69776baf2cd_8": {
+        "accountName": "老友欢聚地",
+        "ghId": "gh_c69776baf2cd",
+        "fans": 966567,
+        "position": "8",
+        "readAvg": 139.07,
+        "likeAvg": 0.6
+    },
+    "gh_6cfd1132df94_5": {
+        "accountName": "趣味晚年",
+        "ghId": "gh_6cfd1132df94",
+        "fans": 957374,
+        "position": "5",
+        "readAvg": 138.0,
+        "likeAvg": 2.0
+    },
+    "gh_be8c29139989_4": {
+        "accountName": "退休无忧生活",
+        "ghId": "gh_be8c29139989",
+        "fans": 197750,
+        "position": "4",
+        "readAvg": 137.33,
+        "likeAvg": 0.58
+    },
+    "gh_7b4a5f86d68c_3": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "3",
+        "readAvg": 136.21,
+        "likeAvg": 0.42
+    },
+    "gh_9f8dc5b0c74e_4": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "4",
+        "readAvg": 134.4,
+        "likeAvg": 0.38
+    },
+    "gh_9877c8541764_4": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "4",
+        "readAvg": 133.43,
+        "likeAvg": 1.34
+    },
+    "gh_89ef4798d3ea_4": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "4",
+        "readAvg": 133.23,
+        "likeAvg": 0.34
+    },
+    "gh_d4dffc34ac39_4": {
+        "accountName": "情为老友",
+        "ghId": "gh_d4dffc34ac39",
+        "fans": 828444,
+        "position": "4",
+        "readAvg": 130.57,
+        "likeAvg": 0.93
+    },
+    "gh_51e4ad40466d_4": {
+        "accountName": "日常小妙招秘籍",
+        "ghId": "gh_51e4ad40466d",
+        "fans": 153526,
+        "position": "4",
+        "readAvg": 128.6,
+        "likeAvg": 0.7
+    },
+    "gh_9877c8541764_6": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "6",
+        "readAvg": 127.09,
+        "likeAvg": 0.61
+    },
+    "gh_5e543853d8f0_5": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "5",
+        "readAvg": 127.0,
+        "likeAvg": 1.71
+    },
+    "gh_c5cdf60d9ab4_3": {
+        "accountName": "老友快乐谈",
+        "ghId": "gh_c5cdf60d9ab4",
+        "fans": 512895,
+        "position": "3",
+        "readAvg": 124.81,
+        "likeAvg": 0.88
+    },
+    "gh_0c89e11f8bf3_3": {
+        "accountName": "幸福启示",
+        "ghId": "gh_0c89e11f8bf3",
+        "fans": 486906,
+        "position": "3",
+        "readAvg": 123.98,
+        "likeAvg": 0.67
+    },
+    "gh_e0eb490115f5_3": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "3",
+        "readAvg": 123.28,
+        "likeAvg": 0.63
+    },
+    "gh_6cfd1132df94_4": {
+        "accountName": "趣味晚年",
+        "ghId": "gh_6cfd1132df94",
+        "fans": 957374,
+        "position": "4",
+        "readAvg": 119.5,
+        "likeAvg": 0.56
+    },
+    "gh_26a307578776_3": {
+        "accountName": "票圈美文速递",
+        "ghId": "gh_26a307578776",
+        "fans": 18670,
+        "position": "3",
+        "readAvg": 118.61,
+        "likeAvg": 5.7
+    },
+    "gh_d5f935d0d1f2_4": {
+        "accountName": "繁花史阁",
+        "ghId": "gh_d5f935d0d1f2",
+        "fans": 144435,
+        "position": "4",
+        "readAvg": 114.54,
+        "likeAvg": 0.85
+    },
+    "gh_b15de7c99912_4": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "4",
+        "readAvg": 110.47,
+        "likeAvg": 0.58
+    },
+    "gh_89ef4798d3ea_6": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "6",
+        "readAvg": 109.9,
+        "likeAvg": 0.62
+    },
+    "gh_a2901d34f75b_3": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "3",
+        "readAvg": 109.74,
+        "likeAvg": 0.71
+    },
+    "gh_9877c8541764_5": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "5",
+        "readAvg": 109.38,
+        "likeAvg": 0.71
+    },
+    "gh_9e559b3b94ca_2": {
+        "accountName": "票圈大事件",
+        "ghId": "gh_9e559b3b94ca",
+        "fans": 20375,
+        "position": "2",
+        "readAvg": 109.29,
+        "likeAvg": 1.48
+    },
+    "gh_d5f935d0d1f2_3": {
+        "accountName": "繁花史阁",
+        "ghId": "gh_d5f935d0d1f2",
+        "fans": 144435,
+        "position": "3",
+        "readAvg": 109.0,
+        "likeAvg": 0.69
+    },
+    "gh_5e543853d8f0_4": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "4",
+        "readAvg": 108.12,
+        "likeAvg": 1.25
+    },
+    "gh_7b4a5f86d68c_4": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "4",
+        "readAvg": 107.45,
+        "likeAvg": 0.27
+    },
+    "gh_3ed305b5817f_5": {
+        "accountName": "看不够妙招",
+        "ghId": "gh_3ed305b5817f",
+        "fans": 368223,
+        "position": "5",
+        "readAvg": 104.0,
+        "likeAvg": 0.0
+    },
+    "gh_d49df5e974ca_3": {
+        "accountName": "生活指示录",
+        "ghId": "gh_d49df5e974ca",
+        "fans": 437523,
+        "position": "3",
+        "readAvg": 98.45,
+        "likeAvg": 0.6
+    },
+    "gh_bfe5b705324a_3": {
+        "accountName": "奇趣百味生活",
+        "ghId": "gh_bfe5b705324a",
+        "fans": 323615,
+        "position": "3",
+        "readAvg": 94.16,
+        "likeAvg": 0.62
+    },
+    "gh_adca24a8f429_3": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "3",
+        "readAvg": 94.08,
+        "likeAvg": 0.81
+    },
+    "gh_bff0bcb0694a_3": {
+        "accountName": "喜乐生活派",
+        "ghId": "gh_bff0bcb0694a",
+        "fans": 404179,
+        "position": "3",
+        "readAvg": 93.55,
+        "likeAvg": 0.33
+    },
+    "gh_183d80deffb8_3": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "3",
+        "readAvg": 93.25,
+        "likeAvg": 0.56
+    },
+    "gh_89ef4798d3ea_5": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "5",
+        "readAvg": 93.0,
+        "likeAvg": 0.43
+    },
+    "gh_9877c8541764_7": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "7",
+        "readAvg": 92.79,
+        "likeAvg": 0.29
+    },
+    "gh_7f5075624a50_3": {
+        "accountName": "都市镜头",
+        "ghId": "gh_7f5075624a50",
+        "fans": 199214,
+        "position": "3",
+        "readAvg": 89.12,
+        "likeAvg": 0.79
+    },
+    "gh_de9f9ebc976b_4": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "4",
+        "readAvg": 88.63,
+        "likeAvg": 0.05
+    },
+    "gh_5ff48e9fb9ef_3": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "3",
+        "readAvg": 87.87,
+        "likeAvg": 0.28
+    },
+    "gh_d2cc901deca7_4": {
+        "accountName": "票圈极速版",
+        "ghId": "gh_d2cc901deca7",
+        "fans": 203462,
+        "position": "4",
+        "readAvg": 87.75,
+        "likeAvg": 0.79
+    },
+    "gh_bff0bcb0694a_5": {
+        "accountName": "喜乐生活派",
+        "ghId": "gh_bff0bcb0694a",
+        "fans": 404179,
+        "position": "5",
+        "readAvg": 87.5,
+        "likeAvg": 0.25
+    },
+    "gh_e0eb490115f5_4": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "4",
+        "readAvg": 86.65,
+        "likeAvg": 0.16
+    },
+    "gh_9877c8541764_8": {
+        "accountName": "退休老年圈",
+        "ghId": "gh_9877c8541764",
+        "fans": 803701,
+        "position": "8",
+        "readAvg": 85.71,
+        "likeAvg": 0.36
+    },
+    "gh_c5cdf60d9ab4_4": {
+        "accountName": "老友快乐谈",
+        "ghId": "gh_c5cdf60d9ab4",
+        "fans": 512895,
+        "position": "4",
+        "readAvg": 85.13,
+        "likeAvg": 0.32
+    },
+    "gh_adca24a8f429_4": {
+        "accountName": "史记趣言",
+        "ghId": "gh_adca24a8f429",
+        "fans": 126634,
+        "position": "4",
+        "readAvg": 83.48,
+        "likeAvg": 0.63
+    },
+    "gh_b15de7c99912_5": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "5",
+        "readAvg": 82.09,
+        "likeAvg": 0.32
+    },
+    "gh_080bb43aa0dc_3": {
+        "accountName": "态度说",
+        "ghId": "gh_080bb43aa0dc",
+        "fans": 435916,
+        "position": "3",
+        "readAvg": 81.85,
+        "likeAvg": 0.4
+    },
+    "gh_89ef4798d3ea_7": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "7",
+        "readAvg": 81.63,
+        "likeAvg": 0.42
+    },
+    "gh_5e543853d8f0_6": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "6",
+        "readAvg": 79.86,
+        "likeAvg": 1.0
+    },
+    "gh_3ed305b5817f_3": {
+        "accountName": "看不够妙招",
+        "ghId": "gh_3ed305b5817f",
+        "fans": 368223,
+        "position": "3",
+        "readAvg": 79.68,
+        "likeAvg": 0.54
+    },
+    "gh_9eef14ad6c16_3": {
+        "accountName": "快乐精选集",
+        "ghId": "gh_9eef14ad6c16",
+        "fans": 515674,
+        "position": "3",
+        "readAvg": 79.57,
+        "likeAvg": 0.69
+    },
+    "gh_7e5818b2dd83_3": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "3",
+        "readAvg": 78.26,
+        "likeAvg": 0.41
+    },
+    "gh_c5cdf60d9ab4_5": {
+        "accountName": "老友快乐谈",
+        "ghId": "gh_c5cdf60d9ab4",
+        "fans": 512895,
+        "position": "5",
+        "readAvg": 77.8,
+        "likeAvg": 0.8
+    },
+    "gh_ee78360d06f5_3": {
+        "accountName": "实用妙招800个",
+        "ghId": "gh_ee78360d06f5",
+        "fans": 120597,
+        "position": "3",
+        "readAvg": 77.07,
+        "likeAvg": 0.4
+    },
+    "gh_192c9cf58b13_3": {
+        "accountName": "天天学生活技巧",
+        "ghId": "gh_192c9cf58b13",
+        "fans": 200829,
+        "position": "3",
+        "readAvg": 76.53,
+        "likeAvg": 0.39
+    },
+    "gh_dd4c857bbb36_3": {
+        "accountName": "无忧自在生活",
+        "ghId": "gh_dd4c857bbb36",
+        "fans": 354334,
+        "position": "3",
+        "readAvg": 76.17,
+        "likeAvg": 0.63
+    },
+    "gh_1d887d61088c_3": {
+        "accountName": "乐享生活小窍门",
+        "ghId": "gh_1d887d61088c",
+        "fans": 214677,
+        "position": "3",
+        "readAvg": 75.03,
+        "likeAvg": 0.45
+    },
+    "gh_f902cea89e48_3": {
+        "accountName": "无忧潮生活",
+        "ghId": "gh_f902cea89e48",
+        "fans": 162528,
+        "position": "3",
+        "readAvg": 74.93,
+        "likeAvg": 0.53
+    },
+    "gh_a2901d34f75b_4": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "4",
+        "readAvg": 74.16,
+        "likeAvg": 0.24
+    },
+    "gh_bfe5b705324a_4": {
+        "accountName": "奇趣百味生活",
+        "ghId": "gh_bfe5b705324a",
+        "fans": 323615,
+        "position": "4",
+        "readAvg": 73.77,
+        "likeAvg": 0.33
+    },
+    "gh_6d9f36e3a7be_3": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "3",
+        "readAvg": 73.46,
+        "likeAvg": 0.71
+    },
+    "gh_0c89e11f8bf3_4": {
+        "accountName": "幸福启示",
+        "ghId": "gh_0c89e11f8bf3",
+        "fans": 486906,
+        "position": "4",
+        "readAvg": 73.2,
+        "likeAvg": 0.35
+    },
+    "gh_de9f9ebc976b_3": {
+        "accountName": "妙招持家帮手",
+        "ghId": "gh_de9f9ebc976b",
+        "fans": 166062,
+        "position": "3",
+        "readAvg": 71.95,
+        "likeAvg": 0.32
+    },
+    "gh_969f5ea5fee1_3": {
+        "accountName": "心海情澜起",
+        "ghId": "gh_969f5ea5fee1",
+        "fans": 166686,
+        "position": "3",
+        "readAvg": 71.83,
+        "likeAvg": 0.25
+    },
+    "gh_5e543853d8f0_8": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "8",
+        "readAvg": 71.43,
+        "likeAvg": 1.29
+    },
+    "gh_e24da99dc899_6": {
+        "accountName": "缘来养心厅",
+        "ghId": "gh_e24da99dc899",
+        "fans": 415852,
+        "position": "6",
+        "readAvg": 71.2,
+        "likeAvg": 0.47
+    },
+    "gh_5e543853d8f0_7": {
+        "accountName": "票圈精彩",
+        "ghId": "gh_5e543853d8f0",
+        "fans": 7780,
+        "position": "7",
+        "readAvg": 71.17,
+        "likeAvg": 1.17
+    },
+    "gh_b15de7c99912_6": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "6",
+        "readAvg": 70.68,
+        "likeAvg": 0.23
+    },
+    "gh_0c89e11f8bf3_5": {
+        "accountName": "幸福启示",
+        "ghId": "gh_0c89e11f8bf3",
+        "fans": 486906,
+        "position": "5",
+        "readAvg": 68.29,
+        "likeAvg": 0.29
+    },
+    "gh_080bb43aa0dc_5": {
+        "accountName": "态度说",
+        "ghId": "gh_080bb43aa0dc",
+        "fans": 435916,
+        "position": "5",
+        "readAvg": 67.75,
+        "likeAvg": 0.25
+    },
+    "gh_969f5ea5fee1_4": {
+        "accountName": "心海情澜起",
+        "ghId": "gh_969f5ea5fee1",
+        "fans": 166686,
+        "position": "4",
+        "readAvg": 66.83,
+        "likeAvg": 0.08
+    },
+    "gh_bfe5b705324a_5": {
+        "accountName": "奇趣百味生活",
+        "ghId": "gh_bfe5b705324a",
+        "fans": 323615,
+        "position": "5",
+        "readAvg": 66.5,
+        "likeAvg": 0.0
+    },
+    "gh_d49df5e974ca_4": {
+        "accountName": "生活指示录",
+        "ghId": "gh_d49df5e974ca",
+        "fans": 437523,
+        "position": "4",
+        "readAvg": 64.55,
+        "likeAvg": 0.36
+    },
+    "gh_ff487cb5dab3_3": {
+        "accountName": "趣味生活达人",
+        "ghId": "gh_ff487cb5dab3",
+        "fans": 240559,
+        "position": "3",
+        "readAvg": 62.76,
+        "likeAvg": 0.52
+    },
+    "gh_89ef4798d3ea_8": {
+        "accountName": "生活百态观",
+        "ghId": "gh_89ef4798d3ea",
+        "fans": 835095,
+        "position": "8",
+        "readAvg": 62.72,
+        "likeAvg": 0.17
+    },
+    "gh_183d80deffb8_4": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "4",
+        "readAvg": 62.02,
+        "likeAvg": 0.32
+    },
+    "gh_b15de7c99912_8": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "8",
+        "readAvg": 61.79,
+        "likeAvg": 0.21
+    },
+    "gh_bff0bcb0694a_4": {
+        "accountName": "喜乐生活派",
+        "ghId": "gh_bff0bcb0694a",
+        "fans": 404179,
+        "position": "4",
+        "readAvg": 61.58,
+        "likeAvg": 0.16
+    },
+    "gh_080bb43aa0dc_4": {
+        "accountName": "态度说",
+        "ghId": "gh_080bb43aa0dc",
+        "fans": 435916,
+        "position": "4",
+        "readAvg": 60.3,
+        "likeAvg": 0.28
+    },
+    "gh_9eef14ad6c16_5": {
+        "accountName": "快乐精选集",
+        "ghId": "gh_9eef14ad6c16",
+        "fans": 515674,
+        "position": "5",
+        "readAvg": 59.4,
+        "likeAvg": 1.0
+    },
+    "gh_7f5075624a50_4": {
+        "accountName": "都市镜头",
+        "ghId": "gh_7f5075624a50",
+        "fans": 199214,
+        "position": "4",
+        "readAvg": 58.29,
+        "likeAvg": 0.43
+    },
+    "gh_a2901d34f75b_6": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "6",
+        "readAvg": 57.7,
+        "likeAvg": 0.13
+    },
+    "gh_a2901d34f75b_5": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "5",
+        "readAvg": 57.12,
+        "likeAvg": 0.12
+    },
+    "gh_3ed305b5817f_4": {
+        "accountName": "看不够妙招",
+        "ghId": "gh_3ed305b5817f",
+        "fans": 368223,
+        "position": "4",
+        "readAvg": 57.08,
+        "likeAvg": 0.25
+    },
+    "gh_b15de7c99912_7": {
+        "accountName": "人生百事观",
+        "ghId": "gh_b15de7c99912",
+        "fans": 887469,
+        "position": "7",
+        "readAvg": 56.53,
+        "likeAvg": 0.4
+    },
+    "gh_192c9cf58b13_4": {
+        "accountName": "天天学生活技巧",
+        "ghId": "gh_192c9cf58b13",
+        "fans": 200829,
+        "position": "4",
+        "readAvg": 56.5,
+        "likeAvg": 0.1
+    },
+    "gh_f902cea89e48_4": {
+        "accountName": "无忧潮生活",
+        "ghId": "gh_f902cea89e48",
+        "fans": 162528,
+        "position": "4",
+        "readAvg": 56.14,
+        "likeAvg": 0.55
+    },
+    "gh_d49df5e974ca_5": {
+        "accountName": "生活指示录",
+        "ghId": "gh_d49df5e974ca",
+        "fans": 437523,
+        "position": "5",
+        "readAvg": 55.9,
+        "likeAvg": 0.25
+    },
+    "gh_b6f2c5332c72_3": {
+        "accountName": "巷尾风声",
+        "ghId": "gh_b6f2c5332c72",
+        "fans": 109057,
+        "position": "3",
+        "readAvg": 55.42,
+        "likeAvg": 0.33
+    },
+    "gh_72bace6b3059_3": {
+        "accountName": "幸福妙招合集",
+        "ghId": "gh_72bace6b3059",
+        "fans": 425935,
+        "position": "3",
+        "readAvg": 55.38,
+        "likeAvg": 0.62
+    },
+    "gh_5ff48e9fb9ef_4": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "4",
+        "readAvg": 54.78,
+        "likeAvg": 0.18
+    },
+    "gh_6d9f36e3a7be_4": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "4",
+        "readAvg": 54.77,
+        "likeAvg": 0.4
+    },
+    "gh_b676b7ad9b74_3": {
+        "accountName": "无忧生活小妙招",
+        "ghId": "gh_b676b7ad9b74",
+        "fans": 215401,
+        "position": "3",
+        "readAvg": 51.92,
+        "likeAvg": 0.23
+    },
+    "gh_ee78360d06f5_4": {
+        "accountName": "实用妙招800个",
+        "ghId": "gh_ee78360d06f5",
+        "fans": 120597,
+        "position": "4",
+        "readAvg": 49.49,
+        "likeAvg": 0.0
+    },
+    "gh_7e5818b2dd83_4": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "4",
+        "readAvg": 48.91,
+        "likeAvg": 0.33
+    },
+    "gh_9f8dc5b0c74e_5": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "5",
+        "readAvg": 46.81,
+        "likeAvg": 0.5
+    },
+    "gh_1d887d61088c_4": {
+        "accountName": "乐享生活小窍门",
+        "ghId": "gh_1d887d61088c",
+        "fans": 214677,
+        "position": "4",
+        "readAvg": 45.74,
+        "likeAvg": 0.19
+    },
+    "gh_26a307578776_4": {
+        "accountName": "票圈美文速递",
+        "ghId": "gh_26a307578776",
+        "fans": 18670,
+        "position": "4",
+        "readAvg": 45.31,
+        "likeAvg": 1.56
+    },
+    "gh_6b7c2a257263_3": {
+        "accountName": "幸福晚年知音",
+        "ghId": "gh_6b7c2a257263",
+        "fans": 243535,
+        "position": "3",
+        "readAvg": 43.49,
+        "likeAvg": 0.2
+    },
+    "gh_4568b5a7e2fe_3": {
+        "accountName": "窦都事说",
+        "ghId": "gh_4568b5a7e2fe",
+        "fans": 329707,
+        "position": "3",
+        "readAvg": 43.15,
+        "likeAvg": 0.3
+    },
+    "gh_a2901d34f75b_8": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "8",
+        "readAvg": 43.11,
+        "likeAvg": 0.0
+    },
+    "gh_dd4c857bbb36_4": {
+        "accountName": "无忧自在生活",
+        "ghId": "gh_dd4c857bbb36",
+        "fans": 354334,
+        "position": "4",
+        "readAvg": 42.88,
+        "likeAvg": 0.14
+    },
+    "gh_29074b51f2b7_3": {
+        "accountName": "老来生活家",
+        "ghId": "gh_29074b51f2b7",
+        "fans": 197360,
+        "position": "3",
+        "readAvg": 41.3,
+        "likeAvg": 0.25
+    },
+    "gh_a2901d34f75b_7": {
+        "accountName": "畅聊奇闻",
+        "ghId": "gh_a2901d34f75b",
+        "fans": 389185,
+        "position": "7",
+        "readAvg": 39.79,
+        "likeAvg": 0.11
+    },
+    "gh_7e5818b2dd83_5": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "5",
+        "readAvg": 38.91,
+        "likeAvg": 0.17
+    },
+    "gh_ff487cb5dab3_4": {
+        "accountName": "趣味生活达人",
+        "ghId": "gh_ff487cb5dab3",
+        "fans": 240559,
+        "position": "4",
+        "readAvg": 38.21,
+        "likeAvg": 0.07
+    },
+    "gh_9eef14ad6c16_4": {
+        "accountName": "快乐精选集",
+        "ghId": "gh_9eef14ad6c16",
+        "fans": 515674,
+        "position": "4",
+        "readAvg": 36.53,
+        "likeAvg": 0.09
+    },
+    "gh_b6f2c5332c72_4": {
+        "accountName": "巷尾风声",
+        "ghId": "gh_b6f2c5332c72",
+        "fans": 109057,
+        "position": "4",
+        "readAvg": 33.64,
+        "likeAvg": 0.34
+    },
+    "gh_f25b5fb01977_3": {
+        "accountName": "生活晓常识",
+        "ghId": "gh_f25b5fb01977",
+        "fans": 177200,
+        "position": "3",
+        "readAvg": 33.23,
+        "likeAvg": 0.23
+    },
+    "gh_72bace6b3059_5": {
+        "accountName": "幸福妙招合集",
+        "ghId": "gh_72bace6b3059",
+        "fans": 425935,
+        "position": "5",
+        "readAvg": 33.17,
+        "likeAvg": 0.67
+    },
+    "gh_b676b7ad9b74_4": {
+        "accountName": "无忧生活小妙招",
+        "ghId": "gh_b676b7ad9b74",
+        "fans": 215401,
+        "position": "4",
+        "readAvg": 31.7,
+        "likeAvg": 0.06
+    },
+    "gh_72bace6b3059_4": {
+        "accountName": "幸福妙招合集",
+        "ghId": "gh_72bace6b3059",
+        "fans": 425935,
+        "position": "4",
+        "readAvg": 31.62,
+        "likeAvg": 0.41
+    },
+    "gh_ff487cb5dab3_5": {
+        "accountName": "趣味生活达人",
+        "ghId": "gh_ff487cb5dab3",
+        "fans": 240559,
+        "position": "5",
+        "readAvg": 31.5,
+        "likeAvg": 0.0
+    },
+    "gh_7e5818b2dd83_6": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "6",
+        "readAvg": 31.43,
+        "likeAvg": 0.1
+    },
+    "gh_1ee2e1b39ccf_1": {
+        "accountName": "票圈最新消息",
+        "ghId": "gh_1ee2e1b39ccf",
+        "fans": 2416,
+        "position": "1",
+        "readAvg": 29.6,
+        "likeAvg": 0.49
+    },
+    "gh_084a485e859a_3": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "3",
+        "readAvg": 29.25,
+        "likeAvg": 0.23
+    },
+    "gh_e0eb490115f5_5": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "5",
+        "readAvg": 28.94,
+        "likeAvg": 0.06
+    },
+    "gh_9f8dc5b0c74e_6": {
+        "accountName": "音药金曲厅",
+        "ghId": "gh_9f8dc5b0c74e",
+        "fans": 162850,
+        "position": "6",
+        "readAvg": 28.73,
+        "likeAvg": 0.07
+    },
+    "gh_6b7c2a257263_4": {
+        "accountName": "幸福晚年知音",
+        "ghId": "gh_6b7c2a257263",
+        "fans": 243535,
+        "position": "4",
+        "readAvg": 28.29,
+        "likeAvg": 0.17
+    },
+    "gh_183d80deffb8_5": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "5",
+        "readAvg": 27.75,
+        "likeAvg": 0.06
+    },
+    "gh_7e5818b2dd83_7": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "7",
+        "readAvg": 25.94,
+        "likeAvg": 0.0
+    },
+    "gh_7e5818b2dd83_8": {
+        "accountName": "便捷生活好方法",
+        "ghId": "gh_7e5818b2dd83",
+        "fans": 437854,
+        "position": "8",
+        "readAvg": 25.71,
+        "likeAvg": 0.12
+    },
+    "gh_6d9f36e3a7be_5": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "5",
+        "readAvg": 25.38,
+        "likeAvg": 0.31
+    },
+    "gh_29074b51f2b7_4": {
+        "accountName": "老来生活家",
+        "ghId": "gh_29074b51f2b7",
+        "fans": 197360,
+        "position": "4",
+        "readAvg": 25.31,
+        "likeAvg": 0.12
+    },
+    "gh_5ff48e9fb9ef_5": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "5",
+        "readAvg": 24.94,
+        "likeAvg": 0.12
+    },
+    "gh_dd4c857bbb36_5": {
+        "accountName": "无忧自在生活",
+        "ghId": "gh_dd4c857bbb36",
+        "fans": 354334,
+        "position": "5",
+        "readAvg": 24.0,
+        "likeAvg": 0.0
+    },
+    "gh_1b27dd1beeca_3": {
+        "accountName": "小贝生活课堂",
+        "ghId": "gh_1b27dd1beeca",
+        "fans": 155419,
+        "position": "3",
+        "readAvg": 23.84,
+        "likeAvg": 0.07
+    },
+    "gh_1ee2e1b39ccf_2": {
+        "accountName": "票圈最新消息",
+        "ghId": "gh_1ee2e1b39ccf",
+        "fans": 2416,
+        "position": "2",
+        "readAvg": 23.68,
+        "likeAvg": 0.35
+    },
+    "gh_4568b5a7e2fe_4": {
+        "accountName": "窦都事说",
+        "ghId": "gh_4568b5a7e2fe",
+        "fans": 329707,
+        "position": "4",
+        "readAvg": 22.38,
+        "likeAvg": 0.08
+    },
+    "gh_29074b51f2b7_5": {
+        "accountName": "老来生活家",
+        "ghId": "gh_29074b51f2b7",
+        "fans": 197360,
+        "position": "5",
+        "readAvg": 21.58,
+        "likeAvg": 0.11
+    },
+    "gh_5ff48e9fb9ef_6": {
+        "accountName": "祝福养心厅",
+        "ghId": "gh_5ff48e9fb9ef",
+        "fans": 147236,
+        "position": "6",
+        "readAvg": 21.44,
+        "likeAvg": 0.12
+    },
+    "gh_f25b5fb01977_4": {
+        "accountName": "生活晓常识",
+        "ghId": "gh_f25b5fb01977",
+        "fans": 177200,
+        "position": "4",
+        "readAvg": 21.27,
+        "likeAvg": 0.16
+    },
+    "gh_084a485e859a_4": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "4",
+        "readAvg": 18.96,
+        "likeAvg": 0.08
+    },
+    "gh_6d9f36e3a7be_6": {
+        "accountName": "音药养心馆",
+        "ghId": "gh_6d9f36e3a7be",
+        "fans": 205282,
+        "position": "6",
+        "readAvg": 18.87,
+        "likeAvg": 0.2
+    },
+    "gh_e0eb490115f5_6": {
+        "accountName": "心灵情感驿站",
+        "ghId": "gh_e0eb490115f5",
+        "fans": 315146,
+        "position": "6",
+        "readAvg": 18.25,
+        "likeAvg": 0.12
+    },
+    "gh_e75dbdc73d80_3": {
+        "accountName": "票圈正能量",
+        "ghId": "gh_e75dbdc73d80",
+        "fans": 21179,
+        "position": "3",
+        "readAvg": 17.87,
+        "likeAvg": 0.13
+    },
+    "gh_1b27dd1beeca_4": {
+        "accountName": "小贝生活课堂",
+        "ghId": "gh_1b27dd1beeca",
+        "fans": 155419,
+        "position": "4",
+        "readAvg": 16.98,
+        "likeAvg": 0.05
+    },
+    "gh_1b27dd1beeca_5": {
+        "accountName": "小贝生活课堂",
+        "ghId": "gh_1b27dd1beeca",
+        "fans": 155419,
+        "position": "5",
+        "readAvg": 15.33,
+        "likeAvg": 0.0
+    },
+    "gh_e75dbdc73d80_4": {
+        "accountName": "票圈正能量",
+        "ghId": "gh_e75dbdc73d80",
+        "fans": 21179,
+        "position": "4",
+        "readAvg": 14.26,
+        "likeAvg": 0.0
+    },
+    "gh_9e559b3b94ca_3": {
+        "accountName": "票圈大事件",
+        "ghId": "gh_9e559b3b94ca",
+        "fans": 20375,
+        "position": "3",
+        "readAvg": 13.91,
+        "likeAvg": 0.32
+    },
+    "gh_183d80deffb8_6": {
+        "accountName": "生活良读",
+        "ghId": "gh_183d80deffb8",
+        "fans": 89392,
+        "position": "6",
+        "readAvg": 10.8,
+        "likeAvg": 0.07
+    },
+    "gh_084a485e859a_5": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "5",
+        "readAvg": 9.87,
+        "likeAvg": 0.13
+    },
+    "gh_9e559b3b94ca_4": {
+        "accountName": "票圈大事件",
+        "ghId": "gh_9e559b3b94ca",
+        "fans": 20375,
+        "position": "4",
+        "readAvg": 8.38,
+        "likeAvg": 0.05
+    },
+    "gh_084a485e859a_6": {
+        "accountName": "生活情感叁读",
+        "ghId": "gh_084a485e859a",
+        "fans": 120693,
+        "position": "6",
+        "readAvg": 7.29,
+        "likeAvg": 0.0
+    },
+    "gh_7b4a5f86d68c_5": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "5",
+        "readAvg": 0.83,
+        "likeAvg": 0.0
+    },
+    "gh_7b4a5f86d68c_6": {
+        "accountName": "异闻趣事多",
+        "ghId": "gh_7b4a5f86d68c",
+        "fans": 149539,
+        "position": "6",
+        "readAvg": 0.0,
+        "likeAvg": 0.0
+    }
+}

+ 36 - 0
long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/ScoreStrategyTest.java

@@ -0,0 +1,36 @@
+package com.tzld.longarticle.recommend.server;
+
+import com.alibaba.fastjson.JSONObject;
+import com.tzld.longarticle.recommend.server.model.Content;
+import com.tzld.longarticle.recommend.server.service.score.Score;
+import com.tzld.longarticle.recommend.server.service.score.ScoreParam;
+import com.tzld.longarticle.recommend.server.service.score.strategy.ViewMultiplierStrategy;
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+import javax.annotation.Resource;
+import java.util.ArrayList;
+import java.util.List;
+
+@SpringBootTest(classes = Application.class)
+public class ScoreStrategyTest {
+
+    @Resource
+    ViewMultiplierStrategy viewMultiplierStrategy;
+
+    @Test
+    public void viewMultiplierStrategy() {
+        ScoreParam param = new ScoreParam();
+        List<Content> contentList = new ArrayList<>();
+        Content content0 = new Content();
+        content0.setCrawlerChannelContentId("0065561559007185d167afdd61b9ac5a");
+        contentList.add(content0);
+        Content content1 = new Content();
+        content1.setCrawlerChannelContentId("0072aefb5bed07343469045bdd812ee0");
+        contentList.add(content1);
+        param.setContents(contentList);
+        List<Score> result = viewMultiplierStrategy.score(param);
+        System.out.println(JSONObject.toJSONString(result));
+    }
+
+}