Advertisement
tankcr

form1

Jul 29th, 2014
248
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 36.58 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.ComponentModel;
  5. using System.Data;
  6. using System.Reflection;
  7. using System.Drawing;
  8. using System.Linq;
  9. using System.Text;
  10. using System.Threading;
  11. using System.Threading.Tasks;
  12. using System.Windows.Forms;
  13. using System.Text.RegularExpressions;
  14. using TagLib;
  15. using System.Xml.Serialization;
  16. using iTunesLib;
  17. using System.Xml;
  18. using System.Xml.Linq;
  19. using System.Diagnostics;
  20.  
  21. namespace MusicLibUtility
  22. {
  23.    
  24.     public partial class Form1 : Form
  25.     {
  26.         private BackgroundWorker worker = new BackgroundWorker();
  27.         private AutoResetEvent _resetEvent = new AutoResetEvent(false);
  28.         public static iTunesAppClass itunes = new iTunesAppClass();
  29.         iTunesApp itunesApp = new iTunesLib.iTunesApp();
  30.         public static IITLibraryPlaylist mainLibrary = itunes.LibraryPlaylist;
  31.         public static IITTrackCollection ittracks = mainLibrary.Tracks;
  32.         List<string> folders = new List<string>();
  33.         List<string> files = new List<string>();
  34.         List<string> musicfiles = new List<string>();
  35.         List<string> badfiles = new List<string>();
  36.         List<string> songlist = new List<string>();
  37.         FileInfo[] filesacc = null;
  38.         DirectoryInfo[] subDirs = null;
  39.         string currfilePath;
  40.         string currDirPath;
  41.         DataTable MLTable;
  42.         DataTable badTable;
  43.         //List<string> extensions = new List<string>();
  44.        
  45.         public Form1()
  46.         {
  47.             InitializeComponent();
  48.             label6.Text = "Directory Scanner Status Messages";
  49.             label11.Text = "Bad Media File Scanner Status Messages";
  50.             label15.Text = "iTunes Media Library Scanner Status Messages";
  51.             try
  52.             {label17.Text = itunes.CurrentTrack.Name;}
  53.             catch
  54.             { }
  55.             try
  56.             {
  57.                 label14.Text = itunes.CurrentTrack.Artist;
  58.             }
  59.             catch
  60.             { }
  61.             try
  62.             {
  63.                 Currtracks currtrack = Currtracks.GetiTunestrack.GetTrackInfo();
  64.                 currfilePath = currtrack.currTrack.trackPath;
  65.                 label13.Text = currfilePath;
  66.                 currDirPath = currtrack.currTrack.dirPath;
  67.             }
  68.             catch{}
  69.             try
  70.             {
  71.                 try {
  72.                         var file = TagLib.File.Create(currfilePath);
  73.                         if (file.Tag.Pictures.Length >= 1)
  74.                         {
  75.                             var bin = (byte[])(file.Tag.Pictures[0].Data.Data);
  76.                             panel7.BackgroundImage = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(95, 95, null, IntPtr.Zero);
  77.                         }
  78.                         else { int albumart = 0; panel7.BackgroundImage = MusicLibUtility.Properties.Resources.nocover1; }
  79.                     }
  80.                 catch
  81.                 {
  82.                     int albumart = 0;
  83.                     panel7.BackgroundImage = MusicLibUtility.Properties.Resources.nocover1;
  84.                 }
  85.             }
  86.             catch { }
  87.             var myiTunes = new iTunesAppClass();
  88.             this.pictureBox1.Image = Properties.Resources.skinitunes;
  89.             itunesApp.OnPlayerPlayEvent += new _IiTunesEvents_OnPlayerPlayEventEventHandler(itunesApp_OnPlayerPlayEvent);      
  90.             dataGridView1.DataSource = dataTable1;
  91.             backgroundWorker4.RunWorkerAsync();
  92.  
  93.         }
  94.  
  95.         private void itunesApp_OnPlayerPlayEvent(object iTrack)
  96.         {
  97.             Currtracks currtrack = Currtracks.GetiTunestrack.GetTrackInfo();
  98.             //IITTrack currentTrack = (IITTrack)iTrack;
  99.             //string playerstate = itunes.PlayerState.ToString();
  100.             string trackName = currtrack.currTrack.trackName;
  101.             string artist = currtrack.currTrack.artist;
  102.             string album = currtrack.currTrack.album;
  103.             label17.Text = trackName;
  104.             label14.Text = artist;
  105.             if (itunes.CurrentTrack.Kind == ITTrackKind.ITTrackKindFile)
  106.             {
  107.                 currtrack = Currtracks.GetiTunestrack.GetTrackInfo();
  108.                 currfilePath = currtrack.currTrack.trackPath;
  109.                 currDirPath = currtrack.currTrack.dirPath;
  110.                 label13.Text = currfilePath;
  111.             }
  112.             label13.Text = currfilePath;
  113.             try
  114.             { panel7.BackgroundImage.Dispose(); }
  115.             catch { }
  116.                 try
  117.                 {
  118.                     var file = TagLib.File.Create(currfilePath);
  119.                     if (file.Tag.Pictures.Length >= 1)
  120.                     {
  121.                         var bin = (byte[])(file.Tag.Pictures[0].Data.Data);
  122.                         panel7.BackgroundImage = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(95, 95, null, IntPtr.Zero);
  123.                     }
  124.                     else { int albumart = 0; panel7.BackgroundImage = MusicLibUtility.Properties.Resources.nocover1; }
  125.                 }
  126.                 catch { int albumart = 0; panel7.BackgroundImage = MusicLibUtility.Properties.Resources.nocover1; }
  127.         }
  128.         private void label1_Click(object sender, EventArgs e)
  129.         {
  130.             label1.Text = itunes.LibraryXMLPath;
  131.         }
  132.  
  133.         private void folderBrowserDialog1_HelpRequest(object sender, EventArgs e)
  134.         {
  135.  
  136.         }
  137.  
  138.         private void folderPath_Click(object sender, EventArgs e)
  139.         {
  140.             if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
  141.             {
  142.                 this.label4.Text = folderBrowserDialog1.SelectedPath;
  143.                 string dir = label4.Text;
  144.             }
  145.         }
  146.         private void Form1_Load(object sender, EventArgs e)
  147.         {
  148.             iTunesAppClass itunes = new iTunesAppClass();
  149.             string iTXMLPath = itunes.LibraryXMLPath;
  150.             label1.Text = iTXMLPath;
  151.             label4.Text = Path.GetDirectoryName(iTXMLPath);
  152.             if (!backgroundWorker4.IsBusy)
  153.             { backgroundWorker4.RunWorkerAsync(); }
  154.             if ((int)itunes.PlayerState == 0)
  155.             {
  156.                 button5.Image = MusicLibUtility.Properties.Resources.playTrans;
  157.             }
  158.            
  159.             else if ((int)itunes.PlayerState == 1)
  160.             {
  161.                 button5.Image = MusicLibUtility.Properties.Resources.pauseTrans;
  162.             }
  163.         }
  164.  
  165.         private void groupBox2_Enter(object sender, EventArgs e)
  166.         {
  167.  
  168.         }
  169.  
  170.         private void button1_Click(object sender, EventArgs e)
  171.         {
  172.  
  173.             Application.DoEvents();
  174.             label6.Text = null;
  175.             label11.Text = null;
  176.             label12.Text = null;
  177.             pictureBox4.Image = null;
  178.             pictureBox6.Image = null;
  179.             pictureBox7.Image = null;
  180.             pictureBox3.Image = null;
  181.             pictureBox5.Image = null;
  182.             pictureBox8.Image = null;
  183.             pictureBox1.Image = Properties.Resources.running;
  184.             string filepath = label4.Text;
  185.             DirectoryInfo rootDir = new DirectoryInfo(filepath);
  186. //            string[] allfiles = Directory.GetFiles(rootDir.FullName, "*.*", SearchOption.AllDirectories);
  187. //            foreach (string filename in allfiles) { System.Diagnostics.Debug.WriteLine(filename + " "); }
  188. //            string extensionstring = extensions.ToString();
  189. //            System.IO.File.WriteAllLines(@filepath + "\\testfiles.txt", allfiles);
  190.  
  191.             if (!backgroundWorker1.IsBusy)
  192.             { backgroundWorker1.RunWorkerAsync(); }
  193.             pictureBox3.Image = Properties.Resources.scanning;
  194.             if (!backgroundWorker2.IsBusy)
  195.             { backgroundWorker2.RunWorkerAsync(); }
  196.             if (!backgroundWorker3.IsBusy)
  197.             { backgroundWorker3.RunWorkerAsync(); }
  198.             if (!backgroundWorker7.IsBusy)
  199.             { backgroundWorker7.RunWorkerAsync(); }
  200.  
  201.             //label6.Text = "Task Completed";
  202.             //this.pictureBox1.Image = Properties.Resources.skinitunes;
  203.  
  204.         }
  205.         private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
  206.         {
  207.             string filepath = label4.Text;
  208.             DirectoryInfo rootDir = new DirectoryInfo(filepath);
  209.             label7.Text = rootDir.FullName;
  210.             Control.CheckForIllegalCrossThreadCalls = false;
  211.             backgroundWorker2.Dispose();
  212.             backgroundWorker3.Dispose();
  213.             backgroundWorker1.WorkerSupportsCancellation = true;
  214.             label6.Text = null;
  215.             System.Diagnostics.Debug.WriteLine(Directory.GetDirectories(filepath)+ " ");
  216.             System.Diagnostics.Debug.WriteLine(rootDir + " ");
  217.             string[] allfiles = null;
  218.             string[] Dirs = null;
  219.             RecursiveFileSearch rfs = new RecursiveFileSearch();
  220.             rfs.WalkDirectoryTree(rootDir);
  221. //            rfs.dirInfo;
  222.             foreach (string s in rfs.log)
  223.             {
  224.                 Console.WriteLine(s);
  225.             }
  226.             // Keep the console window open in debug mode.
  227.             List<FileInfo>filelist = rfs.Files;
  228. //            try
  229. //            { Dirs = Directory.GetDirectories(filepath); }
  230. //            catch (UnauthorizedAccessException) { }
  231.  
  232.  
  233. //            try
  234. //            {
  235. //                allfiles = Directory.GetFiles(rootDir.FullName, "*.*", SearchOption.AllDirectories);
  236. //            }
  237. //            catch (UnauthorizedAccessException) { };
  238.             //foreach (string filename in allfiles) { System.Diagnostics.Debug.WriteLine(filename + " "); }
  239.             string extensionstring = extensions.ToString();
  240. //           System.IO.File.WriteAllLines(@filepath + "\\testfiles.txt", allfiles);
  241.             foreach (KeyValuePair<string, string> ext in extensions)
  242.             {
  243.                 label5.Text = ext.Value;
  244.                 foreach(FileInfo file in filelist)
  245.                 {
  246.                     label7.Text = Path.GetFullPath(file.Directory.ToString());
  247.                     if (extensions.ContainsKey(file.Extension.ToString()))
  248.                     {
  249.                         files.Add(file.FullName);
  250.                         label8.Text = file.Name;
  251.                     }
  252.                     else { }
  253.                 }
  254.             }
  255.             this.pictureBox3.Image = null;
  256.             Int32 filecount = files.Count;
  257.             label7.Text = "Directories";
  258.             this.pictureBox4.Image = Properties.Resources.music16;
  259.             pictureBox5.Image = MusicLibUtility.Properties.Resources.scanning;
  260.             this.pictureBox1.Image = Properties.Resources.skinitunes;
  261.             label11.Text = "Preparing to scan for corupt media files";
  262.             Thread.Sleep(2000);
  263.  
  264.         }
  265.  
  266.         private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  267.         {
  268.  
  269.             pictureBox3.Image = null;    
  270.             label8.Text = "Complete";
  271.  
  272.         }
  273.  
  274.         private void label7_Click(object sender, EventArgs e)
  275.         {
  276.             try
  277.             {            
  278.                 Process.Start(@label7.Text.ToString());
  279.             }
  280.             catch { }
  281.         }
  282.  
  283.         private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
  284.         {
  285.             do
  286.             {
  287.  
  288.                 label6.Text = "Your Directories are Being Scanned";
  289.                 Thread.Sleep(200);
  290.  
  291.                 label6.Text = "Your Directories are Being Scanned.";
  292.                 Thread.Sleep(200);
  293.  
  294.                 label6.Text = "Your Directories are Being Scanned..";
  295.                 Thread.Sleep(200);
  296.  
  297.                 label6.Text = "Your Directories are Being Scanned...";
  298.                 Thread.Sleep(200);
  299.  
  300.                 label6.Text = "Your Directories are Being Scanned....";
  301.                 Thread.Sleep(200);
  302.             }
  303.             while (backgroundWorker1.IsBusy);
  304.             label6.Text = "Directory Scan Complete " + files.Count.ToString() + " Media Files located";
  305.             string ITPlaypat = "ITPlayerState";
  306.             int state = ((int)itunes.PlayerState);
  307.             string statestring = null;
  308.             if (state < 1) { statestring = "Stopped"; };
  309.             if (state == 1) { statestring = "Playing"; };
  310.             if (state == 1)
  311.             {
  312.                 do
  313.                 {
  314.                     label17.Text = ("Pausing iTunes to maintain file integrity");
  315.                     itunes.Pause();
  316.                     state = (int)itunes.PlayerState;
  317.                 }
  318.                 while (state == 1);
  319.             }
  320.             if (state < 1) { statestring = "Stopped"; };
  321.             if (state == 1) { statestring = "Playing"; };
  322.  
  323.             //label5.Text = "Itunes is now " + Regex.Replace(itunes.PlayerState.ToString(), ITPlaypat, "");
  324.  
  325.             pictureBox1.Image = Properties.Resources.running;
  326.             foreach (string file in files)
  327.             {
  328.                 label8.Text = "Scanning "+ file;
  329.                 try { string taglibfile = TagLib.File.Create(file).Tag.Title; musicfiles.Add(file); Console.WriteLine(taglibfile); }
  330.                 catch { badfiles.Add(file); }
  331.             }
  332.             XDocument baddoc = new XDocument
  333.             (new XElement("Corrupt",
  334.                badfiles.Select(badfile =>
  335.                new XElement("File", badfile))));
  336.             baddoc.Save(label4.Text + "\\badfiles.xml");
  337.         }
  338.         private void backgroundWorker2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  339.         {
  340.             pictureBox5.Image = null;
  341.             pictureBox6.Image = Properties.Resources.music16;
  342.             backgroundWorker2.CancelAsync();
  343.  
  344.         }
  345.         private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
  346.         {
  347.  
  348.             do { Thread.Sleep(800); }
  349.             while (backgroundWorker1.IsBusy);
  350.             do
  351.             {
  352.  
  353.                 label11.Text = "Scanning For Corrupt Files";
  354.                 Thread.Sleep(200);
  355.                 label11.Text = "Scanning For Corrupt Files.";
  356.                 Thread.Sleep(200);
  357.                 label11.Text = "Scanning For Corrupt Files..";
  358.                 Thread.Sleep(200);
  359.                 label11.Text = "Scanning For Corrupt Files...";
  360.                 Thread.Sleep(200);
  361.                 label11.Text = "Scanning For Corrupt Files....";
  362.                 Thread.Sleep(200);
  363.             }
  364.             while (backgroundWorker2.IsBusy);
  365.             pictureBox5.Image = null;
  366.             pictureBox6.Image = Properties.Resources.music16;
  367.             label11.Text = badfiles.Count + " Corrupt Files Found";
  368.             pictureBox8.Image = MusicLibUtility.Properties.Resources.scanning;
  369.             XDocument doc = new XDocument();
  370.             XElement songsElement = new XElement("Songs");
  371.             foreach (var musicfile in musicfiles)
  372.             {
  373.                 XElement songElement = new XElement("Song");
  374.                 string songTitle;
  375.                 try { songTitle = (TagLib.File.Create(musicfile).Tag.Title); }
  376.                 catch { songTitle = "Missing"; }
  377.                 uint songTNint;
  378.                 try { songTNint = (TagLib.File.Create(musicfile).Tag.Track); }
  379.                 catch { songTNint = 00; }
  380.                 string songTN = songTNint.ToString();
  381.                 string songPath = musicfile;
  382.                 string songArtist;
  383.                 try { songArtist = (TagLib.File.Create(musicfile).Tag.Performers[0]); }
  384.                 catch { songArtist = "Missing"; }
  385.                 List<string> songGenres = new List<string>();
  386.                 foreach (string Genre in (TagLib.File.Create(musicfile).Tag.Genres))
  387.                 { songGenres.Add(Genre); }
  388.                 string songGenre;
  389.                 if (songGenres.Count > 1) { songGenre = (songGenres[0] + "/" + songGenres[1]); }
  390.                 else { try { songGenre = songGenres[0]; } catch { songGenre = "Missing"; } }
  391.                 //songGenre = string.Join(songGenres.Select(songGenre=>songGenre+"/"));
  392.                 songArtist = Regex.Replace(songArtist, @"[^\u0020-\u007E]", string.Empty);
  393.                 //songlist.Add("Adding "+songTitle+", Artist "+songArtist+", at path "+songPath+" to DirLib file.");
  394.                 XElement titleElement = new XElement("Title", songTitle);
  395.                 XElement tnElement = new XElement("Track", songTN);
  396.                 XElement pathElement = new XElement("Path", musicfile);
  397.                 XElement artistElement = new XElement("Artist", songArtist);
  398.                 XElement genreElement = new XElement("Genre", songGenre);
  399.                 songElement.Add(titleElement);
  400.                 songElement.Add(tnElement);
  401.                 songElement.Add(pathElement);
  402.                 songElement.Add(artistElement);
  403.                 songElement.Add(genreElement);
  404.                 songsElement.Add(songElement);
  405.             }
  406.             //System.IO.File.WriteAllLines(@libraryPath+"\\WriteLines.txt", songlist);    
  407.             doc.Add(songsElement);
  408.             doc.Save(label4.Text + "\\DirLib.xml");
  409.             itunes.Play();
  410.         }
  411.         private void backgroundWorker3_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  412.         {
  413.  
  414.             pictureBox8.Image = null;
  415.             pictureBox7.Image = Properties.Resources.music16;
  416.             label12.Text = "Media Library Database Created";
  417.             pictureBox1.Image = MusicLibUtility.Properties.Resources.skinitunes;
  418.             backgroundWorker3.CancelAsync();
  419.  
  420.  
  421.         }
  422.  
  423.         private void button2_Click(object sender, EventArgs e)
  424.         {        
  425.             backgroundWorker1.CancelAsync();
  426.         }
  427.              
  428.         private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
  429.         {
  430.             if (comboBox2.Text.ToString() == "iTunes Playlists")
  431.             {
  432.                 comboBox1.Enabled = true;
  433.                 string playlist = comboBox1.SelectedItem.ToString();
  434.                 foreach (IITPlaylist pl in itunes.LibrarySource.Playlists)
  435.                 {
  436.                     if (pl.Name == playlist)
  437.                     {
  438.                         GetTracks(pl);
  439.                         break;
  440.                     }
  441.                 }
  442.             }
  443.         }
  444.  
  445.         private void button4_Click(object sender, EventArgs e)
  446.         {
  447.         //    IITPlaylistCollection selection =
  448.         }
  449.         private void GetTracks(IITPlaylist playlist)
  450.         {
  451.             long totalfilesize = 0;
  452.             dataTable1.Rows.Clear();
  453.             IITTrackCollection tracks = playlist.Tracks;
  454.             int numTracks = tracks.Count;
  455.             for (int currTrackIndex = 1; currTrackIndex <= numTracks; currTrackIndex++)
  456.             {
  457.                 DataRow drnew = dataTable1.NewRow();
  458.                 IITTrack currTrack = tracks[currTrackIndex];
  459.                 if (currTrack.Artist == null) { drnew["artist"] = "missing"; } else { drnew["artist"] = currTrack.Artist; }
  460.                 if (currTrack.Name == null) { drnew["song name"] = "missing"; } else { drnew["song name"] = currTrack.Name; }
  461.                 drnew["album"] = currTrack.Album;
  462.                 drnew["genre"] = currTrack.Genre;
  463.  
  464.  
  465.                 if (currTrack.Kind == ITTrackKind.ITTrackKindFile)
  466.                 {
  467.                     IITFileOrCDTrack file = (IITFileOrCDTrack)currTrack;
  468.                     if (file.Location != null)
  469.                     {
  470.                         FileInfo fi = new FileInfo(file.Location);
  471.                         if (fi.Exists)
  472.                         {
  473.                             drnew["FileLocation"] = file.Location;
  474.                             totalfilesize += fi.Length;
  475.                         }
  476.                         else
  477.                             drnew["FileLocation"] = "not found " + file.Location;
  478.                     }
  479.                 }
  480.  
  481.                 dataTable1.Rows.Add(drnew);
  482.             }
  483.             Control.CheckForIllegalCrossThreadCalls = false;
  484.             lbl_numsongs.Text = dataTable1.Rows.Count.ToString() + " Songs" + ", " + (totalfilesize / 1024.00 / 1024.00).ToString("###,### mb");
  485.         }
  486.  
  487.         private void button3_Click(object sender, EventArgs e)
  488.         {
  489.             backgroundWorker8.RunWorkerAsync();
  490.             backgroundWorker10.RunWorkerAsync();
  491.         }
  492.         private void backgroundWorker4_DoWork(object sender, DoWorkEventArgs e)
  493.         {
  494.             Control.CheckForIllegalCrossThreadCalls = false;
  495.             backgroundWorker4.WorkerSupportsCancellation = true;
  496.             foreach (IITPlaylist pl in itunes.LibrarySource.Playlists)
  497.             {
  498.                 comboBox1.Items.Add(pl.Name);
  499.             }
  500.         }
  501.         private void backgroundWorker4_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  502.         {
  503.             if (!backgroundWorker5.IsBusy)
  504.             { backgroundWorker5.RunWorkerAsync(); }
  505.         }
  506.         private void backgroundWorker5_DoWork(object sender, DoWorkEventArgs e)
  507.         {
  508.             Control.CheckForIllegalCrossThreadCalls = false;
  509.         }
  510.  
  511.         private void backgroundWorker6_DoWork(object sender, DoWorkEventArgs e)
  512.         {
  513.             IITPlaylist playlist = itunes.LibraryPlaylist;
  514.             {
  515.                 long totalfilesize = 0;
  516.                 dataTable1.Rows.Clear();
  517.                 IITTrackCollection tracks = playlist.Tracks;
  518.                 int numTracks = tracks.Count;
  519.                 for (int currTrackIndex = 1; currTrackIndex <= numTracks; currTrackIndex++)
  520.                 {
  521.                     DataRow drnew = dataTable1.NewRow();
  522.                     IITTrack currTrack = tracks[currTrackIndex];
  523.                     if (currTrack.Artist == null) { drnew["artist"] = "missing"; } else { drnew["artist"] = currTrack.Artist; }
  524.                     if (currTrack.Name == null) { drnew["song name"] = "missing"; } else { drnew["song name"] = currTrack.Name; }
  525.                     drnew["album"] = currTrack.Album;
  526.                     drnew["genre"] = currTrack.Genre;
  527.  
  528.  
  529.                     if (currTrack.Kind == ITTrackKind.ITTrackKindFile)
  530.                     {
  531.                         IITFileOrCDTrack file = (IITFileOrCDTrack)currTrack;
  532.                         if (file.Location != null)
  533.                         {
  534.                             FileInfo fi = new FileInfo(file.Location);
  535.                             if (fi.Exists)
  536.                             {
  537.                                 drnew["FileLocation"] = file.Location;
  538.                                 totalfilesize += fi.Length;
  539.                             }
  540.                             else
  541.                                 drnew["FileLocation"] = "not found " + file.Location;
  542.                         }
  543.                     }
  544.  
  545.                     dataTable1.Rows.Add(drnew);
  546.                 }
  547.                 Control.CheckForIllegalCrossThreadCalls = false;
  548.                 lbl_numsongs.Text = dataTable1.Rows.Count.ToString() + " Songs" + ", " + (totalfilesize / 1024.00 / 1024.00).ToString("###,### mb");
  549.             }
  550.         }
  551.        
  552.         private void button5_Click(object sender, EventArgs e)
  553.         {
  554.             string playerstate = itunes.PlayerState.ToString();
  555.             if (playerstate == "ITPlayerStatePlaying")
  556.             {
  557.                 itunes.Pause();
  558.                 button5.Image = MusicLibUtility.Properties.Resources.playTrans;
  559.                 //label5.Text = "iTunes is now Paused";
  560.                 playerstate = null;
  561.             }
  562.             else if (playerstate == "ITPlayerStateStopped")
  563.             {
  564.                 itunes.Play();
  565.                 button5.Image = MusicLibUtility.Properties.Resources.pauseTrans;
  566.                 //label5.Text = "iTunes is now Playing";
  567.                 playerstate = null;
  568.             }
  569.  
  570.            
  571.         }
  572.  
  573.         private void label17_Click(object sender, EventArgs e)
  574.         {
  575.             try
  576.             { label17.Text = itunes.CurrentTrack.Name; }
  577.             catch
  578.             { }
  579.         }
  580.  
  581.         private void button8_Click(object sender, EventArgs e)
  582.         {
  583.             itunes.NextTrack();
  584.         }
  585.  
  586.         private void button9_Click(object sender, EventArgs e)
  587.         {
  588.             itunes.BackTrack();
  589.         }
  590.  
  591.         private void pictureBox12_Click(object sender, EventArgs e)
  592.         {
  593.             try
  594.             {
  595.                 var file = TagLib.File.Create(currfilePath);
  596.                 if (file.Tag.Pictures.Length >= 1)
  597.                 {
  598.                     var bin = (byte[])(file.Tag.Pictures[0].Data.Data);
  599.                     Image artwork = Image.FromStream(new MemoryStream(bin)).GetThumbnailImage(400, 400, null, IntPtr.Zero);
  600.                     string temp = (label4.Text + "\\temp.jpg");
  601.                     artwork.Save(temp);
  602.  
  603.                     Process.Start(@temp);
  604.                 }
  605.             }
  606.             catch { int albumart = 0; }
  607.         }
  608.  
  609.         private void label13_Click_3(object sender, EventArgs e)
  610.         {
  611.             try
  612.             {
  613.                 Process.Start(@currDirPath);
  614.             }
  615.             catch
  616.             { }
  617.         }
  618.  
  619.         private void button10_Click(object sender, EventArgs e)
  620.         {
  621.             try
  622.             {
  623.                 Process.Start(@currDirPath);
  624.             }
  625.             catch
  626.             { }
  627.         }
  628.  
  629.         private void label11_Click(object sender, EventArgs e)
  630.         {
  631.             try
  632.             { Process.Start(label4.Text + "\\badfiles.xml"); }
  633.             catch { }
  634.         }
  635.  
  636.         private void backgroundWorker7_DoWork(object sender, DoWorkEventArgs e)
  637.         {
  638.             do {Thread.Sleep(800);}
  639.             while (backgroundWorker1.IsBusy);
  640.             do { Thread.Sleep(800); }
  641.             while (backgroundWorker2.IsBusy);
  642.             do {
  643.             label12.Text = "Creating Media File Report";
  644.             }
  645.             while(backgroundWorker3.IsBusy);
  646.             label12.Text = "Media Library Database Created";
  647.             pictureBox8.Image = null;
  648.             pictureBox7.Image = Properties.Resources.music16;
  649.             pictureBox1.Image = MusicLibUtility.Properties.Resources.skinitunes;
  650.         }
  651.  
  652.         private void comboBox2_SelectedIndexChanged(object sender, EventArgs e)
  653.         {
  654.             {
  655.                 try { dataTable1.Rows.Clear(); }
  656.                 catch { }
  657.                 try { MLTable.Rows.Clear(); }
  658.                 catch { }
  659.                 try { badTable.Rows.Clear(); }
  660.                 catch { }
  661.  
  662.  
  663.                 if (comboBox2.SelectedItem.ToString() == "iTunes Playlists")
  664.                 {
  665.                     comboBox1.Enabled = true;
  666.                     comboBox1.Text = "Playlists";
  667.                     dataGridView1.DataSource = dataTable1;
  668.                 }
  669.                 else if (comboBox2.SelectedItem.ToString() == "Media Library Database")
  670.                 {
  671.                     comboBox1.Enabled = false;
  672.                     comboBox1.Text = "Media Files";
  673.                     lbl_numsongs.Text = null;
  674.                     try
  675.                     {
  676.                         MLDataset.Clear();
  677.                         this.MLDataset.ReadXml(this.label4.Text + "\\DirLib.xml");
  678.                     }
  679.                     catch { }
  680.                     try
  681.                     {
  682.                         DataTable MLTable = MLDataset.Tables[0];
  683.                         int rowcount = MLTable.Rows.Count; ;
  684.                         lbl_numsongs.Text = rowcount.ToString();
  685.                         dataGridView1.DataSource = MLTable;
  686.                     }
  687.                     catch
  688.                     {
  689.                         comboBox1.Text = "Library File Inaccessible";
  690.                         dataTable1.Rows.Clear();
  691.                     }
  692.                     comboBox1.Enabled = false;
  693.                 }
  694.                 else if (comboBox2.SelectedItem.ToString() == "iTunes Database Backup")
  695.                 {
  696.                     comboBox1.Enabled = false;
  697.                     comboBox1.Text = "iTunes Library";
  698.                     lbl_numsongs.Text = null;
  699.                     try
  700.                     {
  701.                         MLDataset.Clear();
  702.                         this.MLDataset.ReadXml(this.label4.Text + "\\ItunesLib.xml");
  703.                     }
  704.                     catch { }
  705.                     try
  706.                     {
  707.                         DataTable MLTable = MLDataset.Tables[0];
  708.                         int rowcount = MLTable.Rows.Count; ;
  709.                         lbl_numsongs.Text = rowcount.ToString();
  710.                         dataGridView1.DataSource = MLTable;
  711.                     }
  712.                     catch
  713.                     {
  714.                         comboBox1.Text = "Library File Inaccessible";
  715.                         dataTable1.Rows.Clear();
  716.                     }
  717.                     comboBox1.Enabled = false;
  718.                 }
  719.  
  720.                 else if (comboBox2.SelectedItem.ToString() == "Bad Media Files")
  721.                 {
  722.                     comboBox1.Enabled = false;
  723.                     lbl_numsongs.Text = null;
  724.                     try
  725.                     {
  726.                         comboBox1.Text = "Corrupt Media Files";
  727.                         BadMediaDataset.Clear();
  728.                         this.BadMediaDataset.ReadXml(this.label4.Text + "\\badfiles.xml");
  729.                     }
  730.                     catch { }
  731.                     try
  732.                     {
  733.                         DataTable badTable = BadMediaDataset.Tables[0];
  734.                         dataGridView1.DataSource = badTable;
  735.                     }
  736.                     catch
  737.                     {
  738.                         comboBox1.Text = "Library File Inaccessible";
  739.                         dataTable1.Rows.Clear();
  740.                     }
  741.                     comboBox1.Enabled = false;
  742.                 }
  743.             }
  744.         }
  745.        
  746.         Dictionary<string, string> extensions = new Dictionary<string, string>();    
  747.         private void checkBox1_CheckedChanged(object sender, EventArgs e)
  748.         {
  749.             if (checkBox1.Checked) extensions[".mp3"] = "MP3 Audio"; else extensions.Remove(".mp3");
  750.         }
  751.  
  752.         private void checkBox2_CheckedChanged(object sender, EventArgs e)
  753.         {
  754.             if (checkBox1.Checked) extensions[".mp4"] = "MP4 Audio/Video"; else extensions.Remove(".mp4");
  755.         }
  756.  
  757.         private void checkBox3_CheckedChanged(object sender, EventArgs e)
  758.         {
  759.             if (checkBox1.Checked) extensions[".m4a"] = "iTunes Audio"; else extensions.Remove(".m4a");
  760.         }
  761.  
  762.         private void checkBox4_CheckedChanged(object sender, EventArgs e)
  763.         {
  764.             if (checkBox1.Checked) extensions[".m4v"] = "iTunes Video"; else extensions.Remove(".m4a");
  765.         }
  766.  
  767.         private void checkBox5_CheckedChanged(object sender, EventArgs e)
  768.         {
  769.             if (checkBox1.Checked) extensions[".m4p"] = "iTunes Protected Audio"; else extensions.Remove(".m4p");
  770.         }
  771.  
  772.         private void checkBox6_CheckedChanged(object sender, EventArgs e)
  773.         {
  774.             if (checkBox1.Checked) extensions[".m4b"] = "iTunes Audio Book"; else extensions.Remove(".m4b");
  775.         }
  776.  
  777.         private void checkBox7_CheckedChanged(object sender, EventArgs e)
  778.         {
  779.             if (checkBox1.Checked) extensions[".flac"] = "Lossless Audio"; else extensions.Remove(".flac");
  780.         }
  781.  
  782.         private void checkBox8_CheckedChanged(object sender, EventArgs e)
  783.         {
  784.             if (checkBox1.Checked) extensions[".wav"] = "Windows Audio/Video"; else extensions.Remove(".wav");
  785.         }
  786.  
  787.         private void pictureBox20_Click(object sender, EventArgs e)
  788.         {
  789.             Form form2 = new Form2
  790.             {
  791.                 Text = "Media Player",
  792.                 Location = new Point(Right, Top),
  793.                 StartPosition = FormStartPosition.Manual,
  794.             };
  795.             form2.Show();
  796.         }
  797.  
  798.         private void backgroundWorker8_DoWork(object sender, DoWorkEventArgs e)
  799.         {
  800.             {
  801.                 XDocument doc = new XDocument();
  802.                 XElement songsElement = new XElement("Songs");
  803.                 IITPlaylist playlist = itunes.LibraryPlaylist;
  804.                 IITTrackCollection tracks = playlist.Tracks;
  805.                 int numtracks = tracks.Count;
  806.                 char[] delimiters = new char[] { ' ', '\\', '/' };
  807.                 for (int currtrackindex = 1; currtrackindex <= numtracks; currtrackindex++)
  808.                 {
  809.                     IITTrack currTrack = tracks[currtrackindex];
  810.                     string songPath;
  811.                     try
  812.                     {
  813.                         IITFileOrCDTrack file = (IITFileOrCDTrack)currTrack;
  814.                         songPath = file.Location.ToString();
  815.                     }
  816.                     catch { songPath = "Missing"; }
  817.                     XElement songElement = new XElement("Song");
  818.                      string songTitle;
  819.                     try { songTitle = currTrack.Name; }
  820.                     catch { songTitle = "Missing"; }
  821.                     int songTNint;
  822.                     try { songTNint = (currTrack.TrackNumber); }
  823.                     catch { songTNint = 00; }
  824.                     string songTN = songTNint.ToString();
  825.                     string songArtist;
  826.                     try { songArtist = (currTrack.Artist); }
  827.                     catch { songArtist = "Missing"; }
  828.                     string songGenre;
  829.                     List<string> songGenres = new List<string>();
  830.                     try
  831.                     {
  832.                         string G = currTrack.Genre.ToString();
  833.                         string[] Genres = G.Split(delimiters);
  834.                         foreach (string Genre in Genres)
  835.                         { songGenres.Add(Genre); }
  836.                     }
  837.                     catch { songGenre = "Missing"; };
  838.                     if (songGenres.Count > 1) { songGenre = (songGenres[0] + "/" + songGenres[1]); }
  839.                     else { try { songGenre = songGenres[0]; } catch { songGenre = "Missing"; } }
  840.                     //songGenre = string.Join(songGenres.Select(songGenre=>songGenre+"/"));
  841.                     try
  842.                     {
  843.                         songArtist = Regex.Replace(songArtist, @"[^\u0020-\u007E]", string.Empty);
  844.                     }
  845.                     catch { };
  846.                     //songlist.Add("Adding "+songTitle+", Artist "+songArtist+", at path "+songPath+" to DirLib file.");
  847.                     XElement titleElement = new XElement("Title", songTitle);
  848.                     XElement tnElement = new XElement("Track", songTN);
  849.                     XElement pathElement = new XElement("Path", songPath);
  850.                     XElement artistElement = new XElement("Artist", songArtist);
  851.                     XElement genreElement = new XElement("Genre", songGenre);
  852.                     songElement.Add(titleElement);
  853.                     songElement.Add(tnElement);
  854.                     songElement.Add(pathElement);
  855.                     songElement.Add(artistElement);
  856.                     songElement.Add(genreElement);
  857.                     songsElement.Add(songElement);
  858.                 }
  859.  
  860.                 //pictureBox5.Image = null;
  861.                 //pictureBox6.Image = Properties.Resources.music16;
  862.                 //label11.Text = badfiles.Count + " Corrupt Files Found";
  863.                 //pictureBox8.Image = MusicLibUtility.Properties.Resources.scanning;
  864.                 //System.IO.File.WriteAllLines(@libraryPath+"\\WriteLines.txt", songlist);    
  865.                 doc.Add(songsElement);
  866.                 doc.Save(label4.Text + "\\ItunesLib.xml");
  867.             }
  868.         }
  869.  
  870.         private void backgroundWorker9_DoWork(object sender, DoWorkEventArgs e)
  871.         {
  872.            
  873.             do { Thread.Sleep(800); }
  874.             while (backgroundWorker8.IsBusy);
  875.         }
  876.  
  877.         private void backgroundWorker10_DoWork(object sender, DoWorkEventArgs e)
  878.         {
  879.             pictureBox1.Image = Properties.Resources.running;
  880.             pictureBox21.Image = Properties.Resources.scanning;
  881.             do { Thread.Sleep(800); }
  882.             while (backgroundWorker8.IsBusy);
  883.             pictureBox1.Image = Properties.Resources.skinitunes;
  884.             pictureBox21.Image = null;
  885.            
  886.         }
  887.  
  888.         private void label6_Click(object sender, EventArgs e)
  889.         {
  890.         }
  891.  
  892.         private void label12_Click(object sender, EventArgs e)
  893.         {
  894.  
  895.         }
  896.  
  897.         private void label15_Click(object sender, EventArgs e)
  898.         {
  899.  
  900.         }
  901.  
  902.         private void pictureBox5_Click(object sender, EventArgs e)
  903.         {
  904.  
  905.         }
  906.  
  907.         private void button6_Click(object sender, EventArgs e)
  908.         {
  909.             GetDevices.GetDeviceData();
  910.         }
  911.  
  912.     }
  913.  
  914. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement