Struct itunes_com::wrappers::TrackCollection
source · pub struct TrackCollection { /* private fields */ }Expand description
Safe wrapper over a IITTrackCollection
Implementations§
source§impl TrackCollection
impl TrackCollection
sourcepub fn ItemByPlayOrder(&self, Index: i32) -> Result<Track>
pub fn ItemByPlayOrder(&self, Index: i32) -> Result<Track>
Returns an IITTrack object corresponding to the given index, where the index is defined by the play order of the playlist containing the track collection (1-based).
Examples found in repository?
examples/wrappers.rs (line 35)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
fn show_playlists(iTunes: &itunes_com::wrappers::iTunes) -> windows::core::Result<()> {
let sources = iTunes.Sources()?;
for source in sources.iter()? {
let kind = source.Kind()?;
println!("Source kind: {:?}", kind);
if kind == ITSourceKind::ITSourceKindLibrary {
for pl in source.Playlists()?.iter()? {
let pl_kind = pl.Kind()?;
let tracks = pl.Tracks()?;
let track_count = tracks.iter()?.len();
let first_track = tracks.ItemByPlayOrder(1);
let first_track_name = first_track.and_then(|t| t.Name()).unwrap_or(String::from("<no track>"));
println!(" * {}\t{:?}: {} tracks (first one is {})", pl.Name()?, pl_kind, track_count, first_track_name);
}
}
}
Ok(())
}
fn search_tracks(iTunes: &itunes_com::wrappers::iTunes, search_text: &str) -> windows::core::Result<()> {
println!("Searching for \"{}\"...", search_text);
let library_playlist = iTunes.LibraryPlaylist()?;
let results = library_playlist.Search(search_text.into(), ITPlaylistSearchField::ITPlaylistSearchFieldAll)?;
for result in results.iter()? {
let file_location = result.as_file_or_cd_track().map(|foct| foct.Location());
println!(" * {} at {:?}", result.Name()?, file_location);
}
Ok(())
}
fn test_unique_ids(iTunes: &itunes_com::wrappers::iTunes) -> windows::core::Result<()> {
let library_playlist = iTunes.LibraryPlaylist()?;
let first_track = library_playlist.Tracks()?.ItemByPlayOrder(1)?;
println!("First track is {}", first_track.Name()?);
let ids = first_track.GetITObjectIDs()?;
println!(" IDs = {:?}", ids);
let retrieved = iTunes.GetITObjectByID(ids)?;
println!(" OK: {:?}", retrieved.as_track().map(|t| t.Name()));
Ok(())
}sourcepub fn ItemByName(&self, name: String) -> Result<Track>
pub fn ItemByName(&self, name: String) -> Result<Track>
Returns an IITTrack object with the specified name.
sourcepub fn ItemByPersistentID(&self, id: u64) -> Result<Track>
pub fn ItemByPersistentID(&self, id: u64) -> Result<Track>
Returns an IITTrack object with the specified persistent ID.
source§impl TrackCollection
impl TrackCollection
sourcepub fn iter(&self) -> Result<Iterator<'_, TrackCollection, Track>>
pub fn iter(&self) -> Result<Iterator<'_, TrackCollection, Track>>
Examples found in repository?
examples/wrappers.rs (line 34)
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
fn show_playlists(iTunes: &itunes_com::wrappers::iTunes) -> windows::core::Result<()> {
let sources = iTunes.Sources()?;
for source in sources.iter()? {
let kind = source.Kind()?;
println!("Source kind: {:?}", kind);
if kind == ITSourceKind::ITSourceKindLibrary {
for pl in source.Playlists()?.iter()? {
let pl_kind = pl.Kind()?;
let tracks = pl.Tracks()?;
let track_count = tracks.iter()?.len();
let first_track = tracks.ItemByPlayOrder(1);
let first_track_name = first_track.and_then(|t| t.Name()).unwrap_or(String::from("<no track>"));
println!(" * {}\t{:?}: {} tracks (first one is {})", pl.Name()?, pl_kind, track_count, first_track_name);
}
}
}
Ok(())
}
fn search_tracks(iTunes: &itunes_com::wrappers::iTunes, search_text: &str) -> windows::core::Result<()> {
println!("Searching for \"{}\"...", search_text);
let library_playlist = iTunes.LibraryPlaylist()?;
let results = library_playlist.Search(search_text.into(), ITPlaylistSearchField::ITPlaylistSearchFieldAll)?;
for result in results.iter()? {
let file_location = result.as_file_or_cd_track().map(|foct| foct.Location());
println!(" * {} at {:?}", result.Name()?, file_location);
}
Ok(())
}Trait Implementations§
Auto Trait Implementations§
impl RefUnwindSafe for TrackCollection
impl !Send for TrackCollection
impl !Sync for TrackCollection
impl Unpin for TrackCollection
impl UnwindSafe for TrackCollection
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more