コード例 #1
0
        public static void nextTrack()
        {
            var app = new iTunesApp();

            app.NextTrack();
            app = null;
        }
コード例 #2
0
        public static void pausePlay()
        {
            var app = new iTunesApp();

            app.PlayPause();
            app = null;
        }
コード例 #3
0
        public static void previousTrack()
        {
            var app = new iTunesApp();

            app.PreviousTrack();
            app = null;
        }
コード例 #4
0
        public static void volumeDown()
        {
            var app = new iTunesApp();

            app.SoundVolume -= 5;
            app              = null;
        }
コード例 #5
0
        //ツイート
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            //iTunes COMのセットアップ
            iTunesApp iTunes = new iTunesApp();
            IITTrack  track  = iTunes.CurrentTrack;

            if (iTunes == null)
            {
                System.Windows.Forms.MessageBox.Show("iTunesで曲が再生されていません");
                return;
            }


            //変数の指定
            var AlbumName  = track.Album;
            var TrackInfo  = track.TrackNumber + " / " + track.TrackCount;
            var Artist     = track.Artist;
            var TrackName  = track.Name;
            var Ruledline  = "│";
            var nowplaying = "#nowplaying\n";
            IITArtworkCollection artwork = track.Artwork;
            DateTime             dt      = DateTime.Now;

            //ツイート
            var text = nowplaying + AlbumName + Ruledline + TrackName + Ruledline + Artist + Ruledline + dt;

            tokens.Statuses.Update(status => text);

            //お知らせ
            System.Windows.Forms.MessageBox.Show("実行します。");
        }
コード例 #6
0
        private static void getLibrary()
        {
            iTunesApp app = new iTunesApp();

            app.ForceToForegroundOnDialog = true;

            IITTrackCollection tc = app.LibraryPlaylist.Tracks;

            Controller.ShowMessage(tc.Count.ToString() + " tracks found...");

            List <string> tracks = new List <string>();

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

                if (t.Kind == ITTrackKind.ITTrackKindFile)
                {
                    string l = (t as IITFileOrCDTrack).Location;
                    Controller.ShowMessage(t.Name);
                    tracks.Add(l);
                }
            }
            if (!Cancel)
            {
                FileAdder.AddItemsToLibrary(tracks, String.Empty, true, Controller.GetInstance().RefreshAll);
            }
        }
コード例 #7
0
        public static void NextSong()
        {
            iTunesApp app = new iTunesApp();

            app.NextTrack();
            app = null;
        }
コード例 #8
0
        private void CloseITunes()
        {
            while (ReadyForSync == null)
            {
                ;                                      // Wait if still opening iTunes before trying to close
            }
            ReadyForSync = false;

            if (Device.DeviceName != null)
            {
                Device.DeviceName = null;
                // Tell MusicBee to call Eject()
                Plugin.MbApiInterface.MB_SendNotification(Plugin.CallbackType.StorageEject);
            }

            if (iTunes != null)
            {
                try
                {
                    iTunes.Quit();
                }
                catch (Exception x)
                {
                    Trace.WriteLine(x);
                }
                Marshal.ReleaseComObject(iTunes);
                iTunes = null;
            }

            OpenMenu.Enabled = true;
        }
コード例 #9
0
        public static IEnumerable <IITFileOrCDTrack> GetAllTracks(this iTunesApp iTunes)
        {
            var library = iTunes.LibraryPlaylist;
            var tracks  = library.Tracks;

            try
            {
                for (var i = tracks.Count; i > 0; --i)
                {
                    var track = tracks[i];
                    if (track.Kind == ITTrackKind.ITTrackKindFile)
                    {
                        yield return((IITFileOrCDTrack)track);
                    }
                    else
                    {
                        Marshal.ReleaseComObject(track);
                    }
                }
            }
            finally
            {
                Marshal.ReleaseComObject(tracks);
                Marshal.ReleaseComObject(library);
            }
        }
コード例 #10
0
        private void PlayMatched(iTunesApp itunes, String best_match, MatchType best_matchtype)
        {
            String temp_artist;

            switch (best_matchtype)
            {
            case MatchType.song:
                this.PlayMatchedSong(itunes, best_match);
                break;

            case MatchType.song_artist:
                String song;
                ujoin(best_match, out song, out temp_artist);
                this.PlayMatchedSong(itunes, song, temp_artist);
                break;

            case MatchType.album:
                this.PlayMatchedAlbum(itunes, best_match);
                break;

            case MatchType.album_artist:
                String album;
                ujoin(best_match, out album, out temp_artist);
                this.PlayMatchedAlbum(itunes, album, temp_artist);
                break;

            case MatchType.artist:
                this.PlayMatchedArtist(itunes, best_match);
                break;

            case MatchType.playlist:
                this.PlayMatchedPlaylist(itunes, best_match);
                break;
            }
        }
