Merge branch 'develop' into feature/DatabaseJobs

# Conflicts:
#	Discord Media Loader.Application/Classes/Core.cs
#	Discord Media Loader.Application/Classes/JobScheduler.cs
#	Discord Media Loader.Application/Classes/Settings.cs
This commit is contained in:
Serraniel 2019-02-15 17:13:43 +01:00
commit f29e9e2b8a
Signed by untrusted user who does not match committer: Serraniel
GPG key ID: 3690B4E7364525D3
17 changed files with 226 additions and 123 deletions

View file

@ -8,8 +8,4 @@
<PackageReference Include="Discord.Net" Version="1.0.2" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\SweetLib\SweetLib\SweetLib.csproj" />
</ItemGroup>
</Project>

View file

@ -1,11 +1,5 @@
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime;
using System.Threading.Tasks;
using System.Windows.Forms;
using Discord;
using Discord;
using Discord.Net;
using Discord.WebSocket;
using DML.AppCore.Classes;
using DML.Application.Classes.RPC;
@ -17,6 +11,13 @@ using SharpRaven.Data;
using SweetLib.Utils;
using SweetLib.Utils.Logger;
using SweetLib.Utils.Logger.Memory;
using System;
using System.Globalization;
using System.IO;
using System.Linq;
using System.Runtime;
using System.Threading.Tasks;
using System.Windows.Forms;
using Logger = SweetLib.Utils.Logger.Logger;
namespace DML.Application.Classes
@ -86,7 +87,6 @@ namespace DML.Application.Classes
Logger.Trace("Created log folder.");
}
var logFile = Path.Combine(logFolder,
SweetUtils.LegalizeFilename($"{DateTime.Now.ToString(CultureInfo.CurrentCulture.DateTimeFormat.SortableDateTimePattern)}.log.zip"));
@ -95,12 +95,12 @@ namespace DML.Application.Classes
logMemory.ArchiveFile = logFile;
}
Logger.Debug("Loading database...");
var databasePath = Path.Combine(DataDirectory, "config.db");
#if DEBUG
Database = new LiteDatabase(Path.Combine(DataDirectory, "config.debug.db"));
Database.Log.Logging += (message) => Logger.Trace($"LiteDB: {message}");
#else
Database = new LiteDatabase(Path.Combine(DataDirectory, "config.db"));
databasePath = Path.Combine(DataDirectory, "config.debug.db");
#endif
Logger.Debug("Loading database...");
Database = new LiteDatabase(databasePath);
Database.Log.Logging += (message) => Logger.Trace($"LiteDB: {message}");
#endif
@ -118,6 +118,18 @@ namespace DML.Application.Classes
Settings.Store();
}
if (Settings.ShowStartUpHints)
{
if (MessageBox.Show(splash, "This tool is considered as a selfbot which may violate the Discord TOS. By using this tool you take the risk to get your account banned. Although this never happened yet (as far as I know) you have to confirm to this.\n\r\n\rDo you wish to continue?", "HOLD UP!!", MessageBoxButtons.YesNo) != DialogResult.Yes)
{
splash.Close();
return;
}
Settings.ShowStartUpHints = false;
Settings.Store();
}
Logger.Debug("Loading jobs collection out of database...");
Scheduler.JobList = Job.RestoreJobs().ToList();
@ -173,13 +185,14 @@ namespace DML.Application.Classes
Logger.Info("Trying to log into discord...");
var abort = false;
DMLClient.Client.Connected += Client_Connected;
var loggedIn = false;
while (!loggedIn)
{
try
{
if (!string.IsNullOrEmpty(Settings.LoginToken))
{
@ -187,11 +200,20 @@ namespace DML.Application.Classes
loggedIn = await DMLClient.Login(Settings.LoginToken);
}
}
catch (HttpException)
{
Logger.Warn("HTTPException occured during login. Probably from login token.");
}
if (!loggedIn)
{
Logger.Debug("Showing dialog for username and password...");
var loginDlg = new LoginDialog();
loginDlg.ShowDialog();
if (loginDlg.ShowDialog() != DialogResult.OK)
{
return;
}
}
}
@ -210,13 +232,17 @@ namespace DML.Application.Classes
var isError = false;
var guild = FindServerById(job.GuildId);
if (guild == null)
{
isError = true;
}
else
{
var channel = FindChannelById(guild, job.ChannelId);
if (channel == null)
{
isError = true;
}
}
if (isError)
{
@ -281,11 +307,13 @@ namespace DML.Application.Classes
}
catch (Exception ex)
{
Logger.Error($"{ex.Message} occured at: {ex.StackTrace}");
Logger.Error($"{ex.Message} [{ex.GetType().Name}] occured at: {ex.StackTrace}");
if (MessageBox.Show($"An error occured while running Discord Media Loader:\n{ex.GetType().Name}: {ex.Message}\n\nDo you aggree to sending the error report to the creator of the tool?", "Discord Media Loader", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Raven.Capture(new SentryEvent(ex));
}
}
}
private static Task Client_Connected()
{

View file

@ -15,6 +15,7 @@ namespace DML.Application.Classes
public string FileNameScheme { get; set; } = @"%guild%\%channel%\%id%";
public bool SkipExistingFiles { get; set; } = true;
public int ThreadLimit { get; set; } = 50;
public bool ShowStartUpHints { get; set; } = true;
public bool RescanRequired { get; set; } = true;
public bool UseRPC { get; set; } = false;

View file

@ -61,6 +61,9 @@
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Win32.Registry, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Win32.Registry.4.3.0\lib\net46\Microsoft.Win32.Registry.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
@ -83,6 +86,9 @@
<Reference Include="SharpRaven, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SharpRaven.2.2.0\lib\net45\SharpRaven.dll</HintPath>
</Reference>
<Reference Include="SweetLib, Version=0.2.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SweetLib.0.2.1-alpha\lib\netstandard1.3\SweetLib.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll</HintPath>
@ -177,6 +183,7 @@
<Compile Include="FrmInternalSplash.Designer.cs">
<DependentUpon>FrmInternalSplash.cs</DependentUpon>
</Compile>
<Compile Include="Helper\IdentifiedString.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
@ -211,10 +218,6 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\SweetLib\SweetLib\SweetLib.csproj">
<Project>{02c1f8ef-32f2-4e77-a36d-79129402af37}</Project>
<Name>SweetLib</Name>
</ProjectReference>
<ProjectReference Include="..\DML.Client\DML.Client.csproj">
<Project>{045eb4a1-34e7-47e0-867e-e10c40505095}</Project>
<Name>DML.Client</Name>

View file

@ -44,7 +44,7 @@
this.pnlButtons.Controls.Add(this.btnAbort);
this.pnlButtons.Controls.Add(this.btnOk);
this.pnlButtons.Dock = System.Windows.Forms.DockStyle.Bottom;
this.pnlButtons.Location = new System.Drawing.Point(0, 168);
this.pnlButtons.Location = new System.Drawing.Point(0, 189);
this.pnlButtons.Name = "pnlButtons";
this.pnlButtons.Size = new System.Drawing.Size(426, 51);
this.pnlButtons.TabIndex = 0;
@ -71,9 +71,11 @@
//
// lbHowToToken
//
this.lbHowToToken.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)));
this.lbHowToToken.Location = new System.Drawing.Point(7, 58);
this.lbHowToToken.Name = "lbHowToToken";
this.lbHowToToken.Size = new System.Drawing.Size(412, 87);
this.lbHowToToken.Size = new System.Drawing.Size(412, 128);
this.lbHowToToken.TabIndex = 5;
this.lbHowToToken.Text = resources.GetString("lbHowToToken.Text");
//
@ -97,7 +99,7 @@
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(426, 219);
this.ClientSize = new System.Drawing.Size(426, 240);
this.Controls.Add(this.lbHowToToken);
this.Controls.Add(this.edToken);
this.Controls.Add(this.lbToken);

