我在IDEA里听相声 —— IDEA插件开发

2023-10-14 07:20
文章标签 idea 开发 插件 听相声

本文主要是介绍我在IDEA里听相声 —— IDEA插件开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       写代码总有觉着枯燥无味觉得烦的时候。那么边写代码边听听相声又会怎么样呢?
       作为一个Java程序员,手头儿的工具是Jetbrains家的IDEA。顺手搜了一把,果然没有现成的插件儿。看来没办法,只能自己手撸一个了。
在这里插入图片描述

一、抓包分析API

       众所周知:要边写代码边听相声得先认识郭德纲(划掉)
       不对不对,众所周知:要边写代码边听相声得先有相声的音源;有了音源之后还得播放,能在线播放最好,实在不行先把文件缓存到本地之后再进行播放;如果遇到格式不兼容的,还得给音频文件转个码。
       音源很好想 —— 咱们的老朋友喜马拉雅就有现成的!但是Java在线播放有点吃亏,不是不能做,就是挺麻烦的。
       综上,大概就是这么个流程:
流程

首先咱得打开谷歌浏览器抓个包,分析一下喜马拉雅的接口:
喜马拉雅接口一览

这里我们可以看得出来:/revision/search/main 这个是搜索的uri,请求方式为GET,请求参数中,“kw”字段用来表示搜索关键字。
请求参数分析

我们再在页面上随便点一个播放试试(这里以第一个《郭德纲21年相声精选》为例):
抓包1.2

这里我们可以看出请求的uri是/revision/play/v1/show,请求方式为:GET。其中有一个参数为id,和上一个搜索到的结果对比发现,id的值对应搜索结果中的albumId,我们可以理解为专辑id。

第二个uri:/revision/play/v1/audio顾名思义为播放uri,请求方式也是GET。传入参数也有个id,经过和上面专辑uri进行对比,发现此id为音频id。
抓包1.3

这个uri的返回值中有一个src属性,我们把它复制到浏览器中康康是个啥?
抓包1.4

果不其然,是音频的播放地址!至此,抓包分析API任务完成!

模拟请求及解析数据

Java平台有许多http客户端,这里我选择的是OKHttp3(因为用的比较顺手
代码在这儿不多赘述(详细代码见文末链接),大概就是拼接好URL,参数,并且按照层级解析返回的JSON即可。
解析代码demo

播放音源

Java原生的音频接口是只能支持AU,AIFF,WAV,MIDI,RFM等格式的音频,而我们平时接触到的最多的音频格式为MP3。而且我们通过上一节的JSON能拿到的音频格式又是M4A格式的。不论怎么说都是不能播放的。
那么问题来了,要怎么办!??

电视机前有经验的老程序员们肯定知道怎么办:Github搜个库呗!
在这里插入图片描述

说干咱就干,打开Github开搜!
在这里插入图片描述

经过一番操作,我找到了一个音频转码库和一个音频播放库,稍微测试了一下,能完美使用!
那就O98K,这个任务咱也算是完成了!(可以说是老缝合怪了
在这里插入图片描述

IDEA插件开发

经过上面几节的准备,我们的核心功能其实已经开发好了。最后一个任务是如何把功能集成进IDEA,将其做成插件。
经过一小时对《IDEA从入门到放弃》的精心研读,我便开始撸插件儿代码了。在这里插入图片描述

听相声得有播放列表,开始、暂停、上一曲、下一曲等控件,所以我们需要一个足够大的地方塞下这么多控件 —— 比如toolWindow这个位置就挺大的,应该是够用了!

那么电视机前好奇心重的小朋友们可能会问了:那什么是toolWindow呢?
就是IDEA周围那一圈,可以收起来的工具栏,那玩意儿就叫toolWindow。
toolwindow

IDEA插件的图形化控件和Java Swing的渊源颇深,熟悉Swing的同学可能会在图形化界面开发上比较好上手一点(IDEA Plugin的UI是不支持Java Fx的,这里需要注意)。在知道这一点之后,那后边就挺好上手了。JList拉列表,JButton设置按钮就行了~

说着,就随手整了个简单的界面出来了:
在这里插入图片描述

双击列表播放,控件播放、暂停、停止、切歌功能正常。

考虑到跨平台支持,我们还需要根据不同的系统来设置不同的音频文件保存路径。
这里做了个简易的设置界面,把路径交给用户自个儿去填好了~
在这里插入图片描述

项目代码

  • 音频解码、播放Core:AudioCore

  • IDEA插件本体:郭德纲相声插件

发布

该插件目前已发布至Jetbrains插件市场,搜索:"GDG Cross Talk Show"即可下载安装。

– 最后祝大家身体健康,再见!

在这里插入图片描述

这篇关于我在IDEA里听相声 —— IDEA插件开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/208973

相关文章

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

最新版IDEA配置 Tomcat的详细过程

《最新版IDEA配置Tomcat的详细过程》本文介绍如何在IDEA中配置Tomcat服务器,并创建Web项目,首先检查Tomcat是否安装完成,然后在IDEA中创建Web项目并添加Web结构,接着,... 目录配置tomcat第一步,先给项目添加Web结构查看端口号配置tomcat    先检查自己的to

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择

在 VSCode 中配置 C++ 开发环境的详细教程

《在VSCode中配置C++开发环境的详细教程》本文详细介绍了如何在VisualStudioCode(VSCode)中配置C++开发环境,包括安装必要的工具、配置编译器、设置调试环境等步骤,通... 目录如何在 VSCode 中配置 C++ 开发环境:详细教程1. 什么是 VSCode?2. 安装 VSCo

IDEA常用插件之代码扫描SonarLint详解

《IDEA常用插件之代码扫描SonarLint详解》SonarLint是一款用于代码扫描的插件,可以帮助查找隐藏的bug,下载并安装插件后,右键点击项目并选择“Analyze”、“Analyzewit... 目录SonajavascriptrLint 查找隐藏的bug下载安装插件扫描代码查看结果总结Sona

IDEA中的Kafka管理神器详解

《IDEA中的Kafka管理神器详解》这款基于IDEA插件实现的Kafka管理工具,能够在本地IDE环境中直接运行,简化了设置流程,为开发者提供了更加紧密集成、高效且直观的Kafka操作体验... 目录免安装:IDEA中的Kafka管理神器!简介安装必要的插件创建 Kafka 连接第一步:创建连接第二步:选

C#图表开发之Chart详解

《C#图表开发之Chart详解》C#中的Chart控件用于开发图表功能,具有Series和ChartArea两个重要属性,Series属性是SeriesCollection类型,包含多个Series对... 目录OverviChina编程ewSeries类总结OverviewC#中,开发图表功能的控件是Char

鸿蒙开发搭建flutter适配的开发环境

《鸿蒙开发搭建flutter适配的开发环境》文章详细介绍了在Windows系统上如何创建和运行鸿蒙Flutter项目,包括使用flutterdoctor检测环境、创建项目、编译HAP包以及在真机上运... 目录环境搭建创建运行项目打包项目总结环境搭建1.安装 DevEco Studio NEXT IDE

Python开发围棋游戏的实例代码(实现全部功能)

《Python开发围棋游戏的实例代码(实现全部功能)》围棋是一种古老而复杂的策略棋类游戏,起源于中国,已有超过2500年的历史,本文介绍了如何用Python开发一个简单的围棋游戏,实例代码涵盖了游戏的... 目录1. 围棋游戏概述1.1 游戏规则1.2 游戏设计思路2. 环境准备3. 创建棋盘3.1 棋盘类

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template