feat: add audio quality selector (standard to jymaster/Hi-Res)

- MusicProvider interface: setQuality/getQuality methods
- NeteaseProvider: passes quality level to /song/url/v1
- Default: exhigh (320kbps MP3)
- Settings page: 6-option grid selector
- GET/POST /api/music/quality endpoints

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
saopig1andClaude Opus 4.6 committed 2026-03-30 03:37:26 +08:00
1 parent 0439bd047f
commit b74c8e8add
5 files changed
+142 -4

No files matched your search

+10 -1
View File
@@ -14,6 +14,7 @@ export class QQMusicProvider implements MusicProvider {
readonly platform = "qq" as const;
private api: AxiosInstance;
private cookie = "";
private quality = "exhigh";
constructor(baseUrl: string) {
this.api = axios.create({
@@ -22,6 +23,14 @@ export class QQMusicProvider implements MusicProvider {
});
}
setQuality(quality: string): void {
this.quality = quality;
}
getQuality(): string {
return this.quality;
}
private get cookieParams(): Record<string, string> {
return this.cookie ? { cookie: this.cookie } : {};
}
@@ -48,7 +57,7 @@ export class QQMusicProvider implements MusicProvider {
return { songs, playlists: [], albums: [] };
}
async getSongUrl(songId: string): Promise<string | null> {
async getSongUrl(songId: string, _quality?: string): Promise<string | null> {
const res = await this.api.get("/getMusicPlay", {
params: { songmid: songId, ...this.cookieParams },
});