View file

@ -120,7 +120,9 @@
<data name="lbHowToToken.Text" xml:space="preserve">
<value>To find your login token please start Discord and press Ctrl + Shift + I shortcut. A browser inspector will open.
Navigate into the "Application" tab and select "Local Storage" / "https://discordapp.com". If the right site keeps blank use "Session Storage" instead.
Look for the token key and copy its value without the quotation marks.</value>
Look for the token key and copy its value without the quotation marks.
IF YOU CANNOT FIND YOUR TOKEN you can try pressing Ctrl + R while having the inspector open. While reloading you still should be able to grab the token. It may disappear after discord has finished loading.</value>
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">

View file

@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DML.Application.Helper
{
internal class IdentifiedString<T>
{
internal T Id { get; set; }
internal string Caption { get; set; }
internal IdentifiedString(T id, string caption)
{
Id = id;
Caption = caption;
}
public override string ToString() => Caption;
}
}

View file

@ -46,6 +46,11 @@
this.cbGuild = new System.Windows.Forms.ComboBox();
this.lbGuild = new System.Windows.Forms.Label();
this.statusStrip = new System.Windows.Forms.StatusStrip();
this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton();
this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.pgbProgress = new System.Windows.Forms.ToolStripProgressBar();
this.lbProgress = new System.Windows.Forms.ToolStripStatusLabel();
this.lblVersionPlaceholder = new System.Windows.Forms.ToolStripStatusLabel();
@ -57,12 +62,9 @@
this.btnDelete = new System.Windows.Forms.Button();
this.lbxJobs = new System.Windows.Forms.ListBox();
this.tmrRefreshProgress = new System.Windows.Forms.Timer(this.components);
this.lbStatus = new System.Windows.Forms.ToolStripDropDownButton();
this.onlineToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.doNotDenyToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.doNotDisturbToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.invisibleToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.tmrTriggerRefresh = new System.Windows.Forms.Timer(this.components);
this.showTokenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.pnlSettings.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.edThreadLimit)).BeginInit();
this.groupBox1.SuspendLayout();
@ -254,6 +256,45 @@
this.statusStrip.TabIndex = 2;
this.statusStrip.Text = "statusStrip1";
//
// lbStatus
//
this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.invisibleToolStripMenuItem,
this.doNotDisturbToolStripMenuItem,
this.doNotDenyToolStripMenuItem,
this.onlineToolStripMenuItem});
this.lbStatus.Name = "lbStatus";
this.lbStatus.Size = new System.Drawing.Size(13, 20);
this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked);
//
// invisibleToolStripMenuItem
//
this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem";
this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.invisibleToolStripMenuItem.Tag = "3";
this.invisibleToolStripMenuItem.Text = "Invisible";
//
// doNotDisturbToolStripMenuItem
//
this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem";
this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.doNotDisturbToolStripMenuItem.Tag = "2";
this.doNotDisturbToolStripMenuItem.Text = "Do not disturb";
//
// doNotDenyToolStripMenuItem
//
this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem";
this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.doNotDenyToolStripMenuItem.Tag = "1";
this.doNotDenyToolStripMenuItem.Text = "Idle";
//
// onlineToolStripMenuItem
//
this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem";
this.onlineToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.onlineToolStripMenuItem.Tag = "0";
this.onlineToolStripMenuItem.Text = "Online";
//
// pgbProgress
//
this.pgbProgress.Name = "pgbProgress";
@ -267,19 +308,21 @@
// lblVersionPlaceholder
//
this.lblVersionPlaceholder.Name = "lblVersionPlaceholder";
this.lblVersionPlaceholder.Size = new System.Drawing.Size(426, 17);
this.lblVersionPlaceholder.Size = new System.Drawing.Size(459, 17);
this.lblVersionPlaceholder.Spring = true;
//
// lbVersion
//
this.lbVersion.Name = "lbVersion";
this.lbVersion.Size = new System.Drawing.Size(118, 17);
this.lbVersion.Text = "v https://github.com";
this.lbVersion.Size = new System.Drawing.Size(54, 17);
this.lbVersion.Text = "VERSION";
//
// btnDropDown
//
this.btnDropDown.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image;
this.btnDropDown.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.showTokenToolStripMenuItem,
this.toolStripSeparator2,
this.visitGithubToolStripMenuItem,
this.aboutToolStripMenuItem});
this.btnDropDown.ImageTransparentColor = System.Drawing.Color.Magenta;
@ -290,14 +333,14 @@
// visitGithubToolStripMenuItem
//
this.visitGithubToolStripMenuItem.Name = "visitGithubToolStripMenuItem";
this.visitGithubToolStripMenuItem.Size = new System.Drawing.Size(135, 22);
this.visitGithubToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.visitGithubToolStripMenuItem.Text = "Visit Github";
this.visitGithubToolStripMenuItem.Click += new System.EventHandler(this.visitGithubToolStripMenuItem_Click);
//
// aboutToolStripMenuItem
//
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(135, 22);
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.aboutToolStripMenuItem.Text = "About";
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
//
@ -341,50 +384,23 @@
this.tmrRefreshProgress.Interval = 500;
this.tmrRefreshProgress.Tick += new System.EventHandler(this.tmrRefreshProgress_Tick);
//
// lbStatus
//
this.lbStatus.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] {
this.invisibleToolStripMenuItem,
this.doNotDisturbToolStripMenuItem,
this.doNotDenyToolStripMenuItem,
this.onlineToolStripMenuItem});
this.lbStatus.Name = "lbStatus";
this.lbStatus.Size = new System.Drawing.Size(13, 20);
this.lbStatus.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.toolStripDropDownButton1_DropDownItemClicked);
//
// onlineToolStripMenuItem
//
this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem";
this.onlineToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.onlineToolStripMenuItem.Tag = "0";
this.onlineToolStripMenuItem.Text = "Online";
//
// doNotDenyToolStripMenuItem
//
this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem";
this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.doNotDenyToolStripMenuItem.Tag = "1";
this.doNotDenyToolStripMenuItem.Text = "Idle";
//
// doNotDisturbToolStripMenuItem
//
this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem";
this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.doNotDisturbToolStripMenuItem.Tag = "2";
this.doNotDisturbToolStripMenuItem.Text = "Do not disturb";
//
// invisibleToolStripMenuItem
//
this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem";
this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(152, 22);
this.invisibleToolStripMenuItem.Tag = "3";
this.invisibleToolStripMenuItem.Text = "Invisible";
//
// tmrTriggerRefresh
//
this.tmrTriggerRefresh.Interval = 5000;
this.tmrTriggerRefresh.Tick += new System.EventHandler(this.tmrTriggerRefresh_Tick);
//
// showTokenToolStripMenuItem
//
this.showTokenToolStripMenuItem.Name = "showTokenToolStripMenuItem";
this.showTokenToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
this.showTokenToolStripMenuItem.Text = "Copy login token";
this.showTokenToolStripMenuItem.Click += new System.EventHandler(this.showTokenToolStripMenuItem_Click);
//
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(177, 6);
//
// MainForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -448,5 +464,7 @@
private System.Windows.Forms.ToolStripMenuItem doNotDenyToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem onlineToolStripMenuItem;
private System.Windows.Forms.Timer tmrTriggerRefresh;
private System.Windows.Forms.ToolStripMenuItem showTokenToolStripMenuItem;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
}
}