コード例 #11
0
        private bool Init()
        {
            if (this.m_itunes == null)
            {
                // 아이튠즈가 실행중인지 확인
                if (this.GetWindowHandle() != IntPtr.Zero)
                {
                    try
                    {
                        this.m_itunes = new iTunesAppClass();
                        this.m_itunes.OnQuittingEvent += new _IiTunesEvents_OnQuittingEventEventHandler(this.m_itunes_OnQuittingEvent);
                        this.m_itunes.OnAboutToPromptUserToQuitEvent += new _IiTunesEvents_OnAboutToPromptUserToQuitEventEventHandler(this.m_itunes_OnAboutToPromptUserToQuitEvent);
                        this.m_itunes.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(this.iTunes_SongChanged);
                        this.m_itunes.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(this.iTunes_SongChanged);
                        return(true);
                    }
                    catch
                    { }
                }
            }
            else
            {
                // 아이튠즈가 실행중인지 확인
                if (this.GetWindowHandle() != IntPtr.Zero)
                {
                    return(true);
                }
                else
                {
                    this.DeleteITunes();
                }
            }

            return(false);
        }
コード例 #12
0
        private void PlayMatchedSong(iTunesApp itunes, String song, String artist = null)
        {
            if (artist == null)
            {
                Logger.WriteLine("Playing Song: " + song);
            }
            else
            {
                Logger.WriteLine("Playing Song: " + song + ", by " + artist);
            }

            // Rather than storing the handle (will be incorrect when itunes closes and is reopened, just find playlist by searching!
            foreach (IITTrack track in itunes.LibraryPlaylist.Tracks)
            {
                if (track.Kind != ITTrackKind.ITTrackKindFile)
                {
                    continue;
                }
                if (track.Name != song)
                {
                    continue;
                }
                if (artist != null)
                {
                    if (track.Artist != artist)
                    {
                        continue;
                    }
                }
                this.SetupAndRunAutomatedPlaylist(itunes, track);
                return;
            }
            this.RefreshItunesData(itunes);
        }
コード例 #13
0
        public static void PreviousSong()
        {
            iTunesApp app = new iTunesApp();

            app.PreviousTrack();
            app = null;
        }
コード例 #14
0
        public static void Main(string[] args)
        {
            var _itApp = new iTunesApp();

            try
            {
                var songList = _itApp.LibraryPlaylist.Search("rain", ITPlaylistSearchField.ITPlaylistSearchFieldSongNames);

                if (songList != null)
                {
                    //var track = songList.ItemByPlayOrder[1];
                    //track.Play();
                    for (int i = 1; i <= songList.Count; i++)
                    {
                        System.Console.WriteLine(songList.ItemByPlayOrder[i].Name);
                        System.Console.ReadKey();
                        songList.ItemByPlayOrder[i].Play();
                    }
                }
            }
            catch (System.Exception ex)
            {
                throw ex;
            }
            System.Console.ReadKey();
        }
コード例 #15
0
        public static void PlayPause()
        {
            iTunesApp app = new iTunesApp();

            app.PlayPause();
            app = null;
        }
コード例 #16
0
        private void PlayMatchedArtist(iTunesApp itunes, String artist)
        {
            Logger.WriteLine("Playing Artist: " + artist);

            var tracks = new List <IITTrack>();

            // Rather than storing the handle (will be incorrect when itunes closes and is reopened, just find playlist by searching!
            foreach (IITTrack track in itunes.LibraryPlaylist.Tracks)
            {
                if (track.Kind != ITTrackKind.ITTrackKindFile)
                {
                    continue;
                }
                if (track.Artist != artist)
                {
                    continue;
                }
                tracks.Add(track);
            }
            if (tracks.Count > 0)
            {
                this.SetupAndRunAutomatedPlaylist(itunes, tracks.ToArray());
            }
            else
            {
                this.RefreshItunesData(itunes);
            }
        }
コード例 #17
0
        public void SetupAndRunAutomatedPlaylist(iTunesApp itunes, params IITTrack[] tracks)
        {
            IITUserPlaylist pl;

            do // If we call delete mid loop, we sometimes don't get second instances of playlist.
            {
                pl = null;
                foreach (IITUserPlaylist old in itunes.LibrarySource.Playlists.OfType <IITUserPlaylist>())
                {
                    if (old.Name != automated_playlist_name)
                    {
                        continue;
                    }
                    pl = old;
                    break;
                }
                pl?.Delete();
            }while (pl != null);

            var sortable_tracks = tracks.Select(t => new SamTrack(t)).Sorted();

            pl = (IITUserPlaylist)(itunes.CreatePlaylist(automated_playlist_name));
            foreach (var t in sortable_tracks)
            {
                object track = t._Track;
                pl.AddTrack(ref track);
            }

            this.PlayPlaylist(pl);
        }
