mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-12 23:45:18 +00:00
chore: player skipping all tracks from cache
This commit is contained in:
parent
a621a45f0b
commit
1b420e661b
@ -72,14 +72,18 @@ class AudioPlayerNotifier extends Notifier<AudioPlayerState> {
|
||||
],
|
||||
);
|
||||
});
|
||||
} else {
|
||||
} else if (medias.isNotEmpty) {
|
||||
await audioPlayer.openPlaylist(
|
||||
medias
|
||||
.map((media) => Media(
|
||||
.map(
|
||||
(media) => SpotubeMedia.fromMedia(
|
||||
Media(
|
||||
media.uri,
|
||||
extras: media.extras,
|
||||
httpHeaders: media.httpHeaders,
|
||||
))
|
||||
),
|
||||
),
|
||||
)
|
||||
.toList(),
|
||||
initialIndex: playlist.index,
|
||||
);
|
||||
|
@ -33,11 +33,13 @@ class AudioPlayerState {
|
||||
shuffled: json['shuffled'],
|
||||
playlist: Playlist(
|
||||
json['playlist']['medias']
|
||||
.map((media) => Media(
|
||||
media['uri'],
|
||||
extras: media['extras'],
|
||||
httpHeaders: media['httpHeaders'],
|
||||
))
|
||||
.map(
|
||||
(media) => SpotubeMedia.fromMedia(Media(
|
||||
media['uri'],
|
||||
extras: media['extras'],
|
||||
httpHeaders: media['httpHeaders'],
|
||||
)),
|
||||
)
|
||||
.toList(),
|
||||
index: json['playlist']['index'],
|
||||
),
|
||||
|
@ -5,15 +5,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
||||
import 'package:shelf/shelf_io.dart';
|
||||
import 'package:spotube/provider/server/pipeline.dart';
|
||||
import 'package:spotube/provider/server/router.dart';
|
||||
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||
import 'package:spotube/services/logger/logger.dart';
|
||||
|
||||
int serverPort = 0;
|
||||
final serverProvider = FutureProvider(
|
||||
(ref) async {
|
||||
final pipeline = ref.watch(pipelineProvider);
|
||||
final router = ref.watch(serverRouterProvider);
|
||||
final port = Random().nextInt(17500) + 5000;
|
||||
|
||||
final port = Random().nextInt(17000) + 1500;
|
||||
SpotubeMedia.serverPort = port;
|
||||
|
||||
final server = await serve(
|
||||
pipeline.addHandler(router.call),
|
||||
@ -28,8 +29,6 @@ final serverProvider = FutureProvider(
|
||||
server.close();
|
||||
});
|
||||
|
||||
serverPort = port;
|
||||
|
||||
return (server: server, port: port);
|
||||
},
|
||||
);
|
||||
|
@ -1,7 +1,6 @@
|
||||
import 'dart:io';
|
||||
|
||||
import 'package:media_kit/media_kit.dart' hide Track;
|
||||
import 'package:spotube/provider/server/server.dart';
|
||||
import 'package:spotube/services/logger/logger.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:spotify/spotify.dart' hide Playlist;
|
||||
@ -20,9 +19,11 @@ part 'audio_player_impl.dart';
|
||||
class SpotubeMedia extends mk.Media {
|
||||
final Track track;
|
||||
|
||||
static int serverPort = 0;
|
||||
|
||||
SpotubeMedia(
|
||||
this.track, {
|
||||
Map<String, String>? extras,
|
||||
Map<String, dynamic>? extras,
|
||||
super.httpHeaders,
|
||||
}) : super(
|
||||
track is LocalTrack
|
||||
@ -38,11 +39,20 @@ class SpotubeMedia extends mk.Media {
|
||||
},
|
||||
);
|
||||
|
||||
@override
|
||||
String get uri => track is LocalTrack
|
||||
? (track as LocalTrack).path
|
||||
: "http://${InternetAddress.anyIPv4.address}:$serverPort/stream/${track.id}";
|
||||
|
||||
factory SpotubeMedia.fromMedia(mk.Media media) {
|
||||
final track = media.uri.startsWith("http")
|
||||
? Track.fromJson(media.extras?["track"])
|
||||
: LocalTrack.fromJson(media.extras?["track"]);
|
||||
return SpotubeMedia(track);
|
||||
return SpotubeMedia(
|
||||
track,
|
||||
extras: media.extras,
|
||||
httpHeaders: media.httpHeaders,
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user