最近想用论坛搭建一个DZ插件模板下载网站,但内容较多一个个发布主题帖子会非常麻烦,因此想着有没有什么好的方法可以批量发帖,批量回复,批量上传图片附件之类的。既然学了万能的,于是就想到用来实现。
实现论坛批量发帖的方式,爱在灵灵久博客认为主要分为两类,一是通过登录论坛进行发帖(这种方式也可以登录第三方的网站来批量发帖);二是作为站长直接通过写入数据库来发帖,可以实现无限量发帖,发帖速度快。第一种方式实现的已经有很多人介绍了,这里主要介绍第二种方式直接用写入论坛数据库批量发帖可带图文。
一、数据库发帖原理
在介绍数据发帖前先来了解一下论坛发帖涉及到的数据库:
1、主题表 :这个表一个主要数据就是 tid 主题ID
2、post 分表协调表 id:这里需要获取一个自增的 pid
3、帖子表 :记录主题pid、fid、tid、title、等主要信息
4、版块表 :这里主要更新版块的主题、帖子数量
5、帖子主题审核数据表 erate:这个可以根据自己状况决定,并不是必须的(可以省略)
6、用户统计表 unt:主要是更新用户的主题数量
unt表和表两个表中主要修改帖子数据量其中主要涉及到以下几个字段:
: 版块内的主题数.
posts: 版块内的帖子数.(主题数和帖子数是有区别的,发布的一个帖子会同时增加主题数和帖子数,而回复一个帖子只会增加一个帖子数不会增加主题数)
: 版块内, 今日发帖的个数. 这个是post的个数, 不是的个数.
: 这个字段比较奇葩, 看名字它是表示本版块最新一个帖子. 但它的值比较有意思, 这是一个字符串, 由四部分组成, 每部分之间用 t 制表符分割. 第一部分是这个帖子的pid, 第二部分是帖子的标题, 第三部分是帖子的发帖时间, 第四部分是帖子的作者名. 这个字段可能是为了提高论坛首页的性能, 有了他之后,首页就负担轻了很多。
二、数据库发帖环境
本次测试使用的是 64位的操作系统 .6的版本,的编辑器,本地搭建的论坛网站(也可直接使用上线的论坛网站,不过建议先在本地进行测试),另外需要安装库,通过pip 安装上即可。
三、写入数据库的步骤
发帖流程主要分为5个步骤:
第一步:给id表插入空数据进行自增,然后获取自增pid。
.(' INTO id (NULL);')
.(' max(pid) FROM id;')
pid = .()[0]
第二步:向 主题表 中插入版块ID、用户ID、用户名、帖子标题、发帖时间等信息,并获取主题的ID作为tid。
=” INTO SET fid=”+str(fid)+”,='”++”',=”+str(uid)+”,='”++”',=”+str(int(time.time()))+”,='”++”',=”+str(int(time.time()))+”,views=”+str(view)+”;”
.()
.(' max(tid) FROM ')
tid = int(.()[0])
第三步:向帖子表 中插入帖子相关信息,这里需要注意的是: pid为第一步的pid值,tid为第二步的tid值
= ” INTO SET pid=”+str(pid)+”,fid=”+str(fid)+”,tid=”+str(tid)+”,first=1,='”++”', =”+str(uid)+”, ='”++”' ,=”+str(int(time.time()))+”, ='” + + “' , useip='140.112.218.141' , port=11560 , = 0, = 0 , = 1 , = 1 , =-1 , =-1 , =0 , = 0 , tags='' , =0 , =0;”
第四步:更新版块 相关主题、帖子数量信息
= ' SET =+1, posts=posts+1, =+1 , = 1, = 1, =1 , = 1, = 1, = 1 , =1 WHERE fid='+str(fid)+';'
第五步:更新用户 unt 帖子数量信息
= ' unt SET = +1 WHERE uid ='+str(uid)+';'
发帖过程主要就是以上5个步骤,通过这几个步骤就可以实现的发帖流程,其中涉及到一些积分等其他信息的可以自己加上。另外,通过数据库发帖还可以发布带图片的帖子,只需先将图片直接上传到网站中图片附件对应存放的位置,然后将其形成链接(直接上传的图片文件名称最好是用拼音或数字,不要带中文),在发帖时内容里面加入img标签进行解析图片地址即可形成带图文的帖子。或者,直接采集其他内容源码后作为帖子内容,同时安装一个图片本地化插件即可实现带图片的帖子。