整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

一键自动化博客发布工具,用过的人都说好(infoq篇

一键自动化博客发布工具,用过的人都说好(infoq篇)

键自动化博客发布工具,用过的人都说好(infoq篇)

infoq的博客发布界面也是非常简洁的。首页就只有基本的标题,内容和封面图片,所以infoq的实现也相对比较简单。

一起来看看吧。

前提条件

前提条件当然是先下载 blog-auto-publishing-tools这个博客自动发布工具,地址如下:https://github.com/ddean2009/blog-auto-publishing-tools

infoq的实现

接下来我会带领大家一步步实现infoq的博客自动发布。

上传封面

infoq的上传封面底层是一个input标签:

image-20240507210315786

这个是可以通过selenium来实现的。

我们先找到这个input标签,然后调用send_keys即可实现图片的上传:

    # 上传封面
    if 'image' in front_matter and front_matter['image']:
        file_input=driver.find_element(By.XPATH, "//input[@type='file']")
        # 文件上传不支持远程文件上传,所以需要把图片下载到本地
        file_input.send_keys(download_image(front_matter['image']))
        time.sleep(2)

这里要注意的是,要上传的封面是放在markdown的最上面yaml front matter里面的。

如图所示:

image-20240507154807745

另外要注意的是,因为博客的上传功能只支持本地上传,所以如果你的image是远程地址的话,需要先把远程图片现在到本地,然后再用本地图片来上传。

下载图片到本地的代码这里就不写了。

感兴趣的朋友可以直接去看我的代码。

文章标题

infoq的文章标题没有ID,这样的话我们就需要通过xpath来定位文章标题。

一般来说标题的地方都有placeholder,所以我们可以通过xpath来定位到标题:

    # 文章标题
    title=driver.find_element(By.XPATH, '//input[@placeholder="请输入标题"]')
    title.clear()
    if 'title' in front_matter['title'] and front_matter['title']:
        title.send_keys(front_matter['title'])
    else:
        title.send_keys(common_config['title'])
    time.sleep(2)  # 等待3秒

文章内容

之前有提到segmentfault和oschina用的是codemirror,而infoq用的是ProseMirror。

这种动态富文本编辑器会根据你的输入动态修改html内容。所以没办法像textArea那样直接获取元素之后设置他的内容。

这里我们只能采用拷贝粘贴的方式来设置。

怎么定位到文章内容框呢?

因为我们现在刚刚输入完文章标题。所以只需要输入两次tab键就可以把鼠标定位到文章内容输入框了。

所以,我们的代码如下:

# 文章内容 markdown版本
    file_content=read_file_with_footer(common_config['content'])
    # 用的是CodeMirror,不能用元素赋值的方法,所以我们使用拷贝的方法
    cmd_ctrl=Keys.COMMAND if sys.platform=='darwin' else Keys.CONTROL
    # 将要粘贴的文本内容复制到剪贴板
    pyperclip.copy(file_content)
    action_chains=webdriver.ActionChains(driver)
    # tab
    action_chains.key_down(Keys.TAB).key_up(Keys.TAB).perform()
    time.sleep(2)
    # 模拟实际的粘贴操作
    action_chains.key_down(cmd_ctrl).send_keys('v').key_up(cmd_ctrl).perform()
    time.sleep(3)  # 等待3秒

点发布文章按钮

点击发布文章按钮,这个比较简单,直接根据class的名字获取到对应的元素即可:

    # 发布文章
    send_button=driver.find_element(By.XPATH, '//div[contains(@class, "submit-btn")]')
    send_button.click()
    time.sleep(2)

设置摘要

点完发布文章按钮,会出现一个弹出框,在弹出框里面可以设置摘要和标签等信息。

摘要部分是一个textarea,我们可以通过xpath的方式定位到它:

    if summary:
        summary_input=driver.find_element(By.XPATH, '//div[@class="summary"]/textarea')
        summary_input.clear()
        summary_input.send_keys(summary)
    time.sleep(2)

设置标签

标签是一个input,这里我们也是通过xpath来定位:

    if tags:
        for tag in tags:
            tag_input=driver.find_element(By.XPATH, '//div[@class="search-tag"]//input')
            tag_input.send_keys(tag)
            time.sleep(1)
            tag_input.send_keys(Keys.ENTER)

在设置标签的过程中,每设置完成一个,我们就按一下回车,接下来就可以设置下一个标签了。

非常的方便。

最后的提交

最后的最后,我们就可以真正的点击提交按钮了。

    if auto_publish:
        publish_button=driver.find_element(By.XPATH, '//div[@class="dialog-footer-buttons"]/div[contains(text(),"确定")]')
        publish_button.click()

这个提交按钮不是很好定位,我们只能通过div的class和text来找到提交按钮。

总结

infoq的界面看起来比较简单,但是实现过程中还是有一些要注意的事项。

大家在实现的过程中需要留意。

点我查看更多精彩内容:www.flydean.com

家好鸭,又是一年开学季。今天为大家带来一篇教程《如何搭建个人博客网站》,喜欢的同学可以研究一下。

前期准备:

1、一台云服务器

2、一个域名

3、一个博客网站模板

主要涉及知识点:linux基础命令,mysql基础操作

步骤

1、 服务器搭建

购买一台网络云服务器,可以考虑阿里云、腾讯云、百度云等,这里以阿里云服务器举例。


共享型价格在半年170元左右。不定期会有活动,首台半价等。

系统配置CentOs6.8系统


可在管理控制台查看配置购买的服务器


PS:腾讯云学生活动10元/月(服务器加存储加域名)


2、网络环境部署

购买完成后,在管理端后台更多设置里修改远程登录密码


重置密码是重置远程登录之后服务器的密码(用户名root)


两个都修改完成后就可以远程连接服务器啦

在安全组里添加访问规则,允许80,22端口访问



1)安装apache服务器

