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

相关文章

浏览器插件cursor实现自动注册、续杯的详细过程

《浏览器插件cursor实现自动注册、续杯的详细过程》Cursor简易注册助手脚本通过自动化邮箱填写和验证码获取流程,大大简化了Cursor的注册过程,它不仅提高了注册效率,还通过友好的用户界面和详细... 目录前言功能概述使用方法安装脚本使用流程邮箱输入页面验证码页面实战演示技术实现核心功能实现1. 随机

IDEA Maven提示:未解析的依赖项的问题及解决

《IDEAMaven提示:未解析的依赖项的问题及解决》:本文主要介绍IDEAMaven提示:未解析的依赖项的问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝... 目录IDEA Maven提示:未解析的依编程赖项例如总结IDEA Maven提示:未解析的依赖项例如

SpringBoot开发中十大常见陷阱深度解析与避坑指南

《SpringBoot开发中十大常见陷阱深度解析与避坑指南》在SpringBoot的开发过程中,即使是经验丰富的开发者也难免会遇到各种棘手的问题,本文将针对SpringBoot开发中十大常见的“坑... 目录引言一、配置总出错?是不是同时用了.properties和.yml?二、换个位置配置就失效?搞清楚加

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

Python中对FFmpeg封装开发库FFmpy详解

《Python中对FFmpeg封装开发库FFmpy详解》:本文主要介绍Python中对FFmpeg封装开发库FFmpy,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、FFmpy简介与安装1.1 FFmpy概述1.2 安装方法二、FFmpy核心类与方法2.1 FF

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

一文详解如何在idea中快速搭建一个Spring Boot项目

《一文详解如何在idea中快速搭建一个SpringBoot项目》IntelliJIDEA作为Java开发者的‌首选IDE‌,深度集成SpringBoot支持,可一键生成项目骨架、智能配置依赖,这篇文... 目录前言1、创建项目名称2、勾选需要的依赖3、在setting中检查maven4、编写数据源5、开启热

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件