/JMMServer/JMMServer/MainWindow.xaml.cs
C# | 2751 lines | 1861 code | 502 blank | 388 comment | 189 complexity | 24b39fe976af87f47037b3de7c6d2f94 MD5 | raw file
Large files files are truncated, but you can click here to view the full file
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using JMMServer.Databases;
- using NHibernate;
- using JMMServer.Commands;
- using JMMServer.Repositories;
- using JMMServer.Entities;
- using NLog;
- using System.Threading;
- using System.IO;
- using JMMFileHelper;
- using System.ServiceModel;
- using System.ServiceModel.Description;
- using JMMContracts;
- using JMMServer.WebCache;
- using System.ComponentModel;
- using System.ServiceModel.Channels;
- using System.Runtime.Serialization;
- using System.Xml;
- using JMMServer.AniDB_API.Commands;
- using System.Windows;
- using NLog.Config;
- using System.Collections.ObjectModel;
- using System.Windows.Input;
- using JMMServer.Providers.TvDB;
- using JMMServer.Providers.MovieDB;
- using JMMServer.Providers.TraktTV;
- using System.Data.SQLite;
- using System.Data.SqlClient;
- using System.Data;
- using JMMServer.MyAnime2Helper;
- using JMMServer.ImageDownload;
- using Microsoft.SqlServer.Management.Smo;
- using JMMServer.Providers.MyAnimeList;
- using JMMServer.Commands.MAL;
- using JMMServer.Commands.WebCache;
- using System.Diagnostics;
- using JMMServer.UI;
- using System.ServiceModel.Dispatcher;
- using BinaryNorthwest;
- using System.Collections;
- using System.ServiceModel.Web;
- using JMMServer.Providers.Azure;
- using JMMServer.Commands.Azure;
-
- namespace JMMServer
- {
- /// <summary>
- /// Interaction logic for MainWindow.xaml
- /// </summary>
- public partial class MainWindow : Window
- {
- private System.Windows.Forms.NotifyIcon TippuTrayNotify;
- private System.Windows.Forms.ContextMenuStrip ctxTrayMenu;
- private bool isAppExiting = false;
- private static bool doneFirstTrakTinfo = false;
- private static Logger logger = LogManager.GetCurrentClassLogger();
- private static DateTime lastTraktInfoUpdate = DateTime.Now;
- private static DateTime lastVersionCheck = DateTime.Now.AddDays(-5);
-
- private static BlockingList<FileSystemEventArgs> queueFileEvents = new BlockingList<FileSystemEventArgs>();
- private static BackgroundWorker workerFileEvents = new BackgroundWorker();
-
- //private static Uri baseAddress = new Uri("http://localhost:8111/JMMServer");
- private static string baseAddressImageString = @"http://localhost:{0}/JMMServerImage";
- private static string baseAddressStreamingString = @"http://localhost:{0}/JMMServerStreaming";
- private static string baseAddressStreamingStringMex = @"net.tcp://localhost:{0}/JMMServerStreaming/mex";
- private static string baseAddressBinaryString = @"http://localhost:{0}/JMMServerBinary";
- private static string baseAddressMetroString = @"http://localhost:{0}/JMMServerMetro";
- private static string baseAddressMetroImageString = @"http://localhost:{0}/JMMServerMetroImage";
- private static string baseAddressRESTString = @"http://localhost:{0}/JMMServerREST";
- //private static Uri baseAddressTCP = new Uri("net.tcp://localhost:8112/JMMServerTCP");
- //private static ServiceHost host = null;
- //private static ServiceHost hostTCP = null;
- private static ServiceHost hostImage = null;
- private static ServiceHost hostStreaming = null;
- private static ServiceHost hostBinary = null;
- private static ServiceHost hostMetro = null;
- private static ServiceHost hostMetroImage = null;
- private static WebServiceHost hostREST = null;
-
- private static BackgroundWorker workerImport = new BackgroundWorker();
- private static BackgroundWorker workerScanFolder = new BackgroundWorker();
- private static BackgroundWorker workerScanDropFolders = new BackgroundWorker();
- private static BackgroundWorker workerRemoveMissing = new BackgroundWorker();
- private static BackgroundWorker workerDeleteImportFolder = new BackgroundWorker();
- private static BackgroundWorker workerTraktFriends = new BackgroundWorker();
- private static BackgroundWorker workerMyAnime2 = new BackgroundWorker();
- private static BackgroundWorker workerMediaInfo = new BackgroundWorker();
-
- private static BackgroundWorker workerSetupDB = new BackgroundWorker();
-
- private static System.Timers.Timer autoUpdateTimer = null;
- private static System.Timers.Timer autoUpdateTimerShort = null;
- private static List<FileSystemWatcher> watcherVids = null;
-
- BackgroundWorker downloadImagesWorker = new BackgroundWorker();
-
- public static Uri baseAddressBinary
- {
- get
- {
- return new Uri(string.Format(baseAddressBinaryString, ServerSettings.JMMServerPort));
- }
- }
-
- public static Uri baseAddressImage
- {
- get
- {
- return new Uri(string.Format(baseAddressImageString, ServerSettings.JMMServerPort));
- }
- }
-
- public static Uri baseAddressStreaming
- {
- get
- {
- return new Uri(string.Format(baseAddressStreamingString, ServerSettings.JMMServerPort));
- }
- }
-
- public static Uri baseAddressStreamingMex
- {
- get
- {
- return new Uri(string.Format(baseAddressStreamingStringMex, ServerSettings.JMMServerFilePort));
- }
- }
-
- public static Uri baseAddressMetro
- {
- get
- {
- return new Uri(string.Format(baseAddressMetroString, ServerSettings.JMMServerPort));
- }
- }
-
- public static Uri baseAddressMetroImage
- {
- get
- {
- return new Uri(string.Format(baseAddressMetroImageString, ServerSettings.JMMServerPort));
- }
- }
-
- public static Uri baseAddressREST
- {
- get
- {
- return new Uri(string.Format(baseAddressRESTString, ServerSettings.JMMServerPort));
- }
- }
-
-
- private Mutex mutex;
- private readonly string mutexName = "JmmServer3.0Mutex";
-
- public MainWindow()
- {
- InitializeComponent();
-
- //HibernatingRhinos.Profiler.Appender.NHibernate.NHibernateProfiler.Initialize();
-
- try
- {
- UnhandledExceptionManager.AddHandler();
- }
- catch {}
-
- if (!ServerSettings.AllowMultipleInstances)
- {
- try
- {
- mutex = Mutex.OpenExisting(mutexName);
- //since it hasn't thrown an exception, then we already have one copy of the app open.
- MessageBox.Show("JMM Server is already running. Please check your system tray (notification area).",
- "JMM Server", MessageBoxButton.OK, MessageBoxImage.Error);
- Environment.Exit(0);
- }
- catch (Exception Ex)
- {
- //since we didn't find a mutex with that name, create one
- Debug.WriteLine("Exception thrown:" + Ex.Message + " Creating a new mutex...");
- mutex = new Mutex(true, mutexName);
- }
- }
- ServerSettings.DebugSettingsToLog();
-
- workerFileEvents.WorkerReportsProgress = false;
- workerFileEvents.WorkerSupportsCancellation = false;
- workerFileEvents.DoWork += new DoWorkEventHandler(workerFileEvents_DoWork);
- workerFileEvents.RunWorkerCompleted += new RunWorkerCompletedEventHandler(workerFileEvents_RunWorkerCompleted);
-
-
- //Create an instance of the NotifyIcon Class
- TippuTrayNotify = new System.Windows.Forms.NotifyIcon();
-
- // This icon file needs to be in the bin folder of the application
- TippuTrayNotify = new System.Windows.Forms.NotifyIcon();
- Stream iconStream = Application.GetResourceStream(new Uri("pack://application:,,,/JMMServer;component/db.ico")).Stream;
- TippuTrayNotify.Icon = new System.Drawing.Icon(iconStream);
- iconStream.Dispose();
-
- //show the Tray Notify Icon
- TippuTrayNotify.Visible = true;
-
-
- CreateMenus();
-
- ServerState.Instance.DatabaseAvailable = false;
- ServerState.Instance.ServerOnline = false;
- ServerState.Instance.BaseImagePath = ImageUtils.GetBaseImagesPath();
-
- this.Closing += new System.ComponentModel.CancelEventHandler(MainWindow_Closing);
- this.StateChanged += new EventHandler(MainWindow_StateChanged);
- TippuTrayNotify.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(TippuTrayNotify_MouseDoubleClick);
-
- btnToolbarShutdown.Click += new RoutedEventHandler(btnToolbarShutdown_Click);
- btnHasherPause.Click += new RoutedEventHandler(btnHasherPause_Click);
- btnHasherResume.Click += new RoutedEventHandler(btnHasherResume_Click);
- btnGeneralPause.Click += new RoutedEventHandler(btnGeneralPause_Click);
- btnGeneralResume.Click += new RoutedEventHandler(btnGeneralResume_Click);
- btnImagesPause.Click += new RoutedEventHandler(btnImagesPause_Click);
- btnImagesResume.Click += new RoutedEventHandler(btnImagesResume_Click);
-
- btnRemoveMissingFiles.Click += new RoutedEventHandler(btnRemoveMissingFiles_Click);
- btnRunImport.Click += new RoutedEventHandler(btnRunImport_Click);
- btnSyncMyList.Click += new RoutedEventHandler(btnSyncMyList_Click);
- btnSyncVotes.Click += new RoutedEventHandler(btnSyncVotes_Click);
- btnUpdateTvDBInfo.Click += new RoutedEventHandler(btnUpdateTvDBInfo_Click);
- btnUpdateAllStats.Click += new RoutedEventHandler(btnUpdateAllStats_Click);
- btnSyncTrakt.Click += new RoutedEventHandler(btnSyncTrakt_Click);
- btnImportManualLinks.Click += new RoutedEventHandler(btnImportManualLinks_Click);
- btnUpdateAniDBInfo.Click += new RoutedEventHandler(btnUpdateAniDBInfo_Click);
- btnUploadAniFileCache.Click += new RoutedEventHandler(btnUploadAniFileCache_Click);
- btnUploadAzureCache.Click += new RoutedEventHandler(btnUploadAzureCache_Click);
-
- this.Loaded += new RoutedEventHandler(MainWindow_Loaded);
- downloadImagesWorker.DoWork += new DoWorkEventHandler(downloadImagesWorker_DoWork);
- downloadImagesWorker.WorkerSupportsCancellation = true;
-
- txtServerPort.Text = ServerSettings.JMMServerPort;
-
- btnToolbarHelp.Click += new RoutedEventHandler(btnToolbarHelp_Click);
- btnApplyServerPort.Click += new RoutedEventHandler(btnApplyServerPort_Click);
- btnUpdateMediaInfo.Click += new RoutedEventHandler(btnUpdateMediaInfo_Click);
-
- workerMyAnime2.DoWork += new DoWorkEventHandler(workerMyAnime2_DoWork);
- workerMyAnime2.RunWorkerCompleted += new RunWorkerCompletedEventHandler(workerMyAnime2_RunWorkerCompleted);
- workerMyAnime2.ProgressChanged += new ProgressChangedEventHandler(workerMyAnime2_ProgressChanged);
- workerMyAnime2.WorkerReportsProgress = true;
-
- workerMediaInfo.DoWork += new DoWorkEventHandler(workerMediaInfo_DoWork);
-
- workerImport.WorkerReportsProgress = true;
- workerImport.WorkerSupportsCancellation = true;
- workerImport.DoWork += new DoWorkEventHandler(workerImport_DoWork);
-
- workerScanFolder.WorkerReportsProgress = true;
- workerScanFolder.WorkerSupportsCancellation = true;
- workerScanFolder.DoWork += new DoWorkEventHandler(workerScanFolder_DoWork);
-
-
- workerScanDropFolders.WorkerReportsProgress = true;
- workerScanDropFolders.WorkerSupportsCancellation = true;
- workerScanDropFolders.DoWork += new DoWorkEventHandler(workerScanDropFolders_DoWork);
-
- workerRemoveMissing.WorkerReportsProgress = true;
- workerRemoveMissing.WorkerSupportsCancellation = true;
- workerRemoveMissing.DoWork += new DoWorkEventHandler(workerRemoveMissing_DoWork);
-
- workerDeleteImportFolder.WorkerReportsProgress = false;
- workerDeleteImportFolder.WorkerSupportsCancellation = true;
- workerDeleteImportFolder.DoWork += new DoWorkEventHandler(workerDeleteImportFolder_DoWork);
-
- workerTraktFriends.DoWork += new DoWorkEventHandler(workerTraktFriends_DoWork);
- workerTraktFriends.RunWorkerCompleted += new RunWorkerCompletedEventHandler(workerTraktFriends_RunWorkerCompleted);
-
- workerSetupDB.DoWork += new DoWorkEventHandler(workerSetupDB_DoWork);
- workerSetupDB.RunWorkerCompleted += new RunWorkerCompletedEventHandler(workerSetupDB_RunWorkerCompleted);
-
- //StartUp();
-
- cboDatabaseType.Items.Clear();
- cboDatabaseType.Items.Add("SQLite");
- cboDatabaseType.Items.Add("Microsoft SQL Server 2008");
- cboDatabaseType.Items.Add("MySQL");
- cboDatabaseType.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(cboDatabaseType_SelectionChanged);
-
- cboImagesPath.Items.Clear();
- cboImagesPath.Items.Add("Default");
- cboImagesPath.Items.Add("Custom");
- cboImagesPath.SelectionChanged += new System.Windows.Controls.SelectionChangedEventHandler(cboImagesPath_SelectionChanged);
- btnChooseImagesFolder.Click += new RoutedEventHandler(btnChooseImagesFolder_Click);
-
- if (ServerSettings.BaseImagesPathIsDefault)
- cboImagesPath.SelectedIndex = 0;
- else
- cboImagesPath.SelectedIndex = 1;
-
- btnSaveDatabaseSettings.Click += new RoutedEventHandler(btnSaveDatabaseSettings_Click);
- btnRefreshMSSQLServerList.Click += new RoutedEventHandler(btnRefreshMSSQLServerList_Click);
- btnInstallMSSQLServer.Click += new RoutedEventHandler(btnInstallMSSQLServer_Click);
- btnMaxOnStartup.Click += new RoutedEventHandler(toggleMinimizeOnStartup);
- btnMinOnStartup.Click += new RoutedEventHandler(toggleMinimizeOnStartup);
- btnLogs.Click += new RoutedEventHandler(btnLogs_Click);
- btnChooseVLCLocation.Click += new RoutedEventHandler(btnChooseVLCLocation_Click);
-
- btnAllowMultipleInstances.Click += new RoutedEventHandler(toggleAllowMultipleInstances);
- btnDisallowMultipleInstances.Click += new RoutedEventHandler(toggleAllowMultipleInstances);
-
- btnHasherClear.Click += new RoutedEventHandler(btnHasherClear_Click);
- btnGeneralClear.Click += new RoutedEventHandler(btnGeneralClear_Click);
- btnImagesClear.Click += new RoutedEventHandler(btnImagesClear_Click);
-
- //automaticUpdater.MenuItem = mnuCheckForUpdates;
-
- ServerState.Instance.LoadSettings();
- workerFileEvents.RunWorkerAsync();
- }
-
- void workerFileEvents_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- logger.Info("Stopped thread for processing file creation events");
- }
-
- void workerFileEvents_DoWork(object sender, DoWorkEventArgs e)
- {
- logger.Info("Started thread for processing file creation events");
- foreach (FileSystemEventArgs evt in queueFileEvents)
- {
- try
- {
- // this is a message to stop processing
- if (evt == null) return;
-
- logger.Info("New file created: {0}: {1}", evt.FullPath, evt.ChangeType);
-
- if (evt.ChangeType == WatcherChangeTypes.Created)
- {
- if (Directory.Exists(evt.FullPath))
- { // When the path that was created represents a directory we need to manually get the contained files to add.
- // The reason for this is that when a directory is moved into a source directory (from the same drive) we will only recieve
- // an event for the directory and not the contained files. However, if the folder is copied from a different drive then
- // a create event will fire for the directory and each file contained within it (As they are all treated as separate operations)
- string[] files = Directory.GetFiles(evt.FullPath, "*.*", SearchOption.AllDirectories);
-
- foreach (string file in files)
- {
- if (FileHashHelper.IsVideo(file))
- {
- logger.Info("Found file {0} under folder {1}", file, evt.FullPath);
-
- CommandRequest_HashFile cmd = new CommandRequest_HashFile(file, false);
- cmd.Save();
- }
- }
- }
- else if (FileHashHelper.IsVideo(evt.FullPath))
- {
- CommandRequest_HashFile cmd = new CommandRequest_HashFile(evt.FullPath, false);
- cmd.Save();
- }
- }
-
- queueFileEvents.Remove(evt);
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.Message, ex);
- queueFileEvents.Remove(evt);
- Thread.Sleep(1000);
- }
- }
-
- }
-
- void btnUploadAzureCache_Click(object sender, RoutedEventArgs e)
- {
- AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository();
- List<AniDB_Anime> allAnime = repAnime.GetAll();
- int cnt = 0;
- foreach (AniDB_Anime anime in allAnime)
- {
- cnt++;
- logger.Info(string.Format("Uploading anime {0} of {1} - {2}", cnt, allAnime.Count, anime.MainTitle));
-
- try
- {
- CommandRequest_Azure_SendAnimeFull cmdAzure = new CommandRequest_Azure_SendAnimeFull(anime.AnimeID);
- cmdAzure.Save();
- }
- catch { }
- }
- }
-
- void btnImagesClear_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- this.Cursor = Cursors.Wait;
- JMMService.CmdProcessorImages.Stop();
-
- // wait until the queue stops
- while (JMMService.CmdProcessorImages.ProcessingCommands)
- {
- Thread.Sleep(200);
- }
- Thread.Sleep(200);
-
- CommandRequestRepository repCR = new CommandRequestRepository();
- foreach (CommandRequest cr in repCR.GetAllCommandRequestImages())
- repCR.Delete(cr.CommandRequestID);
-
- JMMService.CmdProcessorImages.Init();
- }
- catch (Exception ex)
- {
- Utils.ShowErrorMessage(ex.Message);
- }
- this.Cursor = Cursors.Arrow;
- }
-
- void btnGeneralClear_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- this.Cursor = Cursors.Wait;
- JMMService.CmdProcessorGeneral.Stop();
-
- // wait until the queue stops
- while (JMMService.CmdProcessorGeneral.ProcessingCommands)
- {
- Thread.Sleep(200);
- }
- Thread.Sleep(200);
-
- CommandRequestRepository repCR = new CommandRequestRepository();
- foreach (CommandRequest cr in repCR.GetAllCommandRequestGeneral())
- repCR.Delete(cr.CommandRequestID);
-
- JMMService.CmdProcessorGeneral.Init();
- }
- catch (Exception ex)
- {
- Utils.ShowErrorMessage(ex.Message);
- }
- this.Cursor = Cursors.Arrow;
- }
-
- void btnHasherClear_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- this.Cursor = Cursors.Wait;
- JMMService.CmdProcessorHasher.Stop();
-
- // wait until the queue stops
- while (JMMService.CmdProcessorHasher.ProcessingCommands)
- {
- Thread.Sleep(200);
- }
- Thread.Sleep(200);
-
- CommandRequestRepository repCR = new CommandRequestRepository();
- foreach (CommandRequest cr in repCR.GetAllCommandRequestHasher())
- repCR.Delete(cr.CommandRequestID);
-
- JMMService.CmdProcessorHasher.Init();
- }
- catch (Exception ex)
- {
- Utils.ShowErrorMessage(ex.Message);
- }
- this.Cursor = Cursors.Arrow;
- }
-
-
-
- void toggleAllowMultipleInstances(object sender, RoutedEventArgs e)
- {
- ServerSettings.AllowMultipleInstances = !ServerSettings.AllowMultipleInstances;
- ServerState.Instance.AllowMultipleInstances = !ServerState.Instance.AllowMultipleInstances;
- ServerState.Instance.DisallowMultipleInstances = !ServerState.Instance.DisallowMultipleInstances;
- }
-
-
-
-
-
- void btnLogs_Click(object sender, RoutedEventArgs e)
- {
- try
- {
- string appPath = System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().Location);
- string logPath = Path.Combine(appPath, "logs");
-
- Process.Start(new ProcessStartInfo(logPath));
- }
- catch (Exception ex)
- {
- Utils.ShowErrorMessage(ex);
- }
- }
-
- void toggleMinimizeOnStartup(object sender, RoutedEventArgs e)
- {
- ServerSettings.MinimizeOnStartup = !ServerSettings.MinimizeOnStartup;
- ServerState.Instance.MinOnStartup = !ServerState.Instance.MinOnStartup;
- ServerState.Instance.MaxOnStartup = !ServerState.Instance.MaxOnStartup;
- }
-
- void btnInstallMSSQLServer_Click(object sender, RoutedEventArgs e)
- {
- System.Diagnostics.Process.Start("http://www.microsoft.com/web/gallery/install.aspx?appsxml=&appid=SQLExpressTools");
- }
-
-
-
-
-
- void btnChooseVLCLocation_Click(object sender, RoutedEventArgs e)
- {
- string errorMsg = "";
- string streamingAddress = "";
-
- Utils.StartStreamingVideo("localhost", @"e:\test\[Frostii]_K-On!_-_S5_(1280x720_Blu-ray_H264)_[8B9E0A76].mkv", "12000", "30", "1280",
- "128", "44100", "8088", ref errorMsg, ref streamingAddress);
-
- return;
-
- System.Windows.Forms.OpenFileDialog dialog = new System.Windows.Forms.OpenFileDialog();
- if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- ServerSettings.VLCLocation = dialog.FileName;
- }
- }
-
- void btnChooseImagesFolder_Click(object sender, RoutedEventArgs e)
- {
- System.Windows.Forms.FolderBrowserDialog dialog = new System.Windows.Forms.FolderBrowserDialog();
- if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
- {
- ServerSettings.BaseImagesPath = dialog.SelectedPath;
- }
- }
-
- void cboImagesPath_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
- {
- if (cboImagesPath.SelectedIndex == 0)
- {
- ServerSettings.BaseImagesPathIsDefault = true;
- btnChooseImagesFolder.Visibility = System.Windows.Visibility.Hidden;
- }
- else
- {
- ServerSettings.BaseImagesPathIsDefault = false;
- btnChooseImagesFolder.Visibility = System.Windows.Visibility.Visible;
- }
-
- }
-
- #region Database settings and initial start up
-
- void btnSaveDatabaseSettings_Click(object sender, RoutedEventArgs e)
- {
-
- try
- {
- btnSaveDatabaseSettings.IsEnabled = false;
- cboDatabaseType.IsEnabled = false;
- btnRefreshMSSQLServerList.IsEnabled = false;
-
- if (ServerState.Instance.DatabaseIsSQLite)
- {
- ServerSettings.DatabaseType = "SQLite";
- }
- else if (ServerState.Instance.DatabaseIsSQLServer)
- {
- if (string.IsNullOrEmpty(txtMSSQL_DatabaseName.Text) || string.IsNullOrEmpty(txtMSSQL_Password.Password)
- || string.IsNullOrEmpty(cboMSSQLServerList.Text) || string.IsNullOrEmpty(txtMSSQL_Username.Text))
- {
- MessageBox.Show("Please fill out all the settings", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- txtMSSQL_DatabaseName.Focus();
- return;
- }
-
- ServerSettings.DatabaseType = "SQLServer";
- ServerSettings.DatabaseName = txtMSSQL_DatabaseName.Text;
- ServerSettings.DatabasePassword = txtMSSQL_Password.Password;
- ServerSettings.DatabaseServer = cboMSSQLServerList.Text;
- ServerSettings.DatabaseUsername = txtMSSQL_Username.Text;
-
- }
- else if (ServerState.Instance.DatabaseIsMySQL)
- {
-
- if (string.IsNullOrEmpty(txtMySQL_DatabaseName.Text) || string.IsNullOrEmpty(txtMySQL_Password.Password)
- || string.IsNullOrEmpty(txtMySQL_ServerAddress.Text) || string.IsNullOrEmpty(txtMySQL_Username.Text))
- {
- MessageBox.Show("Please fill out all the settings", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- txtMySQL_DatabaseName.Focus();
- return;
- }
-
- ServerSettings.DatabaseType = "MySQL";
- ServerSettings.MySQL_SchemaName = txtMySQL_DatabaseName.Text;
- ServerSettings.MySQL_Password = txtMySQL_Password.Password;
- ServerSettings.MySQL_Hostname = txtMySQL_ServerAddress.Text;
- ServerSettings.MySQL_Username = txtMySQL_Username.Text;
-
- }
-
- workerSetupDB.RunWorkerAsync();
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.Message, ex);
- MessageBox.Show("Failed to set start: " + ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
-
- void cboDatabaseType_SelectionChanged(object sender, System.Windows.Controls.SelectionChangedEventArgs e)
- {
- ServerState.Instance.DatabaseIsSQLite = false;
- ServerState.Instance.DatabaseIsSQLServer = false;
- ServerState.Instance.DatabaseIsMySQL = false;
-
- switch (cboDatabaseType.SelectedIndex)
- {
- case 0:
- ServerState.Instance.DatabaseIsSQLite = true;
- break;
- case 1:
-
- bool anySettingsMSSQL = !string.IsNullOrEmpty(ServerSettings.DatabaseName) || !string.IsNullOrEmpty(ServerSettings.DatabasePassword)
- || !string.IsNullOrEmpty(ServerSettings.DatabaseServer) || !string.IsNullOrEmpty(ServerSettings.DatabaseUsername);
-
- if (anySettingsMSSQL)
- {
- txtMSSQL_DatabaseName.Text = ServerSettings.DatabaseName;
- txtMSSQL_Password.Password = ServerSettings.DatabasePassword;
-
- cboMSSQLServerList.Text = ServerSettings.DatabaseServer;
- txtMSSQL_Username.Text = ServerSettings.DatabaseUsername;
- }
- else
- {
- txtMSSQL_DatabaseName.Text = "JMMServer";
- txtMSSQL_Password.Password = "";
- cboMSSQLServerList.Text = "localhost";
- txtMSSQL_Username.Text = "sa";
- }
- ServerState.Instance.DatabaseIsSQLServer = true;
- break;
- case 2:
-
- bool anySettingsMySQL = !string.IsNullOrEmpty(ServerSettings.MySQL_SchemaName) || !string.IsNullOrEmpty(ServerSettings.MySQL_Password)
- || !string.IsNullOrEmpty(ServerSettings.MySQL_Hostname) || !string.IsNullOrEmpty(ServerSettings.MySQL_Username);
-
- if (anySettingsMySQL)
- {
- txtMySQL_DatabaseName.Text = ServerSettings.MySQL_SchemaName;
- txtMySQL_Password.Password = ServerSettings.MySQL_Password;
- txtMySQL_ServerAddress.Text = ServerSettings.MySQL_Hostname;
- txtMySQL_Username.Text = ServerSettings.MySQL_Username;
- }
- else
- {
- txtMySQL_DatabaseName.Text = "JMMServer";
- txtMySQL_Password.Password = "";
- txtMySQL_ServerAddress.Text = "localhost";
- txtMySQL_Username.Text = "root";
- }
-
- ServerState.Instance.DatabaseIsMySQL = true;
- break;
- }
- }
-
- void workerSetupDB_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
- bool setupComplete = bool.Parse(e.Result.ToString());
- if (setupComplete)
- {
- ServerInfo.Instance.RefreshImportFolders();
- ServerState.Instance.CurrentSetupStatus = "Complete!";
- ServerState.Instance.ServerOnline = true;
-
- tabControl1.SelectedIndex = 0;
- }
- else
- {
- ServerState.Instance.ServerOnline = false;
- if (string.IsNullOrEmpty(ServerSettings.DatabaseType))
- {
- ServerSettings.DatabaseType = "SQLite";
- ShowDatabaseSetup();
- }
- }
-
- btnSaveDatabaseSettings.IsEnabled = true;
- cboDatabaseType.IsEnabled = true;
- btnRefreshMSSQLServerList.IsEnabled = true;
-
- if (setupComplete)
- {
- if (string.IsNullOrEmpty(ServerSettings.AniDB_Username) || string.IsNullOrEmpty(ServerSettings.AniDB_Password))
- {
- InitialSetupForm frm = new InitialSetupForm();
- frm.Owner = this;
- frm.ShowDialog();
- }
-
- ImportFolderRepository repFolders = new ImportFolderRepository();
- List<ImportFolder> folders = repFolders.GetAll();
- if (folders.Count == 0)
- {
- tabControl1.SelectedIndex = 1;
- }
- }
-
- }
-
- void btnRefreshMSSQLServerList_Click(object sender, RoutedEventArgs e)
- {
- btnSaveDatabaseSettings.IsEnabled = false;
- cboDatabaseType.IsEnabled = false;
- btnRefreshMSSQLServerList.IsEnabled = false;
-
- try
- {
- this.Cursor = Cursors.Wait;
- cboMSSQLServerList.Items.Clear();
- DataTable dt = SmoApplication.EnumAvailableSqlServers();
- foreach (DataRow dr in dt.Rows)
- {
- cboMSSQLServerList.Items.Add(dr[0]);
- }
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.ToString(), ex);
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- }
-
- this.Cursor = Cursors.Arrow;
- btnSaveDatabaseSettings.IsEnabled = true;
- cboDatabaseType.IsEnabled = true;
- btnRefreshMSSQLServerList.IsEnabled = true;
- }
-
- private void ShowDatabaseSetup()
- {
- if (ServerSettings.DatabaseType.Trim().ToUpper() == "SQLITE") cboDatabaseType.SelectedIndex = 0;
- if (ServerSettings.DatabaseType.Trim().ToUpper() == "SQLSERVER") cboDatabaseType.SelectedIndex = 1;
- if (ServerSettings.DatabaseType.Trim().ToUpper() == "MYSQL") cboDatabaseType.SelectedIndex = 2;
- }
-
- void workerSetupDB_DoWork(object sender, DoWorkEventArgs e)
- {
-
- try
- {
- ServerState.Instance.ServerOnline = false;
- ServerState.Instance.CurrentSetupStatus = "Cleaning up...";
-
- StopWatchingFiles();
- AniDBDispose();
- StopHost();
-
- JMMService.CmdProcessorGeneral.Stop();
- JMMService.CmdProcessorHasher.Stop();
- JMMService.CmdProcessorImages.Stop();
-
-
- // wait until the queue count is 0
- // ie the cancel has actuall worked
- while (true)
- {
- if (JMMService.CmdProcessorGeneral.QueueCount == 0 && JMMService.CmdProcessorHasher.QueueCount == 0 && JMMService.CmdProcessorImages.QueueCount == 0) break;
- Thread.Sleep(250);
- }
-
- if (autoUpdateTimer != null) autoUpdateTimer.Enabled = false;
- if (autoUpdateTimerShort != null) autoUpdateTimerShort.Enabled = false;
-
- JMMService.CloseSessionFactory();
-
- ServerState.Instance.CurrentSetupStatus = "Initializing...";
- Thread.Sleep(1000);
-
- ServerState.Instance.CurrentSetupStatus = "Setting up database...";
- if (!DatabaseHelper.InitDB())
- {
- ServerState.Instance.DatabaseAvailable = false;
-
- if (string.IsNullOrEmpty(ServerSettings.DatabaseType))
- ServerState.Instance.CurrentSetupStatus = "Please select and configure your database.";
- else
- ServerState.Instance.CurrentSetupStatus = "Failed to start. Please review database settings.";
- e.Result = false;
- return;
- }
- else
- ServerState.Instance.DatabaseAvailable = true;
-
-
- //init session factory
- ServerState.Instance.CurrentSetupStatus = "Initializing Session Factory...";
- ISessionFactory temp = JMMService.SessionFactory;
-
- ServerState.Instance.CurrentSetupStatus = "Initializing Hosts...";
- SetupAniDBProcessor();
- StartImageHost();
- StartBinaryHost();
- StartMetroHost();
- StartImageHostMetro();
- StartRESTHost();
- StartStreamingHost();
-
- // Load all stats
- ServerState.Instance.CurrentSetupStatus = "Initializing Stats...";
- StatsCache.Instance.InitStats();
-
- ServerState.Instance.CurrentSetupStatus = "Initializing Queue Processors...";
- JMMService.CmdProcessorGeneral.Init();
- JMMService.CmdProcessorHasher.Init();
- JMMService.CmdProcessorImages.Init();
-
- // timer for automatic updates
- autoUpdateTimer = new System.Timers.Timer();
- autoUpdateTimer.AutoReset = true;
- autoUpdateTimer.Interval = 5 * 60 * 1000; // 5 minutes * 60 seconds
- autoUpdateTimer.Elapsed += new System.Timers.ElapsedEventHandler(autoUpdateTimer_Elapsed);
- autoUpdateTimer.Start();
-
- // timer for automatic updates
- autoUpdateTimerShort = new System.Timers.Timer();
- autoUpdateTimerShort.AutoReset = true;
- autoUpdateTimerShort.Interval = 15 * 1000; // 15 seconds
- autoUpdateTimerShort.Elapsed += new System.Timers.ElapsedEventHandler(autoUpdateTimerShort_Elapsed);
- autoUpdateTimerShort.Start();
-
- ServerState.Instance.CurrentSetupStatus = "Initializing File Watchers...";
- StartWatchingFiles();
-
- DownloadAllImages();
-
- ImportFolderRepository repFolders = new ImportFolderRepository();
- List<ImportFolder> folders = repFolders.GetAll();
-
- if (ServerSettings.ScanDropFoldersOnStart) ScanDropFolders();
- if (ServerSettings.RunImportOnStart && folders.Count > 0) RunImport();
-
- ServerState.Instance.ServerOnline = true;
- e.Result = true;
-
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.ToString(), ex);
- ServerState.Instance.CurrentSetupStatus = ex.Message;
- e.Result = false;
- }
- }
-
- #endregion
-
- #region Update all media info
- void btnUpdateMediaInfo_Click(object sender, RoutedEventArgs e)
- {
- RefreshAllMediaInfo();
- MessageBox.Show("Actions have been queued", "Done", MessageBoxButton.OK, MessageBoxImage.Information);
- }
-
- void workerMediaInfo_DoWork(object sender, DoWorkEventArgs e)
- {
- VideoLocalRepository repVidLocals = new VideoLocalRepository();
-
- // first build a list of files that we already know about, as we don't want to process them again
- List<VideoLocal> filesAll = repVidLocals.GetAll();
- Dictionary<string, VideoLocal> dictFilesExisting = new Dictionary<string, VideoLocal>();
- foreach (VideoLocal vl in filesAll)
- {
- CommandRequest_ReadMediaInfo cr = new CommandRequest_ReadMediaInfo(vl.VideoLocalID);
- cr.Save();
- }
- }
-
- public static void RefreshAllMediaInfo()
- {
- if (workerMediaInfo.IsBusy) return;
- workerMediaInfo.RunWorkerAsync();
- }
-
- #endregion
-
- #region MyAnime2 Migration
-
- void workerMyAnime2_ProgressChanged(object sender, ProgressChangedEventArgs e)
- {
- MA2Progress ma2Progress = e.UserState as MA2Progress;
- if (!string.IsNullOrEmpty(ma2Progress.ErrorMessage))
- {
- txtMA2Progress.Text = ma2Progress.ErrorMessage;
- txtMA2Success.Visibility = System.Windows.Visibility.Hidden;
- return;
- }
-
- if (ma2Progress.CurrentFile <= ma2Progress.TotalFiles)
- txtMA2Progress.Text = string.Format("Processing unlinked file {0} of {1}", ma2Progress.CurrentFile, ma2Progress.TotalFiles);
- else
- txtMA2Progress.Text = string.Format("Processed all unlinked files ({0})", ma2Progress.TotalFiles);
- txtMA2Success.Text = string.Format("{0} files sucessfully migrated", ma2Progress.MigratedFiles);
- }
-
- void workerMyAnime2_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
- {
-
- }
-
- void workerMyAnime2_DoWork(object sender, DoWorkEventArgs e)
- {
- MA2Progress ma2Progress = new MA2Progress();
- ma2Progress.CurrentFile = 0;
- ma2Progress.ErrorMessage = "";
- ma2Progress.MigratedFiles = 0;
- ma2Progress.TotalFiles = 0;
-
- try
- {
- string databasePath = e.Argument as string;
-
- string connString = string.Format(@"data source={0};useutf16encoding=True", databasePath);
- SQLiteConnection myConn = new SQLiteConnection(connString);
- myConn.Open();
-
- // get a list of unlinked files
- VideoLocalRepository repVids = new VideoLocalRepository();
- AniDB_EpisodeRepository repAniEps = new AniDB_EpisodeRepository();
- AniDB_AnimeRepository repAniAnime = new AniDB_AnimeRepository();
- AnimeSeriesRepository repSeries = new AnimeSeriesRepository();
- AnimeEpisodeRepository repEps = new AnimeEpisodeRepository();
-
- List<VideoLocal> vids = repVids.GetVideosWithoutEpisode();
- ma2Progress.TotalFiles = vids.Count;
-
- foreach (VideoLocal vid in vids)
- {
- ma2Progress.CurrentFile = ma2Progress.CurrentFile + 1;
- workerMyAnime2.ReportProgress(0, ma2Progress);
-
- // search for this file in the XrossRef table in MA2
- string sql = string.Format("SELECT AniDB_EpisodeID from CrossRef_Episode_FileHash WHERE Hash = '{0}' AND FileSize = {1}", vid.ED2KHash, vid.FileSize);
- SQLiteCommand sqCommand = new SQLiteCommand(sql);
- sqCommand.Connection = myConn;
-
- SQLiteDataReader myReader = sqCommand.ExecuteReader();
- while (myReader.Read())
- {
- int episodeID = 0;
- if (!int.TryParse(myReader.GetValue(0).ToString(), out episodeID)) continue;
- if (episodeID <= 0) continue;
-
- sql = string.Format("SELECT AnimeID from AniDB_Episode WHERE EpisodeID = {0}", episodeID);
- sqCommand = new SQLiteCommand(sql);
- sqCommand.Connection = myConn;
-
- SQLiteDataReader myReader2 = sqCommand.ExecuteReader();
- while (myReader2.Read())
- {
- int animeID = myReader2.GetInt32(0);
-
- // so now we have all the needed details we can link the file to the episode
- // as long as wehave the details in JMM
- AniDB_Anime anime = null;
- AniDB_Episode ep = repAniEps.GetByEpisodeID(episodeID);
- if (ep == null)
- {
- logger.Debug("Getting Anime record from AniDB....");
- anime = JMMService.AnidbProcessor.GetAnimeInfoHTTP(animeID, true, ServerSettings.AutoGroupSeries);
- }
- else
- anime = repAniAnime.GetByAnimeID(animeID);
-
- // create the group/series/episode records if needed
- AnimeSeries ser = null;
- if (anime == null) continue;
-
- logger.Debug("Creating groups, series and episodes....");
- // check if there is an AnimeSeries Record associated with this AnimeID
- ser = repSeries.GetByAnimeID(animeID);
- if (ser == null)
- {
- // create a new AnimeSeries record
- ser = anime.CreateAnimeSeriesAndGroup();
- }
-
-
- ser.CreateAnimeEpisodes();
-
- // check if we have any group status data for this associated anime
- // if not we will download it now
- AniDB_GroupStatusRepository repStatus = new AniDB_GroupStatusRepository();
- if (repStatus.GetByAnimeID(anime.AnimeID).Count == 0)
- {
- CommandRequest_GetReleaseGroupStatus cmdStatus = new CommandRequest_GetReleaseGroupStatus(anime.AnimeID, false);
- cmdStatus.Save();
- }
-
- // update stats
- ser.EpisodeAddedDate = DateTime.Now;
- repSeries.Save(ser);
-
- AnimeGroupRepository repGroups = new AnimeGroupRepository();
- foreach (AnimeGroup grp in ser.AllGroupsAbove)
- {
- grp.EpisodeAddedDate = DateTime.Now;
- repGroups.Save(grp);
- }
-
-
- AnimeEpisode epAnime = repEps.GetByAniDBEpisodeID(episodeID);
- if (epAnime == null)
- continue;
-
- CrossRef_File_EpisodeRepository repXRefs = new CrossRef_File_EpisodeRepository();
- CrossRef_File_Episode xref = new CrossRef_File_Episode();
-
- try
- {
- xref.PopulateManually(vid, epAnime);
- }
- catch (Exception ex)
- {
- string msg = string.Format("Error populating XREF: {0} - {1}", vid.ToStringDetailed(), ex.ToString());
- throw;
- }
-
- repXRefs.Save(xref);
-
- vid.RenameIfRequired();
- vid.MoveFileIfRequired();
-
- // update stats for groups and series
- if (ser != null)
- {
- // update all the groups above this series in the heirarchy
- ser.UpdateStats(true, true, true);
- StatsCache.Instance.UpdateUsingSeries(ser.AnimeSeriesID);
- }
-
-
- // Add this file to the users list
- if (ServerSettings.AniDB_MyList_AddFiles)
- {
- CommandRequest_AddFileToMyList cmd = new CommandRequest_AddFileToMyList(vid.ED2KHash);
- cmd.Save();
- }
-
- ma2Progress.MigratedFiles = ma2Progress.MigratedFiles + 1;
- workerMyAnime2.ReportProgress(0, ma2Progress);
-
- }
- myReader2.Close();
-
-
- //Console.WriteLine(myReader.GetString(0));
- }
- myReader.Close();
- }
-
-
- myConn.Close();
-
- ma2Progress.CurrentFile = ma2Progress.CurrentFile + 1;
- workerMyAnime2.ReportProgress(0, ma2Progress);
-
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.ToString(), ex);
- ma2Progress.ErrorMessage = ex.Message;
- workerMyAnime2.ReportProgress(0, ma2Progress);
- }
- }
-
- void btnImportManualLinks_Click(object sender, RoutedEventArgs e)
- {
- if (workerMyAnime2.IsBusy)
- {
- MessageBox.Show("Importer is already running", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- return;
- }
-
- txtMA2Progress.Visibility = System.Windows.Visibility.Visible;
- txtMA2Success.Visibility = System.Windows.Visibility.Visible;
-
- Microsoft.Win32.OpenFileDialog ofd = new Microsoft.Win32.OpenFileDialog();
- ofd.Filter = "Sqlite Files (*.DB3)|*.db3";
- ofd.ShowDialog();
- if (!string.IsNullOrEmpty(ofd.FileName))
- {
- workerMyAnime2.RunWorkerAsync(ofd.FileName);
- }
- }
-
- private void ImportLinksFromMA2(string databasePath)
- {
-
- }
-
- #endregion
-
- void btnApplyServerPort_Click(object sender, RoutedEventArgs e)
- {
- if (string.IsNullOrEmpty(txtServerPort.Text))
- {
- MessageBox.Show("Please enter a value", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- txtServerPort.Focus();
- return;
- }
-
- int port = 0;
- int.TryParse(txtServerPort.Text, out port);
- if (port <= 0 || port > 65535)
- {
- MessageBox.Show("Please enter a value between 1 and 65535", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- txtServerPort.Focus();
- return;
- }
-
- try
- {
- ServerSettings.JMMServerPort = port.ToString();
-
- this.Cursor = Cursors.Wait;
-
- JMMService.CmdProcessorGeneral.Paused = true;
- JMMService.CmdProcessorHasher.Paused = true;
- JMMService.CmdProcessorImages.Paused = true;
-
- StopHost();
- StartBinaryHost();
- StartImageHost();
- StartImageHostMetro();
- StartStreamingHost();
- StartRESTHost();
-
- JMMService.CmdProcessorGeneral.Paused = false;
- JMMService.CmdProcessorHasher.Paused = false;
- JMMService.CmdProcessorImages.Paused = false;
-
- this.Cursor = Cursors.Arrow;
- }
- catch (Exception ex)
- {
- logger.ErrorException(ex.ToString(), ex);
- MessageBox.Show(ex.Message, "Error", MessageBoxButton.OK, MessageBoxImage.Error);
- }
- }
-
- void btnToolbarHelp_Click(object sender, RoutedEventArgs e)
- {
- //AnimeSeriesRepository repSeries = new AnimeSeriesRepository();
- //AnimeSeries ser = repSeries.GetByID(222);
- //ser.UpdateStats(true, true, true);
-
- //TraktTVHelper.GetFriendsRequests();
-
- //FileHashHelper.GetMediaInfo(@"C:\[Hiryuu] Maken-Ki! 09 [Hi10P 1280x720 H264] [EE47C947].mkv", true);
-
- //CommandRequest_ReadMediaInfo cr1 = new CommandRequest_ReadMediaInfo(2038);
- //cr1.Save();
-
- //CommandRequest_ReadMediaInfo cr2 = new CommandRequest_ReadMediaInfo(2037);
- //cr2.Save();
-
- /*AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository();
- foreach (AniDB_Anime anime in repAnime.GetAll())
- {
- List<TraktTV_ShoutGet> shouts = TraktTVHelper.GetShowShouts(anime.AnimeID);
- if (shouts == null || shouts.Count == 0)
- {
- //logger.Info("{0} ({1}) = 0 Shouts", anime.MainTitle, anime.AnimeID);
- }
- else
- {
- if (shouts.Count <= 5)
- logger.Info("{0} ({1}) = {2} MINOR Shouts", anime.MainTitle, anime.AnimeID, shouts.Count);
- else
- logger.Info("{0} ({1}) = {2} *** MAJOR *** Shouts", anime.MainTitle, anime.AnimeID, shouts.Count);
- }
- }*/
-
- //anime temp = MALHelper.SearchAnimesByTitle("Naruto");
- //MALHelper.VerifyCredentials();
-
- //JMMService.DebugFlag = !JMMService.DebugFlag;
-
- //AnimeEpisodeRepository repEp = new AnimeEpisodeRepository();
- //AnimeEpisode ep = repEp.GetByID(2430);
- //MALHelper.UpdateMAL(ep);
-
- //CommandRequest_MALUpdatedWatchedStatus cmdMAL = new CommandRequest_MALUpdatedWatchedStatus(8107);
- //cmdMAL.ProcessCommand();
-
- //CommandRequest_MALDownloadStatusFromMAL cmd = new CommandRequest_MALDownloadStatusFromMAL();
- //cmd.Save();
-
- //AppVersionsResult appv = XMLService.GetAppVersions();
-
- //JMMServiceImplementation imp = new JMMServiceImplementation();
- //imp.GetMissingEpisodes(1, true, true);
-
- //VideoLocalRepository repVidLocal = new VideoLocalRepository();
- /*VideoLocal vlocal = new VideoLocal();
- vlocal.DateTimeUpdated = DateTime.Now;
- vlocal.DateTimeCreated = vlocal.DateTimeUpdated;
- vlocal.FilePath = "";
- vlocal.FileSize = 656181746;
- vlocal.ImportFolderID = 1;
- vlocal.Hash = "453063B2993D4AC4BA51F4A64170260A";
- vlocal.CRC32 = "";
- vlocal.MD5 = "";
- vlocal.SHA1 = "";
- vlocal.IsIgnored = 0;
- vlocal.HashSource = (int)HashSource.DirectHash;
- repVidLocal.Save(vlocal);*/
-
- //JMMService.AnidbProcessor.UpdateMyListStats();
-
- //UpdateVersion();
-
- /*VideoLocalRepository repVidLocal = new VideoLocalRepository();
- VideoLocal vid = repVidLocal.GetByID(194); RenameFileHelper.Test(vid);
-
- vid = repVidLocal.GetByID(295); RenameFileHelper.Test(vid);
- vid = repVidLocal.GetByID(396); RenameFileHelper.Test(vid);
- vid = repVidLocal.GetByID(497); RenameFileHelper.Test(vid);
- vid = repVidLocal.GetByID(598); RenameFileHelper.Test(vid);
-
- return;
-
-
-
- JMMService.AnidbProcessor.GetFileInfo(vid);
-
- return;*/
-
- //Importer.UpdateAniDBFileData(true, true);
-
- //JMMServiceImplementationMetro imp = new JMMServiceImplementationMetro();
- //imp.GetAnimeDetail(4880);
-
- /*CrossRef_AniDB_MALRepository rep = new CrossRef_AniDB_MALRepository();
- foreach (JMMServer.Entities.CrossRef_AniDB_MAL xref in rep.GetAll())
- {
- //AzureWebAPI.Send_CrossRef_AniDB_MAL(xref);
- break;
- }
-
- AniDB_Anime anime2 = JMMService.AnidbProcessor.GetAnimeInfoHTTP(9127, true, false);
-
- AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository();
- List<AniDB_Anime> allAnime = repAnime.GetAll();
- int cnt = 0;
- foreach (AniDB_Anime anime in allAnime)
- {
- cnt++;
- logger.Info(string.Format("Uploading anime {0} of {1} - {2}", cnt, allAnime.Count, anime.MainTitle));
-
- try
- {
- //CommandRequest_Azure_SendAnimeFull cmdAzure = new CommandRequest_Azure_SendAnimeFull(anime.AnimeID);
- //cmdAzure.Save();
- }
- catch { }
- }
- */
-
-
-
-
-
-
- /*try
- {
- using (var session = JMMService.SessionFactory.OpenSession())
- {
- AniDB_Anime anime = JMMService.AnidbProcessor.GetAnimeInfoHTTPFromCache(session, 5842, false);
- }
- }
- catch (Exception ex)
- {
- Utils.ShowErrorMessage(ex);
- }*/
-
- //CommandRequest_GetAnimeHTTP cmd = new CommandRequest_GetAnimeHTTP(3482, false, false);
- //cmd.Save();
-
- //string xml = AzureWebAPI.Get_AnimeXML(3483);
- //XmlDocument docAnime = new XmlDocument();
- //docAnime.LoadXml(xml);
-
- //JMMService.AnidbProcessor.IsBanned = true;
- //JMMService.AnidbProcessor.BanOrigin = "HTTP";
- //JMMService.AnidbProcessor.BanTime = DateTime.Now;
-
- //GenerateAzureList();
- //SendToAzure();
- //SendToAzureXML();
-
- //CommandRequest_GetAniDBTitles cmd = new CommandRequest_GetAniDBTitles();
- //cmd.Save();
-
-
-
- AboutForm frm = new AboutForm();
- frm.Owner = this;
- frm.ShowDialog();
- }
-
- private void GenerateAzureList()
- {
-
- // get a lst of anime's that we already have
- AniDB_AnimeRepository repAnime = new AniDB_AnimeRepository();
- List<AniDB_Anime> allAnime = repAnime.GetAll();
- Dictionary<int, int> localAnimeIDs = new Dictionary<int, int>();
- foreach (AniDB_Anime anime in allAnime)
- {
- localAnimeIDs[anime.AnimeID] = anime.AnimeID;
- }
-
- // loop through the list of valid anime id's and add the ones we don't have yet
- Dictionary<int, int> validAnimeIDs = new Dictionary<int, int>();
-
- string line;
- System.IO.StreamReader file =
- new System.IO.StreamReader(@"e:\animetitles.txt");
- while ((line = file.ReadLine()) != null)
- {
- string[] titlesArray = line.Split('|');
-
- try
- {
- int aid = int.Parse(titlesArray[0]);
- if (!localAnimeIDs.ContainsKey(aid))
- validAnimeIDs[aid] = aid;
- }
- catch { }
- }
-
- file.Close();
-
- string aids = "";
- var shuffledList = validAnimeIDs.Values.OrderBy(a => Guid.NewGuid());
- int i = 0;
- foreach (int animeID in shuffledList)
- {
- i++;
- if (!string.IsNullOrEmpty(aids)) aids += ",";
- aids += animeID;
-
- if (i == 250)
- {
- logger.Info(aids);
- aids = "";
- i = 0;
- }
- }
-
- logger.Info(aids);
- }
-
- private void SendToAzureXML()
- {
-
- DateTime dt = DateTime.Now.AddYears(-2);
- AniDB_AnimeRepository rep = new AniDB_AnimeRepository();
- List<AniDB_Anime> allAnime = rep.GetAll();
-
- int sentAnime = 0;
- foreach (AniDB_Anime anime in rep.GetAll())
- {
- if (!anime.EndDate.HasValue) continue;
-
- if (anime.EndDate.Value > dt) continue;
-
- sentAnime++;
- CommandRequest_Azure_SendAnimeXML cmd = new CommandRequest_Azure_SendAnimeXML(anime.AnimeID);
- cmd.Save();
- }
-
- logger.Info(string.Format("Sent Anime XML to Cache: {0} out of {1}", sentAnime, allAnime.Count));
- }
-
- private void SendToAzure()
- {
- Dictionary<int, int> validAnimeIDs = new Dictionary<int, int>();
-
- string line;
-
- // Read the file and display it line by line.
- System.IO.StreamReader file =
- new System.IO.StreamReader(@"e:\animetitles.txt");
- while ((line = file.ReadLine()) != null)
- {
- string[] titlesArray = line.Split('|');
-
- try
- {
- int aid = int.Parse(titlesArray[0]);
- validAnimeIDs[aid] = aid;
- }
- catch { }
- }
-
- file.Close();
-
- string aids = "6287,6970,6577,7800,8982,9537,7339,9454,9263,6492,6664,6474,8956,6779,9351,8772,7929,6029,4991,5197,9205,8983,8464,8329,8273,7844,8915,7148,8449,7906,6384,7294,6867,8377,7753,6391,7712,8040,6126,7214,2495,8242,9285,7799,7087,9433,7748,6851,9546,6762,9553,9585,6740,6684,9461,6320,7042,6213,6435,8493,7842,6296,6769,9061,8735,7777,8209,8175,6283,6020,8723,6941,6282,6831,7105,9620,8222,8988,8757,9391,7759,8178,6021,7837,7739,6569,8393,7448,7732,6063,7532,8344,9170,6249,6348,7615,7580,7310,7632,9572,9357,7501,7036,8047,6147,6781,6724,7200,7133,8284,7519,8068,7059,7785,6640,6285,8119,6078,6723,8578,5522,8201,6657,7071,6554,7110,7145,8049,6725,9582,9600,7227,9250,7840,7813,7363,8495,9302,9430,7529,7150,7401,7781,6993,9525,8226,6580,7866,7081,6859,9159,9338,6054,6383,7152,6598,7518,8359,8141,9467,7019,6212,6960,6926,7980,9065,7587,6306,7165,6095,8146,9264,6127,9063,8664,8605,6682,7358,6693,7673,429,6536,6901,8682,6470,8544,6748,6561,6491,6974,7767,9613,6444,6592,6806,7259,7746,6075,7561,6623,7720,7192,6072,6595,8599,9243,8251,8145,8733,4124,7849,6172,7976,8755,9535,8582,591,6801,7575,6848,6981,9507,7620,7783,8685,8436,6568,6397,8290,8764,7261,8332,9570,6647,6538,6856,9436,7547,6570,7688,6311,7763,7221,9372,8718,6881,9363,9175,7309,6677";
- string[] aidArray = aids.Split(',');
-
- logger.Info(string.Format("Queueing {0} anime updates", aidArray.Length));
- int cnt = 0;
- foreach (string animeid in aidArray)
- {
- if (validAnimeIDs.ContainsKey(int.Parse(animeid)))
- {
- CommandRequest_GetAnimeHTTP cmd = new CommandRequest_GetAnimeHTTP(int.Parse(animeid), true, false);
- cmd.Save();
- cnt++;
- }
- }
- logger.Info(string.Format("Queued {0} anime updates", cnt));
- }
-
- private void DownloadAllImages()
- {
- if (!downloadImagesWorker.IsBusy)
- downloadImagesWorker.RunWorkerAsync();
- }
-
- void downloadImagesWorker_DoWork(object sender, DoWorkEventArgs e)
- {
- Importer.RunImport_GetImages();
- }
-
- void MainWindow_Loaded(object sender, RoutedEventArgs e)
- {
- //ServerInfo.Instance.RefreshImportFolders();
-
- if (ServerSettings.MinimizeOnStartup) MinimizeToTray();
-
- tabControl1…
Large files files are truncated, but you can click here to view the full file