private void ScanWithDirectoryStructure()
        {
            string music_directory;
            FolderBrowserDialog fbd = new FolderBrowserDialog();
            if (fbd.ShowDialog() == DialogResult.OK)
            {
                music_directory = fbd.SelectedPath;
            }
            else
            {
                return;
            }

            try
            {
                Log("Scanning");
                if (!WhatHelper.LoggedIn)
                {
                    Log("Logging in...");
                    WhatHelper.Login(Username.Text, Password.Text);
                }

                foreach (string artistPath in System.IO.Directory.GetDirectories(music_directory))
                {
                    foreach (string albumName in System.IO.Directory.GetDirectories(artistPath))
                    {
                        Application.DoEvents();

                        Album album = new Album(System.IO.Path.GetFileName(artistPath), System.IO.Path.GetFileName(albumName));
                        Log("Checking for " + album.ToString());
                        if (!WhatHelper.AlbumIsAvailable(album))
                            albumBindingSource.Add(album);
                    }
                }

                Log("Finished");
            }
            catch (Exception ex)
            {
                Log(ex.GetType().ToString() + ": " + ex.Message);
            }
        }
        private void ScanWithTextFile()
        {
            OpenFileDialog ofd = new OpenFileDialog();
            if (ofd.ShowDialog() == DialogResult.OK)
            {
                try
                {
                    Log("Reading file");
                    System.IO.StreamReader sr = new System.IO.StreamReader(ofd.FileName);
                    string[] data = sr.ReadToEnd().Split('\n');
                    sr.Close();

                    if (!WhatHelper.LoggedIn)
                    {
                        Log("Logging in...");
                        WhatHelper.Login(Username.Text, Password.Text);
                    }

                    foreach (string line in data)
                    {
                        Application.DoEvents();

                        string[] parts = line.Split('\\');
                        if (parts.Length != 2)
                        {
                            Log("Invalid format of line, skipping: \"" + line + "\"");
                            continue;
                        }

                        Album album = new Album(parts[0], parts[1]);

                        Log("Checking for " + album.ToString());
                        if (!WhatHelper.AlbumIsAvailable(album))
                            albumBindingSource.Add(album);
                    }
                    Log("Finished");
                }
                catch (Exception ex)
                {
                    Log(ex.GetType().ToString() + ": " + ex.Message);
                }
            }
        }