下载分享抖音视频并转成文本

news/2024/9/29 19:35:21/

思路

  1. 将分享的链接转义成可以正常链接。
  2. 通过链接去找到对应的视频链接。
  3. 在通过返回的html。解析里面视频的资源链接在playAddr字段里面。
  4. 拿到链接后转义urlPath即可获取到资源信息。
  5. 下载视频。
  6. 科大讯飞语音转文本。
  7. 处理json保存到本地。

部分代码

获取抖音链接:

            String url = "6.43 复制打开抖音,看看【白浪源烟薯种植基地的作品】一旦找对了原产地,就很难在换其他家了,在我们家买过... https://v.douyin.com/ikagBCYn/ I@V.Lw mqe:/ 05/30  ";//过滤链接,获取http连接地址url = decodeHttpUrl(url);log.info("过滤后的链接地址:{}", url);//发起请求HttpResponse responseHref = HttpRequest.get(url).header("User-Agent", USER_AGENT).execute();String strUrlHref = responseHref.body();log.info("html地址:{}", strUrlHref);// 正则表达式用于匹配"video/"后面跟随的一系列数字Pattern pattern = Pattern.compile(regex);Matcher matcherUrlHref = pattern.matcher(strUrlHref);String videoId = null;

科大讯飞:

    private static String upload(String filePath) throws SignatureException, FileNotFoundException {HashMap<String, Object> map = new HashMap<>(16);File audio = new File(filePath);String fileName = audio.getName();long fileSize = audio.length();map.put("appId", appid);map.put("fileSize", fileSize);map.put("fileName", fileName);map.put("duration", "200");LfasrSignature lfasrSignature = new LfasrSignature(appid, keySecret);map.put("signa", lfasrSignature.getSigna());map.put("ts", lfasrSignature.getTs());String paramString = HttpUtil.parseMapToPathParam(map);log.info("upload paramString:" + paramString);String url = HOST + "/v2/api/upload" + "?" + paramString;log.info("upload_url:" + url);String response = HttpUtil.iflyrecUpload(url, new FileInputStream(audio));log.info("upload response:" + response);return response;}private static String getResult(String orderId, String writerFileNameAndPath) throws SignatureException, InterruptedException, IOException {HashMap<String, Object> map = new HashMap<>(16);map.put("orderId", orderId);LfasrSignature lfasrSignature = new LfasrSignature(appid, keySecret);map.put("signa", lfasrSignature.getSigna());map.put("ts", lfasrSignature.getTs());map.put("appId", appid);map.put("resultType", "transfer,predict");String paramString = HttpUtil.parseMapToPathParam(map);String url = HOST + "/v2/api/getResult" + "?" + paramString;log.info("\nget_result_url:" + url);while (true) {String response = HttpUtil.iflyrecGet(url);JsonParse jsonParse = gson.fromJson(response, JsonParse.class);if (jsonParse.content.orderInfo.status == 4 || jsonParse.content.orderInfo.status == -1) {log.info("转换响应完成:" + response);write(response, writerFileNameAndPath);return response;} else {log.info("进行中...,状态为:" + jsonParse.content.orderInfo.status);//建议使用回调的方式查询结果,查询接口有请求频率限制Thread.sleep(7000);}}}

需要的后台私信我。


http://www.ppmy.cn/news/1532058.html

相关文章

学生宿舍管理:Spring Boot技术实现

第1章 绪论 1.1 课题背景 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。所以各行业&#xff0c;尤其是规模较大的企业和学校等…

OpenCV图像文件读写(4)解码图像数据函数imdecode()的使用

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 从内存缓冲区读取图像。 imdecode 函数从指定的内存缓冲区读取图像。如果缓冲区太短或包含无效数据&#xff0c;函数将返回一个空矩阵 (Mat::dat…

更新 Git 软件

更新 Git 软件本身是指将你当前安装的 Git 版本升级到最新版本。不同的操作系统有不同的更新方法。以下是针对 Windows、macOS 和 Linux 的 Git 更新步骤&#xff1a; Windows 检查当前版本&#xff1a; git --version访问官网下载最新版本&#xff1a; 访问 Git 官方网站 (ht…

软件设计模式概述

概述 软件设计内容 软件体系结构 — 宏观设计,模块软件设计模式 — 中间级别,类,接口,模块数据结构与算法 — 微观设计,方法 是什么 设计经验的总结 七个常用原则 单一职责原则 就一个类而言,应该仅有一个引起他变化的原因 为什么 当一个类职责过多,一个职责的变化可能…

在Ubuntu22.04上部署自签名SSL证书

自签名证书签发相对于商业证书流程简单&#xff0c;费用低廉&#xff0c;更新容易。所以在开发领域、甚至一些小众场景下特别常见&#xff0c;比如公司的内网服务、网站安全证书、企业路由器设备的管理后台、用于管理企业员工的“安全准入客户端”等不乏使用这个方案。 接下来…

Pencils Protocol 成市场新宠,生态通证$DAPP价值几何

Pencils Protocol 是 Scroll 生态综合性收益平台&#xff0c;其仅在 Scroll 生态单链 TVL 就已经突破了 3.5 亿美元&#xff0c;同时在上线短短几个月的时间里就积累了超 50 万活跃社区用户。现阶段 Pencils Protocol 已经完成了 DAPP 通证的 TGE &#xff0c;分别在 Tokensoft…

流水标准化处理器

作品描述 传统方式处理银行流水时&#xff0c;由于不同的银行&#xff0c;流水格式不尽相同&#xff0c;需要针对不同银行构建不同的处理器&#xff08;Handler&#xff09;分别处理&#xff0c;导致系统耦合性高且可拓展性低。 流水标准化处理器则采用配置的方式&#xff0c…

Java零工市场小程序如何改变自由职业者生活

如今&#xff0c;自由职业者越来越多&#xff0c;他们需要找到合适的工作机会&#xff0c;Java零工市场小程序&#xff0c;为自由职业者提供了一个方便、快捷的寻找工作机会的方式&#xff0c;这样一来&#xff0c;改变了自由职业者找寻工作的方式&#xff0c;也提高了他们的收…