PHP 调用金山词霸API获取音标和音频

说明文档地址:http://open.iciba.com/?c=wiki&t=cc

先用php封一个curl爬取页面的方法:

/*
 * @param string $url get请求地址
 * @param int $httpCode 返回状态码
 * @return mixed
 */
function curl_get($url, $httpCode = 0) {
//    初始化
    $ch = curl_init();
//    爬取url地址
    curl_setopt($ch, CURLOPT_URL, $url);
//    不将爬取内容直接输出而保存到变量中
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

    //部署在Linux环境下改为true
//    模拟一个浏览器访问https网站
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//    设定连接时间
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);

    //执行获取内容
    $file_contents = curl_exec($ch);
    $httpCode = curl_getinfo($ch,CURLINFO_HTTP_CODE);
    curl_close($ch);
    return $file_contents;
}

在封一个可以通过音频连接将音频读取并保存到本地的方法

function save_music($type,$file_url)
{
    $file_name = $type."/".uniqid().".mp3";
//    $pic_url = "http://res.iciba.com/resource/amp3/1/0/34/d1/34d1f91fb2e514b8576fab1a75a89a6b.mp3";
    $file_read_fd = fopen($file_url, "r");
    $file_write_fd = fopen($file_name, "w");
    $file_content = "";
    while(!feof($file_read_fd)){
    $file_content .= fread($file_read_fd, 1048576);
    }
    fwrite($file_write_fd, $file_content);
    fclose($file_read_fd);
    fclose($file_write_fd);
    return $file_name;
}

然后先调用接口获取信息,通过正则拿出详细信息,存入数据库和保存本地服务器:

//收集音标

set_time_limit(0);

$mysql = new db();

$result = $mysql->sql_select('SELECT * FROM dictionary WHERE id > 7703');

foreach ($result as $a => $b){
    $url = sprintf("http://dict-co.iciba.com/api/dictionary.php?w=%s&key=your_key",$b['word']);
    //爬取结果
    $result = curl_get($url);
    //从结果提取音标和音频的连接保存数组
    $rr = preg_match('/[a-zA-Z]+\s.*\s.*\s.*\s\<ps\>(.*)\s\<pron\>(.*)\s\<ps\>(.*)\s\<pron\>(.*)\s/',$result,$results);
    //预处理去掉标签和空格
    $en_symbol=preg_replace("/[\r\n\s]/","",strip_tags($results[1]));
    $en_symbol=preg_replace("/[']/","ˈ",$en_symbol);
    if ($en_symbol == "" || !$rr) continue;
    $en_symbol_mp3=preg_replace("/[\r\n\s]/","",strip_tags($results[2]));
    //保存音频
    $url1 = save_music($b['type'],$en_symbol_mp3);
    $us_symbol=preg_replace("/[\r\n\s]/","",strip_tags($results[3]));
    $us_symbol=preg_replace("/[']/","ˈ",$us_symbol);
    $us_symbol_mp3=preg_replace("/[\r\n\s]/","",strip_tags($results[4]));
    $url2 = save_music($b['type'],$us_symbol_mp3);
    //调用自己封装的方法更新数据库
    $mysql->update('dictionary',[
        'phonetic_symbol_en' => $en_symbol,
        'phonetic_symbol_us' => $us_symbol,
        'pronunciation_en' => $url1,
        'pronunciation_us' => $url2,
    ],['id' => $b['id']]);
}

以上就是全流程

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 要实现在Java中调用金山词霸屏幕取词的功能,可以通过以下步骤进行操作: 1. 下载及安装金山词霸软件:首先需要在计算机上下载并安装金山词霸软件,确保软件正常运行。 2. 导入相关依赖库:根据金山词霸提供的API文档,确定所需的相关依赖库,并将其导入到Java项目中。 3. 创建Java代码文件:在Java项目中创建一个新的Java代码文件,用于调用金山词霸屏幕取词的功能。 4. 编写Java代码:在Java代码中,可以使用Java的外部应用程序接口(API)或者使用JNI接口来与金山词霸进行交互。根据金山词霸API文档,按照要求调用相应的函数和方法,获取屏幕取词的结果。 5. 运行Java代码:编译并运行Java代码,确保程序可以成功调用金山词霸屏幕取词功能,并获取到预期的结果。 需要注意的是,由于金山词霸屏幕取词功能的实现方式可能会因版本不同而有所差异,因此在具体实现时应参考金山词霸的相关API文档,确保代码的准确性与稳定性。 ### 回答2: 要调用金山词霸屏幕取词的源码,可以使用Java的相关库和API。首先,需要在项目中引入金山词霸的Java库文件。然后,在代码中创建一个金山词霸的实例对象,用于控制屏幕取词的操作。 接下来,可以使用Java的事件监听机制,监听鼠标操作或者键盘操作,当用户点击鼠标或者按下特定的按键时,触发取词功能。在事件监听方法中,调用金山词霸实例对象的相关方法,如startCapture()方法,开始进行屏幕取词的操作。 经过截图和文字识别处理后,金山词霸会返回取到的词语信息。可以将词语信息显示到界面上,或者存储到文件中,根据需要进行进一步的处理和展示。 在整个过程中,需要注意异常处理以及安全性问题。确保金山词霸库文件正确引入,并且用户有正常的操作权限。此外,可能还需检查操作系统的兼容性以及金山词霸库的版本适配性。 需要注意的是,金山词霸的使用可能涉及到授权和付费问题。在使用前,建议查阅官方文档,了解相关授权和付费要求,确保合法合规地使用金山词霸的屏幕取词功能。 ### 回答3: 要实现Java调用金山词霸屏幕取词源码,可以按照以下步骤进行: 1. 首先,需要在电脑上安装好Java开发环境,确保可以编译和运行Java程序。 2. 在网上搜索或直接访问金山词霸的开放平台或开发者文档,查找屏幕取词功能的API文档和示例代码。 3. 阅读API文档和示例代码,了解如何进行屏幕取词的调用和使用。 4. 在Java的开发环境中创建一个新的Java项目,命名为"ScreenTranslator"(或其他合适的名称)。 5. 在该项目中创建一个Java类,命名为"ScreenTranslatorDemo"(或其他合适的名称),这个类将用于编写屏幕取词功能的代码。 6. 在"ScreenTranslatorDemo"类中导入相关的Java类库和API库。 7. 编写代码来调用金山词霸屏幕取词的API,实现屏幕取词功能。这可能涉及到一些API调用、参数的设置和返回结果的处理。 8. 在main方法中,编写测试代码,模拟屏幕取词的场景,并调用相应的方法进行词语的翻译和输出。 9. 运行Java程序,查看屏幕取词功能是否正常工作,并检查输出结果是否符合预期。 10. 根据需要,可以对代码进行优化、封装或添加其他功能,以提高程序的可用性和用户体验。 需要注意的是,以上步骤仅供参考,具体的实现方式可能与金山词霸API和文档有关。因此,在实际过程中,最好参考具体的文档和示例代码,以确保正确调用金山词霸屏幕取词的API。从这个角度来说,这只是一个大致的指引。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_我走路带风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值