mirror of
https://github.com/KRTirtho/spotube.git
synced 2025-09-13 16:05:18 +00:00
Do not probe Song.Link when ISRC results are valid, fix rate limit
This commit is contained in:
parent
2c5cd8d505
commit
88f208a7d0
@ -69,34 +69,39 @@ extension TrackExtensions on Track {
|
||||
}
|
||||
}
|
||||
|
||||
extension TrackSimpleExtensions on TrackSimple {
|
||||
Future<Track> asTrack(AlbumSimple album, ref) async {
|
||||
extension IterableTrackSimpleExtensions on Iterable<TrackSimple> {
|
||||
Future<List<Track>> asTracks(AlbumSimple album, ref) async {
|
||||
try {
|
||||
final spotify = ref.read(spotifyProvider);
|
||||
return await spotify.invoke((api) => api.tracks.get(id!));
|
||||
final tracks = await spotify.invoke(
|
||||
(api) => api.tracks.list(map((trackSimple) => trackSimple.id!).toList()));
|
||||
return tracks.toList();
|
||||
} catch (e, stack) {
|
||||
// Ignore errors and create the track locally
|
||||
AppLogger.reportError(e, stack);
|
||||
|
||||
Track track = Track();
|
||||
track.name = name;
|
||||
track.album = album;
|
||||
track.artists = artists;
|
||||
track.availableMarkets = availableMarkets;
|
||||
track.discNumber = discNumber;
|
||||
track.durationMs = durationMs;
|
||||
track.explicit = explicit;
|
||||
track.externalUrls = externalUrls;
|
||||
track.href = href;
|
||||
track.id = id;
|
||||
track.isPlayable = isPlayable;
|
||||
track.linkedFrom = linkedFrom;
|
||||
track.name = name;
|
||||
track.previewUrl = previewUrl;
|
||||
track.trackNumber = trackNumber;
|
||||
track.type = type;
|
||||
track.uri = uri;
|
||||
return track;
|
||||
List<Track> tracks = [];
|
||||
for (final trackSimple in this) {
|
||||
Track track = Track();
|
||||
track.album = album;
|
||||
track.name = trackSimple.name;
|
||||
track.artists = trackSimple.artists;
|
||||
track.availableMarkets = trackSimple.availableMarkets;
|
||||
track.discNumber = trackSimple.discNumber;
|
||||
track.durationMs = trackSimple.durationMs;
|
||||
track.explicit = trackSimple.explicit;
|
||||
track.externalUrls = trackSimple.externalUrls;
|
||||
track.href = trackSimple.href;
|
||||
track.id = trackSimple.id;
|
||||
track.isPlayable = trackSimple.isPlayable;
|
||||
track.linkedFrom = trackSimple.linkedFrom;
|
||||
track.previewUrl = trackSimple.previewUrl;
|
||||
track.trackNumber = trackSimple.trackNumber;
|
||||
track.type = trackSimple.type;
|
||||
track.uri = trackSimple.uri;
|
||||
tracks.add(track);
|
||||
}
|
||||
return tracks;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -54,8 +54,7 @@ class AlbumCard extends HookConsumerWidget {
|
||||
|
||||
Future<List<Track>> fetchAllTrack() async {
|
||||
if (album.tracks != null && album.tracks!.isNotEmpty) {
|
||||
return await Future.wait(
|
||||
album.tracks!.map((track) => track.asTrack(album, ref)));
|
||||
return album.tracks!.asTracks(album, ref);
|
||||
}
|
||||
await ref.read(albumTracksProvider(album).future);
|
||||
return ref.read(albumTracksProvider(album).notifier).fetchAll();
|
||||
|
@ -33,7 +33,7 @@ class AlbumTracksNotifier extends AutoDisposeFamilyPaginatedAsyncNotifier<Track,
|
||||
final tracks = await spotify.invoke(
|
||||
(api) => api.albums.tracks(arg.id!).getPage(limit, offset),
|
||||
);
|
||||
final List<Track> items = await Future.wait(tracks.items?.map((e) => e.asTrack(arg, ref)) ?? []);
|
||||
final items = await tracks.items!.asTracks(arg, ref);
|
||||
|
||||
return (
|
||||
items: items,
|
||||
|
@ -284,12 +284,13 @@ class YoutubeSourcedTrack extends SourcedTrack {
|
||||
}) async {
|
||||
final videoResults = <YoutubeVideoInfo>[];
|
||||
|
||||
videoResults.addAll(await fetchFromIsrc(track: track, provider: youtubeEngineProvider, ref: ref));
|
||||
final isrcResults = await fetchFromIsrc(track: track, provider: youtubeEngineProvider, ref: ref);
|
||||
videoResults.addAll(isrcResults);
|
||||
|
||||
final links = await SongLinkService.links(track.id!);
|
||||
final ytLink = links.firstWhereOrNull((link) => link.platform == "youtube");
|
||||
|
||||
if (ytLink?.url != null) {
|
||||
if (isrcResults.isEmpty && ytLink?.url != null) {
|
||||
try {
|
||||
videoResults.add(
|
||||
YoutubeVideoInfo.fromVideo(
|
||||
|
Loading…
Reference in New Issue
Block a user