Beispiel #1
0
 public LyricsUpdater(IITTrackCollection selectedTracks, org.lyricwiki.LyricWiki lyricsWiki, Boolean overwrite, frmResult form)
 {
     this.m_selectedTracks = selectedTracks;
     this.m_lyricsWiki = lyricsWiki;
     this.m_overwrite = overwrite;
     this.m_form = form;
 }
Beispiel #2
0
 public frmResult(IITTrackCollection selectedTracks, org.lyricwiki.LyricWiki lyricsWiki, Boolean overwrite)
     : this()
 {
     this.m_selectedTracks = selectedTracks;
     this.m_lyricsWiki = lyricsWiki;
     this.m_overwrite = overwrite;
 }
        public bool Load()
        {
            try
            {
                _mainLibrary = _appClass.LibraryPlaylist;
                _tracks = _mainLibrary.Tracks;

                CurrentTrackIndex = 0;
                return true;
            }
            catch (Exception exception)
            {
                //TODO: Log exception
                throw exception;
            }
        }
 private void buttonSearch_Click(object sender, EventArgs e)
 {
     dataGridViewTracks.Visible = false;
     if (librarySource != null && playlistSource != null)
     {
         if (!string.IsNullOrWhiteSpace(textBoxSearchTerms.Text))
         {
             var searchTerms = textBoxSearchTerms.Text;
             tracks = playlistSource.Search(searchTerms, ITPlaylistSearchField.ITPlaylistSearchFieldAll);
         }
         else
         {
             tracks = playlistSource.Tracks;
         }
         updateTracksListing();
     }
 }
Beispiel #5
0
        public void Run(string playlistName)
        {
            iTunesApp          itunes      = new iTunesApp();
            IITLibraryPlaylist mainLibrary = itunes.LibraryPlaylist;
            IITPlaylist        playlist    = itunes.LibrarySource.Playlists.GetPlaylist(playlistName);
            IITTrackCollection tracks      = playlist.Tracks;

            string csvFilePath = GetFullCsvFilePath(playlistName);

            if (CheckIfUserWantsToAbort(csvFilePath))
            {
                return;
            }

            using (StreamWriter csvFile = new StreamWriter(csvFilePath))
            {
                for (int currTrackIndex = 1; currTrackIndex <= tracks.Count; currTrackIndex++)
                {
                    IITTrack fileTrack = tracks[currTrackIndex];
                    Console.WriteLine("{0},{1},{2},{3}", fileTrack.Artist, fileTrack.TrackNumber, fileTrack.Name, fileTrack.PlayedCount);
                    csvFile.WriteLine("\"{0}\",{1},\"{2}\",{3}", fileTrack.Artist, fileTrack.TrackNumber, fileTrack.Name, fileTrack.PlayedCount);
                }
            }
        }
Beispiel #6
0
 public bool Load(int index, IITTrackCollection tracks)
 {
     // only work with files
     _file = tracks[index] as IITFileOrCDTrack;
     return null != _file;
 }
Beispiel #7
0
 public FrmResult(IITTrackCollection selectedTracks, ILyricService lyricsService, Boolean overwrite)
     : this() {
     _selectedTracks = selectedTracks;
     _lyricService = lyricsService;
     _overwrite = overwrite;
 }
