Beispiel #1
0
        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;
        }
Beispiel #2
0
        public async void StartRun(object sender, RoutedEventArgs e)
        {
            if (Running)
            {
                new Msgbox(this, "其他任务正在进行!").ShowDialog(); return;
            }

            cts = new CancellationTokenSource();
            cts.Token.Register(() => { Console.WriteLine("取消当前下载任务"); });
            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.DistinctMovieAndInsert(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.DistinctMovieAndInsert(filepaths, ct);
                        }, cts.Token);
                    }

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        new PopupWindow(this, $"扫描出 {totalnum} 个,导入 {insertnum} 个", true).Show();
                    }
                }
                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))
                {
                    new Msgbox(this, $"不存在 :{AccessPath}").ShowDialog(); break;
                }
                try
                {
                    await Task.Run(() =>
                    {
                        DataBase cdb = new DataBase();
                        cdb.InsertFromAccess(AccessPath);
                        cdb.CloseDB();
                    });

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        new PopupWindow(this, "成功!").Show();
                    }
                }
                finally
                {
                    cts.Dispose();
                    Running = false;
                }
                break;

            case 2:
                //NFO
                if ((bool)NfoRB1.IsChecked)
                {
                    if (vieModel.NFOScanPath.Count == 0)
                    {
                        new Msgbox(this, "路径为空!").ShowDialog();
                    }
                }
                else
                {
                    if (!File.Exists(NFOPathTextBox.Text))
                    {
                        new Msgbox(this, $"文件不存在{NFOPathTextBox.Text}").ShowDialog();
                    }
                }


                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;
                    await Task.Run(() =>
                    {
                        DataBase cdb = new DataBase();

                        nfoFiles.ForEach(item =>
                        {
                            if (File.Exists(item))
                            {
                                Movie movie = GetInfoFromNfo(item);
                                if (movie != null)
                                {
                                    cdb.InsertFullMovie(movie);
                                    //复制并覆盖所有图片
                                    CopyPicToPath(movie.id, item);
                                    total += 1;
                                    Logger.LogScanInfo($"\n成功导入数据库 => {item}  ");
                                }
                            }
                        });
                        cdb.CloseDB();
                    });

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        Logger.LogScanInfo($"\n成功导入 {total} 个");
                        new PopupWindow(this, "成功!").Show();
                    }
                }
                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.DistinctMovieAndInsert(filepaths, ct, true);
                    });

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        new PopupWindow(this, $"扫描出 {totalnum} 个,导入 {insertnum} 个", true).Show();
                    }
                }
                finally

                {
                    cts.Dispose();
                    Running = false;
                }

                break;

            case 4:

                //if (IsDownLoading()) { new PopupWindow(this, "请等待下载结束!").Show(); break; }

                //if (new Msgbox(this, "删除不可逆,是否继续?").ShowDialog() == false) { break; }



                //string InfoDataBasePath = AppDomain.CurrentDomain.BaseDirectory + "Info.sqlite";
                //try
                //{

                //    //数据库管理
                //    var cb = CheckBoxStackPanel.Children.OfType<CheckBox>().ToList();

                //    if ((bool)cb[0].IsChecked)
                //    {
                //        //重置信息
                //        DataBase cdb = new DataBase();
                //        cdb.DeleteTable("movie");
                //        cdb.CreateTable(StaticVariable.SQLITETABLE_MOVIE);
                //        cdb.CloseDB();
                //    }

                //    if ((bool)cb[1].IsChecked)
                //    {
                //        //删除不存在影片
                //        DataBase cdb = new DataBase("");
                //        var movies = cdb.SelectMoviesBySql("select * from movie");
                //        movies.ForEach(movie =>
                //        {
                //            if (!File.Exists(movie.filepath))
                //            {
                //                cdb.DelInfoByType("movie", "id", movie.id);
                //            }
                //        });
                //        cdb.CloseDB();



                //    }

                //    if ((bool)cb[2].IsChecked)
                //    {
                //        //Vaccum
                //        DataBase cdb = new DataBase();
                //        cdb.Vaccum();
                //        cdb.CloseDB();
                //        cdb = new DataBase("Image");
                //        cdb.Vaccum();
                //        cdb.CloseDB();
                //    }

                //    if (!cts.IsCancellationRequested) new PopupWindow(this, "成功!").Show();
                //}
                //finally
                //{
                //    cts.Dispose();
                //    Running = false;
                //}

                //Main main = null;
                //Window window = Jvedio.GetWindow.Get("Main");
                //if (window != null) main = (Main)window;
                //main?.vieModel.Reset();

                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; new Msgbox(this, "权限不够!").ShowDialog(); break;
                }


                bool IsEurope = (bool)ScanTypeRadioButton.IsChecked ? false : true;

                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.DistinctMovieAndInsert(filepaths, ct, IsEurope);
                    });

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        new PopupWindow(this, $"扫描出 {totalnum} 个,导入 {insertnum} 个", true).Show();
                    }
                }
                finally
                {
                    cts.Dispose();
                    Running = false;
                }
                break;

            default:

                break;
            }
            Running = false;
        }
Beispiel #3
0
        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.DistinctMovieAndInsert(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.DistinctMovieAndInsert(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.DistinctMovieAndInsert(filepaths, ct, 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 ? false : true;

                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.DistinctMovieAndInsert(filepaths, ct, IsEurope);
                    });

                    LoadingStackPanel.Visibility = Visibility.Hidden;
                    if (!cts.IsCancellationRequested)
                    {
                        HandyControl.Controls.Growl.Info($"扫描出 {totalnum} 个,导入 {insertnum} 个");
                    }
                }
                finally
                {
                    cts.Dispose();
                    Running = false;
                }
                break;

            default:

                break;
            }
            Running = false;
        }