public async void LoadDataBase() { //加载数据库 SqliteInfo info = vieModel_StartUp.CurrentDatabases[listBox.SelectedIndex]; string path = info.Path; int id = info.ID; Properties.Settings.Default.DataBasePath = path; if (!File.Exists(Properties.Settings.Default.DataBasePath)) { return; } vieModel_StartUp.InitCompleted = false; if (Properties.Settings.Default.ScanGivenPath) { try { await Task.Run(() => { this.Dispatcher.BeginInvoke(new Action(() => { //statusText.Text = Jvedio.Language.Resources.Status_ScanDir; }), System.Windows.Threading.DispatcherPriority.Background); List <string> filepaths = Scan.ScanPaths(ReadScanPathFromConfig(Path.GetFileNameWithoutExtension(Properties.Settings.Default.DataBasePath)), ct); Scan.InsertWithNfo(filepaths, ct); }, cts.Token); } catch (Exception ex) { Logger.LogF(ex); } } //启动主窗口 Main main = new Main(); //statusText.Text = Jvedio.Language.Resources.Status_InitMovie; try { await main.InitMovie(); } catch (Exception ex) { MessageBox.Show(ex.Message); Logger.LogE(ex); } main.Show(); // 次数+1 ConfigConnection.Instance.IncreaseField("ViewCount", id); this.Close(); }
public async void OpenDefaultDatabase() { if (Properties.Settings.Default.ScanGivenPath) { await Task.Run(() => { this.Dispatcher.BeginInvoke(new Action(() => { statusText.Text = $"扫描指定文件夹"; }), System.Windows.Threading.DispatcherPriority.Render); List <string> filepaths = Scan.ScanPaths(ReadScanPathFromConfig(Properties.Settings.Default.DataBasePath.Split('\\').Last().Split('.').First()), ct); Scan.InsertWithNfo(filepaths, ct); }, cts.Token); } }
public async void OpenDefaultDatabase() { if (Properties.Settings.Default.ScanGivenPath) { await Task.Run(() => { this.Dispatcher.BeginInvoke(new Action(() => { statusText.Text = Jvedio.Language.Resources.Status_ScanDir; }), System.Windows.Threading.DispatcherPriority.Render); List <string> filepaths = Scan.ScanPaths(ReadScanPathFromConfig(Path.GetFileNameWithoutExtension(Properties.Settings.Default.DataBasePath)), ct); Scan.InsertWithNfo(filepaths, ct); }, cts.Token); } }
public async void StartRun(object sender, RoutedEventArgs e) { if (Running) { HandyControl.Controls.Growl.Error(Jvedio.Language.Resources.Message_StopAndTry, GrowlToken); return; } cts = new CancellationTokenSource(); cts.Token.Register(() => { HandyControl.Controls.Growl.Info(Jvedio.Language.Resources.Message_CancelCurrentTask, GrowlToken); }); ct = cts.Token; int index = TabControl.SelectedIndex; Running = true; switch (index) { case 0: //扫描 double totalnum = 0; //扫描出的视频总数 double insertnum = 0; //导入的视频总数 try { //全盘扫描 if ((bool)ScanAll.IsChecked) { LoadingStackPanel.Visibility = Visibility.Visible; await Task.Run(() => { ct.ThrowIfCancellationRequested(); List <string> filepaths = Scan.ScanAllDrives(); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct); }); } else { if (vieModel.ScanPath.Count == 0) { break; } LoadingStackPanel.Visibility = Visibility.Visible; await Task.Run(() => { ct.ThrowIfCancellationRequested(); StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.ScanPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct); }, cts.Token); } LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"{Jvedio.Language.Resources.Message_ScanNum} {totalnum} {Jvedio.Language.Resources.ImportNumber} {insertnum}", GrowlToken); } } catch (OperationCanceledException ex) { Console.WriteLine($"{nameof(OperationCanceledException)} thrown with message: {ex.Message}"); } finally { cts.Dispose(); Running = false; } break; case 1: //Access LoadingStackPanel.Visibility = Visibility.Visible; string AccessPath = AccessPathTextBox.Text; if (!File.Exists(AccessPath)) { HandyControl.Controls.Growl.Error($"{Jvedio.Language.Resources.Message_FileNotExist} {AccessPath}", GrowlToken); break; } try { await Task.Run(() => { DataBase.InsertFromAccess(AccessPath); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Success(Jvedio.Language.Resources.Message_Success, GrowlToken); } } finally { cts.Dispose(); Running = false; } break; case 2: //NFO if (NFOTabControl.SelectedIndex == 0) { if (vieModel.NFOScanPath.Count == 0) { HandyControl.Controls.Growl.Warning(Jvedio.Language.Resources.Message_CanNotBeNull, GrowlToken); } } else { if (!File.Exists(NFOPathTextBox.Text)) { HandyControl.Controls.Growl.Warning($"{Jvedio.Language.Resources.Message_FileNotExist} {NFOPathTextBox.Text}", GrowlToken); } } Running = true; try { List <string> nfoFiles = new List <string>(); if (NFOTabControl.SelectedIndex == 1) { nfoFiles.Add(NFOPathTextBox.Text); } else { //扫描所有nfo文件 await Task.Run(() => { this.Dispatcher.Invoke((Action) delegate { StatusTextBlock.Visibility = Visibility.Visible; StatusTextBlock.Text = Jvedio.Language.Resources.BeginScan; }); StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.NFOScanPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } nfoFiles = Scan.ScanNFO(stringCollection, ct, (filepath) => { this.Dispatcher.Invoke((Action) delegate { StatusTextBlock.Text = filepath; }); }); }, cts.Token); } //记录日志 Logger.LogScanInfo(Environment.NewLine + $"-----【" + DateTime.Now.ToString() + $"】NFO {Jvedio.Language.Resources.Scan}-----"); Logger.LogScanInfo(Environment.NewLine + $"{Jvedio.Language.Resources.Scan}{Jvedio.Language.Resources.Number} => {nfoFiles.Count} "); //导入所有 nfo 文件信息 double total = 0; bool importpic = (bool)NFOCopyPicture.IsChecked; await Task.Run(() => { nfoFiles.ForEach(item => { if (File.Exists(item)) { Movie movie = GetInfoFromNfo(item); if (movie != null && !string.IsNullOrEmpty(movie.id)) { DataBase.InsertFullMovie(movie); //复制并覆盖所有图片 if (importpic) { CopyPicToPath(movie.id, item); } total += 1; Logger.LogScanInfo(Environment.NewLine + $"{Jvedio.Language.Resources.ImportNumber} => {item} "); } } }); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { Logger.LogScanInfo(Environment.NewLine + $"{Jvedio.Language.Resources.ImportNumber} {total} "); HandyControl.Controls.Growl.Success(Environment.NewLine + $"{Jvedio.Language.Resources.ImportNumber} {total} ", GrowlToken); } } finally { cts.Dispose(); Running = false; } break; case 3: //欧美扫描 if (vieModel.ScanEuPath.Count == 0) { break; } LoadingStackPanel.Visibility = Visibility.Visible; totalnum = 0; insertnum = 0; try { await Task.Run(() => { StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.ScanEuPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct, IsEurope: true); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"{Jvedio.Language.Resources.Scan}{Jvedio.Language.Resources.Number} {totalnum} {Jvedio.Language.Resources.ImportNumber} {insertnum} ", GrowlToken); } } finally { cts.Dispose(); Running = false; } break; case 4: break; case 5: //网络驱动器 LoadingStackPanel.Visibility = Visibility.Visible; string path = UNCPathTextBox.Text; if (path == "") { break; } bool CanScan = true; //检查权限 await Task.Run(() => { try { var tl = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly); } catch { CanScan = false; } }); if (!CanScan) { LoadingStackPanel.Visibility = Visibility.Hidden; HandyControl.Controls.Growl.Error(Jvedio.Language.Resources.InsufficientPermissions, GrowlToken); break; } bool IsEurope = !(bool)ScanTypeRadioButton.IsChecked; totalnum = 0; insertnum = 0; try { await Task.Run(() => { StringCollection stringCollection = new StringCollection(); stringCollection.Add(path); List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct, IsEurope: IsEurope); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"{Jvedio.Language.Resources.Scan}{Jvedio.Language.Resources.Number} {totalnum} {Jvedio.Language.Resources.ImportNumber} {insertnum} ", GrowlToken); } } finally { cts.Dispose(); Running = false; } break; default: break; } Running = false; }
public async void LoadDataBase(object sender, MouseButtonEventArgs e) { //加载数据库 StackPanel stackPanel = sender as StackPanel; TextBox TextBox = stackPanel.Children[1] as TextBox; string name = TextBox.Text.ToLower(); if (name == "info") { Properties.Settings.Default.DataBasePath = AppDomain.CurrentDomain.BaseDirectory + "info.sqlite"; } else if (name == "新建视频库") { //重命名 TextBox.IsEnabled = true; TextBox.IsReadOnly = false; TextBox.Text = "我的视频"; TextBox.Focus(); TextBox.SelectAll(); TextBox.Cursor = Cursors.IBeam; return; } else { Properties.Settings.Default.DataBasePath = AppDomain.CurrentDomain.BaseDirectory + $"\\DataBase\\{name}.sqlite"; } if (!File.Exists(Properties.Settings.Default.DataBasePath)) { return; } SelectDbBorder.Visibility = Visibility.Hidden; if (Properties.Settings.Default.ScanGivenPath) { await Task.Run(() => { try { this.Dispatcher.BeginInvoke(new Action(() => { statusText.Text = $"扫描指定文件夹"; }), System.Windows.Threading.DispatcherPriority.Render); List <string> filepaths = Scan.ScanPaths(ReadScanPathFromConfig(Properties.Settings.Default.DataBasePath.Split('\\').Last().Split('.').First()), ct); Scan.InsertWithNfo(filepaths, ct); } catch (Exception ex) { Logger.LogF(ex); } }, cts.Token); } //启动主窗口 Main main = new Main(); statusText.Text = "初始化影片……"; try { main.InitMovie(); } catch (Exception ex) { MessageBox.Show(ex.Message); Logger.LogE(ex); } main.Show(); this.Close(); }
public async void LoadDataBase(object sender, MouseButtonEventArgs e) { //加载数据库 StackPanel stackPanel = sender as StackPanel; TextBox TextBox = stackPanel.Children[1] as TextBox; string name = TextBox.Text; if (name == Jvedio.Language.Resources.NewLibrary) { //重命名 TextBox.IsReadOnly = false; TextBox.Text = Jvedio.Language.Resources.MyLibrary; TextBox.Focus(); TextBox.SelectAll(); TextBox.Cursor = Cursors.IBeam; return; } else { Properties.Settings.Default.DataBasePath = AppDomain.CurrentDomain.BaseDirectory + $"\\DataBase\\{name}.sqlite"; } if (!File.Exists(Properties.Settings.Default.DataBasePath)) { return; } SelectDbBorder.Visibility = Visibility.Hidden; if (Properties.Settings.Default.ScanGivenPath) { await Task.Run(() => { try { this.Dispatcher.BeginInvoke(new Action(() => { statusText.Text = Jvedio.Language.Resources.Status_ScanDir; }), System.Windows.Threading.DispatcherPriority.Background); List <string> filepaths = Scan.ScanPaths(ReadScanPathFromConfig(Path.GetFileNameWithoutExtension(Properties.Settings.Default.DataBasePath)), ct); Scan.InsertWithNfo(filepaths, ct); } catch (Exception ex) { Logger.LogF(ex); } }, cts.Token); } //启动主窗口 Main main = new Main(); statusText.Text = Jvedio.Language.Resources.Status_InitMovie; try { await main.InitMovie(); } catch (Exception ex) { MessageBox.Show(ex.Message); Logger.LogE(ex); } main.Show(); this.Close(); }
public async void StartRun(object sender, RoutedEventArgs e) { if (Running) { HandyControl.Controls.Growl.Error("其他任务正在进行!", "ToolsGrowl"); return; } cts = new CancellationTokenSource(); cts.Token.Register(() => { HandyControl.Controls.Growl.Info("取消当前下载任务!", "ToolsGrowl"); }); ct = cts.Token; var grids = MainGrid.Children.OfType <Grid>().ToList(); int index = 0; for (int i = 0; i < grids.Count; i++) { if (grids[i].Visibility == Visibility.Visible) { index = i; break; } } Running = true; switch (index) { case 0: //扫描 double totalnum = 0; //扫描出的视频总数 double insertnum = 0; //导入的视频总数 try { //全盘扫描 if ((bool)ScanAll.IsChecked) { LoadingStackPanel.Visibility = Visibility.Visible; await Task.Run(() => { ct.ThrowIfCancellationRequested(); List <string> filepaths = Scan.ScanAllDrives(); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct); }); } else { if (vieModel.ScanPath.Count == 0) { break; } LoadingStackPanel.Visibility = Visibility.Visible; await Task.Run(() => { ct.ThrowIfCancellationRequested(); StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.ScanPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct); }, cts.Token); } LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"扫描出 {totalnum} 个,导入 {insertnum} 个", "ToolsGrowl"); } } catch (OperationCanceledException ex) { Console.WriteLine($"{nameof(OperationCanceledException)} thrown with message: {ex.Message}"); } finally { cts.Dispose(); Running = false; } break; case 1: //Access LoadingStackPanel.Visibility = Visibility.Visible; string AccessPath = AccessPathTextBox.Text; if (!File.Exists(AccessPath)) { HandyControl.Controls.Growl.Error($"不存在 :{AccessPath}", "ToolsGrowl"); break; } try { await Task.Run(() => { DataBase.InsertFromAccess(AccessPath); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Success("成功!", "ToolsGrowl"); } } finally { cts.Dispose(); Running = false; } break; case 2: //NFO if ((bool)NfoRB1.IsChecked) { if (vieModel.NFOScanPath.Count == 0) { HandyControl.Controls.Growl.Warning("路径为空!", "ToolsGrowl"); } } else { if (!File.Exists(NFOPathTextBox.Text)) { HandyControl.Controls.Growl.Warning($"文件不存在{NFOPathTextBox.Text}", "ToolsGrowl"); } } Running = true; try { List <string> nfoFiles = new List <string>(); if (!(bool)NfoRB1.IsChecked) { nfoFiles.Add(NFOPathTextBox.Text); } else { //扫描所有nfo文件 await Task.Run(() => { this.Dispatcher.Invoke((Action) delegate { StatusTextBlock.Visibility = Visibility.Visible; StatusTextBlock.Text = "开始扫描"; }); StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.NFOScanPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } nfoFiles = Scan.ScanNFO(stringCollection, ct, (filepath) => { this.Dispatcher.Invoke((Action) delegate { StatusTextBlock.Text = filepath; }); }); }, cts.Token); } //记录日志 Logger.LogScanInfo("\n-----【" + DateTime.Now.ToString() + "】NFO扫描-----"); Logger.LogScanInfo($"\n扫描出 => {nfoFiles.Count} 个 "); //导入所有 nfo 文件信息 double total = 0; bool importpic = (bool)NFOCopyPicture.IsChecked; await Task.Run(() => { nfoFiles.ForEach(item => { if (File.Exists(item)) { Movie movie = GetInfoFromNfo(item); if (movie != null && !string.IsNullOrEmpty(movie.id)) { DataBase.InsertFullMovie(movie); //复制并覆盖所有图片 if (importpic) { CopyPicToPath(movie.id, item); } total += 1; Logger.LogScanInfo($"\n成功导入数据库 => {item} "); } } }); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { Logger.LogScanInfo($"\n成功导入 {total} 个"); HandyControl.Controls.Growl.Success($"\n成功导入 {total} 个", "ToolsGrowl"); } } finally { cts.Dispose(); Running = false; } break; case 3: //欧美扫描 if (vieModel.ScanEuPath.Count == 0) { break; } LoadingStackPanel.Visibility = Visibility.Visible; totalnum = 0; insertnum = 0; try { await Task.Run(() => { StringCollection stringCollection = new StringCollection(); foreach (var item in vieModel.ScanEuPath) { if (Directory.Exists(item)) { stringCollection.Add(item); } } List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct, IsEurope: true); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"扫描出 {totalnum} 个,导入 {insertnum} 个"); } } finally { cts.Dispose(); Running = false; } break; case 4: break; case 5: //网络驱动器 LoadingStackPanel.Visibility = Visibility.Visible; string path = UNCPathTextBox.Text; if (path == "") { break; } bool CanScan = true; //检查权限 await Task.Run(() => { try { var tl = Directory.GetFiles(path, "*.*", SearchOption.TopDirectoryOnly); } catch { CanScan = false; } }); if (!CanScan) { LoadingStackPanel.Visibility = Visibility.Hidden; HandyControl.Controls.Growl.Error($"权限不够!"); break; } bool IsEurope = !(bool)ScanTypeRadioButton.IsChecked; totalnum = 0; insertnum = 0; try { await Task.Run(() => { StringCollection stringCollection = new StringCollection(); stringCollection.Add(path); List <string> filepaths = Scan.ScanPaths(stringCollection, ct); totalnum = filepaths.Count; insertnum = Scan.InsertWithNfo(filepaths, ct, IsEurope: IsEurope); }); LoadingStackPanel.Visibility = Visibility.Hidden; if (!cts.IsCancellationRequested) { HandyControl.Controls.Growl.Info($"扫描出 {totalnum} 个,导入 {insertnum} 个"); } } finally { cts.Dispose(); Running = false; } break; default: break; } Running = false; }