コード例 #18
0
        private void DeleteITunes()
        {
            try
            {
                this.m_itunes.OnQuittingEvent -= this.m_itunes_OnQuittingEvent;
                this.m_itunes.OnAboutToPromptUserToQuitEvent -= this.m_itunes_OnAboutToPromptUserToQuitEvent;
                this.m_itunes.OnPlayerPlayEvent -= this.iTunes_SongChanged;
                this.m_itunes.OnPlayerPlayingTrackChangedEvent -= this.iTunes_SongChanged;
            }
            catch
            { }

            try
            {
                Marshal.ReleaseComObject(this.m_itunes);
            }
            catch
            { }

            GC.Collect();
            this.m_itunes = null;

            if (this.m_ad)
            {
                this.m_adTrack = null;
                this.m_timer.Change(Timeout.Infinite, Timeout.Infinite);
                this.m_timerDetect.Change(IParseRule.RefreshTimeSpan, IParseRule.RefreshTimeSpan);
            }
        }
コード例 #19
0
        public static IEnumerable <IITUserPlaylist> GetPlaylists(this iTunesApp iTunes)
        {
            var library   = iTunes.LibrarySource;
            var playlists = library.Playlists;

            try
            {
                for (var i = playlists.Count; i > 0; --i)
                {
                    var playlist = playlists[i];
                    if (
                        playlist.Kind == ITPlaylistKind.ITPlaylistKindUser &&
                        ((IITUserPlaylist)playlist).SpecialKind == ITUserPlaylistSpecialKind.ITUserPlaylistSpecialKindNone &&
                        !((IITUserPlaylist)playlist).Smart
                        )
                    {
                        yield return((IITUserPlaylist)playlist);
                    }
                    else
                    {
                        Marshal.ReleaseComObject(playlist);
                    }
                }
            }
            finally
            {
                Marshal.ReleaseComObject(playlists);
                Marshal.ReleaseComObject(library);
            }
        }
コード例 #20
0
        private void ComputeCurrentCDInfo(IProgress<ImportExportError> iIImportExportProgress)
        {
            try
            {
                iTunesApp iTunesApp = new iTunesApp();

                IITSourceCollection _sources = iTunesApp.Sources;

                var lib = iTunesApp.Sources.Cast<IITSource>().Where(s => s.Kind == ITSourceKind.ITSourceKindAudioCD).FirstOrDefault();

                if (lib == null)
                {
                    iIImportExportProgress.SafeReport(new ItunesCDNotFoundError());
                    return;
                }

                IITAudioCDPlaylist cd = lib.Playlists.get_ItemByName(lib.Name) as IITAudioCDPlaylist;

                if (cd == null)
                {
                    iIImportExportProgress.SafeReport(new ItunesUnknownError());
                    return;
                }

                IFullAlbumDescriptor ad = AlbumDescriptor.FromiTunes(cd);

                FoundCDInfo = new WebMatch<IFullAlbumDescriptor>(ad, MatchPrecision.Suspition, WebProvider.iTunes);
            }
            catch (Exception e)
            {
                Trace.WriteLine("iTunes CD information introspection failed "+e.ToString());
                iIImportExportProgress.SafeReport(new ITunesNotResponding());
            }
        }
コード例 #21
0
 private void SongUpdateWatcher()
 {
     Trace.WriteLine("[DEBUG]song update watcher start.");
     while (true)
     {
         //wait
         Thread.Sleep(1000);
         sem.Wait();
         if (!isITunesInitialized)
         {
             break;
         }
         sem.Release();
         //Debug.WriteLine("[DEBUG]itunes COM initializing.");
         app = new iTunesApp();
         //Debug.WriteLine("[DEBUG]itunes COM initialized.");
         var ctrack = app.CurrentTrack;
         if (ctrack == null || app.PlayerState != ITPlayerState.ITPlayerStatePlaying)
         {
             ComRelease.FinalReleaseComObjects(ctrack, app);
             continue;
         }
         var trackdbid = ctrack?.TrackDatabaseID ?? 0;
         if (trackdbid != lastTrackID)
         {
             //song changed
             OnPlayerPlayingTrackChangedEvent(ctrack);
             lastTrackID = trackdbid;
         }
         ComRelease.FinalReleaseComObjects(ctrack, trackdbid, app);
     }
     Trace.WriteLine("[DEBUG]song update watcher stop.");
 }
コード例 #22
0
        /// <summary>
        /// Creates a timer to release the iTunes library after so many minutes of inactivity
        /// </summary>
        /// <param name="maximumMinutes"></param>
        private static void LibraryTimer(int maximumMinutes)
        {
            Timer timer = new Timer(60 * 1000.0)
            {
                AutoReset = true
            };

            timer.Elapsed += (sender, e) =>
            {
                lock (syncRoot)
                {
                    idleTimer++;
                    if (idleTimer >= maximumMinutes)
                    {
                        if (library != null)
                        {
                            library.Quit();
                        }
                        library = null;
                        timer.Stop();
                        timer.Dispose();
                        timer = null;
                    }
                }
            };
            timer.Start();
        }
