diff --git a/Discord Media Loader.Application/Classes/Job.cs b/Discord Media Loader.Application/Classes/Job.cs index 4c83cae..78ed1c8 100644 --- a/Discord Media Loader.Application/Classes/Job.cs +++ b/Discord Media Loader.Application/Classes/Job.cs @@ -17,6 +17,7 @@ namespace DML.Application.Classes public ulong ChannelId { get; set; } public double KnownTimestamp { get; set; } = 0; private double StopTimestamp { get; set; } = 0; + private bool IsValid { get; set; } = true; internal void Store() { @@ -95,6 +96,9 @@ namespace DML.Application.Classes foreach (var m in messages) { + if (!IsValid) + return null; + Debug($"Processing message {m.Id}"); if (m.Id < lastId) { @@ -128,14 +132,22 @@ namespace DML.Application.Classes Trace("Sorting messages..."); result.Sort((a, b) => DateTime.Compare(a.Timestamp, b.Timestamp)); - Trace("Updating StopTimestamp for next scan..."); - StopTimestamp = SweetUtils.DateTimeToUnixTimeStamp(result[result.Count - 1].Timestamp); + if (result.Count > 0) + { + Trace("Updating StopTimestamp for next scan..."); + StopTimestamp = SweetUtils.DateTimeToUnixTimeStamp(result[result.Count - 1].Timestamp); + } Debug($"Fisnished scan of guild {GuildId} channel {ChannelId}."); return result; } + internal void Stop() + { + IsValid = false; + } + internal static IEnumerable RestoreJobs() { Debug("Restoring jobs..."); diff --git a/Discord Media Loader.Application/Classes/JobScheduler.cs b/Discord Media Loader.Application/Classes/JobScheduler.cs index 6c29072..d27f047 100644 --- a/Discord Media Loader.Application/Classes/JobScheduler.cs +++ b/Discord Media Loader.Application/Classes/JobScheduler.cs @@ -95,8 +95,10 @@ namespace DML.Application.Classes while (Run) { Debug("Entering job list handler loop..."); - foreach (var job in JobList) + //foreach (var job in JobList) + for(var i = JobList.Count-1;i>=0;i--) { + var job = JobList[i]; Debug($"Checking job {job}"); var hasJob = false; @@ -124,6 +126,9 @@ namespace DML.Application.Classes Trace("Issuing job message scan..."); var messages = await job.Scan(); + if(messages==null) + continue; + Trace($"Adding {messages.Count} messages to queue..."); foreach (var msg in messages) { @@ -216,12 +221,21 @@ namespace DML.Application.Classes var fileName = Path.Combine(Core.Settings.OperatingFolder, Core.Settings.FileNameScheme); Trace("Replacing filename placeholders..."); + + var extensionRequired = !fileName.EndsWith("%name%"); + fileName = fileName.Replace("%guild%", message.Server.Name) .Replace("%channel%", message.Channel.Name) .Replace("%timestamp%", SweetUtils.DateTimeToUnixTimeStamp(message.Timestamp).ToString()) - .Replace("%name%", a.Filename); + .Replace("%name%", a.Filename) + .Replace("%id%", a.Id); + + if (extensionRequired) + fileName += Path.GetExtension(a.Filename); + Trace($"Detemined file name: {fileName}."); + if (File.Exists(fileName) && new FileInfo(fileName).Length == a.Size) { diff --git a/Discord Media Loader.Application/Classes/Settings.cs b/Discord Media Loader.Application/Classes/Settings.cs index 3aabe45..9984ca8 100644 --- a/Discord Media Loader.Application/Classes/Settings.cs +++ b/Discord Media Loader.Application/Classes/Settings.cs @@ -19,7 +19,7 @@ namespace DML.Application.Classes public bool SavePassword { get; set; } = false; public LogLevel ApplicactionLogLevel { get; set; } = LogLevel.Info | LogLevel.Warn | LogLevel.Error; public string OperatingFolder { get; set; } - public string FileNameScheme { get; set; } = @"%guild%\%channel%\%guild%_%channel%_%timestamp%_%name%"; + public string FileNameScheme { get; set; } = @"%guild%\%channel%\%id%"; public bool SkipExistingFiles { get; set; } = true; public int ThreadLimit { get; set; } = 50; diff --git a/Discord Media Loader.Application/Core.cs b/Discord Media Loader.Application/Core.cs index 72d587d..02e743a 100644 --- a/Discord Media Loader.Application/Core.cs +++ b/Discord Media Loader.Application/Core.cs @@ -32,6 +32,10 @@ namespace DML.Application { try { + var splash = new FrmInternalSplash(); + splash.Show(); + System.Windows.Forms.Application.DoEvents(); + Info("Starting up Discord Media Loader application..."); var useTrace = false; #if DEBUG @@ -188,6 +192,8 @@ namespace DML.Application } } + splash.Close(); + Info("Starting scheduler..."); Scheduler.Start(); diff --git a/Discord Media Loader.Application/DML.Application.csproj b/Discord Media Loader.Application/DML.Application.csproj index 1391ee5..84faa2b 100644 --- a/Discord Media Loader.Application/DML.Application.csproj +++ b/Discord Media Loader.Application/DML.Application.csproj @@ -84,6 +84,12 @@ LoginDialog.cs + + Form + + + FrmInternalSplash.cs + Form @@ -91,14 +97,26 @@ MainForm.cs + + True + True + Resources.resx + LoginDialog.cs + + FrmInternalSplash.cs + MainForm.cs + + ResXFileCodeGenerator + Resources.Designer.cs + @@ -109,6 +127,9 @@ SweetLib + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + AAABAAEAQEAAAAEAIAAoQgAAFgAAACgAAABAAAAAgAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8b////VP///3////+m////zP// + /+T////1//////////r////u////3f///8z///+m////f////1T///8b////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////M////5D////b//////// + //////////////////////////////////////////////////////////////////////////////// + /9v///+Q////M////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///w3///90////1v// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////W////dP///w3///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A2K4AANiuAADYrgAA2K4AANiuAADfswAA////EP// + /4D////t////////////////////////////////////////////////9/zq/7XiQ/+340n/w+ho/9Pu + kf/m9b//+Pzt///////////////////////////////////////////////////////////t////gf// + /xCa2AAAmtgAAJrYAACa2AAAmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////ANiuAADYrgAA2K4AANiu + AAD///8B////Yf///+v//////////////////////////////////////////////////////////+z4 + z/+a2AD/mtgA/5rYAP+a2AD/mtgA/6TcGf+65VL/3fKo//n98P////////////////////////////// + ///////////////////////r////Yf///wGa2AAAmtgAAJrYAACa2AAA////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wDYrgAA2K4AANiuAAD///8k////xP////////////////////////////////////////////////// + ///////////////////h87P/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+n3SD/zOt+//X7 + 5v/////////////////////////////////////////////////////E////I5rYAACa2AAAmtgAAP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A2K4AANiuAAD///9V////8f////////////////////////////////// + ////////////////////////////////////////0+6Q/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+k3Bn/0e2K//v+9v////////////////////////////////////////////// + //H///9VmtgAAJrYAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wH///+M//////////////////////// + /////////////////////////////////////////////////////////////8bpbv+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+u4DP/5/bD//////////////////// + /////////////////////////////////4z///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wb///+l//////// + //////////////////////////////////////////////////////////////////////////////// + //+55E//mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5zZ + Bv/P7Ib/////////////////////////////////////////////////////pf///wb///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3//////////////////////////////////////////////////////////////////////// + ///////////////////+//3/rd8x/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/7zlV//5/fH///////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wH///+k//////////////////////////////////////////////////////// + ////////////////////////////////////////+f3v/6PcF/+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/seE7//X75v////////////// + /////////////////////////////////6T///8B////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///+K//////////////////////////////////////// + /////////////////////////////////////////////////////////////+751f+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+s3y7/9Pvi////////////////////////////////////////////////i////wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///9V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///s+M//rd8w/6XcHf+c2Qb/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/6zfLv/1++f///////////////////////////////////////// + //////9V////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8j////8P// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////v/6/fL/8PnZ/97yrP/E6Gv/qd4l/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/suE8//v99P////////////// + ////////////////////////////8P///yP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8B////xP////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////v9 + 9f/e8qz/s+JA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP/A51/////////////////////////////////////////////////E////Af///wD///8A////AP// + /wD///8A////AP///wD///8A////Yf////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////f867/rN8t/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/9jwnP////////////////////////////////////////////// + /2H///8A////AP///wD///8A////AP///wD///8A////EP///+r///////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////r98//I6nX/mtgA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+h2xL/8/rh//////////////////// + ///////////////////////q////Ev///wD///8A////AP///wD///8A////AP///3////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////9/yrf+h2xL/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8Dn + X////////////////////////////////////////////////4D///8A////AP///wD///8A////AP// + /w3////u//////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////7PjQ/6reKP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+c2QX/7vjT///////////////////////////////////////////u////Df// + /wD///8A////AP///wD///90//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////0++L/qd4n/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/8PoaP////////////////////////////// + /////////////////3T///8A////AP///wD///8B////2/////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////+360P+k4g3/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP+j2xb/+Pzu//// + ///////////////////////////////////////b////Af///wD///8A////O/////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////wNCY/53dAP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+a2AD/mtgA/9/zr////////////////////////////////////////////////zv///8A////AP// + /5D///////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////f39/+Puin/n+AA/5rY + AP+a2AD/mtgA/5rYAP+a2AD/mtgA/5rYAP/F6W3///////////////////////////////////////// + //////+Q////AP///wD////Y//////////////////////////////////////////////////////// + /////////////////////////////+3t7f+3t7f/jIyM/3Nzc/9oaGj/a2tr/35+fv+dnZ3/xsbG//Hx + 8f////////////////////////////////////////////////////////////////////////////// + ////////iZNy/5zbAP+b2QD/mtgA/5rYAP+a2AD/mtgA/5rYAP+a2AD/s+JA//////////////////// + ////////////////////////////2f///wD///8d//////////////////////////////////////// + ////////////////////////////////////////9fTx/46Pk/9BQUH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv9ERET/fn5+/8rKyv////////////////////////////////////////////// + /////////////////////////////4iHjP98qA3/n+AA/5rYAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6ne + J/////////////////////////////////////////////////////8e////Vv////////////////// + ////////////////////////////////////////////////////////+fDL/45/Qv8kJjH/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Xl5e/7e3t//+/v7///////// + //////////////////////////////////////////////////9vbXX/T2Ig/57fAP+a2QD/mtgA/5rY + AP+a2AD/mtgA/5rYAP+l3Bz/////////////////////////////////////////////////////Vv// + /4T/////////////////////////////////////////////////////////////////////8+ax/+O5 + D/92ZBv/JCYx/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/YGBg/8jIyP/////////////////////////////////////////////////09PT/QkJE/zEz + Lf+Mwgb/nd0A/5rYAP+a2AD/mtgA/5rYAP+a2AD/pdwb//////////////////////////////////// + /////////////////4T///+t//////////////////////////////////////////////////////// + ////////8+ez/9mwB//htQD/dWMb/yQnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/dHR0/97e3v////////////////////////////// + ////////r6+v/y4uLv8nIzH/bZET/6HiAP+a2AD/mtgA/5rYAP+a2AD/mtgA/6neJv////////////// + //////////////////////////////////////+t////zP////////////////////////////////// + ////////////////////////+PHS/9qyDv/YrgD/4rUA/3lmGf8kJjH/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Ozs7/1ZWVv90dHT/jo6O/5mZmf/Hx8f//v7+//// + ////////////////////////7+/v/0dHR/8uLi7/KCUw/1BkH/+f4AD/mtgA/5rYAP+a2AD/mtgA/5rY + AP+z4T7/////////////////////////////////////////////////////zP///+X///////////// + /////////////////////////////////////////v35/+C/N//YrgD/2K4A/+O2AP+Dbhf/IyYx/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/1VVVf+QkJD/xsbG/+rq6v////////////// + ////////////////////////////////////////+vr6/2tra/8uLi7/Li4u/yspL/86Qij/ltEC/5va + AP+a2AD/mtgA/5rYAP+a2AD/x+ly//////////////////////////////////////////////////// + /+D////y//////////////////////////////////////////////////////Dfm//YrgD/2K4A/9iu + AP/itQD/k3oT/yUnMf8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/cHBw/8bGxv/8/Pz///////// + ////////////////////////////////////////////////////////7+/v/3BwcP8uLi7/Li4u/y4u + Lv8tLC7/Ly8u/4e7CP+e3gD/mtgA/5rYAP+a2AD/mtgA/+X1vf////////////////////////////// + ///////////////////////s//////////////////////////////////////////////////////79 + +f/euyr/2K4A/9iuAP/YrgD/4LQA/6iKDf8oKTD/Li4u/y4uLv8uLi7/Li4u/y4uLv9QUFD/xMTE//// + ////////////////////////////////////////////////////////////////////////w8PD/1BQ + UP8uLi7/Li4u/y4uLv8uLi7/Li4u/yknMP95pA7/n+EA/5rYAP+a2AD/mtgA/6neJ//8/vj///////// + ////////////////////////////////////////////+f////////////////////////////////// + ///////////////////168D/2K4A/9iuAP/YrgD/2K4A/92yAP+/mwf/MTAt/ywtLv8uLi7/Li4u/y4u + Lv9wcHD/8PDw//////////////////////////////////////////////////////////////////r6 + +v/ExMT/bm5u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/a44U/6HiAP+a2AD/mtgA/5rY + AP/W75j///////////////////////////////////////////////////////////n////y//////// + ////////////////////////////////////////6tR3/9iuAP/YrgD/2K4A/9iuAP/arwD/06oB/0VA + J/8pKi//Li4u/y4uLv9ra2v/+vr6//////////////////////////////////////////////////39 + /f/n5+f/wsLC/4yMjP9SUlL/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/JyMx/2F+ + GP+h4wD/mtgA/5rYAP+v4DX//P74//////////////////////////////////////////////////// + ///////s////5f///////////////////////////////////////////////+LDQv/YrgD/2K4A/9iu + AP/YrgD/2K4A/+C0AP9oWh7/JCcx/y4uLv9GRkb/7u7u/////////////////////////////v7+/8fH + x/+VlZX/iYmJ/3BwcP9TU1P/OTk5/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/ygkMf9bdRv/oOEA/5rYAP+g2g7/7fjR//////////////////////////////////// + ////////////////////////////4P///8z///////////////////////////////////////////// + ///euyj/2K4A/9iuAP/YrgD/2K4A/9iuAP/itQD/ln0S/yQnMf8uLi7/ra2t//////////////////// + ///////////////////i4uL/e3t7/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8oJDH/WXEc/6DhAP+d2Qf/4fOy//////////////////// + /////////////////////////////////////////////////8z///+t//////////////////////// + ////////////////////////3Lcc/9iuAP/YrgD/2K4A/9iuAP/YrgD/3LEA/8agBf82NCz/Pj9C//T0 + 9P/////////////////////////////////////////////////Ozs7/ZmZm/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/KCQx/1pzHP+m4w//4POx//// + //////////////////////////////////////////////////////////////////////+t////hP// + /////////////////////////////////////////////9y3Hf/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/gtAD/Z1ke/2lrcv////////////////////////////////////////////////////////////// + //++vr7/ZGRk/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/y4uLv8uLi7/Li4u/ygk + Mf93i0X/7PnL//////////////////////////////////////////////////////////////////// + ////////////hP///1T////////////////////////////////////////////////euyr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/4LQA/66OC/+Dg4b///////////////////////////////////////// + ///////////////////////////////////Pz8//hISE/0hISP8uLi7/Li4u/y4uLv8uLi7/Li4u/y4u + Lv8uLi7/Li4u/0JCQv+RkJX/9PXy//////////////////////////////////////////////////// + /////////////////////////////////1b///8c//////////////////////////////////////// + ////////48RG/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9mvAP/dsgD/kopq//////////////////// + ///////////////////////////////////////////////////////////////////09PT/y8vL/6Ki + ov+Dg4P/cXFx/21tbf94eHj/kJCQ/7q6uv/v7+////////////////////////////////////////// + //////////////////////////////////////////////////////8d////AP///9f///////////// + /////////////////////////////+rTdP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4LQA/72f + Iv/09PT///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////////////////////////////////////////////////////////////////////Y////AP// + /wD///+P///////////////////////////////////////////06Lb/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/esgD/zsKO//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////kP///wD///8A////Ov///////////////////////////////////////////fvx/9y2 + Gv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+G3Cf/578j///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////zr///8A////AP///wH////a//////////////////////// + ///////////////////p0nD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/3bgh//r0 + 3P////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////9v///8B////AP///wD///8A////dP// + ////////////////////////////////////////+fPZ/9mxCP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/duCH/9+7I//////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////90////AP// + /wD///8A////AP///wz////t///////////////////////////////////////////oz2n/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9qyDf/x4qT///////////////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////Df///wD///8A////AP///wD///8A////f/////////////////////////////////// + ////////+/fm/9u1Fv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+nQ + bP/8+u7///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////f////wD///8A////AP///wD///8A////AP///xD////q//////// + ///////////////////////////////////x4qX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/3ron//Hipf///v3///////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ////////////////////////////////////////////6v///xD///8A////AP///wD///8A////AP// + /wD///8A////YP///////////////////////////////////////////////+jPaf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/4cA5//HipP/9+/H///////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////////////////////////////////////////////////////2H///8A////AP// + /wD///8A////AP///wD///8A////AP///wH////D//////////////////////////////////////// + ///+/fj/4sRE/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/3bgf/+fNY//x4qX/+PHT//367//+/vv////+//////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /8P///8B////AP///wD///8A////AP///wD///8A////AP///wD///8A////Iv////D///////////// + //////////////////////////////z57f/gvzX/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9ivA//cthj/37wr//fuyv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////////////////D///8i////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///9U////////////////////////////////////////////////+/jo/+C/Nf/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/48NH///////////////////////////////////////////////////////////////////////// + //////////////////////////////////////9V////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///4j///////////////////////////////////////////// + ///8+ev/4sND/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/btBP//Pns//////////////////////////////////////////////////// + //////////////////////////////////////////////////////+J////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////pP////////////////// + //////////////////////////////789v/nzGD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/37wt///+/P////////////////////////////// + //////////////////////////////////////////////////////////////////////+k////Af// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wb///+3/////////////////////////////////////////////////////+7bj//asQr/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/+PGSv////////////// + //////////////////////////////////////////////////////////////////////////////// + //////+3////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////Bv///6X///////////////////////////////////////////// + ////////9+7K/+HBO//YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/oz2n///////////////////////////////////////////////////////////////////////// + //////////////////////+l////Bv///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8B////jP////////////////// + ///////////////////////////////////+/fr/7t2T/924Hv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iu + AP/YrgD/2K4A/9iuAP/YrgD/7dqL//////////////////////////////////////////////////// + //////////////////////////////////////+M////Af///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A2K4AANiu + AAD///9V////8f/////////////////////////////////////////////////////8+ev/7dmH/966 + Jv/YrgD/2K4A/9iuAP/YrgD/2K4A/9iuAP/YrgD/2K4A//Plrv////////////////////////////// + //////////////////////////////////////////////////H///9VmtgAAJrYAAD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////ANiuAADYrgAA2K4AAP///yT////E//////////////////////////////////////// + ///////////////////9/PT/8+av/+bLWv/duB7/2K4A/9iuAP/YrgD/2K4A/9iuAP/37sv///////// + /////////////////////////////////////////////////////////////////8T///8jmtgAAJrY + AACa2AAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wDYrgAA2K4AANiuAADYrgAA////Af///2D////r//////// + /////////////////////////////////////////////////////////fvx//btxv/v3pf/6dJw/+TH + T//jxEX/+/jo////////////////////////////////////////////////////////////////6/// + /2D///8BmtgAAJrYAACa2AAAmtgAAP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////EP///3/////t//////////////////////////////////////////////////////// + //////////////////////////////////////////////////////////////////////////////// + ///////t////f////xD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////Df///3T////V//////////////////////// + //////////////////////////////////////////////////////////////////////////////// + /////////////////9X///90////Df///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /zP///+N////1/////////////////////////////////////////////////////////////////// + ///////////////////////X////jf///zP///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8b////VP///33///+l////y////+P////y//////// + ///////y////4////8v///+l////ff///1T///8b////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP// + /wD///8A////4Af///////wAAD//////8AAAD/////+AAAAB/////wAAAAD////8AAAAAD////gAAAAA + H///4AAAAAAH///AAAAAAAP//4AAAAAAAf//AAAAAAAA//4AAAAAAAB//gAAAAAAAH/8AAAAAAAAP/gA + AAAAAAAf+AAAAAAAAB/wAAAAAAAAD/AAAAAAAAAH4AAAAAAAAAfgAAAAAAAAB8AAAAAAAAADwAAAAAAA + AAOAAAAAAAAAAYAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAIAAAAAAAAABgAAAAAAAAAGAAAAAAAAAAYAAAAAAAAABwAAAAAAAAAPAAAAAAAAAA+AA + AAAAAAAH4AAAAAAAAAfwAAAAAAAAD/AAAAAAAAAP+AAAAAAAAB/4AAAAAAAAH/wAAAAAAAA//gAAAAAA + AH/+AAAAAAAAf/8AAAAAAAD//4AAAAAAAf//wAAAAAAD///gAAAAAAf///gAAAAAH////AAAAAA///// + AAAAAP/////AAAAD//////AAAA///////AAAP///////4Af///8= + + + \ No newline at end of file diff --git a/Discord Media Loader.Application/MainForm.cs b/Discord Media Loader.Application/MainForm.cs index c474cea..093c4be 100644 --- a/Discord Media Loader.Application/MainForm.cs +++ b/Discord Media Loader.Application/MainForm.cs @@ -38,10 +38,13 @@ namespace DML.Application Trace("Refreshing thread limit component..."); edThreadLimit.Value = Core.Settings.ThreadLimit; - Trace("Adding guilds to component..."); - cbGuild.Items.AddRange(Core.Client.Servers.OrderBy(g => g.Name).Select(g => g.Name).ToArray()); - cbGuild.SelectedIndex = 0; - Trace("Guild component initialized."); + if (cbGuild.Items.Count == 0) + { + Trace("Adding guilds to component..."); + cbGuild.Items.AddRange(Core.Client.Servers.OrderBy(g => g.Name).Select(g => g.Name).ToArray()); + cbGuild.SelectedIndex = 0; + Trace("Guild component initialized."); + } Trace("Refreshing job list component..."); var oldIndex = lbxJobs.SelectedIndex; @@ -170,9 +173,11 @@ namespace DML.Application where j.GuildId == job.GuildId && j.ChannelId == job.ChannelId select j).Any()) { - Core.Scheduler.JobList.Add(job); job.Store(); + Core.Scheduler.JobList.Add(job); } + + RefreshComponents(); } private void btnDelete_Click(object sender, System.EventArgs e) @@ -203,7 +208,9 @@ namespace DML.Application { Core.Scheduler.JobList.Remove(job); Core.Scheduler.RunningJobs.Remove(job.Id); + job.Stop(); job.Delete(); + break; } } diff --git a/Discord Media Loader.Application/Properties/Resources.Designer.cs b/Discord Media Loader.Application/Properties/Resources.Designer.cs new file mode 100644 index 0000000..b02e64d --- /dev/null +++ b/Discord Media Loader.Application/Properties/Resources.Designer.cs @@ -0,0 +1,73 @@ +//------------------------------------------------------------------------------ +// +// Dieser Code wurde von einem Tool generiert. +// Laufzeitversion:4.0.30319.42000 +// +// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn +// der Code erneut generiert wird. +// +//------------------------------------------------------------------------------ + +namespace DML.Application.Properties { + using System; + + + /// + /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// + // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert + // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. + // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen + // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() { + } + + /// + /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager { + get { + if (object.ReferenceEquals(resourceMan, null)) { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("DML.Application.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle + /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture { + get { + return resourceCulture; + } + set { + resourceCulture = value; + } + } + + /// + /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap Serraniel_Logo4_NO_BG { + get { + object obj = ResourceManager.GetObject("Serraniel_Logo4_NO_BG", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + } +} diff --git a/Discord Media Loader.Application/Properties/Resources.resx b/Discord Media Loader.Application/Properties/Resources.resx new file mode 100644 index 0000000..3691894 --- /dev/null +++ b/Discord Media Loader.Application/Properties/Resources.resx @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + ..\Resources\Serraniel-Logo4-NO-BG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + \ No newline at end of file diff --git a/Discord Media Loader.Application/Resources/Serraniel-Logo4-NO-BG.png b/Discord Media Loader.Application/Resources/Serraniel-Logo4-NO-BG.png new file mode 100644 index 0000000..aeb98e3 Binary files /dev/null and b/Discord Media Loader.Application/Resources/Serraniel-Logo4-NO-BG.png differ diff --git a/Discord Media Loader/FrmSplash.Designer.cs b/Discord Media Loader/FrmSplash.Designer.cs index d1ae288..2477016 100644 --- a/Discord Media Loader/FrmSplash.Designer.cs +++ b/Discord Media Loader/FrmSplash.Designer.cs @@ -66,7 +66,7 @@ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); this.Name = "FrmSplash"; this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "FrmSplash"; + this.Text = "Discord Media Loader"; this.Shown += new System.EventHandler(this.FrmSplash_Shown); ((System.ComponentModel.ISupportInitialize)(this.pbLogo)).EndInit(); this.ResumeLayout(false);