public OknoEdytujDane(String sciezka)
 {
     InitializeComponent();
     plik = new utwor(sciezka);
     plik.przepisz_tagi();
     wczytaj_plik_do_boxow();
 }
Beispiel #2
0
        private void sortuj_plik(string sciezka, string schemat)
        {
            //------------------------------------------------------ kopiowanie pliku do Temp
            Console.WriteLine("Sortuję " + sciezka);
            utwor plik;
            try
            {
                plik = new utwor(sciezka);
            }
            catch
            {
                Console.WriteLine("Nie powidło się sortowanie pliku " + sciezka);
                return;
            }

            if (plik.tagi == null)
                return;
            plik.przepisz_tagi();
            string nazwa_pliku = Path.GetFileName(plik.sciezka);
            plik.kopiuj(@"Temp\" + nazwa_pliku);
            //String[] temp1 = sciezka.Split('\\');
            //String temporary = "";
            //for (int i = 0; i < temp1.Length - 2; i++)
            //{
            //    temporary += temp1[i] + "\\";
            //}
            //temporary += temp1[temp1.Length - 2];
            //String direction = temporary + "\\Temp";
            //plik.przywroc_stare();
            ////------------------------------------------------------- teraz zmienna plik to ten w Temp
            //nazwa_pliku = temp1[temp1.Length-1];
            plik = new utwor(@"Temp\" + nazwa_pliku);
            plik.pobierz_tagi();
            string sciezka_katalogu;
            if (schemat == @"Piosenki\Wykonawca" && plik.wykonawca[0] != "" && plik.tytul != "")
            {
                sciezka_katalogu = @"Musesort\Posegregowane";
                nazwa_pliku = plik.wykonawca[0] + '_' + plik.tytul + '.' + plik.rozszerzenie;
            }
            else
            {
                sciezka_katalogu = sciezka_katalogu_z_pol(plik, false, true);
                //usuwamy jeden nadmiarowy "Musesort" z początku
                //sciezka_katalogu = sciezka_katalogu.Substring(sciezka_katalogu.IndexOf("\\")+1);
            }

            if (!Directory.Exists(sciezka_katalogu))
                Directory.CreateDirectory(sciezka_katalogu); // to tworzy też wszystkie katalogi które są "po drodze"
            // tzn. wyższego rzędu które też nie istnieją

            //przenosimy pliki
            //Console.WriteLine("Przenoszenie " + sciezka_katalogu + @"\" + nazwa_pliku);
            try
            {
                String kombinacja = sciezka_katalogu + "\\" + nazwa_pliku;
                plik.zmien_nazwe_pliku(kombinacja);
                Console.WriteLine("Dodano plik do katalogu " + kombinacja);
            }
            catch (System.IO.IOException) //rzucane w przypadku kolizji nazw plików
            {
                duplikat(Path.Combine(sciezka_katalogu, nazwa_pliku), plik.sciezka, true);
            }
            Console.WriteLine("Plik " + sciezka + " przeniesiony.");
        }
Beispiel #3
0
        private void sortuj()
        {
            if (kategorie[0] == "")
                return;
            if (!Directory.Exists(directoryTreeView.SelectedNode.Name))        //czy katalog który mamy sortować istnieje
            {
                MessageBox.Show("Podany katalog nie istnieje.");
                return;
            }

            // Tu: Wyświetl informację, że system sprawdza ilość plików

            progressBar2.Maximum = 0;
            progressBar2.Value = 0;
            progressBar2.Step = 1;
            Logi.Text = "Znajdowanie plików..." + Environment.NewLine;
            //Logi.Items.Add("Znajdowanie plików...");
            Logi.Refresh();
            Dictionary<string, List<string>> sciezki_plikow = znajdz_wspierane_pliki(directoryTreeView.SelectedNode.Name);

            Logi.AppendText("Znaleziono wszystkie wspierane pliki.\n");
            Logi.Refresh();
            Logi.Clear();

            //tworzymy katalogi - punkt 4
            Directory.SetCurrentDirectory(directoryTreeView.SelectedNode.Name);
            Directory.CreateDirectory(@"Musesort\Temp");
            Directory.CreateDirectory(@"Musesort\Posegregowane\Nieprzydzielone");
            Directory.CreateDirectory(@"Musesort\Zduplikowane\Posegregowane\Nieprzydzielone");
            Directory.CreateDirectory(@"Musesort\Zduplikowane\Temp");

            foreach (string rozszerzenie in utwor.wspierane_rozszerzenia) //iterujemy po rozszerzeniach
                foreach (string sciezka in sciezki_plikow[rozszerzenie]) //iterujemy po plikach
                {
                    Logi.AppendText("Sortuje plik: " + sciezka + Environment.NewLine);
                    Logi.Refresh();
                    utwor plik = new utwor(sciezka);

                    if (plik.tagi == null)
                        continue;
                    string nazwa_pliku = Path.GetFileName(plik.sciezka);
                    plik.kopiuj(@"Musesort\Temp\" + nazwa_pliku);
                    plik = new utwor(@"Musesort\Temp\" + nazwa_pliku);
                    plik.pobierz_tagi(sciezka);
                    plik.zapisz_tagi_standaryzuj_nazwe();

                    string sciezka_katalogu;
                    if (schematy.Text == @"Piosenki\Wykonawca" && plik.wykonawca[0] != "" && plik.tytul != "")
                    {
                        sciezka_katalogu = @"Musesort\Posegregowane";
                        nazwa_pliku = plik.wykonawca[0] + '_' + plik.tytul + '.' + plik.rozszerzenie;
                    }
                    else
                        sciezka_katalogu = sciezka_katalogu_z_pol(plik);

                    if (!Directory.Exists(sciezka_katalogu))
                        Directory.CreateDirectory(sciezka_katalogu); // to tworzy też wszystkie katalogi które są "po drodze"
                    // tzn. wyższego rzędu które też nie istnieją

                    //przenosimy pliki
                    //Console.WriteLine("Przenoszenie " + sciezka_katalogu + @"\" + nazwa_pliku);
                    try
                    {
                        plik.zmien_nazwe_pliku(Path.Combine(sciezka_katalogu, nazwa_pliku));
                    }
                    catch (System.IO.IOException) //rzucane w przypadku kolizji nazw plików
                    {
                        duplikat(Path.Combine(sciezka_katalogu, nazwa_pliku), plik.sciezka);
                    }

                    //obsługa logów
                    //---------------------------------------------------------------------------------
                    Logi.AppendText(ZamienNaWlasciwe(plik.nazwa) + Environment.NewLine);
                    Logi.AppendText("Posortowano plik : " + sciezka + Environment.NewLine);
                    if (plik.pobierane_z_nazwy || plik.pobierane_ze_sciezki)
                    {
                        if (plik.pobierane_ze_sciezki)
                        {
                            Logi.AppendText("Wygenerowano tagi ze sciezki" + Environment.NewLine);
                        }
                        else
                        {
                            Logi.AppendText("Wygenerowano tagi z nazwy" + Environment.NewLine);
                        }
                    }
                    else
                    {
                        Logi.AppendText("Wczytano tagi" + Environment.NewLine);
                        Logi.Refresh();
                    }
                    Logi.AppendText("Nazwa pliku: " + ZamienNaWlasciwe(plik.nazwa) + Environment.NewLine);
                    if (plik.wykonawca.Length > 0)
                    {
                        Logi.AppendText("Wykonawca: " + ZamienNaWlasciwe(plik.wykonawca[0]) + Environment.NewLine);
                    }
                    else
                    {
                        Logi.AppendText("Nie wygenerowano wykonawcy" + Environment.NewLine);
                    }

                    Logi.AppendText("Tytul: " + ZamienNaWlasciwe(plik.tytul) + Environment.NewLine);
                    Logi.AppendText("Album: " + ZamienNaWlasciwe(plik.album) + Environment.NewLine);
                    if (plik.gatunek.Length > 0)
                    {
                        Logi.AppendText("Gatunek: " + ZamienNaWlasciwe(plik.gatunek[0]) + Environment.NewLine);
                    }
                    else
                    {
                        Logi.AppendText("Nie wygenerowano gatunku" + Environment.NewLine);
                    }
                    Logi.AppendText("Rok: " + plik.rok + Environment.NewLine);
                    Logi.Refresh();
                    //---------------------------------------------------------------------------------------
                    progressBar2.PerformStep();
                }
        }
Beispiel #4
0
        //generuje ścieżkę dla katalogu na podstawie pól w sortowaniu
        private string sciezka_katalogu_z_pol(utwor plik, bool duplikat = false, bool dodawanie_jednego_pliku=false)
        {
            Type typ_utwor = typeof(utwor);
            string sciezka_katalogu;
            if (duplikat)
                sciezka_katalogu = @"Musesort\Zduplikowane\Posegregowane";
            else
                sciezka_katalogu = @"Musesort\Posegregowane";

            foreach (string kategoria in kategorie) //tworzymy ścieżkę katalogu docelowego pliku
            {
                string kat = "";
                if (kategoria == "alfabetycznie")
                {
                    try
                    {
                        kat = plik.tytul.Substring(0, 1);
                    }
                    catch (ArgumentOutOfRangeException) { }
                }
                else
                {
                    Console.WriteLine(kategoria);
                    System.Reflection.FieldInfo pole = typ_utwor.GetField(kategoria);         //pobiera pole

                    if (pole.FieldType.Equals(typeof(String)))				//jeśli pole to String
                        kat = (string)pole.GetValue(plik);
                    else if (pole.FieldType.Equals(typeof(int)) || pole.FieldType.Equals(typeof(uint)))//jeśli pole to int lub uint
                        kat = Convert.ToString(pole.GetValue(plik));
                    else if (pole.FieldType.Equals(typeof(string[])))		//jeśli pole to tablica
                        kat = ((string[])pole.GetValue(plik))[0];
                }
                if (kat == "")                                          //jeśli nie udało się pobrać
                {
                    if (duplikat)
                        sciezka_katalogu = @"Musesort\Zduplikowane\Posegregowane\Nieprzydzielone";
                    else
                        sciezka_katalogu = @"Musesort\Posegregowane\Nieprzydzielone";//przenieś do "Nieprzydzielone
                    break;
                }
                kat = ZamienNaWlasciwe(kat);
                System.Console.WriteLine(kat);
                sciezka_katalogu = Path.Combine(sciezka_katalogu, kat);
                System.Console.WriteLine(sciezka_katalogu);
            }
            if (duplikat && File.Exists(Path.Combine(sciezka_katalogu, plik.nazwa + '.' + plik.rozszerzenie)))
            {
                string nazwa = plik.nazwa + '.' + plik.rozszerzenie;
                string fullpath = Path.Combine(sciezka_katalogu, nazwa);
                int i;
                for (i = 1; File.Exists(fullpath); )
                {
                    i++;
                    fullpath = Path.Combine(sciezka_katalogu + Convert.ToString(i), nazwa);
                }
                sciezka_katalogu += Convert.ToString(i);
            }

            if(dodawanie_jednego_pliku)
                sciezka_katalogu = sciezka_katalogu.Substring(sciezka_katalogu.IndexOf("\\") + 1);
            return sciezka_katalogu;
        }
Beispiel #5
0
        private void duplikat(String x, String y, bool dodawanie_jednego_pliku=false)
        {
            utwor plik1 = new utwor(x);
            utwor plik2 = new utwor(y);
            if (!plik1.przepisz_tagi() || !plik2.przepisz_tagi())
                throw new NullReferenceException("Nie wygenerowałem tagów dla plików \n" + x + "\n" + y);

            // do decydowania który jest lepszy będziemy używali ifów, chyba prościej będzie najpierw ustalić wartość boola
            bool pierwszy_jest_lepszy = plik1.tagi.Properties.AudioBitrate >= plik2.tagi.Properties.AudioBitrate;
            if ((preferowane == "najlepszy") || (preferowane == plik1.rozszerzenie && preferowane == plik2.rozszerzenie) || (preferowane != plik1.rozszerzenie && preferowane != plik2.rozszerzenie))
            {
                if (pierwszy_jest_lepszy) //pierwszy plik zostaje gdzie jest, drugi idzie do zduplikowanych
                {
                    string nowykatalog = sciezka_katalogu_z_pol(plik2, true, dodawanie_jednego_pliku);
                    Directory.CreateDirectory(nowykatalog);
                    plik2.zmien_nazwe_pliku(Path.Combine(nowykatalog, plik2.nazwa + '.' + plik2.rozszerzenie));
                }
                else //drugi plik zajmuje miejsce pierwszego, pierwszy idzie do zduplikowanych
                {
                    plik1.zmien_nazwe_pliku(@"Musesort\Zduplikowane\Temp\" + plik1.nazwa + '.' + plik1.rozszerzenie);
                    plik2.zmien_nazwe_pliku(x);
                    string nowykatalog = sciezka_katalogu_z_pol(plik1, true, dodawanie_jednego_pliku);
                    Directory.CreateDirectory(nowykatalog);
                    plik1.zmien_nazwe_pliku(Path.Combine(nowykatalog, plik1.nazwa + '.' + plik1.rozszerzenie));
                }
            }
            else if (preferowane == plik1.rozszerzenie && preferowane != plik2.rozszerzenie)
            {
                //pierwszy plik zostaje gdzie jest, drugi idzie do zduplikowanych
                string nowykatalog = sciezka_katalogu_z_pol(plik2, true, dodawanie_jednego_pliku);
                Directory.CreateDirectory(nowykatalog);
                plik2.zmien_nazwe_pliku(Path.Combine(nowykatalog, plik2.nazwa + '.' + plik2.rozszerzenie));
            }
            else if (preferowane != plik1.rozszerzenie && preferowane == plik2.rozszerzenie)
            {
                //drugi plik zajmuje miejsce pierwszego, pierwszy idzie do zduplikowanych
                plik1.zmien_nazwe_pliku(@"Musesort\Zduplikowane\Temp\" + plik1.nazwa + '.' + plik1.rozszerzenie);
                plik2.zmien_nazwe_pliku(x);
                string nowykatalog = sciezka_katalogu_z_pol(plik1, true, dodawanie_jednego_pliku);
                Directory.CreateDirectory(nowykatalog);
                plik1.zmien_nazwe_pliku(Path.Combine(nowykatalog, plik1.nazwa + '.' + plik1.rozszerzenie));
            }
            else
            {
                MessageBox.Show("Cos sie syplo!", "", MessageBoxButtons.OK);
            }
        }
        //Otwórz plik
        private void otwoz_plik_button_Click(object sender, EventArgs e)
        {
            //string filepath = "";
            string filter = "Muzyka |";
            foreach (string extension in utwor.wspierane_rozszerzenia)
                filter += "*." + extension + ";";

            openFileDialog1.Filter = filter;
            openFileDialog1.InitialDirectory = Environment.GetFolderPath(Environment.SpecialFolder.MyMusic);  // <--- TODO to powinna być zmienna konfiguracyjna w programie
            openFileDialog1.FileName = "";
            DialogResult result = openFileDialog1.ShowDialog(); // Show the dialog.
            if (result == DialogResult.OK) // Test result.
            {
                //filepath = openFileDialog1.FileName;
                plik = new utwor(openFileDialog1.FileName);
                plik.przepisz_tagi();
                wczytaj_plik_do_boxow();
            }
        }
        private void sortuj()
        {
            if (kategorie[0] == "")
                return;
            if (!Directory.Exists(sciezka_box.Text))        //czy katalog który mamy sortować istnieje
            {
                MessageBox.Show("Podany katalog nie istnieje.");
                return;
            }

            // Tu: Wyświetl informację, że system sprawdza ilość plików

            progress_bar.Maximum = 0;
            progress_bar.Value = 0;
            progress_bar.Step = 1;
            lista_plikow_box.Items.Add("Znajdowanie plików...");
            lista_plikow_box.Refresh();
            Dictionary<string, List<string>> sciezki_plikow = znajdz_wspierane_pliki(sciezka_box.Text);

            lista_plikow_box.Items.Add("Znaleziono wszystkie wspierane pliki.");
            lista_plikow_box.Refresh();
            lista_plikow_box.Items.Clear();

            //tworzymy katalogi - punkt 4
            Directory.SetCurrentDirectory(sciezka_box.Text);
            Directory.CreateDirectory(@"Musesort\Temp");
            Directory.CreateDirectory(@"Musesort\Posegregowane\Nieprzydzielone");
            Directory.CreateDirectory(@"Musesort\Zduplikowane\Posegregowane\Nieprzydzielone");
            Directory.CreateDirectory(@"Musesort\Zduplikowane\Temp");

            foreach (string rozszerzenie in utwor.wspierane_rozszerzenia) //iterujemy po rozszerzeniach
                foreach (string sciezka in sciezki_plikow[rozszerzenie]) //iterujemy po plikach
                {
                    utwor plik = new utwor(sciezka);
                    if (plik.tagi == null)
                        continue;
                    string nazwa_pliku = Path.GetFileName(plik.sciezka);
                    plik.kopiuj(@"Musesort\Temp\" + nazwa_pliku);
                    plik = new utwor(@"Musesort\Temp\" + nazwa_pliku);
                    plik.pobierz_tagi();
                    plik.zapisz_tagi_standaryzuj_nazwe();

                    string sciezka_katalogu;
                    if (schemat_box.Text == @"Piosenki\Wykonawca" && plik.wykonawca[0] != "" && plik.tytul != "")
                    {
                        sciezka_katalogu = @"Musesort\Posegregowane";
                        nazwa_pliku = plik.wykonawca[0] + '_' + plik.tytul + '.' + plik.rozszerzenie;
                    }
                    else
                        sciezka_katalogu = sciezka_katalogu_z_pol(plik);

                    if (!Directory.Exists(sciezka_katalogu))
                        Directory.CreateDirectory(sciezka_katalogu); // to tworzy też wszystkie katalogi które są "po drodze"
                    // tzn. wyższego rzędu które też nie istnieją

                    //przenosimy pliki
                    //Console.WriteLine("Przenoszenie " + sciezka_katalogu + @"\" + nazwa_pliku);
                    try
                    {
                        plik.zmien_nazwe_pliku(Path.Combine(sciezka_katalogu, nazwa_pliku));
                    }
                    catch (System.IO.IOException ex) //rzucane w przypadku kolizji nazw plików
                    {
                        duplikat(Path.Combine(sciezka_katalogu, nazwa_pliku), plik.sciezka);
                    }
                    lista_plikow_box.Items.Add(plik.nazwa.Clone());
                    lista_plikow_box.Refresh();
                    progress_bar.PerformStep();
                }
            return;
        }