コード例 #23
0
        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
            }
        }
コード例 #24
0
        /// <summary>
        /// Maps the specified iTunes playlist to a directory structure.
        /// </summary>
        /// <param name="playlistName">The playlist.</param>
        /// <returns>A directory structure which represents the specified iTunes playlist</returns>
        public static IEnumerable<ITunesDirectoryInfo> MapPlaylistToDirectoryStructure(string playlistName)
        {
            if (String.IsNullOrEmpty(playlistName))
                throw new ArgumentException("The playlist name name cannot be null or empty", Reflector.GetMemberName(() => playlistName));

            var root = new ITunesDirectoryInfo(playlistName);

            var files = new iTunesApp()
                .LibrarySource
                .Playlists
                .ItemByName[playlistName]
                .Tracks
                .Cast<IITFileOrCDTrack>();

            var tracksByArtist = files
                .GroupBy(file => file.Artist)
                .OrderBy(group => group.Key);

            var artistDirectories = new List<ITunesDirectoryInfo>();

            foreach (var artistGroup in tracksByArtist)
            {
                var albumGroups = artistGroup
                    .GroupBy(track => track.Album);

                // The artist name has to be normalized, so that it doesn't contain any characters that are invalid for a path
                string artistName = NormalizeArtistOrAlbumName(artistGroup.Key);

                var albumDirectories = albumGroups
                    .Select(album => new { Album = album, AlbumName = NormalizeArtistOrAlbumName(album.Key) })
                    .Select
                    (
                        directory =>
                        new ITunesDirectoryInfo
                        (
                            directory.AlbumName,
                            directory.Album
                                .Where(track => track.Location != null)
                                .Select
                                (
                                    track => (IFileInfo)new LocalFileInfo(new FileInfo(track.Location))
                                ),
                            null
                        )
                    )
                    .ToList(); //Execute the query immediately, because a streaming causes weird bugs

                var artistDirectory = new ITunesDirectoryInfo(artistName, albumDirectories, root);

                foreach (ITunesDirectoryInfo albumDirectory in artistDirectory.GetDirectories())
                {
                    albumDirectory.Parent = artistDirectory;
                }

                artistDirectories.Add(artistDirectory);
            }

            return artistDirectories;
        }
コード例 #25
0
        public static long GetPersistentId(this iTunesApp iTunes, IITObject item)
        {
            object o = item;
            int    high, low;

            iTunes.GetITObjectPersistentIDs(ref o, out high, out low);
            return(Encode(high, low));
        }
コード例 #26
0
ファイル: AIModule.cs プロジェクト: andrewxu/ProjectXenix
 public AIModule()
 {
     iTunes = new iTunesLib.iTunesApp();
     bot = new SpeechSynthesizer();
     bot.SelectVoice("VW Paul");
     bot.Rate = 1;
     bot.Volume = 100;
 }
コード例 #27
0
 public ComiTunesLibrary()
 {
     app = new iTunesApp();
     CanModify = true;
     MusicFolderPath = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);
     Playlists = GetPlaylists();
     //TODO: Assign Artists and Albums
 }
コード例 #28
0
ファイル: LibraryScanner.cs プロジェクト: rundfunk47/italo
 /*public methods start here!!!*/
 public LibraryScanner(Logger logger)
 {
     if (logger == null)
         throw new ArgumentException("logger parameter is null.");
     _log = logger;
     //FIXME: Move
     _library = new iTunesApp();
 }
コード例 #29
0
 void iTunesDisconnect()
 {
     // Disconnect from iTunes
     iTunesControl = null;
     GC.Collect();
     // Update icon
     updateNotifyIcon();
 }
コード例 #30
0
        public static string getartistname()
        {
            var    app    = new iTunesApp();
            string artist = app.CurrentTrack.Artist;

            app = null;
            return(artist);
        }
コード例 #31
0
        public static string getsongname()
        {
            var    app   = new iTunesApp();
            string track = app.CurrentTrack.Name;

            app = null;
            return(track);
        }
コード例 #32
0
ファイル: iTunes.cs プロジェクト: chocolamint/iTunesHue
        //public event EventHandler<CurrentTrackChangedEventArgs> CurrentTrackChanged;
        //public event EventHandler PlayerPlay;
        //public event EventHandler PlayerStop;
        //public event EventHandler SoundVolumeChanged;

        public iTunes()
        {
            _app = new iTunesApp();
            //_currentTrack = new Track(_app.CurrentTrack);
            //_app.OnPlayerPlayEvent += app_OnPlayerPlayEvent;
            //_app.OnPlayerStopEvent += app_OnPlayerStopEvent;
            //_app.OnSoundVolumeChangedEvent += app_OnSoundVolumeChangedEvent;
        }
コード例 #33
0
        public void Start()
        {
            app = new iTunesApp();

            app.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(app_OnPlayerPlayingTrackChangedEvent);
            app.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(app_OnPlayerPlayEvent);
            app.OnPlayerStopEvent += new _IiTunesEvents_OnPlayerStopEventEventHandler(app_OnPlayerStopEvent);
        }
