import 'dart:async'; import 'package:flutter/foundation.dart'; import 'package:flutter_cache_manager/flutter_cache_manager.dart'; import 'package:spotify/spotify.dart'; import 'package:spotube/extensions/video.dart'; import 'package:spotube/extensions/album_simple.dart'; import 'package:spotube/extensions/artist_simple.dart'; import 'package:spotube/models/track.dart'; import 'package:spotube/provider/user_preferences_provider.dart'; import 'package:spotube/services/pocketbase.dart'; import 'package:spotube/services/youtube.dart'; import 'package:spotube/utils/platform.dart'; import 'package:spotube/utils/primitive_utils.dart'; import 'package:spotube/utils/service_utils.dart'; import 'package:youtube_explode_dart/youtube_explode_dart.dart'; import 'package:collection/collection.dart'; enum SpotubeTrackMatchAlgorithm { // selects the first result returned from YouTube youtube, // selects the most popular one popular, // selects the most popular one from the author of the track authenticPopular, } class SpotubeTrack extends Track { final Video ytTrack; final String ytUri; final List> skipSegments; final List