Beispiel #8
0
        private void SetProperties(object sender, EventArgs e)
        {
            int trackNumber = 0;

            // Is there a selected playlist?
            if (PlaylistsListBox.SelectedIndex + 1 > 0)
            {
                // Get Number of Tracks on Selected Playlist
                trackNumber =
                    this.playlistCollection[PlaylistsListBox.SelectedIndex + 1].Tracks.Count;

                // Get the entire Track Collection
                trackCollection =
                    this.playlistCollection[PlaylistsListBox.SelectedIndex + 1].Tracks;
            }

            if (!IsThisAGoodPlaylist(PlaylistsListBox.SelectedIndex + 1))
            {
                MessageBox.Show(this.playlistCollection[PlaylistsListBox.SelectedIndex + 1].Name +
                    " is an special playlist. We don't want to mess it, right?\n" +
                    "To organize your shows, please select other playlist to proceed.", "Alert",
                    MessageBoxButtons.OK, MessageBoxIcon.Error);

                return;
            }

            /*
             * If "User First Episode As Template" is checked, then use the first
             * episde information to fill the textfields.
             */
            if (episodeAsTemplate.Checked)
            {
                if (trackNumber > 0)
                {
                    IITFileOrCDTrack currentTrack = (IITFileOrCDTrack)trackCollection[1];

                    if (currentTrack.VideoKind > 0) // Video Only
                    {
                        showName.Text = currentTrack.Show;
                        seasonNumber.Text = currentTrack.SeasonNumber.ToString();
                        seasonYear.Text = currentTrack.Year.ToString();
                        originalChannel.Text = currentTrack.Artist;
                        showGenre.Text = currentTrack.Genre;

                        this.Refresh();

                        if (currentTrack.Artwork.Count > 0)
                        {
                            artworkFileName = System.Environment.CurrentDirectory.ToString();
                            artworkFileName += "\\itvshows.jpg";
                            try
                            {
                                currentTrack.Artwork[1].SaveArtworkToFile(artworkFileName);
                            }
                            catch
                            {
                                Console.WriteLine("Sorry. It was not possible to save the artwork file.");
                            }
                        }
                    }
                }
            }
            else
            {
                EnableDisableCheckBoxes(false);
                EnableDisableTextFields(false);
                EnableDisableButtons(false);
            }

            if ((seasonNumber.Text != "") && (seasonYear.Text != "")
                && (originalChannel.Text != "") && (showGenre.Text != ""))
            {
                if (trackNumber > 0)
                {
                    EnableDisableListBoxes(false);

                    this.progressBar.Maximum = trackNumber;
                    this.progressBar.Minimum = 0;
                    this.progressBar.Step = 1;
                    this.progressBar.Value = 0;

                    for (int i = 1; i <= trackNumber; i++)
                    {
                        IITFileOrCDTrack currentTrack = (IITFileOrCDTrack)trackCollection[i];

                        if (currentTrack.VideoKind > 0) // Video Only
                        {
                            currentTrack.Show = showName.Text.ToString();
                            currentTrack.SeasonNumber = Int32.Parse(seasonNumber.Text);
                            currentTrack.Year = Int32.Parse(seasonYear.Text);
                            currentTrack.Artist = originalChannel.Text.ToString();
                            currentTrack.Genre = showGenre.Text.ToString();
                            currentTrack.Composer = "";

                            if (episodeAsTemplate.Checked &&
                                System.IO.File.Exists(artworkFileName))
                            {
                                try
                                {
                                    currentTrack.Artwork[1].SetArtworkFromFile(artworkFileName);
                                }
                                catch
                                {
                                    Console.WriteLine("Sorry. It was not possible to set the artwork.");
                                }
                            }

                            /*
                             * If checkbox is checked uses the position on Playlist
                             * else tries to assign the track number as Episode Number.
                             */
                            if (playlistOrder.Checked)
                            {
                                currentTrack.EpisodeNumber = i;
                                currentTrack.TrackNumber = i;
                                currentTrack.TrackCount = trackNumber;
                            }
                            else
                            {
                                if (currentTrack.TrackNumber > 0)
                                {
                                    currentTrack.EpisodeNumber = currentTrack.TrackNumber;
                                }
                            }

                            // Set Video Kind to "TV Shows"
                            try
                            {
                                currentTrack.VideoKind = ITVideoKind.ITVideoKindTVShow;
                            }
                            catch
                            {
                                // But sometimes iTunes says that the Video Kind can not be changed...
                                Console.WriteLine("It was not possible to set the Video Kind to 'TV Show'");
                            }
                        }

                        this.progressBar.Value++;
                    }

                    if (System.IO.File.Exists(artworkFileName))
                    {
                        try
                        {
                            System.IO.File.Delete(artworkFileName);
                        }
                        catch
                        {
                            Console.WriteLine("Sorry. It was not possible to delete the artwork file.");
                        }
                    }

                    EnableDisableListBoxes(true);

                    toolbarStatusMessage.Text = "Done!";
                    systemTray.ShowBalloonTip(300, "iTVShows", "Consider it done! Enjoy your TV Show.", ToolTipIcon.Info);
                }
                else
                {
                    toolbarStatusMessage.Text =
                        "This playlist is empty. There's nothing to do, sorry...";
                }
            }
            else
            {
                toolbarStatusMessage.Text =
                    "You should input some information about the Show";
            }

            if (!episodeAsTemplate.Checked)
            {
                EnableDisableCheckBoxes(true);
                EnableDisableTextFields(true);
                EnableDisableButtons(true);
            }
        }