コード例 #34
0
ファイル: Form1.cs プロジェクト: book000/iTunes-Music-Station
        //iTunes COM SDKを解放
        void ReleaseCOM()
        {
            iTunes.OnPlayerPlayEvent -= iTunes_OnPlayerPlayEvent;
            iTunes.OnAboutToPromptUserToQuitEvent -= iTunes_OnAboutToPromptUserToQuitEvent;

            Marshal.ReleaseComObject(iTunes);
            iTunes = null;
        }
コード例 #35
0
 //初期化
 private void initiTunes()
 {
     itunes = new iTunesApp();
     itunes.OnAboutToPromptUserToQuitEvent +=
         new _IiTunesEvents_OnAboutToPromptUserToQuitEventEventHandler(itunes_OnAboutToPromptUserToQuitEvent);
     itunes.OnPlayerPlayEvent +=
         new _IiTunesEvents_OnPlayerPlayEventEventHandler(itunes_OnPlayerPlayEvent);
 }
コード例 #36
0
ファイル: Form1.cs プロジェクト: prashantv/iTunesToFoobar
        private void button1_Click(object sender, EventArgs e)
        {
            Dictionary<string, IITFileOrCDTrack> maps = new Dictionary<string,IITFileOrCDTrack>();

            string m3uLoc;
            openFileDialog1.Filter = "M3U Playlists|*.m3u";
            openFileDialog1.CheckFileExists = true;
            if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                m3uLoc = openFileDialog1.FileName;
            }
            else
            {
                MessageBox.Show("Please select a file!");
                return;
            }

            iTunesApp iT = new iTunesApp();
            IITTrackCollection tCol = iT.LibraryPlaylist.Tracks;
            prog.Maximum = tCol.Count;
            for(int i = 1; i <= tCol.Count; i++) {
                IITTrack t = iT.LibraryPlaylist.Tracks[i];
                if (t.Kind == ITTrackKind.ITTrackKindFile)
                {
                    IITFileOrCDTrack ft = (IITFileOrCDTrack)t;
                    string location = ft.Location;
                    if(location == null || location == "" ){
                        notFoundiTunes(ft);
                    } else {
                        location = location.ToLower();
                        maps[location] = ft;
                    }

                }
                prog.Value = i;
                prog.Refresh();
            }

            // and now iterate through them and print them
            string[] lines = System.IO.File.ReadAllLines(m3uLoc);
            prog.Maximum = lines.Length;
            prog.Value = 0;
            StringBuilder sb = new StringBuilder();
            foreach (string l in lines)
            {
                string line = l.ToLower();
                if(maps.ContainsKey(line)) {
                    sb.AppendLine(getOutput(maps[line]));
                } else {
                    sb.AppendLine(getDefOutput());
                    notFoundM3U(line);
                }
                prog.Value += 1;
            }

            txtOut.Text = sb.ToString();
        }
コード例 #37
0
 private void connect()
 {
     lock (lockObject)
     {
         this.iTunesApp = new iTunesApp();
         this.iTunesApp.OnQuittingEvent += new _IiTunesEvents_OnQuittingEventEventHandler(iTunesApp_OnQuittingEvent);
     }
     this.IsConnected = true;
 }
コード例 #38
0
ファイル: iTunes.cs プロジェクト: SnoUweR/iTunesSVKS-2
 public void Initialize()
 {
     app = new iTunesAppClass(){AppCommandMessageProcessingEnabled = true};
     _checkTimer = new Timer();
     _isLaunched = true;
     _checkTimer.Interval = 2000.0;
     _checkTimer.Elapsed += CheckTimerOnElapsed;
     _checkTimer.Enabled = true;
 }
コード例 #39
0
ファイル: Form1.cs プロジェクト: dsuz/TestProjects
        private void Form1_Load(object sender, EventArgs e)
        {
            iTunes = new iTunesApp();

            // add mouse event handler to capture wheel up/down events
            this.MouseWheel += new MouseEventHandler(this.Form1_MouseWheel);

            notifyIcon1.ShowBalloonTip(30);
        }
コード例 #40
0
 private static void AddMissingTracks(iTunesApp app, IEnumerable<IITFileOrCDTrack> allTracks)
 {
     var tracksByLocation = allTracks.ToDictionary(track => track.Location);
     AddMissingTracks(app, tracksByLocation, SinglesLocation);
     foreach (var dir in Directory.GetDirectories(AlbumsLocation))
     {
         AddMissingTracks(app, tracksByLocation, dir);
     }
 }
コード例 #41
0
 public Library(UpdateProgressDelegate progressUpdateDelegate, iTunesApp app)
 {
     trackList      = new Dictionary <string, Song>();
     bumperList     = new Dictionary <string, Song>();
     signoffList    = new Dictionary <string, Song>();
     itunesApp      = app;
     updateProgress = progressUpdateDelegate;
     this.CrawlFiles();
 }
