我在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

相关文章

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

idea中创建新类时自动添加注释的实现

《idea中创建新类时自动添加注释的实现》在每次使用idea创建一个新类时,过了一段时间发现看不懂这个类是用来干嘛的,为了解决这个问题,我们可以设置在创建一个新类时自动添加注释,帮助我们理解这个类的用... 目录前言:详细操作:步骤一:点击上方的 文件(File),点击&nbmyHIgsp;设置(Setti

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

IDEA中Git版本回退的两种实现方案

《IDEA中Git版本回退的两种实现方案》作为开发者,代码版本回退是日常高频操作,IntelliJIDEA集成了强大的Git工具链,但面对reset和revert两种核心回退方案,许多开发者仍存在选择... 目录一、版本回退前置知识二、Reset方案:整体改写历史1、IDEA图形化操作(推荐)1.1、查看提

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

基于Python开发PDF转PNG的可视化工具

《基于Python开发PDF转PNG的可视化工具》在数字文档处理领域,PDF到图像格式的转换是常见需求,本文介绍如何利用Python的PyMuPDF库和Tkinter框架开发一个带图形界面的PDF转P... 目录一、引言二、功能特性三、技术架构1. 技术栈组成2. 系统架构javascript设计3.效果图

IDEA连接达梦数据库的详细配置指南

《IDEA连接达梦数据库的详细配置指南》达梦数据库(DMDatabase)作为国产关系型数据库的代表,广泛应用于企业级系统开发,本文将详细介绍如何在IntelliJIDEA中配置并连接达梦数据库,助力... 目录准备工作1. 下载达梦JDBC驱动配置步骤1. 将驱动添加到IDEA2. 创建数据库连接连接参数

基于Python开发PDF转Doc格式小程序

《基于Python开发PDF转Doc格式小程序》这篇文章主要为大家详细介绍了如何基于Python开发PDF转Doc格式小程序,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 用python实现PDF转Doc格式小程序以下是一个使用Python实现PDF转DOC格式的GUI程序,采用T