View file

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
@ -8,8 +9,10 @@ using Discord;
using Discord.WebSocket;
using DML.AppCore.Classes;
using DML.Application.Classes;
using DML.Application.Helper;
using DML.Application.Classes.RPC;
using DML.Client;
using static DML.Client.DMLClient;
using static SweetLib.Utils.Logger.Logger;
namespace DML.Application
@ -60,7 +63,9 @@ namespace DML.Application
if (cbGuild.Items.Count == 0)
{
Trace("Adding guilds to component...");
cbGuild.Items.AddRange(DMLClient.Client.Guilds.OrderBy(g => g.Name).Select(g => g.Name).ToArray());
cbGuild.Items.AddRange(DMLClient.Client.Guilds.Where(g => g.Name != null).OrderBy(g => g.Name).Select(g => new IdentifiedString<ulong>(g.Id, g.Name)).ToArray());
cbGuild.SelectedIndex = 0;
Trace("Guild component initialized.");
}
@ -70,8 +75,7 @@ namespace DML.Application
lbxJobs.Items.Clear();
foreach (var job in Core.Scheduler.JobList)
{
lbxJobs.Items.Add(
$"{FindServerById(job.GuildId)?.Name}:{FindChannelById(FindServerById(job.GuildId), job.ChannelId)?.Name}");
lbxJobs.Items.Add(new IdentifiedString<int>(job.Id, $"{FindServerById(job.GuildId)?.Name}:{FindChannelById(FindServerById(job.GuildId), job.ChannelId)?.Name}"));
}
lbxJobs.SelectedIndex = oldIndex;
@ -156,7 +160,7 @@ namespace DML.Application
UseWaitCursor = true;
try
{
var guild = FindServerByName(cbGuild.Text);
var guild = FindServerById(((IdentifiedString<ulong>)cbGuild.SelectedItem).Id);
if (guild != null)
{
@ -164,7 +168,9 @@ namespace DML.Application
cbChannel.Items.Clear();
Trace("Adding new channels...");
cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position).Select(c => c.Name).ToArray());
cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position).Select(c => new IdentifiedString<ulong>(c.Id, c.Name)).ToArray());
Trace($"Added {cbChannel.Items.Count} channels.");
cbChannel.SelectedIndex = 0;
@ -186,8 +192,8 @@ namespace DML.Application
{
var job = new Job
{
GuildId = FindServerByName(cbGuild.Text).Id,
ChannelId = FindChannelByName(FindServerByName(cbGuild.Text), cbChannel.Text).Id
GuildId = ((IdentifiedString<ulong>)cbGuild.SelectedItem).Id,
ChannelId = ((IdentifiedString<ulong>)cbChannel.SelectedItem).Id
};
if (!(from j in Core.Scheduler.JobList
@ -211,28 +217,15 @@ namespace DML.Application
MessageBox.Show("No job has been seleted.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
var jobNameData = lbxJobs.SelectedItem.ToString().Split(':');
var jobId = ((IdentifiedString<int>)lbxJobs.SelectedItem).Id;
var guildName = "";
for (var i = 0; i < jobNameData.Length - 1; i++)
guildName += jobNameData[i] + ":";
guildName = guildName.Substring(0, guildName.Length - 1);
var channelName = jobNameData[jobNameData.Length - 1];
var guild = FindServerByName(guildName);
var channel = FindChannelByName(guild, channelName);
foreach (var job in Core.Scheduler.JobList)
{
if (job.GuildId == guild.Id && job.ChannelId == channel.Id)
var job = Core.Scheduler.JobList.FirstOrDefault(j => j.Id == jobId);
if (job != null)
{
Core.Scheduler.JobList.Remove(job);
Core.Scheduler.RunningJobs.Remove(job.Id);
job.Stop();
job.Delete();
break;
}
}
lbxJobs.SelectedIndex = -1;
@ -304,5 +297,12 @@ namespace DML.Application
lbStatus.Text = DMLClient.Client.CurrentUser.Status.ToString();
tmrTriggerRefresh.Stop();
}
private void showTokenToolStripMenuItem_Click(object sender, EventArgs e)
{
Clipboard.SetText(Core.Settings.LoginToken);
MessageBox.Show(this, "Your login token has been copied to your clipboard.", "Discord Media Loader",
MessageBoxButtons.OK);
}
}
}

View file

@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Serraniel")]
[assembly: AssemblyProduct("Discord Media Loader.Application")]
[assembly: AssemblyCopyright("Copyright © 2017 - 2018 by Serraniel")]
[assembly: AssemblyCopyright("Copyright © 2017 - 2019 by Serraniel")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.1.0.0")]
[assembly: AssemblyFileVersion("1.1.0.0")]
[assembly: AssemblyVersion("1.2.1.0")]
[assembly: AssemblyFileVersion("1.2.1.0")]

View file

@ -18,6 +18,22 @@
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -11,11 +11,13 @@
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="1.1.1" targetFramework="net461" />
<package id="Microsoft.NETCore.Platforms" version="1.1.0" targetFramework="net461" />
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net461" />
<package id="Microsoft.Win32.Registry" version="4.3.0" targetFramework="net461" />
<package id="NETStandard.Library" version="1.6.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="10.0.2" targetFramework="net461" />
<package id="Nito.AsyncEx" version="3.0.1" targetFramework="net461" />
<package id="RestSharp" version="105.2.3" targetFramework="net461" />
<package id="SharpRaven" version="2.2.0" targetFramework="net461" />
<package id="SweetLib" version="0.2.1-alpha" targetFramework="net461" />
<package id="System.AppContext" version="4.3.0" targetFramework="net461" />
<package id="System.Collections" version="4.3.0" targetFramework="net461" />
<package id="System.Collections.Concurrent" version="4.3.0" targetFramework="net461" />

View file

@ -7,9 +7,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord Media Loader", "Dis
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DML.Application", "Discord Media Loader.Application\DML.Application.csproj", "{C130DE6A-3237-42B5-BE9F-783D1CD104C6}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SweetLib", "..\SweetLib\SweetLib\SweetLib.csproj", "{02C1F8EF-32F2-4E77-A36D-79129402AF37}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DML.Client", "DML.Client\DML.Client.csproj", "{045EB4A1-34E7-47E0-867E-E10C40505095}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DML.Client", "DML.Client\DML.Client.csproj", "{045EB4A1-34E7-47E0-867E-E10C40505095}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -25,10 +23,6 @@ Global
{C130DE6A-3237-42B5-BE9F-783D1CD104C6}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C130DE6A-3237-42B5-BE9F-783D1CD104C6}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C130DE6A-3237-42B5-BE9F-783D1CD104C6}.Release|Any CPU.Build.0 = Release|Any CPU
{02C1F8EF-32F2-4E77-A36D-79129402AF37}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{02C1F8EF-32F2-4E77-A36D-79129402AF37}.Debug|Any CPU.Build.0 = Debug|Any CPU
{02C1F8EF-32F2-4E77-A36D-79129402AF37}.Release|Any CPU.ActiveCfg = Release|Any CPU
{02C1F8EF-32F2-4E77-A36D-79129402AF37}.Release|Any CPU.Build.0 = Release|Any CPU
{045EB4A1-34E7-47E0-867E-E10C40505095}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{045EB4A1-34E7-47E0-867E-E10C40505095}.Debug|Any CPU.Build.0 = Debug|Any CPU
{045EB4A1-34E7-47E0-867E-E10C40505095}.Release|Any CPU.ActiveCfg = Release|Any CPU