コード例 #42
0
ファイル: ITunesFileSystem.cs プロジェクト: yakkobr/FlagSync
        /// <summary>
        /// Determines, if the playlist with the specified name exists.
        /// </summary>
        /// <param name="playlistName">Th name of the playlist.</param>
        /// <returns>True, if the playlist exists; otherwise, false.</returns>
        private static bool PlaylistExists(string playlistName)
        {
            var playlist = new iTunesApp()
                           .LibrarySource
                           .Playlists
                           .ItemByName[playlistName];

            return(playlist != null);
        }
コード例 #43
0
 private void connect()
 {
     lock (lockObject)
     {
         this.iTunesApp = new iTunesApp();
         this.iTunesApp.OnQuittingEvent += new _IiTunesEvents_OnQuittingEventEventHandler(iTunesApp_OnQuittingEvent);
     }
     this.IsConnected = true;
 }
コード例 #44
0
 public SelectSongForm(iTunesApp player)
 {
     if (player == null) return;
     _player = player;
     InitializeComponent();
     Icon = new Icon(GetType(), "Main.ico");
     playButton.Tag = false;
     shuffleButton.Tag = true;
 }
コード例 #45
0
        private static void FindDeadTracks(bool delete)
        {
            Console.WriteLine("Connecting to iTunes");
            iTunesApp itunes = new iTunesApp();
            int trackCount = itunes.LibraryPlaylist.Tracks.Count;

            Console.WriteLine("Inspecting {0} tracks", trackCount);
            IITFileOrCDTrack fileOrCdTrack;
            int currentTrackIndex = 0;
            int numberOfDeadTracksFound = 0;
            foreach (IITTrack track in itunes.LibraryPlaylist.Tracks)
            {
                // Show progress
                if (currentTrackIndex % 500 == 0)
                {
                    Console.WriteLine(
                        "[{0:000}%] Inspected {1} tracks so far",
                        currentTrackIndex * 100 / trackCount,
                        currentTrackIndex);
                }

                currentTrackIndex++;

                // Filter out everything which is not a file track
                fileOrCdTrack = track as IITFileOrCDTrack;
                if (fileOrCdTrack == null || fileOrCdTrack.Kind != ITTrackKind.ITTrackKindFile)
                {
                    continue;
                }

                // Filter out tracks with known file location
                if (fileOrCdTrack.Location != null)
                {
                    continue;
                }

                // If we are here, the track has missing file
                numberOfDeadTracksFound++;
                Console.WriteLine(
                    "[{0:000}%] {1} dead track: {2} - {3}",
                    currentTrackIndex * 100 / trackCount,
                    delete ? "Removing" : "Found",
                    fileOrCdTrack.Artist,
                    fileOrCdTrack.Name);
                if (delete)
                {
                    fileOrCdTrack.Delete();
                }
            }

            Console.WriteLine("[{0:000}%] Inspected {1} tracks", 100, trackCount);
            Console.WriteLine(
                "{0} {1} tracks where it's file doesn't exist",
                delete ? "Removed" : "Found",
                numberOfDeadTracksFound);
        }
コード例 #46
0
ファイル: Form1.cs プロジェクト: book000/iTunes-Music-Station
        public Form1()
        {

            InitializeComponent();
            //iTunes COMのセットアップ
            iTunes = new iTunesApp();
            iTunes.OnAboutToPromptUserToQuitEvent += new _IiTunesEvents_OnAboutToPromptUserToQuitEventEventHandler(iTunes_OnAboutToPromptUserToQuitEvent);
            iTunes.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(iTunes_OnPlayerPlayEvent);

        }
コード例 #47
0
ファイル: Program.cs プロジェクト: afit/iTunesPauser
        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        static void Main()
        {
            AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler( UnhandledException );
            iTunesApp application = new iTunesApp();

            if( application.PlayerState == ITPlayerState.ITPlayerStateStopped )
                application.Play();
            else
                application.Pause();
        }
