public OknoEdytujDane(String sciezka) { InitializeComponent(); plik = new utwor(sciezka); plik.przepisz_tagi(); wczytaj_plik_do_boxow(); }
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."); }
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(); } }
//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; }
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; }