Beispiel #9
0
        public static void PerformDCA()
        {
            Console.Clear();
            Console.WriteLine("Performing DCA (Detect Compilation Albums)");
            Console.Title = "Performing DCA (Detect Compilation Albums)";
            Console.WriteLine("Detecting of 'Albums' playlist will now start.\r\n");

            int playlist_location = -1;
            int t = iTunes.LibrarySource.Playlists.Count;

            for (int i = 1; i <= t; i++)
            {
                //Console.WriteLine(i + ": " + iTunes.LibrarySource.Playlists[i].Name);
                if (iTunes.LibrarySource.Playlists[i].Name == "Albums")
                {
                    playlist_location = i;
                    break;
                }
            }
            if (playlist_location == -1)
            {
                Console.WriteLine("Please put all your albums in a playlist titled 'Albums' sorted by Album->TrackNumber.");
                Console.ReadKey(false);
                return;
            }
            else
            {
                Console.WriteLine("Playlist 'Albums' found.\r\n");
            }

            Console.WriteLine("Detecting of Compilations will now start.\r\n");

            IITTrackCollection albums = iTunes.LibrarySource.Playlists[playlist_location].Tracks;

            t = albums.Count - 1;
            for (int i = 1; i <= t; i++)
            {
                Console.WriteLine("Scanning: " + i + "/" + t);
                IITTrack current_track = albums[i];
                IITTrack next_track    = albums[i + 1];
                if (current_track.Album == next_track.Album && current_track.Artist != next_track.Artist)
                {
                    Console.WriteLine("\r\nCompilation Detected: " + current_track.Album);
                    // Re-Wind to start of album
                    while (current_track.Album == next_track.Album)
                    {
                        i--;
                        current_track = albums[i];
                    }

                    // Set current_track to the first item in the album
                    i++;
                    current_track = albums[i];

                    // Now start setting compilation = true for all tracks in the album
                    while (current_track.Album == next_track.Album)
                    {
                        Console.WriteLine("Updating: " + current_track.Name);
                        current_track.Compilation = true;
                        // Get the next track
                        i++;
                        current_track = albums[i];
                    }
                    Console.WriteLine("");
                }
            }
        }
        private void IntializeGenerator()
        {
            selectedTracks = itunes.SelectedTracks;
            var playlistName = view.PlaylistName;

            if (playlistName.Length == 0)
            {
                playlistName = DEFAULT_PLAYLIST_NAME;
            }

            playlist = (IITUserPlaylist)itunes.CreatePlaylist(playlistName);

            maxTracksPerArtist = view.MaxTracksPerArtist;
            if (maxTracksPerArtist == 0)
                maxTracksPerArtist = MAX_TRACKS_PER_ARTIST;

            maxTracks = view.MaxTracks;
            if (maxTracks == 0)
                maxTracks = MAX_TRACKS;

            startingSimilarArtists = view.InitialSimilarArtists;
            if (startingSimilarArtists == 0)
                startingSimilarArtists = STARTING_SIMILAR_ARTISTS;

            additionalSimilarArtists = view.AdditionalSimilarArtists;
            if (additionalSimilarArtists == 0)
                additionalSimilarArtists = ADDITIONAL_SIMILAR_ARTISTS;
        }
        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.");
            }
        }
