mirror of
https://github.com/zarzet/SpotiFLAC-Mobile.git
synced 2026-04-11 22:28:33 +02:00
175 lines
4.7 KiB
Dart
175 lines
4.7 KiB
Dart
class DownloadRequestPayload {
|
|
final String isrc;
|
|
final String service;
|
|
final String spotifyId;
|
|
final String trackName;
|
|
final String artistName;
|
|
final String albumName;
|
|
final String albumArtist;
|
|
final String coverUrl;
|
|
final String outputDir;
|
|
final String filenameFormat;
|
|
final String quality;
|
|
final bool embedMetadata;
|
|
final String artistTagMode;
|
|
final bool embedLyrics;
|
|
final bool embedMaxQualityCover;
|
|
final int trackNumber;
|
|
final int discNumber;
|
|
final int totalTracks;
|
|
final int totalDiscs;
|
|
final String releaseDate;
|
|
final String itemId;
|
|
final int durationMs;
|
|
final String source;
|
|
final String genre;
|
|
final String label;
|
|
final String copyright;
|
|
final String composer;
|
|
final String tidalId;
|
|
final String qobuzId;
|
|
final String deezerId;
|
|
final String lyricsMode;
|
|
final bool useExtensions;
|
|
final bool useFallback;
|
|
final String storageMode;
|
|
final String safTreeUri;
|
|
final String safRelativeDir;
|
|
final String safFileName;
|
|
final String safOutputExt;
|
|
final String songLinkRegion;
|
|
|
|
const DownloadRequestPayload({
|
|
this.isrc = '',
|
|
this.service = '',
|
|
this.spotifyId = '',
|
|
required this.trackName,
|
|
required this.artistName,
|
|
required this.albumName,
|
|
this.albumArtist = '',
|
|
this.coverUrl = '',
|
|
required this.outputDir,
|
|
required this.filenameFormat,
|
|
this.quality = 'LOSSLESS',
|
|
this.embedMetadata = true,
|
|
this.artistTagMode = 'joined',
|
|
this.embedLyrics = true,
|
|
this.embedMaxQualityCover = true,
|
|
this.trackNumber = 0,
|
|
this.discNumber = 0,
|
|
this.totalTracks = 1,
|
|
this.totalDiscs = 0,
|
|
this.releaseDate = '',
|
|
this.itemId = '',
|
|
this.durationMs = 0,
|
|
this.source = '',
|
|
this.genre = '',
|
|
this.label = '',
|
|
this.copyright = '',
|
|
this.composer = '',
|
|
this.tidalId = '',
|
|
this.qobuzId = '',
|
|
this.deezerId = '',
|
|
this.lyricsMode = 'embed',
|
|
this.useExtensions = false,
|
|
this.useFallback = false,
|
|
this.storageMode = 'app',
|
|
this.safTreeUri = '',
|
|
this.safRelativeDir = '',
|
|
this.safFileName = '',
|
|
this.safOutputExt = '',
|
|
this.songLinkRegion = 'US',
|
|
});
|
|
|
|
Map<String, dynamic> toJson() {
|
|
return {
|
|
'isrc': isrc,
|
|
'service': service,
|
|
'spotify_id': spotifyId,
|
|
'track_name': trackName,
|
|
'artist_name': artistName,
|
|
'album_name': albumName,
|
|
'album_artist': albumArtist,
|
|
'cover_url': coverUrl,
|
|
'output_dir': outputDir,
|
|
'filename_format': filenameFormat,
|
|
'quality': quality,
|
|
'embed_metadata': embedMetadata,
|
|
'artist_tag_mode': artistTagMode,
|
|
'embed_lyrics': embedLyrics,
|
|
'embed_max_quality_cover': embedMaxQualityCover,
|
|
'track_number': trackNumber,
|
|
'disc_number': discNumber,
|
|
'total_tracks': totalTracks,
|
|
'total_discs': totalDiscs,
|
|
'release_date': releaseDate,
|
|
'item_id': itemId,
|
|
'duration_ms': durationMs,
|
|
'source': source,
|
|
'genre': genre,
|
|
'label': label,
|
|
'copyright': copyright,
|
|
'composer': composer,
|
|
'tidal_id': tidalId,
|
|
'qobuz_id': qobuzId,
|
|
'deezer_id': deezerId,
|
|
'lyrics_mode': lyricsMode,
|
|
'use_extensions': useExtensions,
|
|
'use_fallback': useFallback,
|
|
'storage_mode': storageMode,
|
|
'saf_tree_uri': safTreeUri,
|
|
'saf_relative_dir': safRelativeDir,
|
|
'saf_file_name': safFileName,
|
|
'saf_output_ext': safOutputExt,
|
|
'songlink_region': songLinkRegion,
|
|
};
|
|
}
|
|
|
|
DownloadRequestPayload withStrategy({
|
|
bool? useExtensions,
|
|
bool? useFallback,
|
|
}) {
|
|
return DownloadRequestPayload(
|
|
isrc: isrc,
|
|
service: service,
|
|
spotifyId: spotifyId,
|
|
trackName: trackName,
|
|
artistName: artistName,
|
|
albumName: albumName,
|
|
albumArtist: albumArtist,
|
|
coverUrl: coverUrl,
|
|
outputDir: outputDir,
|
|
filenameFormat: filenameFormat,
|
|
quality: quality,
|
|
embedMetadata: embedMetadata,
|
|
artistTagMode: artistTagMode,
|
|
embedLyrics: embedLyrics,
|
|
embedMaxQualityCover: embedMaxQualityCover,
|
|
trackNumber: trackNumber,
|
|
discNumber: discNumber,
|
|
totalTracks: totalTracks,
|
|
totalDiscs: totalDiscs,
|
|
releaseDate: releaseDate,
|
|
itemId: itemId,
|
|
durationMs: durationMs,
|
|
source: source,
|
|
genre: genre,
|
|
label: label,
|
|
copyright: copyright,
|
|
composer: composer,
|
|
tidalId: tidalId,
|
|
qobuzId: qobuzId,
|
|
deezerId: deezerId,
|
|
lyricsMode: lyricsMode,
|
|
useExtensions: useExtensions ?? this.useExtensions,
|
|
useFallback: useFallback ?? this.useFallback,
|
|
storageMode: storageMode,
|
|
safTreeUri: safTreeUri,
|
|
safRelativeDir: safRelativeDir,
|
|
safFileName: safFileName,
|
|
safOutputExt: safOutputExt,
|
|
songLinkRegion: songLinkRegion,
|
|
);
|
|
}
|
|
}
|