Skip to content

Latest commit

 

History

66 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ListenCode

⚠️ 项目状态:搁置 — 核心功能(音频播放)无法实现,详见 docs/postmortem.md


项目简介

ListenCode 是 Listen1 的 VS Code 扩展移植版,聚合网易云/QQ/酷狗/B站音乐平台,提供搜索、播放、自建歌单功能。

目标用户: 写代码时不想开浏览器切窗口的人。

当前状态

功能 状态
多平台聚合搜索 ✅ 完成
B站二维码登录 ✅ 完成
歌单管理(CRUD/拖拽/导入导出) ✅ 完成
搜索历史 ✅ 完成
播放控制(播放/暂停/上/下/进度/音量) ✅ UI 完成
音频播放 核心功能不通

技术栈

  • TypeScript + 原生 HTML/CSS/JS(WebView UI)
  • VS Code Extension API
  • axios(HTTP 客户端)
  • Howler.js(音频播放)
  • qrcode(二维码登录)
  • node-forge(AES/RSA/MD5 加密)

项目结构

src/
  extension.ts          扩展入口、WebView、消息处理
  audio-server.ts       本地 HTTP 音频代理服务器
  cookie.ts             Cookie 管理(SecretStorage)
  playlist.ts           歌单管理(globalState 持久化)
  search.ts             聚合搜索
  search-history.ts     搜索历史
  settings.ts           音源配置
  types.ts              公共类型
  provider/             平台 API 层
    http.ts             HTTP 客户端 + cookie 注入
    crypto.ts           加密工具(AES/RSA/MD5)
    index.ts            平台路由 + URL 解析
    netease.ts          网易云 API
    qq.ts               QQ 音乐 API
    kugou.ts            酷狗 API
    bilibili.ts         B站 API
media/                  WebView UI
  webview.html/css/js   主界面
  howler.core.min.js    音频库
  login.html            二维码登录页

快速开始

# 安装依赖
npm install

# 编译
npm run compile

# 运行单元测试
npm test

# 启动扩展调试
# 在 VS Code 中按 F5

音频播放问题

核心问题: Bilibili CDN URL 具有时间敏感(几分钟过期)和 IP 绑定特性,无法通过本地代理服务器转发给 WebView 播放。

已尝试的方案(均失败):

  • 原生 <audio> 元素
  • Howler.js(Listen1 同款方案)
  • 本地 HTTP 代理(vsc-netease-music 同款方案)
  • 流式转发、Range 请求、CORS 头修正

详见 docs/postmortem.md 中的完整排查记录。

参考项目

文档

许可证

MIT

About

VS Code 扩展:聚合多平台音乐搜索、歌单管理(Listen1 移植版,开发中)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages