FloMetadata

Struct FloMetadata 

Source
pub struct FloMetadata {
Show 80 fields pub title: Option<String>, pub subtitle: Option<String>, pub content_group: Option<String>, pub album: Option<String>, pub original_album: Option<String>, pub set_subtitle: Option<String>, pub track_number: Option<u32>, pub track_total: Option<u32>, pub disc_number: Option<u32>, pub disc_total: Option<u32>, pub isrc: Option<String>, pub artist: Option<String>, pub album_artist: Option<String>, pub conductor: Option<String>, pub remixer: Option<String>, pub original_artist: Option<String>, pub composer: Option<String>, pub lyricist: Option<String>, pub original_lyricist: Option<String>, pub encoded_by: Option<String>, pub involved_people: Option<Vec<(String, String)>>, pub musician_credits: Option<Vec<(String, String)>>, pub genre: Option<String>, pub mood: Option<String>, pub bpm: Option<u32>, pub key: Option<String>, pub language: Option<String>, pub length_ms: Option<u64>, pub year: Option<u32>, pub recording_time: Option<String>, pub release_time: Option<String>, pub original_release_time: Option<String>, pub encoding_time: Option<String>, pub tagging_time: Option<String>, pub copyright: Option<String>, pub produced_notice: Option<String>, pub publisher: Option<String>, pub file_owner: Option<String>, pub radio_station: Option<String>, pub radio_station_owner: Option<String>, pub album_sort: Option<String>, pub artist_sort: Option<String>, pub title_sort: Option<String>, pub original_filename: Option<String>, pub playlist_delay: Option<u32>, pub encoder_settings: Option<String>, pub url_commercial: Option<String>, pub url_copyright: Option<String>, pub url_audio_file: Option<String>, pub url_artist: Option<String>, pub url_audio_source: Option<String>, pub url_radio_station: Option<String>, pub url_payment: Option<String>, pub url_publisher: Option<String>, pub user_urls: Vec<UserUrl>, pub comments: Vec<Comment>, pub lyrics: Vec<Lyrics>, pub synced_lyrics: Vec<SyncedLyrics>, pub pictures: Vec<Picture>, pub user_text: Vec<UserText>, pub play_count: Option<u64>, pub popularimeter: Option<Popularimeter>, pub waveform_data: Option<WaveformData>, pub spectrum_fingerprint: Option<Vec<u8>>, pub bpm_map: Vec<BpmChange>, pub key_changes: Vec<KeyChange>, pub loudness_profile: Vec<LoudnessPoint>, pub integrated_loudness_lufs: Option<f32>, pub loudness_range_lu: Option<f32>, pub true_peak_dbtp: Option<f32>, pub section_markers: Vec<SectionMarker>, pub creator_notes: Vec<CreatorNote>, pub collaboration_credits: Vec<CollaborationCredit>, pub remix_chain: Vec<RemixChainEntry>, pub animated_cover: Option<AnimatedCover>, pub cover_variants: Vec<CoverVariant>, pub artist_signature: Option<Picture>, pub flo_encoder_version: Option<String>, pub source_format: Option<String>, pub custom: HashMap<String, String>,
}

Fields§

§title: Option<String>

Title/songname (TIT2)

§subtitle: Option<String>

Subtitle/description refinement (TIT3)

§content_group: Option<String>

Content group description (TIT1)

§album: Option<String>

Album/movie/show title (TALB)

§original_album: Option<String>

Original album (TOAL)

§set_subtitle: Option<String>

Set subtitle (TSST)

§track_number: Option<u32>

Track number (TRCK)

§track_total: Option<u32>

Total tracks

§disc_number: Option<u32>

Disc number (TPOS)

§disc_total: Option<u32>

Total discs

§isrc: Option<String>

ISRC code (TSRC)

§artist: Option<String>

Lead artist/performer (TPE1)

§album_artist: Option<String>

Album artist/band (TPE2)

§conductor: Option<String>

Conductor (TPE3)

§remixer: Option<String>

Remixer/modifier (TPE4)

§original_artist: Option<String>

Original artist (TOPE)

§composer: Option<String>

Composer (TCOM)

§lyricist: Option<String>

Lyricist/text writer (TEXT)

§original_lyricist: Option<String>

Original lyricist (TOLY)

§encoded_by: Option<String>

Encoded by (TENC)

§involved_people: Option<Vec<(String, String)>>

Involved people list (TIPL)

§musician_credits: Option<Vec<(String, String)>>

Musician credits (TMCL)

§genre: Option<String>

Genre (TCON)

§mood: Option<String>

Mood (TMOO)

§bpm: Option<u32>

BPM (TBPM)

§key: Option<String>

Initial musical key (TKEY)

§language: Option<String>

Language (TLAN)

§length_ms: Option<u64>

Length in milliseconds (TLEN)

§year: Option<u32>

Year

§recording_time: Option<String>

Recording time (TDRC)

§release_time: Option<String>

Release time (TDRL)

§original_release_time: Option<String>

Original release time (TDOR)

§encoding_time: Option<String>

Encoding time (TDEN)

§tagging_time: Option<String>

Tagging time (TDTG)

§copyright: Option<String>

Copyright message (TCOP)

§produced_notice: Option<String>

Production copyright (TPRO)

§publisher: Option<String>

Publisher (TPUB)

§file_owner: Option<String>

File owner/licensee (TOWN)

§radio_station: Option<String>

Internet radio station name (TRSN)

§radio_station_owner: Option<String>

