CSND文章质量分批量查询

news2024/11/15 6:53:39

简介

CSDN 质量分是一项公开的 CSDN 博文内容质量分析服务,其综合分析了内容的标题、段落结构、正文长度、代码格式及复杂度、链接和超文本内容比例及质量等因素,为 IT 技术文章提供客观公共的质量分析结果

用途

  • 可用与对文章质量做评估
  • 可申请创作者 (有对文章质量分的要求)
  • 注意其他不正当用途 需要自行负责

创作者身份认证审核标准
优质创作者申请条件:

粉丝数在5000以上
近30日(申请日算起)原创文章数不少于4篇
原创博文总数不少于100篇
垂直领域原创数量不低于总文章数的60%
垂直领域近2年原创博文质量平均分不得低于80分
新星创作者申请条件:

粉丝数在2000以上
近30日(申请日算起)原创文章数不少于4篇
原创博文总数不少于50篇
垂直领域原创数量不低于总文章数的60%
垂直领域近2年原创博文质量平均分不得低于70分

其他特殊身份认证申请条件(如果博主有以下特殊身份):

拥有个人发明专利
是技术图书作者
全国技术比赛获奖者
大学讲师
特殊身份认证在申请认证的时候可以描述为「《xxx》书籍作者」「xxx专利发明者」等等,只要提交相关证明同时粉丝数在500以上并原创博文数达到50篇即可申请,若文章不存在抄袭的情况可通过审核。

优质创作者和新星创作者只要满足以上条件基本都会通过审核。但是也有特殊的不会通过审核情况,具体如下:

文章质量过低
认证描述不清不楚
文章存在抄袭行为
文章多为毕设相关
若通过认证后被举报抄袭且被证实将取消认证资格
所以在申请的时候也需要查询自己的文章质量分。

质量分查询

文章质量分查询地址: https://www.csdn.net/qc?utm_source=1966961068 点我跳转查询

输入博客地址即可完成查看
在这里插入图片描述

文章平均质量分查询可通过博客主页的「学习成就」进行查询,如下图所示:

在这里插入图片描述
在这里插入图片描述
但是多篇博客,你想知道哪个哪个博客质量分过低 那该怎么办 总不能一个一个查询吧

质量分批量查询

官方只提供了单个博客质量分查询的地址 ,批量查询只能靠我们自己实现了

主要有两步

  • 查询自己所有博客的url
  • 将每个博客url 作为参数 循环调用单个文章质量分查询
  • 汇总结果

查询自己所有博客的url

这里使用手工方式
username 替换为自己的博客地址 分页的size 传入的是500 但是测试下来 分页参数实际上最大只支持100 如果有个超过100篇文章 需要自行替换 分页的页码 参数即 page 第一页传入1 第二页page 传入2 然后将查询的结果保存为json文件 (可使用chrome插件 FeHelper) 依次类推 直到没有文章为止

https://blog.csdn.net/community/home-api/v1/get-business-list?page=1&size=500&businessType=blog&orderby=&noMore=false&year=&month=&username=xxx

例如

在这里插入图片描述

