129 lines
3.2 KiB
TypeScript
129 lines
3.2 KiB
TypeScript
|
interface Listener {
|
||
|
send(key: any, data: any): void
|
||
|
}
|
||
|
|
||
|
interface TagOptions {
|
||
|
title: boolean,
|
||
|
artist: boolean,
|
||
|
album: boolean,
|
||
|
cover: boolean,
|
||
|
trackNumber: boolean,
|
||
|
trackTotal: boolean,
|
||
|
discNumber: boolean,
|
||
|
discTotal: boolean,
|
||
|
albumArtist: boolean,
|
||
|
genre: boolean,
|
||
|
year: boolean,
|
||
|
date: boolean,
|
||
|
explicit: boolean,
|
||
|
isrc: boolean,
|
||
|
length: boolean,
|
||
|
barcode: boolean,
|
||
|
bpm: boolean,
|
||
|
replayGain: boolean,
|
||
|
label: boolean,
|
||
|
lyrics: boolean,
|
||
|
syncedLyrics: boolean,
|
||
|
copyright: boolean,
|
||
|
composer: boolean,
|
||
|
involvedPeople: boolean,
|
||
|
source: boolean,
|
||
|
rating: boolean,
|
||
|
savePlaylistAsCompilation: boolean,
|
||
|
useNullSeparator: boolean,
|
||
|
saveID3v1: boolean,
|
||
|
multiArtistSeparator: string,
|
||
|
singleAlbumArtist: boolean,
|
||
|
coverDescriptionUTF8: boolean
|
||
|
}
|
||
|
|
||
|
interface DeemixSettings {
|
||
|
downloadLocation: string,
|
||
|
tracknameTemplate: string,
|
||
|
albumTracknameTemplate: string,
|
||
|
playlistTracknameTemplate: string,
|
||
|
createPlaylistFolder: boolean,
|
||
|
playlistNameTemplate: string,
|
||
|
createArtistFolder: boolean,
|
||
|
artistNameTemplate: string,
|
||
|
createAlbumFolder: boolean,
|
||
|
albumNameTemplate: string,
|
||
|
createCDFolder: boolean,
|
||
|
createStructurePlaylist: boolean,
|
||
|
createSingleFolder: boolean,
|
||
|
padTracks: boolean,
|
||
|
paddingSize: string,
|
||
|
illegalCharacterReplacer: string,
|
||
|
queueConcurrency: number,
|
||
|
maxBitrate: keyof TrackFormats,
|
||
|
fallbackBitrate: boolean,
|
||
|
fallbackSearch: boolean,
|
||
|
logErrors: boolean,
|
||
|
logSearched: boolean,
|
||
|
overwriteFile: OverwriteOption,
|
||
|
createM3U8File: boolean,
|
||
|
playlistFilenameTemplate: string,
|
||
|
syncedLyrics: boolean,
|
||
|
embeddedArtworkSize: number,
|
||
|
embeddedArtworkPNG: boolean,
|
||
|
localArtworkSize: number,
|
||
|
localArtworkFormat: string,
|
||
|
saveArtwork: boolean,
|
||
|
coverImageTemplate: string,
|
||
|
saveArtworkArtist: boolean,
|
||
|
artistImageTemplate: string,
|
||
|
jpegImageQuality: number,
|
||
|
dateFormat: string,
|
||
|
albumVariousArtists: boolean,
|
||
|
removeAlbumVersion: boolean,
|
||
|
removeDuplicateArtists: boolean,
|
||
|
featuredToTitle: FeaturesOption,
|
||
|
titleCasing: string,
|
||
|
artistCasing: string,
|
||
|
executeCommand: string,
|
||
|
tags: TagOptions
|
||
|
}
|
||
|
|
||
|
declare module 'deemix' {
|
||
|
function generateDownloadObject(dz: Deezer, link: string, bitrate: TrackFormats, plugins?: any, listener?: Listener): Promise<IDownloadObject>
|
||
|
|
||
|
module downloader {
|
||
|
class Downloader {
|
||
|
dz: Deezer;
|
||
|
|
||
|
constructor(dz: Deezer, downloadObject: IDownloadObject, settings: DeemixSettings, listener: Listener): void
|
||
|
|
||
|
start(): Promise<void>
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module types {
|
||
|
module downloadObjects {
|
||
|
class IDownloadObject {
|
||
|
isCanceled: boolean;
|
||
|
|
||
|
constructor(obj: any): void;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
module settings {
|
||
|
enum OverwriteOption {
|
||
|
OVERWRITE = 'y', // Yes, overwrite the file
|
||
|
DONT_OVERWRITE = 'n', // No, don't overwrite the file
|
||
|
DONT_CHECK_EXT = 'e', // No, and don't check for extensions
|
||
|
KEEP_BOTH = 'b', // No, and keep both files
|
||
|
ONLY_TAGS = 't', // Overwrite only the tags
|
||
|
}
|
||
|
|
||
|
// What should I do with featured artists?
|
||
|
enum FeaturesOption {
|
||
|
NO_CHANGE = "0", // Do nothing
|
||
|
REMOVE_TITLE = "1", // Remove from track title
|
||
|
REMOVE_TITLE_ALBUM = "3", // Remove from track title and album title
|
||
|
MOVE_TITLE = "2" // Move to track title
|
||
|
}
|
||
|
|
||
|
const DEFAULTS: DeemixSettings
|
||
|
}
|
||
|
}
|