コード例 #48
0
        public CommentSettingWindow()
        {
            InitializeComponent();

            var itunes = new iTunesApp();

            var o = itunes.LibraryPlaylist.Tracks.Cast<IITTrack>().GroupBy(x => x.Album).ToArray();

            List<ViewModel> ret = new List<ViewModel>();

            foreach (var a in o)
            {
                var minAritistsLength = a.ToArray().Select(x => x.Artist.Length).Min();

                string artist = a.ToArray().Where(x => x.Artist.Length == minAritistsLength).First().Artist;

                var model = new ViewModel();
                model.IsInitailizing = true;
                model.AlbumName = a.Key;

                if (a.ToArray().Where(x => string.IsNullOrWhiteSpace(x.Comment) == true).Any() == false)
                {
                    if (a.ToArray().Select(x => x.Comment.Split('@').First()).Distinct().Count() == 1)
                    {
                        model.ArtistName = a.ToArray().Select(x => x.Comment.Split('@').First()).Distinct().First();
                    }

                    if (string.IsNullOrWhiteSpace(model.ArtistName) == false)
                    {
                        if (a.ToArray().Select(x => x.Comment.Split('@').ElementAtOrDefault(1)).Distinct().Count() == 1)
                        {
                            model.ReleaseYear = a.ToArray().Select(x => x.Comment.Split('@').ElementAtOrDefault(1)).Distinct().First();
                        }
                    }

                    if (string.IsNullOrWhiteSpace(model.ReleaseYear) == false)
                    {
                        if (a.ToArray().Select(x => x.Comment.Split('@').ElementAtOrDefault(2)).Distinct().Count() == 1)
                        {
                            model.ReleaseOrder = a.ToArray().Select(x => x.Comment.Split('@').ElementAtOrDefault(2)).Distinct().First();
                        }
                    }
                }

                if (string.IsNullOrWhiteSpace(model.ArtistName) == true)
                {
                    model.ArtistName = artist;
                }
                model.IsInitailizing = false;

                ret.Add(model);
            }

            this.dataGrid.ItemsSource = ret.ToArray();
        }