批量查询

  • 文件准备
    将下载好的json文件 放入自己的项目里 (java项目即可)
    在这里插入图片描述

  • 依赖引入 hutool guava (可选) 改造较小 fastjson

    <dependency>
       <groupId>com.google.guava</groupId>
       <artifactId>guava</artifactId>
       <version>32.1.3-jre</version>
    </dependency>
    
    
    <dependency>
       <groupId>cn.hutool</groupId>
       <artifactId>hutool-all</artifactId>
       <version>5.8.25</version>
    </dependency>
    
    <dependency>
       <groupId>com.alibaba</groupId>
       <artifactId>fastjson</artifactId>
       <version>1.2.83</version>
    </dependency>
    
  • 批量查询代码

    • 需要修改地方 json文件位置
    • header 参数 需要先访问质量分查询地址 查询文章的质量分 然后抓包获取如下参数 完成参数替换
      headerMap.put("accept","application/json, text/plain, */*");
      headerMap.put("x-ca-key","xxx");
      headerMap.put("x-ca-nonce","83117056-93cc-438d-bc28-12d38664ee15");
      headerMap.put("x-ca-signature","X+sjLooW01anLpAHxL3VJmxRYEEZ8kNJJ/loBABCc=");
      headerMap.put("x-ca-signature-headers","x-ca-key,x-ca-nonce");
      headerMap.put("x-ca-signed-content-type","multipart/form-data");
      headerMap.put("content-type","multipart/form-data; boundary=----WebKitFormBoundary3xxiyRJFc0k4eF4w");
      headerMap.put("cookie","xxx");
      
    • 结果文件写入路径
    • 代码如下
      import cn.hutool.core.collection.CollectionUtil;
      import cn.hutool.http.HttpGlobalConfig;
      import cn.hutool.http.HttpRequest;
      import cn.hutool.http.HttpResponse;
      import com.alibaba.fastjson.JSON;
      import com.alibaba.fastjson.JSONArray;
      import com.alibaba.fastjson.JSONObject;
      import com.alibaba.fastjson.TypeReference;
      import com.google.common.collect.Lists;
      import com.google.common.collect.Maps;
      import lombok.extern.slf4j.Slf4j;
      import org.apache.commons.io.IOUtils;
      
      import java.io.*;
      import java.lang.reflect.Type;
      import java.nio.charset.StandardCharsets;
      import java.nio.file.Files;
      import java.nio.file.Paths;
      import java.util.ArrayList;
      import java.util.List;
      import java.util.Map;
      import java.util.stream.Collectors;
      
      /**
       * @author leon
       * @date 2024/08/29
       */
      @Slf4j
      public class Test {
      
      
          public static void main(String[] args) throws IOException {
              //json 文件所在路径 自行替换json文件的位置
              List<String> pathList= Lists.newArrayList("file/contents.json","file/contents2.json","file/contents3.json");
              List<String> urlList = getAllArticleUrl(pathList);
      
              if(CollectionUtil.isEmpty(urlList)){
                  log.error("文章url为空");
                  return;
              }
      
              log.info("文章总数: {}",urlList.size());
              Map<String,String> headerMap = Maps.newHashMap();
      
              headerMap.put("accept","application/json, text/plain, */*");
              headerMap.put("x-ca-key","xxx");
              headerMap.put("x-ca-nonce","83117056-93cc-438d-bc28-12d38664ee15");
              headerMap.put("x-ca-signature","X+sjLooW01anLpAHxL3VJmxRYEEZ8kNJJ/loBABCc=");
              headerMap.put("x-ca-signature-headers","x-ca-key,x-ca-nonce");
              headerMap.put("x-ca-signed-content-type","multipart/form-data");
              headerMap.put("content-type","multipart/form-data; boundary=----WebKitFormBoundary3xxiyRJFc0k4eF4w");
              headerMap.put("cookie","xxx");
      
              StringBuilder stringBuilder = new StringBuilder();
              for (String url: urlList){
                  Map<String,Object> param = Maps.newHashMap();
                  param.put("url",url);
                  try(HttpResponse resp = HttpRequest.post("https://bizapi.csdn.net/trends/api/v1/get-article-score").form(param).timeout(HttpGlobalConfig.getTimeout())
                          .headerMap(headerMap, true)
                          .execute()){
                      String body = resp.body();
                      String res = "文章地址: "+url +" 结果: "+body;
                      stringBuilder.append(res).append(System.lineSeparator());
                  }
      
              }
              log.info("======开始写入文件=====");
              String writeContent = stringBuilder.toString();
              log.info("writeContent: {}",writeContent);
              //写到磁盘文件
              IOUtils.write(writeContent,new BufferedOutputStream(Files.newOutputStream(Paths.get("/Users/leon/Desktop/AllArticleUrl.txt"))),StandardCharsets.UTF_8);
          }
      
          private static List<String> getAllArticleUrl(List<String> pathList) {
              if(CollectionUtil.isEmpty(pathList)){
                  log.info("文件路径配置为空");
                  return new ArrayList<>();
              }
      
              ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
      
              List<String> allUrlList = new ArrayList<>();
              for (String path : pathList) {
                  InputStream resourceAsStream = contextClassLoader.getResourceAsStream(path);
      
                  if(null == resourceAsStream){
                      log.info("文件路径: {} 资源不存在",path);
                      continue;
                  }
                  Type type = new TypeReference<JSONObject>(){}.getType();
      
                  JSONObject jo = null;
                  try {
                      jo = JSON.parseObject(resourceAsStream, StandardCharsets.UTF_8, type);
                      JSONObject data = jo.getJSONObject("data");
                      JSONArray list = data.getJSONArray("list");
                      List<String> urlList = list.stream().map(obj -> {
                          JSONObject jsonObject = (JSONObject) obj;
                          return jsonObject.getString("url");
                      }).collect(Collectors.toList());
                      allUrlList.addAll(urlList);
                  } catch (IOException e) {
                      log.error("文件路径: {} 资源处理失败 错误信息: {[]}",path,e);
      
                  }finally {
                      try {
                          resourceAsStream.close();
                      } catch (IOException e) {
                          log.error("文件路径: {} 资源释放失败", path);
                      }
                  }
      
              }
      
              return allUrlList;
          }
      }
      
      