Internet radio station owner (TRSO)

§album_sort: Option<String>

Album sort order (TSOA)

§artist_sort: Option<String>

Performer sort order (TSOP)

§title_sort: Option<String>

Title sort order (TSOT)

§original_filename: Option<String>

Original filename (TOFN)

§playlist_delay: Option<u32>

Playlist delay in ms (TDLY)

§encoder_settings: Option<String>

Encoder software/settings (TSSE)

§url_commercial: Option<String>

Commercial info URL (WCOM)

§url_copyright: Option<String>

Copyright/legal URL (WCOP)

§url_audio_file: Option<String>

Official audio file URL (WOAF)

§url_artist: Option<String>

Official artist URL (WOAR)

§url_audio_source: Option<String>

Official audio source URL (WOAS)

§url_radio_station: Option<String>

Official radio station URL (WORS)

§url_payment: Option<String>

Payment URL (WPAY)

§url_publisher: Option<String>

Publisher URL (WPUB)

§user_urls: Vec<UserUrl>

User-defined URLs (WXXX)

§comments: Vec<Comment>

Comments (COMM)

§lyrics: Vec<Lyrics>

Unsynchronized lyrics (USLT)

§synced_lyrics: Vec<SyncedLyrics>

Synchronized lyrics (SYLT)

§pictures: Vec<Picture>

Attached pictures (APIC)

§user_text: Vec<UserText>

User-defined text (TXXX)

§play_count: Option<u64>

Play counter (PCNT)

§popularimeter: Option<Popularimeter>

Popularimeter/rating (POPM)

§waveform_data: Option<WaveformData>

Pre-computed waveform peaks for instant visualization

§spectrum_fingerprint: Option<Vec<u8>>

Spectral analysis data / audio fingerprint for visual EQ

§bpm_map: Vec<BpmChange>

BPM changes throughout the track

§key_changes: Vec<KeyChange>

Musical key changes with timestamps

§loudness_profile: Vec<LoudnessPoint>

Frame-by-frame loudness profile (ReplayGain dynamic)

§integrated_loudness_lufs: Option<f32>

Integrated loudness (LUFS): EBU R128

§loudness_range_lu: Option<f32>

Loudness range (LU)

§true_peak_dbtp: Option<f32>

True peak (dBTP)

§section_markers: Vec<SectionMarker>

Section markers (intro/verse/chorus/etc.)

§creator_notes: Vec<CreatorNote>

Producer commentary with timestamps

§collaboration_credits: Vec<CollaborationCredit>

Detailed collaboration credits

§remix_chain: Vec<RemixChainEntry>

Remix/sample lineage chain

§animated_cover: Option<AnimatedCover>

Animated cover art (GIF/WebP/short video)

§cover_variants: Vec<CoverVariant>

Alternative cover variants (explicit, remix, etc.)

§artist_signature: Option<Picture>

Artist signature image

§flo_encoder_version: Option<String>

flo encoder version used

§source_format: Option<String>

Source format (e.g., “MP3”, “FLAC”, “WAV”)

§custom: HashMap<String, String>

Custom key-value pairs for extensions

Implementations§

Source§

impl FloMetadata

Source

pub fn new() -> Self

Create empty metadata

Source

pub fn with_basic( title: Option<String>, artist: Option<String>, album: Option<String>, ) -> Self

Create metadata with basic fields

Source

pub fn to_msgpack(&self) -> Result<Vec<u8>, Error>

Serialize to MessagePack bytes

Source

pub fn from_msgpack(data: &[u8]) -> Result<Self, Error>

Deserialize from MessagePack bytes

Source

pub fn is_empty(&self) -> bool

Check if metadata is empty (no significant fields set)

Source

pub fn add_picture( &mut self, mime_type: &str, picture_type: PictureType, data: Vec<u8>, )

Add a picture

Source

pub fn front_cover(&self) -> Option<&Picture>

Get the front cover picture if present

Source

pub fn any_picture(&self) -> Option<&Picture>

Get the first picture of any type

Source

pub fn add_comment(&mut self, text: &str, language: Option<&str>)

Add a comment

Source

pub fn add_lyrics(&mut self, text: &str, language: Option<&str>)

Add unsynchronized lyrics

Source

pub fn add_synced_lyrics_line( &mut self, timestamp_ms: u64, text: &str, language: Option<&str>, )

Add synchronized lyrics line

Source

pub fn set_custom(&mut self, key: &str, value: &str)

Set a custom field

Source

pub fn get_custom(&self, key: &str) -> Option<&str>

Get a custom field

Source

pub fn add_section( &mut self, timestamp_ms: u64, section_type: SectionType, label: Option<&str>, )

Add a section marker

Source

pub fn add_bpm_change(&mut self, timestamp_ms: u64, bpm: f32)

Add a BPM change point

Source

pub fn add_key_change(&mut self, timestamp_ms: u64, key: &str)

Add a key change point

Source

pub fn add_creator_note(&mut self, text: &str, timestamp_ms: Option<u64>)

Add a creator note

Source

pub fn add_collaboration( &mut self, role: &str, name: &str, timestamp_ms: Option<u64>, )

Add collaboration credit

Trait Implementations§

Source§

impl Clone for FloMetadata

Source§

fn clone(&self) -> FloMetadata

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for FloMetadata

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for FloMetadata

Source§

fn default() -> FloMetadata

Returns the “default value” for a type. Read more
Source§

impl<'de> Deserialize<'de> for FloMetadata

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for FloMetadata

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,