Beispiel #12
0
        private void RemoveDuplicates()
        {
            //create a reference to iTunes
            iTunesAppClass iTunes = new iTunesAppClass();

            //get a reference to the collection of all tracks
            IITTrackCollection tracks = iTunes.LibraryPlaylist.Tracks;

            int trackCount           = tracks.Count;
            int numberChecked        = 0;
            int numberDuplicateFound = 0;
            Dictionary <string, IITTrack> trackCollection = new Dictionary <string, IITTrack>();
            ArrayList tracksToRemove = new ArrayList();

            //setup the progress control
            this.SetupProgress(trackCount);

            for (int i = trackCount; i > 0; i--)
            {
                if (tracks[i].Kind == ITTrackKind.ITTrackKindFile)
                {
                    if (!this._shouldStop)
                    {
                        numberChecked++;
                        this.IncrementProgress();
                        this.UpdateLabel("Checking track # " + numberChecked.ToString() + " - " + tracks[i].Name);
                        string trackKey = tracks[i].Name + tracks[i].Artist + tracks[i].Album;

                        if (!trackCollection.ContainsKey(trackKey))
                        {
                            trackCollection.Add(trackKey, tracks[i]);
                        }
                        else
                        {
                            if (trackCollection[trackKey].Album != tracks[i].Album || trackCollection[trackKey].Artist != tracks[i].Artist)
                            {
                                trackCollection.Add(trackKey, tracks[i]);
                            }
                            else if (trackCollection[trackKey].BitRate > tracks[i].BitRate)
                            {
                                IITFileOrCDTrack fileTrack = (IITFileOrCDTrack)tracks[i];
                                numberDuplicateFound++;
                                tracksToRemove.Add(tracks[i]);
                            }
                            else
                            {
                                IITFileOrCDTrack fileTrack = (IITFileOrCDTrack)tracks[i];
                                trackCollection[trackKey] = fileTrack;
                                numberDuplicateFound++;
                                tracksToRemove.Add(tracks[i]);
                            }
                        }
                    }
                }
            }

            this.SetupProgress(tracksToRemove.Count);

            for (int i = 0; i < tracksToRemove.Count; i++)
            {
                IITFileOrCDTrack track = (IITFileOrCDTrack)tracksToRemove[i];
                this.UpdateLabel("Removing " + track.Name);
                this.IncrementProgress();
                this.AddTrackToList((IITFileOrCDTrack)tracksToRemove[i]);

                if (this.checkBoxRemove.Checked)
                {
                    track.Delete();
                }
            }

            this.UpdateLabel("Checked " + numberChecked.ToString() + " tracks and " + numberDuplicateFound.ToString() + " duplicate tracks found.");
            this.SetupProgress(1);
        }
Beispiel #13
0
        private void DumpState(iTunesAppClass itunes)
        {
            IITPlaylist playlist = itunes.CurrentPlaylist;

            Debug.WriteLine("itunes.CurrentPlaylist");
            if (itunes.CurrentPlaylist == null)
            {
                Debug.WriteLine("... NULL");
            }
            else
            {
                Debug.WriteLine(String.Format("... Kind [{0}]", itunes.CurrentPlaylist.Kind));
                Debug.WriteLine(String.Format("... Name [{0}]", itunes.CurrentPlaylist.Name));
                Debug.WriteLine(String.Format("... Tracks.Count [{0}]", itunes.CurrentPlaylist.Tracks.Count));
            }

            string streamTitle = itunes.CurrentStreamTitle;

            Debug.WriteLine(String.Format("iTunes.CurrentStreamTitle [{0}]", itunes.CurrentStreamTitle));

            string streamURL = itunes.CurrentStreamURL;

            Debug.WriteLine(String.Format("iTunes.CurrentStreamURL [{0}]", itunes.CurrentStreamURL));

            IITTrack currentTrack = itunes.CurrentTrack;

            Debug.WriteLine("itunes.CurrentTrack");
            if (itunes.CurrentTrack == null)
            {
                Debug.WriteLine("... NULL");
            }
            else
            {
                Debug.WriteLine(String.Format("... Album [{0}]", currentTrack.Album));
                Debug.WriteLine(String.Format("... Artist [{0}]", currentTrack.Artist));
                Debug.WriteLine(String.Format("... Kind [{0}]", currentTrack.Kind));
                Debug.WriteLine(String.Format("... Name [{0}]", currentTrack.Name));
                Debug.WriteLine(String.Format("... trackID [{0}]", currentTrack.trackID));
            }

            int position = itunes.PlayerPosition;

            Debug.WriteLine(String.Format("iTunes.PlayerPosition [{0}]", itunes.PlayerPosition));

            ITPlayerState state = itunes.PlayerState;

            Debug.WriteLine(String.Format("iTunes.PlayerState [{0}]", itunes.PlayerState));

            IITTrackCollection selectedTracks = itunes.SelectedTracks;

            Debug.WriteLine("itunes.SelectedTracks");
            if (itunes.SelectedTracks == null)
            {
                Debug.WriteLine("... NULL");
            }
            else
            {
                foreach (IITTrack track in itunes.SelectedTracks)
                {
                    Debug.WriteLine("... track");
                    Debug.WriteLine(String.Format("... Album [{0}]", itunes.CurrentTrack.Album));
                    Debug.WriteLine(String.Format("... Artist [{0}]", itunes.CurrentTrack.Artist));
                    Debug.WriteLine(String.Format("... Kind [{0}]", itunes.CurrentTrack.Kind));
                    Debug.WriteLine(String.Format("... Name [{0}]", itunes.CurrentTrack.Name));
                    Debug.WriteLine(String.Format("... trackID [{0}]", itunes.CurrentTrack.trackID));
                }
            }
        }