运行程序即可

在这里插入图片描述

免责声明

本工具仅用于个人学习和研究目的。使用者应该遵守 CSDN 的使用条款和规定。任何使用本工具造成的违规行为和后果,作者概不负责。

请注意,本工具仅提供便利性,不对任何因使用本工具导致的任何问题承担责任。使用本工具即代表您同意自行承担所有风险。


good day !!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085297.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

更新RK3588开发板的rknn_server和librknnrt.so【这篇文章是RKNPU2从入门到实践 --- 【5】的配套文章】

作者使用的平台有&#xff1a; 一台装有Windows系统的宿主机&#xff0c;在该宿主机上装有Ubuntu 20.04虚拟系统&#xff1b; 瑞芯微RK3588开发板&#xff0c;开发板上的系统为Ubuntu22.04系统&#xff1b; 更新板子的 rknn_server 和 librknnrt.so&#xff0c;rknn_server 和…

Facebook AI的应用前景:如何利用人工智能提升平台功能

人工智能&#xff08;AI&#xff09;正迅速改变我们与社交网络互动的方式。作为全球领先的社交媒体平台之一&#xff0c;Facebook&#xff08;现Meta&#xff09;正通过多种AI技术提升其平台功能。本文将探讨Facebook AI的应用前景&#xff0c;展示如何利用这些技术优化用户体验…

OHIF Viewers 项目介绍

项目结构 项目架构 │ ├── extensions │ ├── default # 默认功能 │ ├── cornerstone # 使用 Cornerstonejs 处理 2D/3D 图像 │ ├── cornerstone-dicom-sr # 结构化报告 (DICOM SR) │ ├── measurement-tracking # 测量追…

备战秋招60天算法挑战,Day28

题目链接&#xff1a; https://leetcode.cn/problems/climbing-stairs/ 视频题解&#xff1a; https://www.bilibili.com/video/BV1h1421t7W3/ LeetCode 70.爬楼梯 题目描述 假设你正在爬楼梯。需要n阶你才能到达楼顶。 每次你可以爬1或2个台阶。你有多少种不同的方法可以爬到…

Nacos2.4.0兼容达梦数据库

这段时间公司在搞国产化&#xff0c;发现当前的nacos版本只支持MySQL和derby数据库&#xff0c;后来翻看官方文档以后&#xff0c;官方文档说2.2以后支持达梦数据库了&#xff0c;但是需要插件。 按照他的思路再结合其他资料&#xff0c;我们开始搞起来&#xff01; 一、下载…

【SpringCloud应用框架】GateWay异步非阻塞模型

Spring Cloud Alibaba 之 GateWay工作流程GateWay搭建 文章目录 一、GateWay工作流程工作流程的核心点总结 二、GateWay搭建 一、GateWay工作流程 流程图如下&#xff1a; 核心概念&#xff1a; 客户端向 Spring Cloud Gateway 发出请求。如果Gateway Handler Mapping确定请…

2024年世界机器人大会精彩回顾-人形机器人的天下

8 月 25 日&#xff0c; 2024 世界机器人大会在北京北人亦创国际会展中心闭幕。本次大会以“共育新质生产力 共享智能新未来”为主题&#xff0c;同期举办论坛、博览会、大赛及配套活动&#xff0c;机器人创新新品、应用新场景纷纷亮相。 2024 世界机器人大会分为论坛、博览会、…

qml formLayout实现方式

一、背景 我们制作界面时&#xff0c;通常有表单界面需要制作&#xff0c;如下图&#xff1a; 但是Qt5 是没有 formLayout 的&#xff0c;直到Qt6才有&#xff0c;所以现在 qml 使用 TableView 来实现这个样式 二、实现 enum ComponentType {TitleText,Text,Button,Image} …

开放式耳机漏音有多大?解密最值得购买的五大品牌!

​现在的很多开放式耳机漏音情况已经得到很好的控制了&#xff0c;特别是大品牌的耳机。现在耳机市场上&#xff0c;开放式耳机因为外观时尚、戴着舒服&#xff0c;成了大家日常爱用的热门货。但是&#xff0c;市面上的开放式耳机品牌多得眼花缭乱&#xff0c;质量也是高低不一…

