37 lines
1007 B
Dart
37 lines
1007 B
Dart
|
|
import '../../core/contracts/library.dart';
|
||
|
|
import '../../core/contracts/tmdb.dart';
|
||
|
|
import '../mappers/tmdb_image_url.dart';
|
||
|
|
|
||
|
|
|
||
|
|
int? seasonNumberFrom(EmbyRawSeason season) {
|
||
|
|
final indexNumber = season.IndexNumber;
|
||
|
|
if (indexNumber != null) return indexNumber;
|
||
|
|
final name = season.Name.trim().toLowerCase();
|
||
|
|
if (name == 'specials' || name == '特别篇' || name == 'sp') return 0;
|
||
|
|
final match = RegExp(r'\d+').firstMatch(season.Name);
|
||
|
|
if (match == null) return null;
|
||
|
|
return int.tryParse(match.group(0)!);
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
Map<int, String> tmdbStillUrlsByEpisode(
|
||
|
|
TmdbSeasonDetail? season,
|
||
|
|
String? imageBaseUrl,
|
||
|
|
) {
|
||
|
|
if (season == null || imageBaseUrl == null || imageBaseUrl.isEmpty) {
|
||
|
|
return const {};
|
||
|
|
}
|
||
|
|
final urls = <int, String>{};
|
||
|
|
for (final episode in season.episodes) {
|
||
|
|
final url = TmdbImageUrl.still(
|
||
|
|
imageBaseUrl,
|
||
|
|
episode.stillPath,
|
||
|
|
size: 'w500',
|
||
|
|
);
|
||
|
|
if (url != null && url.isNotEmpty) {
|
||
|
|
urls[episode.episodeNumber] = url;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return urls;
|
||
|
|
}
|