Skip to content

Commit c7a5da1

Browse files
committed
feat: use AUDIO_FILES extension for retrieving track audio files
1 parent 3858295 commit c7a5da1

3 files changed

Lines changed: 304 additions & 10 deletions

File tree

player/player.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212
"github.com/devgianlu/go-librespot/output"
1313
downloadpb "github.com/devgianlu/go-librespot/proto/spotify/download"
1414
extmetadatapb "github.com/devgianlu/go-librespot/proto/spotify/extendedmetadata"
15+
audiofilespb "github.com/devgianlu/go-librespot/proto/spotify/extendedmetadata/audiofiles"
1516
metadatapb "github.com/devgianlu/go-librespot/proto/spotify/metadata"
1617
"github.com/devgianlu/go-librespot/spclient"
1718
"github.com/devgianlu/go-librespot/vorbis"
@@ -495,19 +496,18 @@ func (p *Player) NewStream(ctx context.Context, client *http.Client, spotId libr
495496
return nil, librespot.ErrMediaRestricted
496497
}
497498

498-
if len(trackMeta.File) == 0 {
499-
for _, alt := range trackMeta.Alternative {
500-
if len(alt.File) == 0 {
501-
continue
502-
}
503-
504-
trackMeta.File = append(trackMeta.File, alt.File...)
505-
}
499+
var audioFilesResp audiofilespb.AudioFilesExtensionResponse
500+
err = p.sp.ExtendedMetadataSimple(ctx, spotId, extmetadatapb.ExtensionKind_AUDIO_FILES, &audioFilesResp)
501+
if err != nil {
502+
return nil, fmt.Errorf("failed getting audio files metadata: %w", err)
503+
}
506504

507-
log.Warnf("original track has no formats, alternatives have a total of %d", len(trackMeta.File))
505+
var audioFiles []*metadatapb.AudioFile
506+
for _, f := range audioFilesResp.Files {
507+
audioFiles = append(audioFiles, f.File)
508508
}
509509

510-
file = selectBestMediaFormat(trackMeta.File, bitrate)
510+
file = selectBestMediaFormat(audioFiles, bitrate)
511511
if file == nil {
512512
return nil, librespot.ErrNoSupportedFormats
513513
}

proto/spotify/extendedmetadata/audiofiles/audio_files_extension.pb.go

Lines changed: 270 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
syntax = "proto3";
2+
3+
package spotify.extendedmetadata.audiofiles;
4+
5+
import "spotify/metadata/metadata.proto";
6+
7+
message NormalizationParams {
8+
float loudness_db = 1;
9+
float true_peak_db = 2;
10+
}
11+
12+
message ExtendedAudioFile {
13+
spotify.metadata.AudioFile file = 1;
14+
int32 average_bitrate = 4;
15+
16+
reserved 2, 3;
17+
}
18+
19+
message AudioFilesExtensionResponse {
20+
repeated ExtendedAudioFile files = 1;
21+
NormalizationParams default_file_normalization_params = 2;
22+
NormalizationParams default_album_normalization_params = 3;
23+
bytes audio_id = 4;
24+
}

0 commit comments

Comments
 (0)