CSDN 自动评论互动脚本

在这里插入图片描述
在这里插入图片描述

声明

该脚本的目的只是为了提升博客创作效率和博主互动效率,希望大家还是要尊重各位博主的劳动成果。

数据库设计

尽量我们要新建一个数据库csdn_article,再在其中建一个数据表article

-- csdn_article
 	-- article
 		-- 需要进行自动评论的表格信息...
CREATE TABLE `article` (
 
  `articleId` bigint NOT NULL COMMENT 'id',
 
  `articleDetailUrl` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT 'url',
 
  `articleTitle` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '标题',
 
  `nickName` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '昵称',
 
  `hotRankScore` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '热度',
 
  `comment` int NOT NULL DEFAULT '0' COMMENT '是否评论(0,否,1是)',
 
  `like` int NOT NULL DEFAULT '0' COMMENT '是否点赞(0,否,1是)',
 
  `insert_time` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
 
  PRIMARY KEY (`articleId`) USING BTREE
 
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC;

代码

import random, time, os, threading
import requests
import pymysql
from dbutils.pooled_db import PooledDB
from schedule import every, repeat, run_pending
import json

POOL = PooledDB(
    creator=pymysql,  # 使用链接数据库的模块
    maxconnections=20,  # 连接池允许的最大连接数,0和None表示不限制连接数
    mincached=6,  # 初始化时,链接池中至少创建的空闲的链接,0表示不创建
    maxcached=None,  # 链接池中最多闲置的链接,0和None不限制
    maxshared=5,
    blocking=True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
    maxusage=None,  # 一个链接最多被重复使用的次数,None表示无限制
    setsession=[],  # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."]
    ping=0,  # ping MySQL服务端,检查是否服务可用。
    host='127.0.0.1', port=3306, user='xxx', password='xxx', database='csdn_article', charset='utf8')


def insert_article(articleId, articleDetailUrl, articleTitle, nickName, hotRankScore):
    print("===【插入文章】运行开始 ===\n")
    db = POOL.connection()
    conn = db.cursor()  # 使用cursor()方法获取操作游标
    sql = "INSERT INTO `article` (`articleId`, `articleDetailUrl`, `articleTitle`, `nickName`, `hotRankScore`) VALUES (%s, %s, %s, %s, %s);"
    data = (articleId, articleDetailUrl, articleTitle, nickName, hotRankScore)
    conn.execute(sql, data)    # 使用execute方法执行SQL语句
    data = db.commit()  # 使用 fetchone() 方法获取一条数据
    db.close()
    print("===【插入文章】运行结束 ===\n")
    return data


def select_is_insert(articleId):
    print("===【检查文章是否已插入】运行结束 ===\n")
    db = POOL.connection()
    conn = db.cursor()  # 使用cursor()方法获取操作游标
    conn.execute("SELECT COUNT(*) FROM `article` WHERE `articleId` = %s;" % articleId)  # 使用execute方法执行SQL语句
    data = conn.fetchall()  # 使用 fetchone() 方法获取一条数据
    db.close()
    print("===【检查文章是否已插入】运行结束 ===\n")
    return data[0][0]


def select_is_comment():  # 查询没有评论的数据
    print("===【查询未评论文章】运行开始 ===\n")
    db = POOL.connection()
    conn = db.cursor()  # 使用cursor()方法获取操作游标
    conn.execute(
        # "SELECT `articleId`,`articleDetailUrl` FROM `article` WHERE `comment` = '0' LIMIT 0, 2;")  # 使用execute方法执行SQL语句
        "SELECT `articleId`,`articleDetailUrl` FROM `article` WHERE `comment` = '0' LIMIT 0, 10;")
    data = conn.fetchall()  # 使用 fetchone() 方法获取一条数据
    db.close()
    print("===【查询未评论文章】运行结束 ===\n")
    return data


def update_article(articleId, comment=1):
    print("===【更新文章评论状态(未评论->已评论)】运行开始 ===\n")
    db = POOL.connection()
    conn = db.cursor()  # 使用cursor()方法获取操作游标
    conn.execute(
        "UPDATE `article` SET  `comment` =%s WHERE `articleId` = %s;" % (comment, articleId))  # 使用execute方法执行SQL语句
    data = db.commit()  # 使用 fetchone() 方法获取一条数据
    db.close()
    print("===【更新文章评论状态(未评论->已评论)】运行结束 ===\n")
    return data


def comment(articleId):
    """评论"""
    print("===【评论功能】运行开始 ===\n")
    # time.sleep(5)
    # user_headers = {
   
    #     'Host': 'blog.csdn.net',
    #     'Connection': 'keep-alive',
    #     'Content-Length': '75',
    #     'sec-ch-ua

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

弱密码系统登录之后强制修改密码

在你登录的时候,获取到弱密码,然后将他存到vuex里面,在登录进去之后,index页面再去取,思路是这样的 一、vuex里面定义密码字段 我是直接在user.js里面写的 import { login, logout, getInfo } from /api/login impo…

pyqt6入门案例

效果预览 hello.ui <?xml version"1.0" encoding"UTF-8"?> <ui version"4.0"><class>Dialog</class><widget class"QDialog" name"Dialog"><property name"geometry"><…

View function mapping is overwriting an existing endpoint function: home_page

这个错误是因为在你的 Flask 应用中,你定义了两个或多个视图函数,它们使用了相同的 endpoint 名称。Flask 不允许多个视图函数使用相同的 endpoint 名称,因为这会导致冲突。 通常,这个错误会出现在以下几种情况下: 你在不同的路由装饰器中使用了相同的 endpoint 名称。你…

不知道是该怎么引用多个函数片段?具体示例如代码

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

C++字符编码 cppp-reiconv库使用详解

经常写一些控制台小程序&#xff0c;常常会遇到输出中文乱码的问题&#xff0c;在windwos下可以使用MultiByteToWideChar转换字符编码&#xff0c;但跨平台就需要cppp-reiconv这样的第三方字符编码处理库&#xff0c;且开源。 一、下载cppp-reiconv库的源码和静/动态库 GitHu…

从0开始实现一个博客系统 (SSM 实现)

相关技术 Spring Spring Boot Spring MVC MyBatis Html Css JS pom 文件我就不放出来了, 之前用的 jdk8 做的, MySQL 用的 5.7, 都有点老了, 你们自己看着配版本就好 实现功能 用户注册 - 密码加盐加密 (md5 加密)前后端用户信息存储 - 令牌技术用户登录 - (使用 拦截…

Java进阶学习笔记15——接口概述

认识接口&#xff1a; Java提供了一个关键字Interface&#xff0c;用这个关键字我们可以定义一个特殊的结构&#xff1a;接口。 接口不能创建对象。 注意&#xff1a;接口不能创建对象&#xff0c;接口是用来被类实现&#xff08;implements&#xff09;的&#xff0c;实现接口…

04Django项目基本运行逻辑及模板资源套用

对应视频链接点击直达 Django项目用户管理及模板资源 对应视频链接点击直达1.基本运行逻辑Django的基本运行路线&#xff1a;视图views.py中的 纯操作、数据返回、页面渲染 2.模版套用1.寻找一个好的模版2.模板部署--修改适配联动 OVER&#xff0c;不会有人不会吧不会的加Q1394…

光伏项目怎么做预算?

随着可再生能源行业的蓬勃发展&#xff0c;光伏行业也得到了扩张。许多想要加入光伏项目投资的人&#xff0c;都在为怎样为项目做预算而苦恼&#xff0c;今天我就来跟大家分析下可以怎么做。 一、了解市场需求&#xff0c;确定预算目标 在制定光伏项目预算方案之前&#xff0c…

三前奏:获取/ 读取/ 评估数据【数据分析】

各位大佬好 &#xff0c;这里是阿川的博客 &#xff0c; 祝您变得更强 个人主页&#xff1a;在线OJ的阿川 大佬的支持和鼓励&#xff0c;将是我成长路上最大的动力 阿川水平有限&#xff0c;如有错误&#xff0c;欢迎大佬指正 前面的博客 数据分析—技术栈和开发环境搭建 …

NASA数据——AIRS 颗粒地图产品包括 PDF 和 JPG 格式的颗粒覆盖图像

AIRS/Aqua Granule map product V005 (AIRXAMAP) at GES DISC 美国国家航空航天局 Aqua 卫星上的大气红外探测器 AIRS是美国宇航局Aqua卫星上的大气红外探测器&#xff0c;每天在全球范围内收集地球表面和大气层发射的红外能量。其数据提供了大气柱中温度和水蒸气的三维测量值…

服务器数据恢复—RAID5阵列崩溃如何恢复上层OA和oracle数据库的数据?

服务器数据恢复环境&故障&#xff1a; 某公司的一台服务器中的raid5磁盘阵列有两块磁盘先后掉线&#xff0c;服务器崩溃。故障服务器的操作系统为linux&#xff0c;操作系统部署了oa&#xff0c;数据库为oracle。oracle数据库已经不再对该oa系统提供后续支持&#xff0c;用…

解决移植Metasploitable3到VM虚拟机无网络的问题

第一步 导入后不要开机&#xff0c;先在虚拟机设置里面将原有的两个网络适配器移除。 第二步 接着在选项里面&#xff0c;在客户机操作系统里面&#xff0c;选择Microsoft Windwos(W)&#xff0c; 版本选择Windows Server 2008 R2 x64 第三步 先打开虚拟机&#xff0c;然后…

2024-05学习笔记

最近的学习大多都是和mysql的索引相关的 1.mvcc mvcc是不需要手动配置&#xff0c;是mysql的一个机制 在事务开启时&#xff0c;对涉及到的数据加一个隐藏列&#xff0c;隐藏列对应的值&#xff0c;就是事务id 如果当前是修改操作&#xff0c;就copy一份原来的数据到新的一行…

网络安全架构之零信任安全

网络安全架构之零信任安全 文章目录 网络安全架构之零信任安全零信任安全时代背景安全世界“新旧时代”各种攻击风险层出不穷网络安全边界逐渐瓦解内外部威胁愈演愈烈 零信任架构零信任的理念在不可信的网络环境下重建信任构建自适应内生安全机制以身份为基石业务安全访问持续信…

躺赚零撸项目,看广告赚红包,零门槛提现,秒到账,单机每日100+

这个项目是跟广告商直接对接的&#xff0c;跟以前小游戏看广告差不多&#xff0c;看完广告得金币5000个兑换5毛钱。 不过这个是可以直接提现&#xff0c;而是无门槛就可以提&#xff0c;有设备就可以操作&#xff0c;有空边看连续剧边刷也是挺香的&#xff0c;单机可以达到100…

今日好料推荐(AI工业革命 + 产业级数据治理白皮书)

参考资料在文末获取&#xff0c;关注我&#xff0c;获取优质资源。 《ChatGPT&#xff1a;AI工业革命》 《ChatGPT&#xff1a;AI工业革命》是一本深入探讨人工智能技术&#xff0c;尤其是ChatGPT及其背后的GPT-4架构在各个领域中应用的书籍。这本书不仅详细介绍了ChatGPT的发…

[DDR5 Jedec] 2-1 引脚与PCB布线规范

7500字&#xff0c;依公知及经验整理&#xff0c;原创保护&#xff0c;禁止转载。 专栏 《深入理解DDR》 1 DDR5 颗粒 X4 X8 X16 这里的 X8 or X16&#xff0c; 可以理解为一个DRAM芯片有几个存储阵列。“X几”。进行列寻址时会同时从几个阵列的同一个坐标位置读出数据bit来&a…

三、自定义信号和槽函数(无参和有参)

需求&#xff1a; 下班后&#xff0c;小明说请小红吃好吃的&#xff0c;随便吃&#xff0c;吃啥买啥 无参&#xff1a;小红没有提出吃啥 有参&#xff1a;小红提出自己想吃的东西&#xff0c;吃啥取决于一时兴起&#xff08;emit触发&#xff09; 思路&#xff1a; 1&#xff…

【传知代码】用二维图像渲染3D场景视频-论文复现

文章目录 概述原理介绍模型介绍环境配置/部署方式安装环境准备数据训练&#xff08;train&#xff09;评估&#xff08;eval&#xff09;渲染&#xff08;render&#xff09; 小结 论文地址 本文涉及的源码可从用二维图像渲染3D场景视频该文章下方附件获取 概述 **NeRF&#…