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

相关文章

VSCode开发中有哪些好用的插件和快捷键

《VSCode开发中有哪些好用的插件和快捷键》作为全球最受欢迎的编程工具,VSCode的快捷键体系是提升开发效率的核心密码,:本文主要介绍VSCode开发中有哪些好用的插件和快捷键的相关资料,文中... 目录前言1、vscode插件1.1 Live-server1.2 Auto Rename Tag1.3

Agent开发核心技术解析以及现代Agent架构设计

《Agent开发核心技术解析以及现代Agent架构设计》在人工智能领域,Agent并非一个全新的概念,但在大模型时代,它被赋予了全新的生命力,简单来说,Agent是一个能够自主感知环境、理解任务、制定... 目录一、回归本源:到底什么是Agent?二、核心链路拆解:Agent的"大脑"与"四肢"1. 规划模

idea设置快捷键风格方式

《idea设置快捷键风格方式》在IntelliJIDEA中设置快捷键风格,打开IDEA,进入设置页面,选择Keymap,从Keymaps下拉列表中选择或复制想要的快捷键风格,点击Apply和OK即可使... 目录idea设www.chinasem.cn置快捷键风格按照以下步骤进行总结idea设置快捷键pyth

解决idea启动项目报错java: OutOfMemoryError: insufficient memory

《解决idea启动项目报错java:OutOfMemoryError:insufficientmemory》:本文主要介绍解决idea启动项目报错java:OutOfMemoryError... 目录原因:解决:总结 原因:在Java中遇到OutOfMemoryError: insufficient me

idea粘贴空格时显示NBSP的问题及解决方案

《idea粘贴空格时显示NBSP的问题及解决方案》在IDEA中粘贴代码时出现大量空格占位符NBSP,可以通过取消勾选AdvancedSettings中的相应选项来解决... 目录1、背景介绍2、解决办法3、处理完成总结1、背景介绍python在idehttp://www.chinasem.cna粘贴代码,出

Python+wxPython开发一个文件属性比对工具

《Python+wxPython开发一个文件属性比对工具》在日常的文件管理工作中,我们经常会遇到同一个文件存在多个版本,或者需要验证备份文件与源文件是否一致,下面我们就来看看如何使用wxPython模... 目录引言项目背景与需求应用场景核心需求运行结果技术选型程序设计界面布局核心功能模块关键代码解析文件大

C++多线程开发环境配置方法

《C++多线程开发环境配置方法》文章详细介绍了如何在Windows上安装MinGW-w64和VSCode,并配置环境变量和编译任务,使用VSCode创建一个C++多线程测试项目,并通过配置tasks.... 目录下载安装 MinGW-w64下载安装VS code创建测试项目配置编译任务创建 tasks.js

idea-java序列化serialversionUID自动生成方式

《idea-java序列化serialversionUID自动生成方式》Java的Serializable接口用于实现对象的序列化和反序列化,通过将对象转换为字节流来存储或传输,实现Serializa... 目录简介实现序列化serialVersionUID配置使用总结简介Java.io.Seripyth

VS Code中的Python代码格式化插件示例讲解

《VSCode中的Python代码格式化插件示例讲解》在Java开发过程中,代码的规范性和可读性至关重要,一个团队中如果每个开发者的代码风格各异,会给代码的维护、审查和协作带来极大的困难,这篇文章主... 目录前言如何安装与配置使用建议与技巧如何选择总结前言在 VS Code 中,有几款非常出色的 pyt

一文详解Python如何开发游戏

《一文详解Python如何开发游戏》Python是一种非常流行的编程语言,也可以用来开发游戏模组,:本文主要介绍Python如何开发游戏的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录一、python简介二、Python 开发 2D 游戏的优劣势优势缺点三、Python 开发 3D