View file

@ -21,6 +21,22 @@
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-10.0.0.0" newVersion="10.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Console" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.FileSystem" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.2.0" newVersion="4.1.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>

View file

@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Serraniel")]
[assembly: AssemblyProduct("Discord Media Loader")]
[assembly: AssemblyCopyright("Copyright © 2017 - 2018 by Serraniel")]
[assembly: AssemblyCopyright("Copyright © 2017 - 2019 by Serraniel")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
@ -31,5 +31,5 @@ using System.Runtime.InteropServices;
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
// übernehmen, indem Sie "*" eingeben:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.2.0")]
[assembly: AssemblyFileVersion("1.0.2.0")]
[assembly: AssemblyVersion("1.0.3.0")]
[assembly: AssemblyFileVersion("1.0.3.0")]

View file

@ -1,7 +1,10 @@
# Discord Media Loader
## IMPORTANT: This selfbot may violate discord TOS. Use at own risk!!!
*Discord Media Loader* is a small tool for downloading all attachments of *Discord* servers.
**[Download](https://github.com/Serraniel/DiscordMediaLoader/releases)**
**[Download](https://github.com/Serraniel/DiscordMediaLoader/releases)** **Build:** [![build status badge](https://ci.serraniel.com/app/rest/builds/buildType:(DiscordMediaLoader_BuildMaster)/statusIcon)](https://ci.serraniel.com/viewType.html?buildTypeId=DiscordMediaLoader_BuildMaster)
## License