Beispiel #14
0
 public iTunesTrackList(IITTrackCollection collection)
 {
     m_collection = collection;
 }
Beispiel #15
0
        private void button15_Click(object sender, EventArgs e)
        {
            iTunes      = new iTunesAppClass();
            mainLibrary = iTunes.LibraryPlaylist;
            tracks      = mainLibrary.Tracks;

            var count = tracks.Count;

            var sb = new StringBuilder();

            for (int i = 1; i < tracks.Count + 1; i++)
            {
                IITFileOrCDTrack track = tracks[i] as IITFileOrCDTrack;

                if (track != null)
                {
                    if (track.Location != null)
                    {
                        if (track.Location.StartsWith(FileRoot))
                        {
                            if (string.IsNullOrWhiteSpace(track.Description))
                            {
                                try {
                                    string sortAlbumString = string.Format("{0} {1}", track.Year, track.Album);

                                    var fiSong       = new FileInfo(track.Location);
                                    var artistString = fiSong.Directory.Parent.Name;

                                    if (track.SortAlbum != sortAlbumString)
                                    {
                                        track.SortAlbum = sortAlbumString;
                                    }

                                    if (string.IsNullOrWhiteSpace(track.Description))
                                    {
                                        track.Description = track.Artist; // stick MusicBrainz' Artist info into Description
                                    }
                                    track.Artist          = artistString;
                                    track.AlbumArtist     = artistString;
                                    track.SortAlbumArtist = artistString;

                                    // todo: is albumartist null?

                                    //if (track.SortArtist != track.AlbumArtist)
                                    //    track.SortArtist = track.AlbumArtist;

                                    sb.AppendLine(track.Location);
                                    //track.UpdateInfoFromFile();
                                }
                                catch (Exception ex)
                                {
                                    sb.AppendLine(ex.Message);
                                }
                            }
                        }
                    }
                }
            }

            textBox1.Text = sb.ToString();
        }
        private bool WriteTracks(IITTrackCollection tracks, string sourceName)
        {
            try {
                SQLiteConnection connection = new SQLiteConnection();

                connection.ConnectionString = "Data Source=" + databaseFileName;
                connection.Open();

                SQLiteCommand command = new SQLiteCommand();
                command.Connection  = connection;
                command.CommandType = System.Data.CommandType.Text;

                using (SQLiteTransaction transaction = connection.BeginTransaction()) {
                    command.CommandText = "INSERT INTO iTunesLibrary (Name, Album, Artist, Compilation, DateAdded, DiscCount, DiscNumber, Genre, Kind, PlayedCount, PlayedDate, Rating, Time, TrackCount, TrackNumber, Year, Source) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
                    command.Parameters.Add(new SQLiteParameter("paramName"));
                    command.Parameters.Add(new SQLiteParameter("paramAlbum"));
                    command.Parameters.Add(new SQLiteParameter("paramArtist"));
                    command.Parameters.Add(new SQLiteParameter("paramCompilation"));
                    command.Parameters.Add(new SQLiteParameter("paramDateAdded"));
                    command.Parameters.Add(new SQLiteParameter("paramDiscCount"));
                    command.Parameters.Add(new SQLiteParameter("paramDiscNumber"));
                    command.Parameters.Add(new SQLiteParameter("paramGenre"));
                    command.Parameters.Add(new SQLiteParameter("paramKind"));
                    command.Parameters.Add(new SQLiteParameter("paramPlayedCount"));
                    command.Parameters.Add(new SQLiteParameter("paramPlayedDate"));
                    command.Parameters.Add(new SQLiteParameter("paramRating"));
                    command.Parameters.Add(new SQLiteParameter("paramTime"));
                    command.Parameters.Add(new SQLiteParameter("paramTrackCount"));
                    command.Parameters.Add(new SQLiteParameter("paramTrackNumber"));
                    command.Parameters.Add(new SQLiteParameter("paramYear"));
                    command.Parameters.Add(new SQLiteParameter("paramSource"));
                    command.Parameters["paramSource"].Value = sourceName;

                    foreach (IITTrack track in tracks)
                    {
                        if (track.KindAsString != "QuickTime movie file" && track.KindAsString != "PDF document")
                        {
                            command.Parameters["paramName"].Value        = track.Name;
                            command.Parameters["paramAlbum"].Value       = track.Album;
                            command.Parameters["paramArtist"].Value      = track.Artist;
                            command.Parameters["paramCompilation"].Value = track.Compilation;
                            command.Parameters["paramDateAdded"].Value   = track.DateAdded;
                            command.Parameters["paramDiscCount"].Value   = track.DiscCount;
                            command.Parameters["paramDiscNumber"].Value  = track.DiscNumber;
                            command.Parameters["paramGenre"].Value       = track.Genre;
                            command.Parameters["paramKind"].Value        = track.KindAsString;
                            command.Parameters["paramPlayedCount"].Value = track.PlayedCount;
                            command.Parameters["paramPlayedDate"].Value  = track.PlayedDate;
                            command.Parameters["paramRating"].Value      = track.Rating;
                            command.Parameters["paramTime"].Value        = track.Time;
                            command.Parameters["paramTrackCount"].Value  = track.TrackCount;
                            command.Parameters["paramTrackNumber"].Value = track.TrackNumber;
                            command.Parameters["paramYear"].Value        = track.Year;
                            command.ExecuteNonQuery();
                        }
                    }
                    transaction.Commit();
                }

                command.Dispose();

                connection.Close();
                connection.Dispose();
                return(true);
            } catch (Exception ex) {
                Console.WriteLine("Unable to write tracks.");
                Console.WriteLine("Error message: " + ex.Message);
                return(false);
            }
        }
