private void buttonConnect_Click(object sender, EventArgs e) { iTunes = new iTunesApp(); IITSourceCollection sources = iTunes.Sources; foreach (IITSource source in sources) { if (source.Kind == ITSourceKind.ITSourceKindLibrary) { librarySource = source; break; } } if (librarySource != null) { panelConnection.Visible = false; toolStripStatusLabelConnection.Text = "Connected to iTunes."; populatePlaylists(); panelEditor.Visible = true; } else { toolStripStatusLabelConnection.Text = "iTunes connection failed."; MessageBox.Show("Unable to connect to iTunes or find the default library."); // todo } }
private void button2_Click(object sender, EventArgs e) { // use the selected Playlist if (listBox1.SelectedIndex == -1) { return; } string s = (string)listBox1.SelectedItem; string parent = s.Split(new string[] { "->" }, StringSplitOptions.None)[0]; string child = s.Split(new string[] { "->" }, StringSplitOptions.None)[1]; IITSource source = MainForm.iTunes.Sources.ItemByName[parent]; IITPlaylist p = source.Playlists.ItemByName[child]; Result = p; this.Close(); }
/// <summary> /// Resturns a light version of all playlists /// </summary> /// <returns></returns> public IList <Playlist> GetPlaylists() { //Why does returning IEnumerable kill the Unit Test? IList <Playlist> toReturn = new List <Playlist>(); IITSource library = _iTunesSucks.Sources.ItemByName["Library"]; foreach (IITPlaylist item in library.Playlists) { Playlist playlist = new Playlist(item.Name) { iTunesSourceId = item.sourceID, iTunesPlaylistId = item.playlistID, iTunesCount = item.Tracks.Count, }; toReturn.Add(playlist); } return(toReturn); }
/// <summary> /// Names are not unique, so not use I can use this /// </summary> public Spotify.Playlist GetPlaylistByName(string name) { iTunesApp app = new iTunesApp(); IITSource library = app.Sources.ItemByName["Library"]; Spotify.Playlist toReturn = null; foreach (IITPlaylist item in library.Playlists) { if (item.Name == name) { toReturn = new Spotify.Playlist(name); foreach (IITTrack song in item.Tracks) { toReturn.AddSong(song.Name, song.Artist); } } } return(toReturn); }
public static IITUserPlaylist[] GetUserPlaylists(this IITSource self) { ArgumentValidator.Validate(self); var ret = new List <IITUserPlaylist>(); foreach (IITPlaylist playlist in self.Playlists) { var add = playlist as IITUserPlaylist; if (add == null) { continue; } if (add.SpecialKind != ITUserPlaylistSpecialKind.ITUserPlaylistSpecialKindNone) { continue; } ret.Add(add); } return(ret.ToArray()); }
private void AllProps(iTunesAppClass itunes) { bool acmpEnabled = itunes.AppCommandMessageProcessingEnabled; IITEncoder encoder = itunes.CurrentEncoder; IITEQPreset eqPreset = itunes.CurrentEQPreset; IITPlaylist playlist = itunes.CurrentPlaylist; string streamTitle = itunes.CurrentStreamTitle; string streamURL = itunes.CurrentStreamURL; IITTrack track = itunes.CurrentTrack; IITVisual visual = itunes.CurrentVisual; IITEncoderCollection encoders = itunes.Encoders; bool eqEnabled = itunes.EQEnabled; IITEQPresetCollection eqPresets = itunes.EQPresets; // this always seems to raise a COM exception, whether playing or stopped... //IITWindow eqWindow = itunes.EQWindow; bool fgOnDialog = itunes.ForceToForegroundOnDialog; bool fsVisuals = itunes.FullScreenVisuals; IITLibraryPlaylist libPlaylist = itunes.LibraryPlaylist; IITSource libSource = itunes.LibrarySource; string libXmlPath = itunes.LibraryXMLPath; bool mute = itunes.Mute; // this will raise a COM exception when iTunes first started //int position = itunes.PlayerPosition; ITPlayerState state = itunes.PlayerState; IITTrackCollection selectedTracks = itunes.SelectedTracks; int volume = itunes.SoundVolume; bool volEnabled = itunes.SoundVolumeControlEnabled; IITSourceCollection sources = itunes.Sources; string version = itunes.Version; IITVisualCollection visuals = itunes.Visuals; bool visualsEnabled = itunes.VisualsEnabled; ITVisualSize visualSize = itunes.VisualSize; IITWindowCollection windows = itunes.Windows; }
private bool GetTrackListing(IITSource source) { try { if (source.Kind == ITSourceKind.ITSourceKindLibrary || source.Kind == ITSourceKind.ITSourceKindIPod) { if (source.Playlists.Count > 0) { foreach (IITPlaylist playlist in source.Playlists) { if (playlist.Name == "Music" && playlist.Tracks.Count > 0) { WriteTracks(playlist.Tracks, source.Name); Console.WriteLine(source.Name + " tracks written."); } } } } return(true); } catch (Exception ex) { Console.WriteLine("Unable to get a track listing for source " + source.Name + "."); Console.WriteLine("Error message: " + ex.Message); return(false); } }
/// <summary> /// Interaction.Cleanup override; release reference to internal source. /// </summary> protected override void Cleanup(bool finalRelease) { Release(source); source = null; }
/// <summary> /// Initialize a new instance that wraps the given iTunes source COM object. /// </summary> /// <param name="source">An IITSource instance.</param> public Source(IITSource source) : base() { this.source = source; }
/// <summary> /// Interaction.Cleanup override; release reference to internal source. /// </summary> protected override void Cleanup() { Release(source); source = null; }
public static CPlaylist LoadPlaylists(iTunesApp itunes) { CPlaylist retPlaylist = new CPlaylist(null); IITSourceCollection sources = itunes.Sources; IITPlaylistCollection playlists = null; IITSource plSource = null; foreach (IITSource source in sources) { if (source.Kind == ITSourceKind.ITSourceKindLibrary) { plSource = source; playlists = source.Playlists; break; } } foreach (IITPlaylist pl in playlists) { if (pl.Kind != ITPlaylistKind.ITPlaylistKindUser) { continue; } try { IITUserPlaylist upl = (IITUserPlaylist)pl; if (upl.Smart) { continue; } if (upl.SpecialKind == ITUserPlaylistSpecialKind.ITUserPlaylistSpecialKindPodcasts) { continue; } string strDir = string.Empty; Stack <IITUserPlaylist> parentStack = new Stack <IITUserPlaylist>(); IITUserPlaylist uplp = upl.get_Parent(); if (uplp != null) { parentStack.Push(uplp); IITUserPlaylist uplc = uplp; do { uplp = uplc.get_Parent(); if (uplp != null) { parentStack.Push(uplp); uplc = uplp; } } while (uplp != null); } CPlaylist parentPL = retPlaylist; bool bFoundLeaf = false; do { uplp = (parentStack.Count > 0) ? parentStack.Pop() : null; if (uplp == null) { bFoundLeaf = true; } else { CPlaylist childPL = null; foreach (var item in parentPL.Children) { if (item.Name == uplp.Name) { childPL = item; break; } } if (childPL != null) { parentPL = childPL; } else { bFoundLeaf = true; } } } while (!bFoundLeaf); while (uplp != null) { CPlaylist plChild = new CPlaylist(uplp, true); parentPL.Children.Add(plChild); parentPL = plChild; uplp = (parentStack.Count > 0) ? parentStack.Pop() : null; } parentPL.Children.Add(new CPlaylist(upl)); } catch (Exception ex) { Debug.WriteLine(ex); } } return(retPlaylist); }
private void DumpChanges(string title, ObjectIDCollection things) { foreach (ObjectID oid in things) { if (oid.IsSource) { IITSource source = (IITSource)itunes.GetITObjectByID( oid.SourceID, oid.PlaylistID, oid.TrackID, oid.DatabaseID); if (source == null) { Debug.WriteLine( String.Format("Source ({0},{1},{2},{3}): UNKNOWN", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID)); } else { Debug.WriteLine( String.Format("Source ({0},{1},{2},{3}): {4}", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID, source.Name)); } } else if (oid.IsPlaylist) { IITPlaylist playlist = (IITPlaylist)itunes.GetITObjectByID( oid.SourceID, oid.PlaylistID, oid.TrackID, oid.DatabaseID); if (playlist == null) { Debug.WriteLine( String.Format("Playlist ({0},{1},{2},{3}): UNKNOWN", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID)); } else { Debug.WriteLine( String.Format("Playlist ({0},{1},{2},{3}): {4}, tracks {5}", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID, playlist.Name, playlist.Tracks.Count)); } } else if (oid.IsTrack) { IITTrack track = (IITTrack)itunes.GetITObjectByID( oid.SourceID, oid.PlaylistID, oid.TrackID, oid.DatabaseID); if (track == null) { Debug.WriteLine( String.Format("Track ({0},{1},{2},{3}): UNKNOWN", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID)); } else { Debug.WriteLine( String.Format("Track ({0},{1},{2},{3}): {4}, playedCount {5}", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID, track.Name, track.PlayedCount)); } } else { IITObject changed = itunes.GetITObjectByID( oid.SourceID, oid.PlaylistID, oid.TrackID, oid.DatabaseID); if (changed == null) { Debug.WriteLine( String.Format("Unknown ({0},{1},{2},{3})", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID)); } else { Debug.WriteLine(String.Format( "other ({0},{1},{2},{3}) -> Name [{4}]", oid.DatabaseID, oid.SourceID, oid.PlaylistID, oid.TrackID, changed.Name)); } } } }
private void buttonSyncData_Click(object sender, EventArgs e) { if (dataGridView1.RowCount > 0 && dataGridView2.RowCount > 0) { int rowNumber = 0; if (dataGridView1.RowCount <= dataGridView2.RowCount) { toolStripProgressBarCore.Maximum = dataGridView1.RowCount; } else { toolStripProgressBarCore.Maximum = dataGridView2.RowCount; } toolStripProgressBarCore.Value = rowNumber; toolStripProgressBarCore.Visible = true; while (rowNumber < dataGridView1.RowCount && rowNumber < dataGridView2.RowCount) { if (dataGridView1.Rows[rowNumber].Cells["Name"].Value.ToString() == dataGridView2.Rows[rowNumber].Cells["Name"].Value.ToString() && dataGridView1.Rows[rowNumber].Cells["Album"].Value.ToString() == dataGridView2.Rows[rowNumber].Cells["Album"].Value.ToString() && dataGridView1.Rows[rowNumber].Cells["Artist"].Value.ToString() == dataGridView2.Rows[rowNumber].Cells["Artist"].Value.ToString() && dataGridView1.Rows[rowNumber].Cells["Disc"].Value.ToString() == dataGridView2.Rows[rowNumber].Cells["Disc"].Value.ToString() && dataGridView1.Rows[rowNumber].Cells["Track"].Value.ToString() == dataGridView2.Rows[rowNumber].Cells["Track"].Value.ToString() ) { //MessageBox.Show("The first rows are a match."); IITSource source1 = sources.get_ItemByName(sourceListing1.SelectedItem.ToString()); IITSource source2 = sources.get_ItemByName(sourceListing2.SelectedItem.ToString()); IITPlaylist sourceMusic1 = source1.Playlists.get_ItemByName("Music"); IITPlaylist sourceMusic2 = source2.Playlists.get_ItemByName("Music"); try { IITTrackCollection matchingTracks = sourceMusic2.Search(dataGridView2.Rows[rowNumber].Cells["Name"].Value.ToString(), ITPlaylistSearchField.ITPlaylistSearchFieldSongNames); toolStripStatusLabelCore.Text = "Found " + matchingTracks.Count.ToString() + " matching tracks."; foreach (IITTrack track in matchingTracks) { if (track.trackID.ToString() == dataGridView2.Rows[rowNumber].Cells["TrackId"].Value.ToString()) { textBoxUpdates.Text += "Updating trackid " + track.trackID.ToString() + " with rating " + dataGridView1.Rows[rowNumber].Cells["Rating"].Value.ToString() + " from " + track.Rating.ToString() + " and count to " + dataGridView1.Rows[rowNumber].Cells["Count"].Value.ToString() + " from " + track.PlayedCount.ToString() + "." + Environment.NewLine; track.Rating = int.Parse(dataGridView1.Rows[rowNumber].Cells["Rating"].Value.ToString()); track.PlayedCount = int.Parse(dataGridView1.Rows[rowNumber].Cells["Count"].Value.ToString()); track.PlayedDate = (DateTime)dataGridView1.Rows[rowNumber].Cells["Date"].Value; //MessageBox.Show("Rating and count updated."); break; } } //IITObject iObject = iTunes.GetITObjectByID(source2.sourceID, sourceMusic2.playlistID, int.Parse(dataGridView2.Rows[0].Cells["TrackId"].Value.ToString()), int.Parse(dataGridView2.Rows[0].Cells["DatabaseId"].Value.ToString())); } catch (Exception ex) { MessageBox.Show(ex.Message); } } else { MessageBox.Show("Items do not match. Stopping."); break; } rowNumber++; toolStripProgressBarCore.Value = rowNumber; } toolStripProgressBarCore.Visible = false; } else { MessageBox.Show("You must preview the sources to continue."); } }
private void buttonPreview_Click(object sender, EventArgs e) { labelDetails1.Text = String.Empty; labelDetails2.Text = String.Empty; try { dataGridView1.Rows.Clear(); dataGridView2.Rows.Clear(); } catch (Exception ex) { // TODO: Resolve this issue and remove for production. MessageBox.Show(ex.Message); } if (sourceListing1.SelectedIndex < 0 || sourceListing2.SelectedIndex < 0) { MessageBox.Show("You must select both a source to copy from, as well as one to copy to."); return; } else if (sourceListing1.SelectedIndex == sourceListing2.SelectedIndex) { MessageBox.Show("You must select a different source for either the copy from or to to continue."); return; } DataTable sourceTracks1 = CreateTracksTable(); DataTable sourceTracks2 = CreateTracksTable(); try { IITSource source1 = sources.get_ItemByName(sourceListing1.SelectedItem.ToString()); IITSource source2 = sources.get_ItemByName(sourceListing2.SelectedItem.ToString()); IITPlaylist sourceMusic1 = source1.Playlists.get_ItemByName("Music"); IITPlaylist sourceMusic2 = source2.Playlists.get_ItemByName("Music"); toolStripProgressBarCore.Value = 0; toolStripProgressBarCore.Visible = true; toolStripStatusLabelCore.Text = "Getting tracks from " + sourceListing1.SelectedItem.ToString() + "."; toolStripProgressBarCore.Maximum = sourceMusic1.Tracks.Count; sourceTracks1 = GetSourceTracks(sourceMusic1); labelDetails1.Text = sourceTracks1.Rows.Count.ToString(); toolStripStatusLabelCore.Text = "Sorting ..."; sourceTracks1.DefaultView.Sort = "Album, Disc, Track, Name"; dataGridView1.DataSource = sourceTracks1; toolStripStatusLabelCore.Text = "Getting tracks from " + sourceListing2.SelectedItem.ToString() + "."; toolStripProgressBarCore.Maximum = sourceMusic2.Tracks.Count; sourceTracks2 = GetSourceTracks(sourceMusic2); labelDetails2.Text = sourceTracks2.Rows.Count.ToString(); toolStripStatusLabelCore.Text = "Sorting ..."; sourceTracks2.DefaultView.Sort = "Album, Disc, Track, Name"; dataGridView2.DataSource = sourceTracks2; toolStripStatusLabelCore.Text = "Sources read."; toolStripProgressBarCore.Visible = false; sourceTracks1 = null; sourceTracks2 = null; sourceMusic1 = null; sourceMusic2 = null; source1 = null; source2 = null; } catch (Exception ex) { MessageBox.Show(ex.Message); } }