文章标签 » 百度翻译

WP-AutoPost破解版支持百度翻译

WP-AutoPost是什么

WP-AutoPost是一个著名的WordPress插件,简单的说他是一个爬虫程序,你可以通过WP-AutoPost自动采集网站,自动翻译,自动发布文章。WP-AutoPost实现了零代码编写,完全通过界面来配置采集规则 ,实测下来效率很高也很准确,实用性很强。

WP-AutoPost最新破解版

目前WP-AutoPost比较新的版本是3.7.7,测试支持目前最新的WordPress 4.9.8。

下载地址:http://down-www.7down.net/pcdown/soft/xiazai/wp-autopost.rar

该版本已经破解,解压后把里面的wp-autopost-pro文件夹拷贝到WordPress插件目录下即可。

修复百度翻译功能

遗憾的是,这个版本WP-AutoPost集成的百度翻译接口已经很老了,百度官方已经停止支持,只能通过修改代码来实现百度翻译功能。

注册百度翻译API

老的翻译API已经停止服务下线了,我们需要迁移到新的翻译API。

新的百度翻译API官方介绍:http://api.fanyi.baidu.com/api/trans/product/prodinfo

注册之后开通通用翻译API,在开发者页面你会得到一个appid和key(密钥),记下这两个值后面会用到。

修改代码实现翻译

有三个地方需要修改,一个是百度翻译类,一个是百度翻译表单,一个是核心function。

修改百度翻译类

文件名:wp-autopost-utility-class.php

主要修改了调用的API地址,和参数结构。以前是传api_key,现在要传appid和key,并且要加盐之后计算md5。

找到autopostBaiduTranslator类,这个类有个translate方法,修改后的translate方法:

    public static function translate($src_text, $fromLanguage, $toLanguage, $appid, $key, $GET = false)
    {
            try
            {
                    $translateUrl = "http://api.fanyi.baidu.com/api/trans/vip/translate";
                    $postData = array();
                    $postData['q'] = $src_text;
                    $postData['from'] = $fromLanguage;
                    $postData['to'] = $toLanguage;
                    $postData['appid'] = $appid;
                    $postData['salt'] = rand(1111,9999);
                    $postData['sign'] = md5($appid . $src_text . $postData['salt'] . $key);
                    $curlResponse = self::curlRequest($translateUrl, $postData);
                    $re = json_decode($curlResponse);
                    $translated = array();
                    if (isset($re->error_code))
                    {
                            $translated['err'] = $re->error_msg . '(' . $re->error_code . ')';
                            switch ($re->error_code)
                            {
                                    case '52001': $translated['err'] .= '[Time Out]';
                                            break;
                                    case '52002': $translated['err'] .= '[The translator system error, try later]';
                                            break;
                                    case '52003': $translated['err'] .= '[Unauthorized, please check your API Key]';
                                            break;
                            }
                    }
                    else
                    {
                            $translated['trans_result'] = array();
                            foreach($re->trans_result as $trans_result)
                            {
                                    $translated['trans_result'][] = $trans_result->dst;
                            }
                    }
                    unset($curlResponse);
                    return $translated;
            }
            catch (Exception $e)
            {
                    $translated['err'] = "Exception: " . $e->getMessage();
                    return $translated;
            }
    }

可以看到这里修改了参数,从api_key改到了appid和key,后面要用到

修改表单代码

文件名:wp-autopost-translator-baidu.php

这个文件主要是百度翻译设置项的表单等,看到有api_key的地方,都改到appid和key就好,例如以前是:

if(isset($_POST['save_setting'])&&$_POST['save_setting']!=''){
$BaiduTransOptions['api_key'] = trim($_POST['api_key']);
update_option( 'wp-autopost-baidu-trans-options', $BaiduTransOptions);
$BaiduTransOptions = get_option('wp-autopost-baidu-trans-options');
}

修改到:

if(isset($_POST['save_setting'])&&$_POST['save_setting']!=''){
$BaiduTransOptions['appid'] = trim($_POST['appid']);
$BaiduTransOptions['key'] = trim($_POST['key']);
update_option( 'wp-autopost-baidu-trans-options', $BaiduTransOptions);
$BaiduTransOptions = get_option('wp-autopost-baidu-trans-options');
}

后面还有几个地方要改,以此类推,请自行修改

核心wp-autopost-function.php修改

最后是WP-AutoPost插件的核心文件wp-autopost-function.php,这个文件加密过,修改起来比较难受。

要改这个文件是因为这里调用到了autopostBaiduTranslator::translate(),这个方法已经被我们修改过,改变了传参,所以这里也要跟着修改。

全文搜索autopostBaiduTranslator::translate,一共有三处地方需要修改,每个地方加密后的字符串不大一样,需要挨个处理。

\x61\x70\x70\x69\x64是appid这5个字母的hex编码,\x6b\x65\x79是key这3个字母的hex编码。

把传参从translate(…, api_key)改到translate(…, appid, key)就好,比如最后一处translate修改之后如下:

autopostBaiduTranslator::translate(${${"G\x4cO\x42\x41\x4cS"}["\x7a\x65\x6bs\x70\x6f\x7a\x6a"]},${${"\x47\x4c\x4f\x42\x41LS"}["j\x66\x76\x6bcbv\x76\x79\x76\x78"]}[1],${${"GL\x4f\x42\x41L\x53"}["\x6a\x71n\x72\x73p\x63\x6f\x79\x6e"]}[2],${${"G\x4c\x4f\x42A\x4c\x53"}["l\x72\x75\x68\x67\x63"]}["\x61\x70\x70\x69\x64"],${${"G\x4c\x4f\x42A\x4c\x53"}["l\x72\x75\x68\x67\x63"]}["\x6b\x65\x79"]);

上面都修改完之后,填入相应的APPID和Key,百度翻译就可以正常使用了。文章自动抓取自动翻译也能正常工作。