mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 07:55: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(
|
await audioPlayer.openPlaylist(
|
||||||
medias
|
medias
|
||||||
.map((media) => Media(
|
.map(
|
||||||
|
(media) => SpotubeMedia.fromMedia(
|
||||||
|
Media(
|
||||||
media.uri,
|
media.uri,
|
||||||
extras: media.extras,
|
extras: media.extras,
|
||||||
httpHeaders: media.httpHeaders,
|
httpHeaders: media.httpHeaders,
|
||||||
))
|
),
|
||||||
|
),
|
||||||
|
)
|
||||||
.toList(),
|
.toList(),
|
||||||
initialIndex: playlist.index,
|
initialIndex: playlist.index,
|
||||||
);
|
);
|
||||||
|
@ -33,11 +33,13 @@ class AudioPlayerState {
|
|||||||
shuffled: json['shuffled'],
|
shuffled: json['shuffled'],
|
||||||
playlist: Playlist(
|
playlist: Playlist(
|
||||||
json['playlist']['medias']
|
json['playlist']['medias']
|
||||||
.map((media) => Media(
|
.map(
|
||||||
media['uri'],
|
(media) => SpotubeMedia.fromMedia(Media(
|
||||||
extras: media['extras'],
|
media['uri'],
|
||||||
httpHeaders: media['httpHeaders'],
|
extras: media['extras'],
|
||||||
))
|
httpHeaders: media['httpHeaders'],
|
||||||
|
)),
|
||||||
|
)
|
||||||
.toList(),
|
.toList(),
|
||||||
index: json['playlist']['index'],
|
index: json['playlist']['index'],
|
||||||
),
|
),
|
||||||
|
@ -5,15 +5,16 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
|
|||||||
import 'package:shelf/shelf_io.dart';
|
import 'package:shelf/shelf_io.dart';
|
||||||
import 'package:spotube/provider/server/pipeline.dart';
|
import 'package:spotube/provider/server/pipeline.dart';
|
||||||
import 'package:spotube/provider/server/router.dart';
|
import 'package:spotube/provider/server/router.dart';
|
||||||
|
import 'package:spotube/services/audio_player/audio_player.dart';
|
||||||
import 'package:spotube/services/logger/logger.dart';
|
import 'package:spotube/services/logger/logger.dart';
|
||||||
|
|
||||||
int serverPort = 0;
|
|
||||||
final serverProvider = FutureProvider(
|
final serverProvider = FutureProvider(
|
||||||
(ref) async {
|
(ref) async {
|
||||||
final pipeline = ref.watch(pipelineProvider);
|
final pipeline = ref.watch(pipelineProvider);
|
||||||
final router = ref.watch(serverRouterProvider);
|
final router = ref.watch(serverRouterProvider);
|
||||||
|
final port = Random().nextInt(17500) + 5000;
|
||||||
|
|
||||||
final port = Random().nextInt(17000) + 1500;
|
SpotubeMedia.serverPort = port;
|
||||||
|
|
||||||
final server = await serve(
|
final server = await serve(
|
||||||
pipeline.addHandler(router.call),
|
pipeline.addHandler(router.call),
|
||||||
@ -28,8 +29,6 @@ final serverProvider = FutureProvider(
|
|||||||
server.close();
|
server.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
serverPort = port;
|
|
||||||
|
|
||||||
return (server: server, port: port);
|
return (server: server, port: port);
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
|
|
||||||
import 'package:media_kit/media_kit.dart' hide Track;
|
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:spotube/services/logger/logger.dart';
|
||||||
import 'package:flutter/foundation.dart';
|
import 'package:flutter/foundation.dart';
|
||||||
import 'package:spotify/spotify.dart' hide Playlist;
|
import 'package:spotify/spotify.dart' hide Playlist;
|
||||||
@ -20,9 +19,11 @@ part 'audio_player_impl.dart';
|
|||||||
class SpotubeMedia extends mk.Media {
|
class SpotubeMedia extends mk.Media {
|
||||||
final Track track;
|
final Track track;
|
||||||
|
|
||||||
|
static int serverPort = 0;
|
||||||
|
|
||||||
SpotubeMedia(
|
SpotubeMedia(
|
||||||
this.track, {
|
this.track, {
|
||||||
Map<String, String>? extras,
|
Map<String, dynamic>? extras,
|
||||||
super.httpHeaders,
|
super.httpHeaders,
|
||||||
}) : super(
|
}) : super(
|
||||||
track is LocalTrack
|
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) {
|
factory SpotubeMedia.fromMedia(mk.Media media) {
|
||||||
final track = media.uri.startsWith("http")
|
final track = media.uri.startsWith("http")
|
||||||
? Track.fromJson(media.extras?["track"])
|
? Track.fromJson(media.extras?["track"])
|
||||||
: LocalTrack.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