VookLess

Menu

火车头编写Python插件初体验

最近因为项目的需求觉得试试火车头采集的翻译,之前一直是直接Pthon来操作,但是Python在Windows主机上的定时任务是个坑,所以决定配合火车头来使用。

上手操作:

我是直接参考论坛里whale1011的这个帖子来开始的,直接把两个py文件下载下来就可以了,直接看代码,很简单,上代码:

import sys,importlib
from urllib import parse
import json
import fanyi

if len(sys.argv)!= 5:
    print(len(sys.argv))
    print("命令行参数长度不为5")
    sys.exit()
else:
    LabelCookie = parse.unquote(sys.argv[1])
    LabelUrl = parse.unquote(sys.argv[2])
    #PageType为List,Content,Pages分别代表列表页,内容页,多页http请求处理,Save代表内容处理
    PageType=sys.argv[3]
    SerializerStr = parse.unquote(sys.argv[4])
    if (SerializerStr[0:2] != '''{"'''):
        file_object = open(SerializerStr)
        try:
            SerializerStr = file_object.read()
            SerializerStr = parse.unquote(SerializerStr)
        finally:
            file_object.close()
    LabelArray = json.loads(SerializerStr)

#以下是用户编写代码区域,我是whale1011,这里是我修改的地方,我QQ 82595685 ,看不懂请联系
    if(PageType=="Save"):
        #下面这句if的意思是,如果你正常采集到了标题,那么翻译方法将这个标题标签,翻译成title标签,那么这个title标签的内容就是标题标签的英文
        if(LabelArray['标题']):
            LabelArray['title']=fanyi.translateBaidu(LabelArray['标题'])
        #同理我制作了把内容标签转成了content标签,也就是把所有采集到的中文内容,用一个新的英文标签写出来
        if(LabelArray['内容']):
              LabelArray['content']=fanyi.translateBaidu(LabelArray['内容'])
        if(LabelArray['标签']):
              LabelArray['tags']=fanyi.translateBaidu(LabelArray['标签'])
        if(LabelArray['内容']):
              LabelArray['keywords']=fanyi.translateBaidu(LabelArray['关键词'])
        if(LabelArray['摘要']):
              LabelArray['description']=fanyi.translateBaidu(LabelArray['摘要'])
    else:
        LabelArray['Html']='当前页面的网址为:'+ LabelUrl +"\r\n页面类型为:" + PageType + "\r\nCookies数据为:"+LabelCookie+"\r\n接收到的数据是:" + LabelArray['Html']

#以上是用户编写代码区域
    LabelArray = json.dumps(LabelArray)
    print(LabelArray)

具体的部署作者的帖子也说明得非常清楚了,不过在实际部署过程中我还是踩了一些坑,这里记录一下。
备注:需要再火车头标签列表里按照这个插件对应的标签新增标签,不然会就算成功运行也无输出。

问题汇总

问题1:插件运行报错:系统找不到指定的文件。
解决方案:
1、添加Python环境变量;
2、重启火车头;

问题2:Python插件出错
检查插件语法运行错误

问题3:翻译出来的内容不完整
因为内容部分有HTML和空格原因,发现翻译后只翻译了前面一小句话或小段话(P标签内容)。测试直接输出元内容是没问题的。
解决方案:原帖子提供的翻译代码有问题,换了我目前在用的就没问题了

问题4:翻译后部分HTML标签失效
百度翻译没有Deepl处理HTML标签效果好,不过好在还有规律可言,所以也有办法来解决。
解决方案:直接在插件源文件里使用替换功能。

结语:

代码就不贴了,比较简单,而且因为功能各有不同。

— 于 共写了2064个字
— 文内使用到的标签:

发表评论

邮箱地址不会被公开。 必填项已用*标注