如何使用ssm实现基于JAVA的中小型企业财务管理

TOC ssm364基于JAVA的中小型企业财务管理jsp 绪论 1.1 研究背景 当前社会各行业领域竞争压力非常大&#xff0c;随着当前时代的信息化&#xff0c;科学化发展&#xff0c;让社会各行业领域都争相使用新的信息技术&#xff0c;对行业内的各种相关数据进行科学化&#xff0c;…

debian12 - openssh-9.6.P1的编译安装(真机 - 联想G480)

文章目录 debian12 - openssh-9.6.P1的编译安装(真机 - 联想G480)概述笔记G480上安装debian12配置debian12现在用WindTerm_2.6.0按照telnet方式去连接试试配置debian12中的telnet安装telnet服务查看所有服务当前ssh, telnet状态准备更新openssl3.2和openssh在真机上更新openssl…

Andon安灯系统在汽车零部件工厂起到什么作用?

在当今竞争激烈的汽车市场中&#xff0c;汽车零部件工厂的高效运作和高质量生产至关重要。而 Andon 安灯系统作为一种先进的生产管理工具&#xff0c;在汽车零部件工厂中发挥着举足轻重的作用。 一、Andon安灯系统实时监控生产状态 汽车零部件工厂的生产线通常较为复杂&#x…

Quartz定时任务框架——若依

文章目录 定时任务的执行新增定时任务订单任务状态修改quartz的集群模式 定时任务的执行 新增定时任务 订单任务状态修改 quartz的集群模式 把若依项目中的quartz数据库导入到数据库中然后打开ScheduleConfig配置类复制项目启动&#xff08;记得修改端口&#xff09;&#xff0…

给自己复盘用的tjxt笔记day11第二部分

异步领券 优化方案分析 对于高并发问题&#xff0c;优化的思路有异步写和合并写。 其中&#xff0c;合并写请求比较适合应用在写频率较高&#xff0c;写数据比较简单的场景。而异步写则更适合应用在业务比较复杂&#xff0c;业务链较长的场景。 显然&#xff0c;领券业务更…

【功能自动化】使用测试套件运行测试函数

1.创建registers.py 将registers.py放在文件夹下 registers.py 代码实现 # 导入包 from selenium import webdriver from selenium.webdriver.support.select import Select from time import sleep import unittest import parameterizeddriver None file open(r"us…

ImportError:DLL load failed while importing cv2:找不到指定的模块

用pyinsatller打包好脚本执行后&#xff0c;出现上面的错误&#xff0c;这个错误很明显就是缺少了必需的dll文件&#xff0c;这个网上的资料也比较少&#xff0c;我搜了很久也没找出能解决的方法。 方法1 看官网&#xff1a;https://pypi.org/project/opencv-python/ 拉倒下…

MDS100-16-16-ASEMI三相整流模块MDS100-16

编辑&#xff1a;ll MDS100-16-16-ASEMI三相整流模块MDS100-16 型号&#xff1a;MDS100-16 品牌&#xff1a;ASEMI 封装&#xff1a;M18 批号&#xff1a;2024 类型&#xff1a;整流模块 电流&#xff1a;100A 电压&#xff1a;1600V 安装方式&#xff1a;直插式封装 …

IDEA没有SQL语句提示

解决已经在IDEA连接数据库&#xff0c;但是写SQL语句不会提示列名、属性之类的 Mapper 映射没有 SQL 提示 设置中搜索&#xff0c;把方言改成 MySQL SQL Dialects

Requestium - 将Requests和Selenium合并在一起的自动化测试工具

Requests 是 Python 的第三方库&#xff0c;主要用于发送 http 请求&#xff0c;常用于接口自动化测试等。 Selenium 是一个用于 Web 应用程序的自动化测试工具。Selenium 测试直接运行在浏览器中&#xff0c;就像真正的用户在操作一样。 本篇介绍一款将 Requests 和 Seleniu…

谷粒商城实战笔记-281-商城业务-订单服务-锁定库存

文章目录 一&#xff0c;锁定库存的基本逻辑二&#xff0c;具体实现 创建订单时&#xff0c;有一个非常重要的步骤&#xff0c;就是锁定库存&#xff0c;或者称之为预占库存。 尽管还没有卖出去&#xff0c;但是因为订单已经创建&#xff0c;所以要确保这个订单对应商品是有库…