Beispiel #17
0
        //-------------------------------------------------------------------------
        // プレイリスト更新
        //-------------------------------------------------------------------------
        public static void RefreshPlaylist()
        {
            // iTunesとの接続があるか?
            if (itunes == null) return;

            // 既存のトラックリストをリリース
            if (tracks != null)
            {
                Marshal.ReleaseComObject(tracks);
                tracks = null;
            }

            // iTunes の中から、"Library"をソースに選択
            IITSourceCollection sources = itunes.Sources;
            if (sources != null)
            {
                int idx;
                IITSource source = null;
                for (idx = 1; idx <= sources.Count; idx++)
                {
                    source = sources[idx];
                    if (source.Kind == ITSourceKind.ITSourceKindLibrary) break;
                }

                if (source != null)
                {
                    // プレイリストをすべて取得
                    IITPlaylistCollection lists = source.Playlists;

                    if (lists != null)
                    {
                        IITPlaylist playlist;
                        // プレイリストを1つ選択
                        //                    IITPlaylist playlist = itunes.LibraryPlaylist;   // すべてのトラック
                        if (playlist_name==null || playlist_name.Equals(""))
                        {
                            playlist = itunes.LibraryPlaylist;   // すべてのトラック
                        }
                        else
                        {
                            playlist = lists.get_ItemByName(playlist_name);
                        }

                        if (playlist != null)
                        {
                            tracks = playlist.Tracks;
                            Marshal.ReleaseComObject(playlist);
                        }
                        Marshal.ReleaseComObject(lists);
                    }
                    Marshal.ReleaseComObject(source);
                }
                Marshal.ReleaseComObject(sources);
            }
        }