コード例 #49
0
        public byte[] GetAlbumArtByAlbum(Album album)
        {
            byte[] imageData = null;
            Track foundTrack = null;
            iTunesApp iTunes = null;

            try
            {
                iTunes = new iTunesApp();

                foreach (IITFileOrCDTrack track in iTunes.LibraryPlaylist.Search(album.Title,
                    ITPlaylistSearchField.ITPlaylistSearchFieldAlbums))
                {
                    if (!string.Equals(track.Artist, album.ArtistName))
                    {
                        continue;
                    }

                    foundTrack = track.GetTrack();
                    break;
                }

                if (foundTrack != null && File.Exists(foundTrack.FilePath))
                {
                    using (FileStream fileStream = new FileStream(foundTrack.FilePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
                    {
                        try
                        {
                            TagContainer tags = new Id3TagManager().ReadV2Tag(fileStream);
                            if (tags != null)
                            {
                                IFrame apicFrame = tags.SearchFrame("APIC");
                                if (apicFrame != null)
                                {
                                    PictureFrame pictureFrame = FrameUtilities.ConvertToPictureFrame(apicFrame);
                                    imageData = pictureFrame.PictureData.ToArray<byte>();
                                }
                            }
                        }
                        catch (Id3TagException) { /* Do nothing */}
                    }
                }

                return imageData;
            }
            catch (Exception ex)
            {
                LogUtility.LogException(ex);
                throw;
            }
            finally
            {
                // Marshall.ReleaseComObject?
            }
        }
コード例 #50
0
ファイル: iTunes.cs プロジェクト: krazzzo/Snip
        public override void Load()
        {
            // invoke relies on the form..........................

            this.iTunesApplication = new iTunesApp();

            this.iTunesApplication.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(this.App_OnPlayerPlayEvent);
            this.iTunesApplication.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(this.App_OnPlayerPlayingTrackChangedEvent);
            this.iTunesApplication.OnPlayerStopEvent += new _IiTunesEvents_OnPlayerStopEventEventHandler(this.App_OnPlayerStopEvent);
            this.iTunesApplication.OnQuittingEvent += new _IiTunesEvents_OnQuittingEventEventHandler(this.App_OnPlayerQuittingEvent);
        }
コード例 #51
0
 public ITunesController(AIModule aim)
 {
     try
     {
         this.iTunes = new iTunesLib.iTunesApp();
         this.aim = aim;
     }
     catch (Exception)
     {
         throw new Exception("Problem loading iTunes.");
     }
 }
コード例 #52
0
        private void sortButton_Click(object sender, RoutedEventArgs e)
        {
            Task.Factory.StartNew(() =>
            {
                try
                {
                    this.Dispatch(() =>
                    {
                        this.IsEnabled = false;
                    });

                    var iTunes = new iTunesApp();

                    var playlists =
                        this.playlistSortListView.Items
                        .Cast<UserPlaylistViewModel>()
                        .Where(x => x.IsChecked == true);

                    playlists.AsParallel().ForAll(playlist =>
                    {
                        var created = iTunes.CreatePlaylist(playlist.Name) as IITUserPlaylist;

                        var source = playlist.Model;

                        created.Shuffle = source.Shuffle;
                        created.SongRepeat = source.SongRepeat;

                        created.AddRangeTracks(
                            source.Tracks
                            .Cast<IITTrack>()
                            .OrderBy("Comment", "DiscNumber", "TrackNumber")
                            .ToArray());

                        source.Delete();

                        playlist.Model = created;
                        playlist.IsChecked = false;
                    });

                    this.Dispatch(() =>
                    {
                        MessageBox.Show(this, "completed");
                    });
                }
                finally
                {
                    this.Dispatch(() =>
                    {
                        this.IsEnabled = true;
                    });
                }
            });
        }
コード例 #53
0
 public bool Disconnect()
 {
     lock (lockObject)
     {
         if (iTunesApp != null)
         {
             System.Runtime.InteropServices.Marshal.ReleaseComObject(iTunesApp);
             iTunesApp = null;
             GC.Collect();
         }
     }
     return true;
 }
コード例 #54
0
ファイル: iTunes.cs プロジェクト: floppydrive/Snip
        public override void Unload()
        {
            base.Unload();

            if (this.iTunesApplication != null)
            {
                this.iTunesApplication.OnPlayerPlayEvent -= this.App_OnPlayerPlayEvent;
                this.iTunesApplication.OnPlayerPlayingTrackChangedEvent -= this.App_OnPlayerPlayingTrackChangedEvent;
                this.iTunesApplication.OnPlayerStopEvent -= this.App_OnPlayerStopEvent;
                this.iTunesApplication.OnQuittingEvent -= this.App_OnPlayerQuittingEvent;

                this.iTunesApplication = null;
            }
        }
コード例 #55
0
ファイル: Program.cs プロジェクト: GerManson/Webituns
        static void Main(string[] args)
        {
            iTunesApp iTunesInstance = new iTunesApp();

            if (args.Length == 0)
            {
                return;
            }

            switch(args[0].ToLower())
            {
                case "next":
                    iTunesInstance.NextTrack();

                    break;

                case "prev":
                    iTunesInstance.PreviousTrack();

                    break;

                case "play":
                    iTunesInstance.Play();

                    break;

                case "pause":
                    iTunesInstance.Pause();

                    break;

                case "current_track_artist":
                    Console.WriteLine(iTunesInstance.CurrentTrack.Artist);

                    break;

                case "current_track_name":
                    Console.WriteLine(iTunesInstance.CurrentTrack.Name);

                    break;

                case "state":
                    Console.WriteLine(iTunesInstance.PlayerState.ToString());

                    break;

                default:
                    break;
            }
        }
コード例 #56
0
 public PlaylistBuilder(MediaInfoKeeper p_keeper, IMonitorThreadInterface p_monitor)
 {
     try
     {
         iTunes = p_monitor.PlayerObject as iTunesApp;
         monitor = p_monitor;
         keeper = p_keeper;
     }
     catch (Exception e)
     {
         Log.Write(e);
         throw e;
     }
 }
コード例 #57
0
ファイル: Logic.cs プロジェクト: kchikuse/kinect
        public Logic()
        {
            armed = true;

            resetTimer = new Timer();
            itunes = new iTunesApp();
            speaker = new SpeechSynthesizer();

            resetTimer.Interval = TimeSpan.FromMinutes(30).TotalMilliseconds;
            resetTimer.Elapsed += (o, e) =>
                                      {
                                          armed = true;
                                          resetTimer.Stop();
                                      };
        }
コード例 #58
0
ファイル: formMain.cs プロジェクト: joeyespo/ituner
        public void iTunesConnect()
        {
            // Connect to iTunes
              try
              {
            iTunesControl = new iTunesAppClass();
              }
              catch (COMException ex)
              {
            iTunesError(ex, "Could not connect to iTunes.");
              }

              // Set up iTunes
              updateNotifyIcon();
        }
コード例 #59
0
 private static void AddMissingTracks(iTunesApp app, IDictionary<string, IITFileOrCDTrack> tracksByLocation, string dir)
 {
     foreach (var file in Directory.GetFiles(dir))
     {
         if (!MusicFileExtensions.Contains(Path.GetExtension(file.ToLower())))
         {
             continue;
         }
         if (!tracksByLocation.ContainsKey(file))
         {
             Console.WriteLine("Adding track: " + file);
             app.LibraryPlaylist.AddFile(file);
         }
     }
 }
コード例 #60
0
ファイル: iTunes.cs プロジェクト: dlrudie/Snip
        public override void Load()
        {
            try
            {
                this.iTunesApplication = new iTunesApp();

                this.iTunesApplication.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(this.App_OnPlayerPlayEvent);
                this.iTunesApplication.OnPlayerPlayingTrackChangedEvent += new _IiTunesEvents_OnPlayerPlayingTrackChangedEventEventHandler(this.App_OnPlayerPlayingTrackChangedEvent);
                this.iTunesApplication.OnPlayerStopEvent += new _IiTunesEvents_OnPlayerStopEventEventHandler(this.App_OnPlayerStopEvent);
                this.iTunesApplication.OnQuittingEvent += new _IiTunesEvents_OnQuittingEventEventHandler(this.App_OnPlayerQuittingEvent);
            }
            catch (System.Runtime.InteropServices.COMException comException)
            {
                MessageBox.Show(Globals.ResourceManager.GetString("iTunesException") + "\n\n" + comException.Message, Globals.ResourceManager.GetString("SnipForm"), MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }