static async Task MainAsync(string[] args) { Console.WriteLine("NowPlayingParser Initializing..."); if (!System.IO.File.Exists("token.txt")) { Console.WriteLine("Please create 'token.txt' and write your token in it.\n"); Console.WriteLine("Press any key to exit.."); Console.ReadKey(); Environment.Exit(1); } string token = System.IO.File.ReadAllText("token.txt"); discord = new DiscordClient(new DiscordConfiguration { Token = token, TokenType = TokenType.User }); // setup iTunes event handler iTunesClient = new iTunesLib.iTunesApp(); iTunesClient.OnPlayerPlayEvent += ITunesClient_OnPlayerPlayEvent; iTunesClient.OnPlayerStopEvent += ITunesClient_OnPlayerStopEvent; // connect to discord and get Username await discord.ConnectAsync(); Console.WriteLine("Connected to Discord!"); // get current user DiscordUser userObject = discord.CurrentUser; Console.WriteLine("Connected as: " + userObject.Username); // wait await Task.Delay(-1); }
private void musicButton_Click(object sender, RoutedEventArgs e) { try { app = new iTunesLib.iTunesApp(); } catch (Exception) { MessageBox.Show("オープンに失敗しました"); } if (app != null) { try { //何も再生していないと例外発生するぞ!(ここでは面倒なので何もしていない) string trackName = app.CurrentTrack.Name; string trackArtist = app.CurrentTrack.Artist; var dialog = new ModernDialog1("アーティスト:" + trackArtist + "\n曲名:" + trackName); dialog.ShowDialog(); this.tweetInputBox.Text = "#nowplaying" + "\nアーティスト:" + trackArtist + "\n曲名:" + trackName; //あとDisposeか何かしてやらないと、これを閉じた後もiTunesがまだ繋がってると認識するっぽい。 } catch (Exception ex) { var dialog = new ModernDialog1("何も再生していません"); dialog.ShowDialog(); } } }
public MainWindow() { InitializeComponent(); Closing += MainWindow_Closing; iTunes = new iTunesLib.iTunesApp(); iTunes.OnAboutToPromptUserToQuitEvent += ITunesApp_OnAboutToPromptUserToQuitEvent; }
public void Start_iTunes() { try { it = new iTunesLib.iTunesApp(); } catch (Exception) { //throw new Exception("iTunes not installed"); } }
private void openButton_Click(object sender, RoutedEventArgs e) { // var player = new NowPlayingLib.iTunes(); try { app = new iTunesLib.iTunesApp(); } catch (Exception) { MessageBox.Show("オープンに失敗しました"); } }
public void ReleaseComObject() { if (iTunes == null) { return; } iTunes.OnAboutToPromptUserToQuitEvent -= ITunesApp_OnAboutToPromptUserToQuitEvent; Marshal.ReleaseComObject(iTunes); iTunes = null; }
static void Main(string[] args) { iTunesLib.iTunesApp app = null; Console.WriteLine("ITunes Synchronization"); try { app = new iTunesLib.iTunesApp(); Console.WriteLine("ITunes Version " + app.Version); iTunesLib.IITLibraryPlaylist libraryPlaylist = app.LibraryPlaylist; if (libraryPlaylist == null) { Console.WriteLine("Error: No library playlist detected"); Environment.Exit(-1); return; } if (!Directory.Exists(ITunesSync.Default.MusicDirectory)) { Console.WriteLine("Error: Music Storage Directory Not Found ({0})"); Console.WriteLine("Check configuration settings file"); Environment.Exit(-1); return; } Console.WriteLine("Music Storage Directory: {0}", ITunesSync.Default.MusicDirectory); Console.WriteLine("Delete Unresolved Files: {0}", ITunesSync.Default.DeleteUnresolvedTracks); Console.WriteLine("No Updates: {0}", ITunesSync.Default.NoUpdates); Console.WriteLine("Proceed with sync? (y/N)"); ConsoleKeyInfo response = Console.ReadKey(); if (response.Key != ConsoleKey.Y) { Console.WriteLine("Info: ITunes Synchronization Aborted"); return; } Console.WriteLine("{0} Playlist, {1} assets", libraryPlaylist.Name, libraryPlaylist.Tracks.Count); var fileTracks = from libTrack in libraryPlaylist.Tracks.OfType<iTunesLib.IITTrack>() where libTrack.Kind == iTunesLib.ITTrackKind.ITTrackKindFile select libTrack; var cdTracks = from track in fileTracks where track is iTunesLib.IITFileOrCDTrack select track as iTunesLib.IITFileOrCDTrack; var resolvedTracks = from resolvedTrack in cdTracks.AsParallel() where !String.IsNullOrEmpty(resolvedTrack.Location) select resolvedTrack.Location.ToLowerInvariant(); var unresolvedTracks = from unresolvedTrack in cdTracks where String.IsNullOrEmpty(unresolvedTrack.Location) select unresolvedTrack as iTunesLib.IITTrack; var discoveredMusic = from file in Directory.GetFiles(ITunesSync.Default.MusicDirectory, "*.mp3", SearchOption.AllDirectories).AsParallel() select file.ToLowerInvariant(); var newFiles = discoveredMusic.Except(resolvedTracks); bool noUpdates = ITunesSync.Default.NoUpdates; if (noUpdates) { Console.WriteLine("**** NoUpdate Mode Enabled : NO CHANGES WILL BE WRITTEN TO DISK ****"); } StringBuilder shortPath = new StringBuilder(MAX_PATH); foreach (String file in newFiles) { if (!File.Exists(file)) { continue; } if (!noUpdates) { if (file.Length > MAX_PATH) { GetShortPathName(file, shortPath, shortPath.Capacity); libraryPlaylist.AddFile(shortPath.ToString()); shortPath.Remove(0, shortPath.Length); } else { libraryPlaylist.AddFile(file); } } Console.WriteLine("Info: Adding {0}", file); } bool deleteUnresolved = ITunesSync.Default.DeleteUnresolvedTracks && !noUpdates; // print out all unknown files unresolvedTracks.ForEach(unresolvedTrack => Program.DeleteTrack(unresolvedTrack, deleteUnresolved)); } catch { if (app != null) { ((IDisposable)app).Dispose(); } } }
private void PlayTitleCommand_Executed(object sender, ExecutedRoutedEventArgs e) { var processes = Process.GetProcessesByName("iTunes"); if (processes.Length != 0) { var iTunes = new iTunesLib.iTunesApp(); try { var track = iTunes.CurrentTrack; if (track == null) { return; } var text = string.Format(Settings.Default.NowPlayingFormat, track.Name, track.Album, track.Artist); TweetTextBox.Text = TweetTextBox.Text.Insert(TweetTextBox.CaretIndex, text); TweetTextBox.CaretIndex = TweetTextBox.Text.Length; } finally { System.Runtime.InteropServices.Marshal.ReleaseComObject(iTunes); iTunes = null; } } else { ActiveWinamp.Application Winamp = null; try { Winamp = new ActiveWinamp.Application(); var track = Winamp.Playlist[Winamp.Playlist.Position]; if (track == null) { return; } var text = string.Format(Settings.Default.NowPlayingFormat, track.Title, track.Album, track.Artist); TweetTextBox.Text = TweetTextBox.Text.Insert(TweetTextBox.CaretIndex, text); TweetTextBox.CaretIndex = TweetTextBox.Text.Length; } catch { } finally { if (Winamp != null) { System.Runtime.InteropServices.Marshal.ReleaseComObject(Winamp); Winamp = null; } } } }
public string ExecuteCommand(string cmd, string args) { try { switch (cmd.ToLower()) { // values case "artist": return(it.CurrentTrack.Artist); case "title": return(it.CurrentTrack.Name); case "album": return(it.CurrentTrack.Album); case "bitrate": return(Convert.ToString(it.CurrentTrack.BitRate)); case "bpm": return(Convert.ToString(it.CurrentTrack.BPM)); case "composer": return(it.CurrentTrack.Composer); case "elapsedtime": int p = it.PlayerPosition; if (p % 60 < 10) { return((p / 60) + ":0" + (p % 60)); } else { return((p / 60) + ":" + (p % 60)); } case "genre": return(it.CurrentTrack.Genre); case "playedcount": return(Convert.ToString(it.CurrentTrack.PlayedCount)); case "rating": return(Convert.ToString(it.CurrentTrack.Rating)); case "samplerate": return(Convert.ToString(it.CurrentTrack.SampleRate)); case "duration": return(it.CurrentTrack.Time); case "#": return(Convert.ToString(it.CurrentTrack.TrackNumber)); case "year": return(Convert.ToString(it.CurrentTrack.Year)); // actions case "playpause": it.PlayPause(); break; case "stop": it.Stop(); break; case "nexttrack": it.NextTrack(); break; case "prevtrack": it.PreviousTrack(); break; case "quit": it.Quit(); break; case "play": it.Play(); break; default: break; } return(""); } catch (NullReferenceException) { return("Not Loaded"); } catch (Exception) { System.Threading.Thread.Sleep(100); // error - re-create itunes object it = new iTunesLib.iTunesApp(); try { return(ExecuteCommand(cmd, args)); } catch (Exception exp) { // still won't work, spit out a message to the user, sorry. return(exp.Message); } // itunes must now work, handle the request } }
static void Main(string[] args) { iTunesLib.iTunesApp app = null; Console.WriteLine("ITunes Synchronization"); try { app = new iTunesLib.iTunesApp(); Console.WriteLine("ITunes Version " + app.Version); iTunesLib.IITLibraryPlaylist libraryPlaylist = app.LibraryPlaylist; if (libraryPlaylist == null) { Console.WriteLine("Error: No library playlist detected"); Environment.Exit(-1); return; } if (!Directory.Exists(ITunesSync.Default.MusicDirectory)) { Console.WriteLine("Error: Music Storage Directory Not Found ({0})"); Console.WriteLine("Check configuration settings file"); Environment.Exit(-1); return; } Console.WriteLine("Music Storage Directory: {0}", ITunesSync.Default.MusicDirectory); Console.WriteLine("Delete Unresolved Files: {0}", ITunesSync.Default.DeleteUnresolvedTracks); Console.WriteLine("No Updates: {0}", ITunesSync.Default.NoUpdates); Console.WriteLine("Proceed with sync? (y/N)"); ConsoleKeyInfo response = Console.ReadKey(); if (response.Key != ConsoleKey.Y) { Console.WriteLine("Info: ITunes Synchronization Aborted"); return; } Console.WriteLine("{0} Playlist, {1} assets", libraryPlaylist.Name, libraryPlaylist.Tracks.Count); var fileTracks = from libTrack in libraryPlaylist.Tracks.OfType <iTunesLib.IITTrack>() where libTrack.Kind == iTunesLib.ITTrackKind.ITTrackKindFile select libTrack; var cdTracks = from track in fileTracks where track is iTunesLib.IITFileOrCDTrack select track as iTunesLib.IITFileOrCDTrack; var resolvedTracks = from resolvedTrack in cdTracks.AsParallel() where !String.IsNullOrEmpty(resolvedTrack.Location) select resolvedTrack.Location.ToLowerInvariant(); var unresolvedTracks = from unresolvedTrack in cdTracks where String.IsNullOrEmpty(unresolvedTrack.Location) select unresolvedTrack as iTunesLib.IITTrack; var discoveredMusic = from file in Directory.GetFiles(ITunesSync.Default.MusicDirectory, "*.mp3", SearchOption.AllDirectories).AsParallel() select file.ToLowerInvariant(); var newFiles = discoveredMusic.Except(resolvedTracks); bool noUpdates = ITunesSync.Default.NoUpdates; if (noUpdates) { Console.WriteLine("**** NoUpdate Mode Enabled : NO CHANGES WILL BE WRITTEN TO DISK ****"); } StringBuilder shortPath = new StringBuilder(MAX_PATH); foreach (String file in newFiles) { if (!File.Exists(file)) { continue; } if (!noUpdates) { if (file.Length > MAX_PATH) { GetShortPathName(file, shortPath, shortPath.Capacity); libraryPlaylist.AddFile(shortPath.ToString()); shortPath.Remove(0, shortPath.Length); } else { libraryPlaylist.AddFile(file); } } Console.WriteLine("Info: Adding {0}", file); } bool deleteUnresolved = ITunesSync.Default.DeleteUnresolvedTracks && !noUpdates; // print out all unknown files unresolvedTracks.ForEach(unresolvedTrack => Program.DeleteTrack(unresolvedTrack, deleteUnresolved)); } catch { if (app != null) { ((IDisposable)app).Dispose(); } } }