首先执行yum install httpd httpd-devel


需要确认的,填yes,以下同样


启动apache执行: /etc/init.d/httpd start



2)安装mysql服务

执行:yum install mysql mysql-server



启动mysql:/etc/init.d/mysql start



3)安装php

yum -y install php

4)安装php拓展

执行:yum -y install php-mysql php-gd php-imap php-ldap php-odbc php-mbstring php-devel php-soap php-cli php-pdo

yum -y install php-mcrypt php-tidy php-xml php-xmlrpc php-pear

yum -y install php-pecl-memcache php-eaccelerator



然后重启httpd服务 service httpd restart



然后进入默认网站目录cd /var/www/html/

然后touch index.php

然后编辑一下添加如下php代码:

<?php

phpinfo();

?>

然后在浏览器输入你的服务器公网ip地址就可以看到如下页面哟,首先确认你的防火墙已经全部关闭了哦.

防火墙关闭命令

service iptables stop

然后关闭防火墙的开机启动chkconfig iptables off

同时开启httpd和mysql的开启启动

Chkconfig httpd on

Chkconfig mysqld on


接下来就可以去wordpress下载源码包了.

3、网站部署

1) 下载WordPress安装包,上传到服务器

这是我下载的wordpress安装包,上传工具使用的是FileZilla Client

运行FileZilla Client,输入地址,账号,远程登录密码,端口22,快速连接

也可以通过文件>站点管理器>新建站点添加



连接成功后,将下载的wordpress压缩吧拖到右边/var/www/html文件夹下

好的上传完毕。

2) 解压安装包,配置wordpress

好的看到我们的源码包了,现在来解压他.

发现没有解压命令,我们来安装一下.

执行:yum install zip

执行:yum install unzip

安装完成后,我们来解压缩wordpress

进入/var/www/html目录

执行:cd /var/www/html



解压缩安装包:unzip –x 安装包名称

这就解压完毕了


这样咱们就只剩下安装了.

3)安装wordpress程序

进入mysql为wordpress创建一个数据库

执行:mysql -u root –p

需要创建数据库密码

执行:SET PASSWORD FOR 'root'@'localhost'=PASSWORD('新密码')

创建数据库执行:create database wordpress;


在网页上输入公网地址,进入wordpress配置页面,填写好如下表单



发现我们不能安装,

因为没有写权限,添加权限即可

在服务器上执行:cd /var/www/

chmod –R 777 html



再回到网页,刷新

这样就安装好了.

这样你就可以进入你的博客,写你的文章了.


至此,安装完成,WordPress里面有很多模板,可以直接更改你博客的主题风格,十分方便。

如果你想把网站挂出来让朋友来访问,那么你就还需要最后一步,去云购买一个域名,进行一下地址解析。

在国内的版权意识越来越强,特别是一些做原创博客的站长们。自己辛辛苦苦写出来的东西,被别人鼠标点几下,就复制走了。有些自觉的复制者们都会带上文章的网站链接,但是大多数的复制者们,都把文章当成自己的了,连个链接也不给。

今天教大家一个,别人复制网站的内容,并自动追加来源地址的方法。

js自动追加网站来源地址的代码

javascript 代码

<script>
 document.addEventListener('copy', function (event) {
 if (typeof window.getSelection=="undefined") return; //IE8 or earlier...
 var body_element=document.getElementsByTagName('body')[0];
 var selection=window.getSelection();
 //判断复制的内容的长度是否大于30
 //如果不大于 30 ,则不追加内容
 if (("" + selection).length < 30) return;
 var newdiv=document.createElement('div');
 newdiv.style.position='absolute';
 newdiv.style.left='-99999px';
 body_element.appendChild(newdiv);
 newdiv.appendChild(selection.getRangeAt(0).cloneContents());
 if (selection.getRangeAt(0).commonAncestorContainer.nodeName=="PRE") {
 newdiv.innerHTML="<pre>" + newdiv.innerHTML + "</pre>";
 }
 // 追加的HTML代码
 // newdiv.innerHTML +="<br />原文地址: <a href='"+ document.location.href + "'>"+ document.location.href + "</a> ? Feiniaomy.com";
 // 追加的TXT文字
 newdiv.innerHTML +="\r\n原文地址:"+ document.location.href + "\r\n ? Feiniaomy.com";
 selection.selectAllChildren(newdiv);
 window.setTimeout(function () { body_element.removeChild(newdiv); }, 200);
 });
</script>

测试,复制网站内容后,会追加以下内容

原文地址:https://www.feiniaomy.com/post/1.html ? Feiniaomy.com