import { IPicture } from "./picture"; /** * Indicates the tag types used by a file. */ export declare enum TagTypes { /** * @summary No tag types. */ None = 0, /** * @summary Xiph Vorbis Comment */ Xiph = 1, /** * @summary ID3v1 Tag */ Id3v1 = 2, /** * @summary ID3v2 Tag */ Id3v2 = 4, /** * @summary APE Tag */ Ape = 8, /** * @summary Apple's ILST Tag Format */ Apple = 16, /** * @summary ASF Tag */ Asf = 32, /** * @summary Standard RIFF INFO List Tag */ RiffInfo = 64, /** * @summary RIFF Movie ID List Tag */ MovieId = 128, /** * @summary DivX Tag */ DivX = 256, /** * @summary FLAC Metadata Block Pictures */ FlacPictures = 512, /** * @summary TIFF IFD Tag */ TiffIFD = 1024, /** * @summary XMP Tag */ XMP = 2048, /** * @summary Jpeg Comment Tag */ JpegComment = 4096, /** * @summary Gif Comment Tag */ GifComment = 8192, /** * @summary native PNG keywords */ Png = 16384, /** * @summary IPTC-IIM tag */ IPTCIIM = 32768, /** * @summary Audible Metadata Blocks Tag */ AudibleMetadata = 65536, /** * @summary Matroska native tag */ Matroska = 131072, /** * @summary All tag types. */ AllTags = 4294967295 } /** * Abstract class that provides generic access to standard tag features. All tag types will extend * this class. * Because not every tag type supports the same features, it may be useful to check that the value * is stored by re-reading the property after it is set. */ export declare abstract class Tag { /** * Gets the tag types contained in the current instance. A bit wise combined {@link TagTypes} * containing the tag types contained in the current instance. * @remarks * For a standard tag, the value should be intuitive. For example, Id3v2Tag objects have * a value of {@link TagTypes.Id3v2}. However, for CombinedTag type objects, they may * contain multiple or no types. */ abstract tagTypes: TagTypes; /** * Gets the size of the tag in bytes on disk as it was read from disk. */ abstract get sizeOnDisk(): number; /** * Gets the title for the media described by the current instance. * @remarks * The title is most commonly the name of the song, episode or a movie title. For example * "Time Won't Me Go" (a song by The Bravery), "Three Stories" (an episode of House MD), or * "Fear and Loathing In Las Vegas" (a movie). * @returns * Title of the media described by the current instance or `undefined` if no value is * present. */ get title(): string; /** * Sets the title for the media described by the current instance. * * The title is most commonly the name of the song, episode or a movie title. For example * "Time Won't Me Go" (a song by The Bravery), "Three Stories" (an episode of House MD), or * "Fear and Loathing In Las Vegas" (a movie). * * @param value Title of the media described by the current instance or `undefined` if no value * is present. */ set title(value: string); /** * Gets the sortable name for the title of the media described by the current instance. * * Possibly used to sort compilations or episodic content. * * @returns * Sortable name of the media described by the current instance or `undefined` if no * value is present */ get titleSort(): string; /** * Sets the sortable name for the title of the media described by the current instance. * * Possibly used to sort compilations or episodic content. * * @param value Sortable name of the media described by the current instance or `undefined` if * no value is present */ set titleSort(value: string); /** * Gets a description, one-line. It represents the tagline of the vide/music. * * This field gives a nice/short precision to the title, which is typically below the * title on the front cover of the media. For example for "Ocean's 13", this would be * "Revenge is a funny thing". * * @returns * Subtitle of the media represented by the current instance or `undefined` if no * value is present */ get subtitle(): string; /** * Sets a description, one-line. It represents the tagline of the vide/music. * * This field gives a nice/short precision to the title, which is typically below the * title on the front cover of the media. For example for "Ocean's 13", this would be * "Revenge is a funny thing". * * @param value Subtitle of the media represented by the current instance or `undefined` if no * value is present */ set subtitle(value: string); /** * Gets a short description of the media. For music, this could be the comment that the artist * made of his/her work. For a video, this should be a short summary of the story/plot, but * generally no spoliers. This should give the impression of what to expect in the media. * * This is especially relevant for a movie. For example, for "Fear and Loathing in Las * Vegas", this could be "An oddball journalist and his psychopathic lawyer travel to Las * Vegas for a series of psychedelic escapades." * * @returns * Description of the media represented by the current instance or `undefined` if no * value is present */ get description(): string; /** * Sets a short description of the media. For music, this could be the comment that the artist * made of his/her work. For a video, this should be a short summary of the story/plot, but * generally no spoliers. This should give the impression of what to expect in the media. * * This is especially relevant for a movie. For example, for "Fear and Loathing in Las * Vegas", this could be "An oddball journalist and his psychopathic lawyer travel to Las * Vegas for a series of psychedelic escapades." * * @param value Description of the media represented by the current instance or `undefined` if * no value is present */ set description(value: string); /** * Gets the performers or artists who performed in the media described by the current instance. * * This field is most commonly called "Artists" in audio media or "Actors" in video * media, and should be used to represent each artist/actor appearing in the media. It can * be simple in the form of "Above & Beyond" or more complicated in the form of * "Jono Grant, Tony McGuinness, Paavo Siljamäki", depending on the preferences of the * user and the degree to which they organize their media collection. * As the preference of the user may vary, applications should avoid limiting the user in * what constitutes the performers field - especially in regard to number of performers. * * @returns * Performers who performed in the media described by the current instance or an empty * array if no value is present. */ get performers(): string[]; /** * Sets the performers or artists who performed in the media described by the current instance. * * This field is most commonly called "Artists" in audio media or "Actors" in video * media, and should be used to represent each artist/actor appearing in the media. It can * be simple in the form of "Above & Beyond" or more complicated in the form of * "Jono Grant, Tony McGuinness, Paavo Siljamäki", depending on the preferences of the * user and the degree to which they organize their media collection. * As the preference of the user may vary, applications should avoid limiting the user in * what constitutes the performers field - especially regarding the number of performers. * * @param value Performers who performed in the media described by the current instance or an * empty array if no value is present. */ set performers(value: string[]); /** * Gets the sortable names of the performers or artists who performed in the media described by * the current instance. * * This is used to provide more control over how the media is sorted. Typical uses are to * skip articles or sort by last name. For example, "The Pillows" might be sorted as * "Pillows, The". See also: {@link performers} * * @returns * Sortable names for the performers who performed in the media described by the * current instance, or an empty array if no value is present. */ get performersSort(): string[]; /** * Gets the sortable names of the performers or artists who performed in the media described by * the current instance. * * This is used to provide more control over how the media is sorted. Typical uses are to * skip articles or sort by last name. For example, "The Pillows" might be sorted as * "Pillows, The". See also: {@link performers} * * @param value Sortable names for the performers who performed in the media described by the * current instance, or an empty array if no value is present. */ set performersSort(value: string[]); /** * Gets the characters portrayed by an actor for a video or instruments played by a musician * for music. This must match the {@link performers} array (for each person, correspond one/more * role). Several roles for the same artist/actor can be separated with semicolons. For * example: "Bass; Backing Vocals; Vibraphone". * * It is highly important to match each role to the performers. This means that an entry * in the {@link performersRole} array is `undefined` to maintain the relationship between * `performers[i]` and `performersRole[i]`. * * @returns * Array containing the roles played by the performers in the media described by the * current instance, or an empty array if no value is present. */ get performersRole(): string[]; /** * Sets the characters portrayed by an actor for a video or instruments played by a musician * for music. This must match the {@link performers} array (for each person, correspond one/more * role). Several roles for the same artist/actor can be separated with semicolons. For * example: "Bass; Backing Vocals; Vibraphone". * * It is highly important to match each role to the performers. This means that an entry * in the {@link performersRole} array is `undefined` to maintain the relationship between * `performers[i]` and `performersRole[i]`. * * @param value Array containing the roles played by the performers in the media described by * the current instance, or an empty array if no value is present. */ set performersRole(value: string[]); /** * Gets the band or artist who is credited in the creation of the entire album or * collection containing the media described by the current instance. * * This field is typically optional but aids in the sorting of compilations or albums * with multiple artist. For example, if an album has several artists, sorting by artist * will split up albums by the same artist. Having a single album artist for an entire * album solves this problem. * As this value is to be used as a sorting key, it should be used with less variation * than {@link performers}. Where performers can be broken into multiple artists, it is * best to stick to a single name. Eg, "Super8 & Tab" * * @returns * Band or artist credited with the creation of the entire album or collection * containing the media described by the current instance or an empty array if no value is * present */ get albumArtists(): string[]; /** * Sets the bands or artists who are credited in the creation of the entire album or * collection containing the media described by the current instance. * * This field is typically optional but aids in the sorting of compilations or albums * with multiple artist. For example, if an album has several artists, sorting by artist * will split up albums by the same artist. Having a single album artist for an entire * album solves this problem. * As this value is to be used as a sorting key, it should be used with less variation * than {@link performers}. Where performers can be broken into multiple artists, it is * best to stick to a single name. Eg, "Super8 & Tab" * * @param value Band or artist credited with the creation of the entire album or collection * containing the media described by the current instance or an empty array if no value is * present */ set albumArtists(value: string[]); /** * Gets the sortable names of the bands/artists who are credited with creating the entire * album or collection containing the media described by the current instance. See also: * {@link albumArtists} * * This is used to provide more control over how the media is sorted. Typical uses are to * skip articles or sort by last name. For example "Ben Folds" might be sorted as * "Folds, Ben". * As this value is to be used as a sorting key, it should be used with less variation than * {@link performers}. Where {@link performers} can be broken into multiple performers, it is * best to stick to a single album artist. Eg, "Van Buuren, Armin" * * @returns * Sortable names for the bands/artists are credited with the creation of the entire * album or collection containing the media described by the current instance, or an empty * array if no value is present. */ get albumArtistsSort(): string[]; /** * Sets the sortable names of the bands/artists who are credited with creating the entire * album or collection containing the media described by the current instance. See also: * {@link albumArtists} * * This is used to provide more control over how the media is sorted. Typical uses are to * skip articles or sort by last name. For example "Ben Folds" might be sorted as * "Folds, Ben". * As this value is to be used as a sorting key, it should be used with less variation than * {@link performers}. Where {@link performers} can be broken into multiple performers, it is * best to stick to a single album artist. Eg, "Van Buuren, Armin" * * @param value Sortable names for the bands/artists are credited with the creation of the * entire album or collection containing the media described by the current instance, or an * empty array if no value is present. */ set albumArtistsSort(value: string[]); /** * Gets the composers of the media represented by the current instance. * * This field represents the composers, songwriters, scriptwriters, or persons who * claim authorship of the media. * * @returns * Composers of the media represented by the current instance of an empty array if no * value is present. */ get composers(): string[]; /** * Sets the composers of the media represented by the current instance. * * This field represents the composers, songwriters, scriptwriters, or persons who * claim authorship of the media. * * @param value Composers of the media represented by the current instance of an empty array if * no value is present. */ set composers(value: string[]); /** * Gets the sortable names of the composers of the media represented by the current instance. * See also: {@link composers} * * This field is typically optional but aids in the sorting of compilations or albums * with multiple composers. * * @returns * Sortable names for the composers of the media represented by the current instance * or an empty array if no value is present. */ get composersSort(): string[]; /** * Sets the sortable names of the composers of the media represented by the current instance. * See also: {@link composers} * * This field is typically optional but aids in the sorting of compilations or albums * with multiple composers. * * @param value Sortable names for the composers of the media represented by the current * instance or an empty array if no value is present. */ set composersSort(value: string[]); /** * Gets the album of the media represented by the current instance. For video media, this * represents the collection the video belongs to. * * This field represents the name of the album the media belongs to. In the case of a * boxed set, it should be the name of the entire set rather than the individual disc. In * the case of a series, this should be the name of the series, rather than the season of a * series. * * For example, "Kintsugi" (an album by Death Cab for Cutie), "The Complete Red Green Show" * (a boxed set of TV episodes), or "Shark Tank" (a series with several seasons). * * @returns * Album of the media represented by the current instance or `undefined` if no value * is present */ get album(): string; /** * Sets the album of the media represented by the current instance. For video media, this * represents the collection the video belongs to. * * This field represents the name of the album the media belongs to. In the case of a * boxed set, it should be the name of the entire set rather than the individual disc. In * the case of a series, this should be the name of the series, rather than the season of a * series. * * For example, "Kintsugi" (an album by Death Cab for Cutie), "The Complete Red Green Show" * (a boxed set of TV episodes), or "Shark Tank" (a series with several seasons). * * @param value of the media represented by the current instance or `undefined` if no value * is present */ set album(value: string); /** * Gets the sortable name of the album title of the media represented by the current instance. * See also: {@link album} * * This field is typically optional but aids in sort of compilations or albums with * similar titles. * * @returns * Sortable name for the album title of the media or `undefined` if the value is not * present */ get albumSort(): string; /** * Sets the sortable name of the album title of the media represented by the current instance. * See also: {@link album} * * This field is typically optional but aids in sort of compilations or albums with * similar titles. * * @param value Sortable name for the album title of the media or `undefined` if the value is * not present */ set albumSort(value: string); /** * Gets a user comment on the media represented by the current instance. * * This field should be used to store user notes and comments. There is no constraint on * what text can be stored here, but it should not contain programmatic data. * Because this field contains notes the user might think of while consuming the media, * it may be useful for an application to make this field easily accessible, perhaps even * including it in the main interface. * * @returns * User comments on the media represented by the current instance or `undefined` if * the value is not present */ get comment(): string; /** * Sets a user comment on the media represented by the current instance. * * This field should be used to store user notes and comments. There is no constraint on * what text can be stored here, but it should not contain programmatic data. * Because this field contains notes the user might think of while consuming the media, * it may be useful for an application to make this field easily accessible, perhaps even * including it in the main interface. * * @param value User comments on the media represented by the current instance or `undefined` * if the value is not present */ set comment(value: string); /** * Gets the genres of the media represented by the current instance. * * This field represents genres that apply to the song, album, or video. This is often * used for filtering media. * A list of common audio genres as popularized by ID3v1 is stored in `genres.ts`. * Additionally, `genres.ts` contains video genres as used by DivX. * * @returns * Genres of the media represented by the current instance or an empty array if no * value is present. */ get genres(): string[]; /** * Sets the genres of the media represented by the current instance. * * This field represents genres that apply to the song, album, or video. This is often * used for filtering media. * A list of common audio genres as popularized by ID3v1 is stored in `genres.ts. * Additionally, `genres.ts` contains video genres as used by DivX. * * @param value Genres of the media represented by the current instance or an empty array if no * value is present. */ set genres(value: string[]); /** * Gets the year that the media represented by the current instance was recorded. * * Years greater than 9999 cannot be stored by most tagging formats and will be cleared * if a higher value is set. Some tagging formats store higher precision dates which will * be truncated when this property is set. Format specific implementations are necessary to * access the higher precision values. * * @returns * Year that the media represented by the current instance was created or `0` if no * value is present. */ get year(): number; /** * Sets the year that the media represented by the current instance was recorded. * * Years greater than 9999 cannot be stored by most tagging formats and will be cleared * if a higher value is set. Some tagging formats store higher precision dates which will * be truncated when this property is set. Format specific implementations are necessary to * access the higher precision values. * * @param value Year that the media represented by the current instance was created or `0` if no * value is present. */ set year(value: number); /** * Gets the position of the media represented by the current instance in its containing album * or season (for a series). * * This value should be the same as is listed on the album cover and no more than * {@link trackCount}, if {@link trackCount} is non-zero. * Most tagging formats store this as a string. To help sorting, a two-digit zero-padded * value is used in the resulting tag. * For a series, this property represents the episodes in a season of the series. * * @returns * Position of the media represented by the current instance in its containing album * or `0` if not specified. */ get track(): number; /** * Sets the position of the media represented by the current instance in its containing album * or season (for a series). * * This value should be the same as is listed on the album cover and no more than * {@link trackCount}, if {@link trackCount} is non-zero. * Most tagging formats store this as a string. To help sorting, a two-digit zero-padded * value is used in the resulting tag. * For a series, this property represents the episodes in a season of the series. * * @param value Position of the media represented by the current instance in its containing * album or `0` if not specified. */ set track(value: number); /** * Gets the number of tracks on the album or the number of episodes in a series of the media * represented by the current instance. * * If non-zero, this value should be equal to or greater than {@link track}. If * {@link track} is `0`, this value should also be `0`. * * @returns * Number of tracks on the album or number of episodes in a series of the media * represented by the current instance or `0` if not specified. */ get trackCount(): number; /** * Sets the number of tracks on the album or the number of episodes in a series of the media * represented by the current instance. * * If non-zero, this value should be equal to or greater than {@link track}. If * {@link track} is `0`, this value should also be `0`. * * @param value Number of tracks on the album or number of episodes in a series of the media * represented by the current instance or `0` if not specified. */ set trackCount(value: number); /** * Gets the number of the disc containing the media represented by the current instance in the * boxed set. For a series, this represents the season number. * * This value should be the same as the number that appears on the disc. For example, if * the disc is the first of three, the value should be `1`. It should be no more than * {@link discCount} if {@link discCount} is non-zero. * * @returns * Number of the disc or season of the media represented by the current instance in a * boxed set. */ get disc(): number; /** * Sets the number of the disc containing the media represented by the current instance in the * boxed set. For a series, this represents the season number. * * This value should be the same as the number that appears on the disc. For example, if * the disc is the first of three, the value should be `1`. It should be no more than * {@link discCount} if {@link discCount} is non-zero. * * @param value Number of the disc or season of the media represented by the current instance * in a boxed set. */ set disc(value: number); /** * Gets the number of discs or seasons in the boxed set containing the media represented by the * current instance. * * If non-zero, this should be at least equal to {@link disc}. If {@link disc} is zero, * this value should also be zero. * * @returns * Number of discs or seasons in the boxed set containing the media represented by the * current instance or `0` if not specified. */ get discCount(): number; /** * Sets the number of discs or seasons in the boxed set containing the media represented by the * current instance. * * If non-zero, this should be at least equal to {@link disc}. If {@link disc} is zero, * this value should also be zero. * * @param value Number of discs or seasons in the boxed set containing the media represented by * the current instance or `0` if not specified. */ set discCount(value: number); /** * Gets the lyrics or script of the media represented by the current instance. * * This field contains a plain text representation of the lyrics or scripts with line * breaks and whitespace being the only formatting marks. * Some formats support more advanced lyrics, like synchronized lyrics, but those must be * accessed using format-specific implementations. * * @returns * Lyrics or script of the media represented by the current instance or `undefined` if * no value is present */ get lyrics(): string; /** * Sets the lyrics or script of the media represented by the current instance. * * This field contains a plain text representation of the lyrics or scripts with line * breaks and whitespace being the only formatting marks. * Some formats support more advanced lyrics, like synchronized lyrics, but those must be * accessed using format-specific implementations. * * @param value Lyrics or script of the media represented by the current instance or * `undefined` if no value is present */ set lyrics(value: string); /** * Gets the grouping on the album which the media in the current instance belongs to. * * This field contains a non-physical group to which the track belongs. In classical * music this could be a movement. It could also be parts of a series like "Introduction", * "Closing Remarks", etc. * * @returns * Grouping on the album which the media in the current instance belongs to or * `undefined` if no value is present. */ get grouping(): string; /** * Sets the grouping on the album which the media in the current instance belongs to. * * This field contains a non-physical group to which the track belongs. In classical * music this could be a movement. It could also be parts of a series like "Introduction", * "Closing Remarks", etc. * * @param value Grouping on the album which the media in the current instance belongs to or * `undefined` if no value is present. */ set grouping(value: string); /** * Gets the number of beats per minute in the audio of the media represented by the current * instance. * * This field is useful for DJ's who are trying to beat match tracks. It should be * calculated from the audio or pulled from a database. * * @returns * Beats per minute of the audio in the media represented by the current instance, or * `0` if not specified */ get beatsPerMinute(): number; /** * Sets the number of beats per minute in the audio of the media represented by the current * instance. * * This field is useful for DJ's who are trying to beat match tracks. It should be * calculated from the audio or pulled from a database. * * @param value Beats per minute of the audio in the media represented by the current instance, * or `0` if not specified */ set beatsPerMinute(value: number); /** * Gets the conductor or director of the media represented by the current instance. * * This field is most useful for organizing classical music and movies. * * @returns * Conductor or director of the media represented by the current instance or * `undefined` if no value present. */ get conductor(): string; /** * Sets the conductor or director of the media represented by the current instance. * * This field is most useful for organizing classical music and movies. * * @param value Conductor or director of the media represented by the current instance or * `undefined` if no value present. */ set conductor(value: string); /** * Gets the copyright information for the media represented by the current instance. * * This field should be used for storing copyright information. It may be useful to show * this information somewhere in the program while the media is playing. * Players should not support editing this field, but media creation tools should * definitely allow modification. * * @returns * Copyright information for the media represented by the current instance or * `undefined` if no value is present. */ get copyright(): string; /** * Sets the copyright information for the media represented by the current instance. * * This field should be used for storing copyright information. It may be useful to show * this information somewhere in the program while the media is playing. * Players should not support editing this field, but media creation tools should * definitely allow modification. * * @param value Copyright information for the media represented by the current instance or * `undefined` if no value is present. */ set copyright(value: string); /** * Gets the date and time at which the tag has been written. * @returns Date/time at which the tag has been written, or `undefined` if no value is present */ get dateTagged(): Date | undefined; /** * Sets the date and time at which the tag has been written. * @param value Date/time at which the tag has been written, or `undefined` if no value is * present */ set dateTagged(value: Date | undefined); /** * Gets the MusicBrainz artist ID of the media represented by the current instance. * * This field represents the MusicBrainz ArtistID, and is used to uniquely identify a * particular artist of the track. * * @returns * MusicBrainz ArtistID of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzArtistId(): string; /** * Sets the MusicBrainz artist ID of the media represented by the current instance. * * This field represents the MusicBrainz ArtistID, and is used to uniquely identify a * particular artist of the track. * * @param value MusicBrainz ArtistID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzArtistId(value: string); /** * Gets the MusicBrainz release group ID of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseGroupID and is used to uniquely identify * a particular release group to which this track belongs. * * @returns * MusicBrainz ReleaseGroupID of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseGroupId(): string; /** * Sets the MusicBrainz release group ID of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseGroupID and is used to uniquely identify * a particular release group to which this track belongs. * * @param value MusicBrainz ReleaseGroupID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseGroupId(value: string); /** * Gets the MusicBrainz release ID of the media represented by the current instance. * * This field represents the MusicBrains ReleaseID and is used to uniquely identify a * particular release to which this track belongs. * * @returns * MusicBrainz ReleaseID of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseId(): string; /** * Sets the MusicBrainz release ID of the media represented by the current instance. * * This field represents the MusicBrains ReleaseID and is used to uniquely identify a * particular release to which this track belongs. * * @param value MusicBrainz ReleaseID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseId(value: string); /** * Gets the MusicBrainz release artist ID of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseArtistID, and is used to uniquely * identify a particular album artist credited with the album. * * @returns * MusicBrainz ReleaseArtistID of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseArtistId(): string; /** * Sets the MusicBrainz release artist ID of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseArtistID, and is used to uniquely * identify a particular album artist credited with the album. * * @param value MusicBrainz ReleaseArtistID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseArtistId(value: string); /** * Gets the MusicBrainz track ID of the media represented by the media represented by the * current instance. * * This field represents the MusicBrainz TrackID and is used to uniquely identify a * particular track. * * @returns * MusicBrainz TrackID of the media represented by the current instance or `undefined` * if no value is present */ get musicBrainzTrackId(): string; /** * Sets the MusicBrainz track ID of the media represented by the media represented by the * current instance. * * This field represents the MusicBrainz TrackID and is used to uniquely identify a * particular track. * * @param value MusicBrainz TrackID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzTrackId(value: string); /** * Gets the MusicBrainz disc ID of the media represented by the current instance. * * This field represents the MusicBrainz DiscID and is used to uniquely identify the * particular released media associated with this track. * * @returns * MusicBrainz DiscID of the media represented by the current instance or `undefined` * if no value is present */ get musicBrainzDiscId(): string; /** * Sets the MusicBrainz disc ID of the media represented by the current instance. * * This field represents the MusicBrainz DiscID and is used to uniquely identify the * particular released media associated with this track. * * @param value MusicBrainz DiscID of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzDiscId(value: string); /** * Gets the MusicIP PUID of the media represented by the current instance. * * This field represents the MusicIP PUID, an acoustic fingerprint identifier. It * identifies wht this track "sounds like". * * @returns * MusicIP PUID of the media represented by the current instance or `undefined` if no * value is present */ get musicIpId(): string; /** * Sets the MusicIP PUID of the media represented by the current instance. * * This field represents the MusicIP PUID, an acoustic fingerprint identifier. It * identifies wht this track "sounds like". * * @param value MusicIP PUID of the media represented by the current instance or `undefined` * if no value is present */ set musicIpId(value: string); /** * Gets the Amazon ID of the media represented by the current instance. * * This field represents the AmazonID, also called the ASIN, and is used to uniquely * identify the particular track or album in the Amazon catalog. * * @returns * Amazon ID of the media represented by the current instance or `undefined` if no * value is present */ get amazonId(): string; /** * Sets the Amazon ID of the media represented by the current instance. * * This field represents the AmazonID, also called the ASIN, and is used to uniquely * identify the particular track or album in the Amazon catalog. * * @param value Amazon ID of the media represented by the current instance or `undefined` if no * value is present */ set amazonId(value: string); /** * Gets the MusicBrainz release status of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseStatus used to describe how 'official' a * release is. Common statuses are: `Official`, `Promotion`, `Bootleg`, `Pseudo-release`. * * @returns * MusicBrainz ReleaseStatus of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseStatus(): string; /** * Sets the MusicBrainz release status of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseStatus used to describe how 'official' a * release is. Common statuses are: `Official`, `Promotion`, `Bootleg`, `Pseudo-release`. * * @param value MusicBrainz ReleaseStatus of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseStatus(value: string); /** * Gets the MusicBrainz release type of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseType that describes what kind of release * a release is. Common types are: `Single`, `Album`, `EP`, `Compilation`, `Soundtrack, * `SpokenWord`, `Interview`, `Audiobook`, `Live`, `Remix`, and `Other`. Careful thought * must be given when using this field to decide if a particular track "is a compilation". * * @returns * MusicBrainz ReleaseType of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseType(): string; /** * Sets the MusicBrainz release type of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseType that describes what kind of release * a release is. Common types are: `Single`, `Album`, `EP`, `Compilation`, `Soundtrack, * `SpokenWord`, `Interview`, `Audiobook`, `Live`, `Remix`, and `Other`. Careful thought * must be given when using this field to decide if a particular track "is a compilation". * * @param value MusicBrainz ReleaseType of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseType(value: string); /** * Gets the MusicBrainz release country of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseCountry which describes the country in * which an album was released. Note that the release country of an album is not * necessarily the country in which it was produced. The label itself will typically be * more relevant. Eg, a release on "Foo Records UK" that has "Made in Austria" printed on * it will likely be a UK release. * * @returns * MusicBrainz ReleaseCountry of the media represented by the current instance or * `undefined` if no value is present */ get musicBrainzReleaseCountry(): string; /** * Sets the MusicBrainz release country of the media represented by the current instance. * * This field represents the MusicBrainz ReleaseCountry which describes the country in * which an album was released. Note that the release country of an album is not * necessarily the country in which it was produced. The label itself will typically be * more relevant. Eg, a release on "Foo Records UK" that has "Made in Austria" printed on * it will likely be a UK release. * * @param value MusicBrainz ReleaseCountry of the media represented by the current instance or * `undefined` if no value is present */ set musicBrainzReleaseCountry(value: string); /** * Gets the ReplayGain track gain in dB. * @returns Track gain as per ReplayGain specifications, in dB, or `NaN` if no value is set */ get replayGainTrackGain(): number; /** * Sets the ReplayGain track gain in dB. * @param value Track gain as per ReplayGain specifications, in dB, or `NaN` if no value is set */ set replayGainTrackGain(value: number); /** * Gets the ReplayGain track peak sample. * @returns Track peak as per the ReplayGain specifications, or `NaN` if no value is set */ get replayGainTrackPeak(): number; /** * Sets the ReplayGain track peak sample. * @param value Track peak as per the ReplayGain specifications, or `NaN` if no value is set */ set replayGainTrackPeak(value: number); /** * Gets the ReplayGain album gain in dB. * @returns Album gain as per the ReplayGain specifications, in dB, or `NaN` if no value is set */ get replayGainAlbumGain(): number; /** * Sets the ReplayGain album gain in dB. * @param value Album gain as per the ReplayGain specifications, in dB, or `NaN` if no value is * set */ set replayGainAlbumGain(value: number); /** * Gets the ReplayGain album peak sample. * @returns Album peak as per the ReplayGain specifications, or `NaN` if no value is set */ get replayGainAlbumPeak(): number; /** * Sets the ReplayGain album peak sample. * @param value Album peak as per the ReplayGain specifications, or `NaN` if no value is set */ set replayGainAlbumPeak(value: number); /** * Gets the initial key of the track. * @returns Initial key of the track or `undefined` if no value is set */ get initialKey(): string; /** * Sets the initial key of the track. * @param value Initial key of the track or `undefined` if no value is set */ set initialKey(value: string); /** * Gets the remixer of the track. * @returns Remixer of the track or `undefined` if no value is set */ get remixedBy(): string; /** * Sets the remixer of the track. * @param value Remixer of the track or `undefined` if no value is set */ set remixedBy(value: string); /** * Gets the publisher of the track. * @returns Publisher of the track or `undefined` if no value is set */ get publisher(): string; /** * Sets the publisher of the track. * @param value Publisher of the track or `undefined` if no value is set */ set publisher(value: string); /** * Gets the ISRC (International Standard Recording Code) of the track. * @returns ISRC of the track or `undefined` if no value is set */ get isrc(): string; /** * Sets the ISRC (International Standard Recording Code) of the track. * @param value ISRC of the track or `undefined` if no value is set */ set isrc(value: string); /** * Gets a collection of pictures associated with the media represented by the current instance. * * Typically, this value is used to store an album cover or icon to use for the file, but * it is capable of holding any type of image or file, including pictures of the band, the * recording studio, the concert, etc. * * @returns * Array containing a collection of pictures associated with the media represented by * the current instance or an empty array if no pictures are present. */ get pictures(): IPicture[]; /** * Sets a collection of pictures associated with the media represented by the current instance. * * Typically, this value is used to store an album cover or icon to use for the file, but * it is capable of holding any type of image or file, including pictures of the band, the * recording studio, the concert, etc. * * @param value Array containing a collection of pictures associated with the media represented by * the current instance or an empty array if no pictures are present. */ set pictures(value: IPicture[]); /** * Gets whether the album described by the current instance is a compilation. */ get isCompilation(): boolean; /** * Gets whether the album described by the current instance is a compilation. * @param value Whether the album described by the current instance is a compilation */ set isCompilation(value: boolean); /** * Gets the first value contained in {@link albumArtists}. */ get firstAlbumArtist(): string; /** * Gets the first value contained in {@link albumArtistsSort} */ get firstAlbumArtistSort(): string; /** * Gets the first value contained in {@link performers} */ get firstPerformer(): string; /** * Gets the first value contained in {@link performersSort} */ get firstPerformerSort(): string; /** * Gets the first value contained in {@link composers} */ get firstComposer(): string; /** * Gets the first value contained in {@link composersSort} */ get firstComposerSort(): string; /** * Gets the first value contained in {@link genres} */ get firstGenre(): string; /** * Gets a semicolon and space separated string containing the values in {@link albumArtists} */ get joinedAlbumArtists(): string; /** * Gets a semicolon and space separated string containing the values in {@link performers} */ get joinedPerformers(): string; /** * Gets a semicolon and space separated string containing the values in {@link performersSort} */ get joinedPerformersSort(): string; /** * Gets a semicolon and space separated string containing the values in {@link composers} */ get joinedComposers(): string; /** * Gets a semicolon and space separated string containing the values in {@link genres} */ get joinedGenres(): string; /** * Gets whether the current instance is empty. * @remarks * In the default implementation, this checks the values supported by {@link Tag}, but it * may be extended by child classes to support other values. * @returns `true` if the current instance does not contain any values. `false` otherwise */ get isEmpty(): boolean; /** * Generates an array of tag types that are set in the provided flags value. * @param tagTypes Tag types that have been OR'd together. */ static tagTypeFlagsToArray(tagTypes: TagTypes): TagTypes[]; /** * Clears all values stored in the current instance. * @remarks The clearing procedure is format specific and should clear all values. */ abstract clear(): void; /** * Copies the values from the current instance to another {@link Tag}, optionally overwriting * existing values. * * This method only copies the most basic values when copying between different tag * formats. However, if `target` is of the same type as the current instance, * more advanced copying may be done. For example if both `this` and `target` are * {@link Id3v2Tag}, all frames will be copied to the target. * * @param target Target tag to copy values to * @param overwrite Whether or not to copy values over existing ones */ copyTo(target: Tag, overwrite: boolean): void; /** * Gets the first string in an array. * @param group Array of strings to get the first string from. * @returns * First string contained in `group` or `undefined` if the array is * `undefined` or empty * @protected */ protected static firstInGroup(group: string[]): string; /** * Checks if a value is falsy or empty. * @param value Object to check * @returns * If `value` is a string, `true` is returned if the value is falsy or all * whitespace, `false` is returned otherwise. If `value` is an array of strings, * the array must be falsy or all elements must be falsy or whitespace to return `true`. * @protected */ protected static isFalsyOrLikeEmpty(value: string | string[]): boolean; /** * Joins an array of string into a single, semicolon and space separated string. * @param group Array of string to join * @returns * A semicolon and space separated string containing the values from `group` * or undefined if the array is `undefined` or empty. * @protected */ protected static joinGroup(group: string[]): string; }