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();
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        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());
        }
Example #6
0
        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);
     }
 }
Example #8
0
        /// <summary>
        /// Interaction.Cleanup override; release reference to internal source.
        /// </summary>

        protected override void Cleanup(bool finalRelease)
        {
            Release(source);
            source = null;
        }
Example #9
0
        /// <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;
        }
Example #10
0
 /// <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;
 }
Example #11
0
 /// <summary>
 /// Interaction.Cleanup override; release reference to internal source.
 /// </summary>
 protected override void Cleanup()
 {
     Release(source);
     source = null;
 }
Example #12
0
        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);
        }
Example #13
0
 /// <summary>
 /// Interaction.Cleanup override; release reference to internal source.
 /// </summary>
 protected override void Cleanup(bool finalRelease)
 {
     Release(source);
     source = null;
 }
Example #14
0
        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));
                    }
                }
            }
        }
Example #15
0
        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.");
            }
        }
Example #16
0
        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);
            }
        }
Example #17
0
        /// <summary>
        /// Interaction.Cleanup override; release reference to internal source.
        /// </summary>

        protected override void Cleanup()
        {
            Release(source);
            source = null;
        }