Beispiel #18
0
        private static void createPlaylist()
        {
            try
            {
                iTunesApp app = new iTunesApp();

                app.ForceToForegroundOnDialog = true;

                //app.SetOptions(); would be nice to kill autoarrange

                IITPlaylistCollection pl       = app.LibrarySource.Playlists;
                IITUserPlaylist       playlist = null;

                playlist = findPlaylist(pl, playlist);

                if (playlist == null)
                {
                    playlist = (IITUserPlaylist)app.CreatePlaylist(playlistName);
                }
                else
                {
                    // remove tracks, how?
                    foreach (IITTrack t in playlist.Tracks)
                    {
                        //t.Delete(); <== ?
                    }
                }

                iTunesLib.IITLibraryPlaylist lp = app.LibraryPlaylist;

                IITTrackCollection itTracks = app.LibraryPlaylist.Tracks;

                Dictionary <string, int> libraryTrackDictionary = new Dictionary <string, int>(StringComparer.OrdinalIgnoreCase);
                List <string>            libraryTrackFiles      = new List <string>();

                foreach (IITTrack t in itTracks)
                {
                    if (Cancel)
                    {
                        break;
                    }

                    if (t.Kind == ITTrackKind.ITTrackKindFile)
                    {
                        string l = (t as IITFileOrCDTrack).Location;
                        if (l != null)
                        {
                            libraryTrackFiles.Add(l);
                            if (!libraryTrackDictionary.ContainsKey(l))
                            {
                                libraryTrackDictionary.Add(l, t.Index);
                            }
                        }
                    }
                }
                List <string> allTracks = new List <string>();
                foreach (Track t in tracks)
                {
                    allTracks.Add(t.FilePath);
                }

                object oo = (object)(allTracks.ToArray());
                playlist.AddFiles(ref oo);

                Controller.ShowMessage("Completed sending playlist to iTunes.");

                app.Quit();
            }
            catch (Exception ex)
            {
                System.Diagnostics.Debug.WriteLine(ex.ToString());
                Clock.DoOnMainThread(ShowError);
            }
            Busy = false;
        }
Beispiel #19
0
        //-------------------------------------------------------------------------
        // iTunesとの接続を切る
        //-------------------------------------------------------------------------
        public static void Close()
        {
            if (itunes != null)
            {
                // イベントハンドラを取り除く
                itunes.OnPlayerPlayEvent -=
                  new _IiTunesEvents_OnPlayerPlayEventEventHandler(itunes_OnPlayerPlayEvent);

                // tracks が存在すれば、参照を解除
                if (tracks != null)
                {
                    Marshal.ReleaseComObject(tracks);
                    tracks = null;
                }

                // itunes の参照を解除
                Marshal.ReleaseComObject(itunes);
                itunes = null;
            }
        }
Beispiel #20
0
 public LyricsUpdater(IITTrackCollection selectedTracks, ILyricService lyricService, Boolean overwrite, FrmResult form) {
     _selectedTracks = selectedTracks;
     _lyricService = lyricService;
     _overwrite = overwrite;
     _form = form;
 }
Beispiel #21
0
        private void FullScan(object parameters)
        {
            SetScanStart();

            object[] parameterArray = (object[])parameters;
            string directory = (string)parameterArray[0];
            bool full = (bool)parameterArray[1];
            int sleep = (int)parameterArray[2];

            Thread.Sleep(sleep);

            int numFiles = CountFiles(directory);

            if (full == true)
            {
                iTunesAppClass _iTunes = new iTunesAppClass();
                _tracks = _iTunes.LibraryPlaylist.Tracks;
                _trackCount = _tracks.Count;

                SetTasks(numFiles + _trackCount);

                _log.LogInfo("Starting full scan in " + directory);
                _libraryLocations = FileList();
            }
            else
            {
                _log.LogDebug("Starting partial scan in " + directory);

                AddTasks(numFiles);
            }

            AddScanDirectory(directory);
        }