Compare commits
39 commits
master
...
feature/#2
Author | SHA1 | Date | |
---|---|---|---|
20f58e16c3 | |||
d3aa91f826 | |||
c5ab4a73a6 | |||
8923659610 | |||
dfcc430ab1 | |||
2f68a3d7a9 | |||
f4e4b9c02d | |||
7a90260207 | |||
4fdb226a21 | |||
2ebae762f0 | |||
321c116f34 | |||
fc359fe226 | |||
c1c0c372c7 | |||
f29e9e2b8a | |||
0772edd354 | |||
9c141e9f5c | |||
3eb8750df7 | |||
b52b6b4189 | |||
ec4ee45182 | |||
5cd9a0c200 | |||
3b8f440bb2 | |||
7358be85e3 | |||
8ca2ec9b27 | |||
c36acc0750 | |||
842266f338 | |||
6a6a2e7c9a | |||
051b0713ee | |||
2add4afa24 | |||
8aa1296887 | |||
fc27243c1e | |||
9278a804cf | |||
27ed4a00ba | |||
d7bbbeade9 | |||
a867b35cad | |||
c2cfe54bee | |||
fb364f154d | |||
b022306cfd | |||
4d6cc85732 | |||
698729cec7 |
8
.github/dependabot.yml
vendored
|
@ -1,8 +0,0 @@
|
||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: nuget
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: daily
|
|
||||||
time: "04:00"
|
|
||||||
open-pull-requests-limit: 10
|
|
14
.github/workflows/auto-merge.yml
vendored
|
@ -1,14 +0,0 @@
|
||||||
name: auto-merge
|
|
||||||
|
|
||||||
on:
|
|
||||||
pull_request:
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
auto-merge:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v2.3.3
|
|
||||||
- uses: ahmadnassri/action-dependabot-auto-merge@v2.1.2
|
|
||||||
with:
|
|
||||||
target: minor
|
|
||||||
github-token: ${{ secrets.PR_AUTO_MERGE }}
|
|
70
.github/workflows/codeql-analysis.yml
vendored
|
@ -1,70 +0,0 @@
|
||||||
# For most projects, this workflow file will not need changing; you simply need
|
|
||||||
# to commit it to your repository.
|
|
||||||
#
|
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
|
||||||
# or to provide custom queries or build logic.
|
|
||||||
#
|
|
||||||
# ******** NOTE ********
|
|
||||||
# We have attempted to detect the languages in your repository. Please check
|
|
||||||
# the `language` matrix defined below to confirm you have the correct set of
|
|
||||||
# supported CodeQL languages.
|
|
||||||
#
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
pull_request:
|
|
||||||
# The branches below must be a subset of the branches above
|
|
||||||
branches: [ master ]
|
|
||||||
schedule:
|
|
||||||
- cron: '43 14 * * 4'
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
actions: read
|
|
||||||
contents: read
|
|
||||||
security-events: write
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
language: [ 'csharp' ]
|
|
||||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
|
||||||
# Learn more about CodeQL language support at https://git.io/codeql-language-support
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v2
|
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v1
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
||||||
# By default, queries listed here will override any specified in a config file.
|
|
||||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
|
||||||
# queries: ./path/to/local/query, your-org/your-repo/queries@main
|
|
||||||
|
|
||||||
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
||||||
# If this step fails, then you should remove it and run the build manually (see below)
|
|
||||||
- name: Autobuild
|
|
||||||
uses: github/codeql-action/autobuild@v1
|
|
||||||
|
|
||||||
# ℹ️ Command-line programs to run using the OS shell.
|
|
||||||
# 📚 https://git.io/JvXDl
|
|
||||||
|
|
||||||
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
|
|
||||||
# and modify them (or add more) to build your code if your project
|
|
||||||
# uses a compiled language
|
|
||||||
|
|
||||||
#- run: |
|
|
||||||
# make bootstrap
|
|
||||||
# make release
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v1
|
|
1
.gitignore
vendored
|
@ -250,4 +250,3 @@ paket-files/
|
||||||
# JetBrains Rider
|
# JetBrains Rider
|
||||||
.idea/
|
.idea/
|
||||||
*.sln.iml
|
*.sln.iml
|
||||||
install/Discord_Media_Loader_Setup.exe
|
|
||||||
|
|
3
.gitmodules
vendored
|
@ -1,3 +0,0 @@
|
||||||
[submodule "libs/Discord.Net"]
|
|
||||||
path = libs/Discord.Net
|
|
||||||
url = https://github.com/Serraniel/Discord.Net.git
|
|
|
@ -1,15 +0,0 @@
|
||||||
<Project Sdk="Microsoft.NET.Sdk">
|
|
||||||
|
|
||||||
<PropertyGroup>
|
|
||||||
<TargetFramework>netstandard2.0</TargetFramework>
|
|
||||||
<AssemblyVersion>1.1.0.0</AssemblyVersion>
|
|
||||||
<FileVersion>1.1.0.0</FileVersion>
|
|
||||||
<Version>1.1.0</Version>
|
|
||||||
</PropertyGroup>
|
|
||||||
|
|
||||||
<ItemGroup>
|
|
||||||
<ProjectReference Include="..\libs\Discord.Net\src\Discord.Net.Core\Discord.Net.Core.csproj" />
|
|
||||||
<ProjectReference Include="..\libs\Discord.Net\src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj" />
|
|
||||||
</ItemGroup>
|
|
||||||
|
|
||||||
</Project>
|
|
|
@ -1,25 +0,0 @@
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Discord;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
|
|
||||||
namespace DML.Client
|
|
||||||
{
|
|
||||||
public static class DMLClient
|
|
||||||
{
|
|
||||||
public static DiscordSocketClient Client { get; set; } = new DiscordSocketClient(new DiscordSocketConfig() { DefaultRetryMode = RetryMode.RetryRatelimit | RetryMode.RetryTimeouts });
|
|
||||||
|
|
||||||
public static async Task<bool> Login(string token)
|
|
||||||
{
|
|
||||||
await Client.LoginAsync(TokenType.User, token);
|
|
||||||
await Client.StartAsync();
|
|
||||||
await Task.Delay(1000);
|
|
||||||
|
|
||||||
while (Client.LoginState == LoginState.LoggingIn || Client.ConnectionState == ConnectionState.Connecting)
|
|
||||||
{
|
|
||||||
// wait
|
|
||||||
}
|
|
||||||
|
|
||||||
return Client.LoginState == LoginState.LoggedIn && Client.ConnectionState == ConnectionState.Connected;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,340 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.IO;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Net;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using Discord;
|
|
||||||
using Discord.WebSocket;
|
|
||||||
using DML.Application.Classes;
|
|
||||||
using SweetLib.Utils.Extensions;
|
|
||||||
using SweetLib.Utils.Logger;
|
|
||||||
|
|
||||||
namespace DML.AppCore.Classes
|
|
||||||
{
|
|
||||||
public class JobScheduler
|
|
||||||
{
|
|
||||||
private ulong attachmentsDownloaded;
|
|
||||||
private ulong messageScanned;
|
|
||||||
public Dictionary<int, Queue<IMessage>> RunningJobs = new Dictionary<int, Queue<IMessage>>();
|
|
||||||
private ulong totalAttachments;
|
|
||||||
|
|
||||||
private bool Run { get; set; }
|
|
||||||
public List<Job> JobList { get; set; } = new List<Job>();
|
|
||||||
internal int RunningThreads { get; set; }
|
|
||||||
|
|
||||||
internal ulong MessagesScanned
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
return messageScanned;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
messageScanned = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal ulong TotalAttachments
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
return totalAttachments;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
totalAttachments = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
internal ulong AttachmentsDownloaded
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
return attachmentsDownloaded;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
set
|
|
||||||
{
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
attachmentsDownloaded = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Stop()
|
|
||||||
{
|
|
||||||
Run = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void Start()
|
|
||||||
{
|
|
||||||
Run = true;
|
|
||||||
|
|
||||||
Task.Run(async () =>
|
|
||||||
{
|
|
||||||
Logger.Info("Started JobScheduler...");
|
|
||||||
while (Run)
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Logger.Debug("Entering job list handler loop...");
|
|
||||||
//foreach (var job in JobList)
|
|
||||||
for (var i = JobList.Count - 1; i >= 0; i--)
|
|
||||||
{
|
|
||||||
var job = JobList[i];
|
|
||||||
Logger.Debug($"Checking job {job}");
|
|
||||||
var hasJob = false;
|
|
||||||
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace("Checking if job is already performed...");
|
|
||||||
hasJob = RunningJobs.ContainsKey(job.Id);
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
|
|
||||||
if (!hasJob)
|
|
||||||
{
|
|
||||||
Logger.Debug("Job is not performed yet...Performing job...");
|
|
||||||
var queue = new Queue<IMessage>();
|
|
||||||
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace("Adding job to running jobs.");
|
|
||||||
RunningJobs.Add(job.Id, queue);
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
|
|
||||||
Logger.Trace("Issuing job message scan...");
|
|
||||||
var messages = await job.Scan();
|
|
||||||
|
|
||||||
if (messages == null)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
Logger.Trace($"Adding {messages.Count} messages to queue...");
|
|
||||||
foreach (var msg in messages) queue.Enqueue(msg);
|
|
||||||
Logger.Trace($"Added {queue.Count} messages to queue.");
|
|
||||||
|
|
||||||
if (messages.Count != queue.Count)
|
|
||||||
Logger.Warn("Not all messages have been added into the queue.");
|
|
||||||
|
|
||||||
var startedDownload = false;
|
|
||||||
|
|
||||||
while (!startedDownload)
|
|
||||||
{
|
|
||||||
Logger.Debug("Entering loop to check thread availability");
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace(
|
|
||||||
$"Checking thread limit. Running: {RunningThreads}, Max: {Core.Settings.ThreadLimit}");
|
|
||||||
if (RunningThreads >= Core.Settings.ThreadLimit)
|
|
||||||
continue;
|
|
||||||
|
|
||||||
RunningThreads++;
|
|
||||||
startedDownload = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Start downloading job async.");
|
|
||||||
Task.Run(() => WorkQueue(job.Id)); // do not await to work parallel
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
Logger.Error(ex.Message);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
private void WorkQueue(int jobId)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
Logger.Debug("Beginning job download...");
|
|
||||||
Logger.Trace("Finding job...");
|
|
||||||
var job = (from j in JobList where j.Id == jobId select j).FirstOrDefault();
|
|
||||||
|
|
||||||
if (job == null)
|
|
||||||
{
|
|
||||||
Logger.Warn($"Associating job not found! JobId: {jobId}");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Found job.");
|
|
||||||
|
|
||||||
Queue<IMessage> queue;
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace("Finiding queue...");
|
|
||||||
if (!RunningJobs.TryGetValue(jobId, out queue))
|
|
||||||
{
|
|
||||||
Logger.Warn($"Queue for job {jobId} not found!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Queue found.");
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
|
|
||||||
Logger.Debug($"Messages to process for job {jobId}: {queue.Count}");
|
|
||||||
while (queue.Count > 0)
|
|
||||||
{
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace("Checking if still a job...");
|
|
||||||
if (!RunningJobs.ContainsKey(jobId))
|
|
||||||
{
|
|
||||||
Logger.Warn($"Queue for job {jobId} not found!");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Continue working...");
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
|
|
||||||
Logger.Trace("Dequeueing message...");
|
|
||||||
var message = queue.Dequeue();
|
|
||||||
|
|
||||||
Logger.Debug($"Attachments for message {message.Id}: {message.Attachments.Count}");
|
|
||||||
foreach (var a in message.Attachments)
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var fileName = Path.Combine(Core.Settings.OperatingFolder, Core.Settings.FileNameScheme);
|
|
||||||
|
|
||||||
Logger.Trace("Replacing filename placeholders...");
|
|
||||||
|
|
||||||
var extensionRequired = !fileName.EndsWith("%name%");
|
|
||||||
|
|
||||||
var serverName = "unknown";
|
|
||||||
string nickname = null;
|
|
||||||
|
|
||||||
if (fileName.Contains("%guild%") || fileName.Contains("%nickname%"))
|
|
||||||
{
|
|
||||||
var socketTextChannel = message.Channel as SocketTextChannel;
|
|
||||||
if (socketTextChannel != null)
|
|
||||||
{
|
|
||||||
// fetch servername
|
|
||||||
serverName = socketTextChannel.Guild.Name;
|
|
||||||
serverName = Path.GetInvalidFileNameChars()
|
|
||||||
.Aggregate(serverName, (current, c) => current.Replace(c, ' '));
|
|
||||||
|
|
||||||
// fetch nickname
|
|
||||||
if (fileName.Contains("%nickname%"))
|
|
||||||
{
|
|
||||||
var serverUser =
|
|
||||||
socketTextChannel.GetUser(message.Author
|
|
||||||
.Id); // can be null if user left the server
|
|
||||||
if (serverUser != null)
|
|
||||||
{
|
|
||||||
nickname = serverUser.Nickname;
|
|
||||||
|
|
||||||
if (!string.IsNullOrEmpty(nickname))
|
|
||||||
nickname = Path.GetInvalidFileNameChars()
|
|
||||||
.Aggregate(nickname, (current, c) => current.Replace(c, ' '));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// fetch channelname
|
|
||||||
var channelName = message.Channel.Name;
|
|
||||||
channelName = Path.GetInvalidFileNameChars()
|
|
||||||
.Aggregate(channelName, (current, c) => current.Replace(c, ' '));
|
|
||||||
|
|
||||||
// fetch username
|
|
||||||
var username = message.Author.Username;
|
|
||||||
username = Path.GetInvalidFileNameChars()
|
|
||||||
.Aggregate(username, (current, c) => current.Replace(c, ' '));
|
|
||||||
|
|
||||||
|
|
||||||
fileName =
|
|
||||||
fileName.Replace("%guild%", serverName)
|
|
||||||
.Replace("%channel%", channelName)
|
|
||||||
.Replace("%timestamp%", message.CreatedAt.UtcDateTime.ToUnixTimeStamp().ToString())
|
|
||||||
.Replace("%name%", a.Filename)
|
|
||||||
.Replace("%id%", a.Id.ToString())
|
|
||||||
.Replace("%userid%", message.Author.Id.ToString())
|
|
||||||
.Replace("%username%", username)
|
|
||||||
.Replace("%nickname%",
|
|
||||||
!string.IsNullOrEmpty(nickname) ? nickname : username);
|
|
||||||
|
|
||||||
if (extensionRequired)
|
|
||||||
fileName += Path.GetExtension(a.Filename);
|
|
||||||
|
|
||||||
Logger.Trace($"Detemined file name: {fileName}.");
|
|
||||||
|
|
||||||
|
|
||||||
if (File.Exists(fileName) && new FileInfo(fileName).Length == a.Size)
|
|
||||||
{
|
|
||||||
Logger.Debug($"{fileName} already existing with its estimated size. Skipping...");
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Determining directory...");
|
|
||||||
var fileDirectory = Path.GetDirectoryName(fileName);
|
|
||||||
|
|
||||||
if (!Directory.Exists(fileDirectory))
|
|
||||||
{
|
|
||||||
Logger.Info($"Directory {fileDirectory} does not exist. Creating directory...");
|
|
||||||
Directory.CreateDirectory(fileDirectory);
|
|
||||||
Logger.Debug("Created directory.");
|
|
||||||
}
|
|
||||||
|
|
||||||
var wc = new WebClient();
|
|
||||||
Logger.Debug($"Starting downloading of attachment {a.Id}...");
|
|
||||||
|
|
||||||
wc.DownloadFile(new Uri(a.Url), fileName);
|
|
||||||
Logger.Debug($"Downloaded attachment {a.Id}.");
|
|
||||||
|
|
||||||
Logger.Trace("Updating known timestamp for job...");
|
|
||||||
job.KnownTimestamp = message.CreatedAt.UtcDateTime.ToUnixTimeStamp();
|
|
||||||
job.Store();
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
AttachmentsDownloaded++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
Logger.Trace("Locking scheduler...");
|
|
||||||
lock (this)
|
|
||||||
{
|
|
||||||
Logger.Trace($"Removing {jobId} from running jobs...");
|
|
||||||
RunningJobs.Remove(jobId);
|
|
||||||
Logger.Trace("Decreasing thread count...");
|
|
||||||
RunningThreads--;
|
|
||||||
}
|
|
||||||
|
|
||||||
Logger.Trace("Unlocked scheduler.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,2 +0,0 @@
|
||||||
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
|
||||||
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp80</s:String></wpf:ResourceDictionary>
|
|
|
@ -1,12 +0,0 @@
|
||||||
using System.Windows.Forms;
|
|
||||||
|
|
||||||
namespace DML.Application
|
|
||||||
{
|
|
||||||
public partial class FrmInternalSplash : Form
|
|
||||||
{
|
|
||||||
public FrmInternalSplash()
|
|
||||||
{
|
|
||||||
InitializeComponent();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,19 +0,0 @@
|
||||||
namespace DML.Application.Helper
|
|
||||||
{
|
|
||||||
internal class IdentifiedString<T>
|
|
||||||
{
|
|
||||||
internal IdentifiedString(T id, string caption)
|
|
||||||
{
|
|
||||||
Id = id;
|
|
||||||
Caption = caption;
|
|
||||||
}
|
|
||||||
|
|
||||||
internal T Id { get; set; }
|
|
||||||
internal string Caption { get; set; }
|
|
||||||
|
|
||||||
public override string ToString()
|
|
||||||
{
|
|
||||||
return Caption;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
Before Width: | Height: | Size: 5.4 KiB |
|
@ -1,71 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Console" 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.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.2.0.0" newVersion="4.2.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.6.0" newVersion="3.1.6.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.2.5.0" newVersion="1.2.5.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Linq.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
<startup><supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" /></startup></configuration>
|
|
|
@ -1,28 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<packages>
|
|
||||||
<package id="LiteDB" version="5.0.9" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.NETCore.Platforms" version="5.0.1" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.Win32.Registry" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="NETStandard.Library" version="2.0.3" targetFramework="net461" />
|
|
||||||
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net461" />
|
|
||||||
<package id="SharpRaven" version="2.4.0" targetFramework="net461" />
|
|
||||||
<package id="SweetLib" version="0.2.1-alpha" targetFramework="net461" />
|
|
||||||
<package id="System.Buffers" version="4.5.1" targetFramework="net461" />
|
|
||||||
<package id="System.Collections.Immutable" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Linq" version="4.3.0" targetFramework="net461" requireReinstallation="true" />
|
|
||||||
<package id="System.Linq.Async" version="4.1.1" targetFramework="net461" />
|
|
||||||
<package id="System.Memory" version="4.5.4" targetFramework="net461" />
|
|
||||||
<package id="System.Net.Security" version="4.3.2" targetFramework="net461" />
|
|
||||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
|
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.AccessControl" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Principal.Windows" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
|
|
||||||
</packages>
|
|
|
@ -1,90 +0,0 @@
|
||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
|
||||||
# Visual Studio Version 16
|
|
||||||
VisualStudioVersion = 16.0.29324.140
|
|
||||||
MinimumVisualStudioVersion = 10.0.40219.1
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord Media Loader", "Discord Media Loader\Discord Media Loader.csproj", "{EDC92554-DBC1-4F9C-9317-379A8BF441E8}"
|
|
||||||
EndProject
|
|
||||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DML.Application", "Discord Media Loader.Application\DML.Application.csproj", "{C130DE6A-3237-42B5-BE9F-783D1CD104C6}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DML.Client", "DML.Client\DML.Client.csproj", "{045EB4A1-34E7-47E0-867E-E10C40505095}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Core", "libs\Discord.Net\src\Discord.Net.Core\Discord.Net.Core.csproj", "{8BD82FAE-47F7-41FD-A862-892C8AFF8C66}"
|
|
||||||
EndProject
|
|
||||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "libs", "libs", "{451BDCAA-EC43-475E-8887-0F80EA605A73}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Analyzers", "libs\Discord.Net\src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj", "{99FB0F60-AEEC-4059-9605-6FA2D7408EFC}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Commands", "libs\Discord.Net\src\Discord.Net.Commands\Discord.Net.Commands.csproj", "{B3B30663-625D-452F-A3D7-57B381D021F6}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Providers.WS4Net", "libs\Discord.Net\src\Discord.Net.Providers.WS4Net\Discord.Net.Providers.WS4Net.csproj", "{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Rest", "libs\Discord.Net\src\Discord.Net.Rest\Discord.Net.Rest.csproj", "{103472C3-834D-4561-9395-6FEBFEB165AC}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.Webhook", "libs\Discord.Net\src\Discord.Net.Webhook\Discord.Net.Webhook.csproj", "{58D6AEF3-5837-4601-A5D3-C6F11AC313B0}"
|
|
||||||
EndProject
|
|
||||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Discord.Net.WebSocket", "libs\Discord.Net\src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj", "{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7}"
|
|
||||||
EndProject
|
|
||||||
Global
|
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
|
||||||
Debug|Any CPU = Debug|Any CPU
|
|
||||||
Release|Any CPU = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
|
||||||
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{C130DE6A-3237-42B5-BE9F-783D1CD104C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{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
|
|
||||||
{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
|
|
||||||
{045EB4A1-34E7-47E0-867E-E10C40505095}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{8BD82FAE-47F7-41FD-A862-892C8AFF8C66}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{8BD82FAE-47F7-41FD-A862-892C8AFF8C66}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{8BD82FAE-47F7-41FD-A862-892C8AFF8C66}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{8BD82FAE-47F7-41FD-A862-892C8AFF8C66}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{99FB0F60-AEEC-4059-9605-6FA2D7408EFC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{99FB0F60-AEEC-4059-9605-6FA2D7408EFC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{99FB0F60-AEEC-4059-9605-6FA2D7408EFC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{99FB0F60-AEEC-4059-9605-6FA2D7408EFC}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{B3B30663-625D-452F-A3D7-57B381D021F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{B3B30663-625D-452F-A3D7-57B381D021F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{B3B30663-625D-452F-A3D7-57B381D021F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{B3B30663-625D-452F-A3D7-57B381D021F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{103472C3-834D-4561-9395-6FEBFEB165AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{103472C3-834D-4561-9395-6FEBFEB165AC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{103472C3-834D-4561-9395-6FEBFEB165AC}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{103472C3-834D-4561-9395-6FEBFEB165AC}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{58D6AEF3-5837-4601-A5D3-C6F11AC313B0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{58D6AEF3-5837-4601-A5D3-C6F11AC313B0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{58D6AEF3-5837-4601-A5D3-C6F11AC313B0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{58D6AEF3-5837-4601-A5D3-C6F11AC313B0}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
|
||||||
{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
|
||||||
{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
|
||||||
{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7}.Release|Any CPU.Build.0 = Release|Any CPU
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
|
||||||
HideSolutionNode = FALSE
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(NestedProjects) = preSolution
|
|
||||||
{8BD82FAE-47F7-41FD-A862-892C8AFF8C66} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{99FB0F60-AEEC-4059-9605-6FA2D7408EFC} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{B3B30663-625D-452F-A3D7-57B381D021F6} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{AD6116CD-1DC1-4FED-A2D5-0E72B553DD32} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{103472C3-834D-4561-9395-6FEBFEB165AC} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{58D6AEF3-5837-4601-A5D3-C6F11AC313B0} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
{58009F12-B2D9-4F1C-954B-A7CFEA17DBC7} = {451BDCAA-EC43-475E-8887-0F80EA605A73}
|
|
||||||
EndGlobalSection
|
|
||||||
GlobalSection(ExtensibilityGlobals) = postSolution
|
|
||||||
SolutionGuid = {0B742DE0-D6AF-4033-9605-863C32A7FFD8}
|
|
||||||
EndGlobalSection
|
|
||||||
EndGlobal
|
|
|
@ -1,74 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<configuration>
|
|
||||||
<startup>
|
|
||||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
|
||||||
</startup>
|
|
||||||
<runtime>
|
|
||||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-12.0.0.0" newVersion="12.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Console" 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.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.2.0.0" newVersion="4.2.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Win32.Registry" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.1.3.0" newVersion="4.1.3.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Extensions.DependencyInjection.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-3.1.6.0" newVersion="3.1.6.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Collections.Immutable" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-1.2.5.0" newVersion="1.2.5.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Linq.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
<dependentAssembly>
|
|
||||||
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
|
||||||
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
|
|
||||||
</dependentAssembly>
|
|
||||||
</assemblyBinding>
|
|
||||||
</runtime>
|
|
||||||
</configuration>
|
|
|
@ -1,28 +0,0 @@
|
||||||
using System;
|
|
||||||
using System.Windows.Forms;
|
|
||||||
using DML.Application.Classes;
|
|
||||||
using Nito.AsyncEx;
|
|
||||||
|
|
||||||
namespace Discord_Media_Loader
|
|
||||||
{
|
|
||||||
internal static class Program
|
|
||||||
{
|
|
||||||
[STAThread]
|
|
||||||
private static void Main(string[] paramStrings)
|
|
||||||
{
|
|
||||||
Application.EnableVisualStyles();
|
|
||||||
Application.SetCompatibleTextRenderingDefault(false);
|
|
||||||
|
|
||||||
var splashScreen = new FrmSplash();
|
|
||||||
if (splashScreen.ShowDialog() == DialogResult.OK)
|
|
||||||
DoLaunch(paramStrings);
|
|
||||||
else
|
|
||||||
Application.Restart();
|
|
||||||
}
|
|
||||||
|
|
||||||
private static void DoLaunch(string[] paramStrings)
|
|
||||||
{
|
|
||||||
AsyncContext.Run(() => Core.Run(paramStrings));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
26
Discord Media Loader/Properties/Settings.Designer.cs
generated
|
@ -1,26 +0,0 @@
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
// <auto-generated>
|
|
||||||
// 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.
|
|
||||||
// </auto-generated>
|
|
||||||
//------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
namespace Discord_Media_Loader.Properties {
|
|
||||||
|
|
||||||
|
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")]
|
|
||||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
|
||||||
|
|
||||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
|
||||||
|
|
||||||
public static Settings Default {
|
|
||||||
get {
|
|
||||||
return defaultInstance;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<packages>
|
|
||||||
<package id="Microsoft.Bcl.AsyncInterfaces" version="6.0.0" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.NETCore.Platforms" version="5.0.1" targetFramework="net461" />
|
|
||||||
<package id="Microsoft.Win32.Primitives" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="NETStandard.Library" version="2.0.3" targetFramework="net461" />
|
|
||||||
<package id="Newtonsoft.Json" version="12.0.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx.Context" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx.Coordination" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx.Interop.WaitHandles" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx.Oop" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.AsyncEx.Tasks" version="5.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.Cancellation" version="1.1.2" targetFramework="net461" />
|
|
||||||
<package id="Nito.Collections.Deque" version="1.1.1" targetFramework="net461" />
|
|
||||||
<package id="Nito.Disposables" version="2.2.1" targetFramework="net461" />
|
|
||||||
<package id="Octokit" version="0.50.0" targetFramework="net461" />
|
|
||||||
<package id="System.Buffers" version="4.5.1" targetFramework="net461" />
|
|
||||||
<package id="System.Collections.Immutable" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Linq" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Memory" version="4.5.4" targetFramework="net461" />
|
|
||||||
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net461" />
|
|
||||||
<package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net461" />
|
|
||||||
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net461" />
|
|
||||||
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net461" />
|
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net461" />
|
|
||||||
</packages>
|
|
|
@ -4,9 +4,7 @@
|
||||||
|
|
||||||
*Discord Media Loader* is a small tool for downloading all attachments of *Discord* servers.
|
*Discord Media Loader* is a small tool for downloading all attachments of *Discord* servers.
|
||||||
|
|
||||||
**[Downloadlatest release](https://github.com/Serraniel/DiscordMediaLoader/releases)** or install with *winget*: `winget install -e --id Serraniel.DiscordMediaLoader`.
|
**[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)
|
||||||
|
|
||||||
**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
|
## License
|
||||||
|
|
|
@ -1,216 +0,0 @@
|
||||||
; Script generated by the Inno Setup Script Wizard.
|
|
||||||
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
|
|
||||||
|
|
||||||
#define MyAppName "Discord Media Loader"
|
|
||||||
#define MyAppVersion "1.5.3.0"
|
|
||||||
#define MyAppPublisher "Serraniel"
|
|
||||||
#define MyAppURL "https://github.com/Serraniel/DiscordMediaLoader"
|
|
||||||
#define MyAppExeName "Discord Media Loader.exe"
|
|
||||||
|
|
||||||
[Setup]
|
|
||||||
; NOTE: The value of AppId uniquely identifies this application. Do not use the same AppId value in installers for other applications.
|
|
||||||
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
|
|
||||||
AppId={{CC50DF25-9ECA-4F99-8DFF-9A0FB0A63DA3}
|
|
||||||
AppName={#MyAppName}
|
|
||||||
AppVersion={#MyAppVersion}
|
|
||||||
;AppVerName={#MyAppName} {#MyAppVersion}
|
|
||||||
AppPublisher={#MyAppPublisher}
|
|
||||||
AppPublisherURL={#MyAppURL}
|
|
||||||
AppSupportURL={#MyAppURL}
|
|
||||||
AppUpdatesURL={#MyAppURL}
|
|
||||||
DefaultDirName={localappdata}\Programs\{#MyAppName}
|
|
||||||
DisableProgramGroupPage=yes
|
|
||||||
; The [Icons] "quicklaunchicon" entry uses {userappdata} but its [Tasks] entry has a proper IsAdminInstallMode Check.
|
|
||||||
UsedUserAreasWarning=no
|
|
||||||
LicenseFile=C:\Users\Daniel\Documents\Projects\Discord Media Loader\LICENSE
|
|
||||||
; Remove the following line to run in administrative install mode (install for all users.)
|
|
||||||
PrivilegesRequired=lowest
|
|
||||||
PrivilegesRequiredOverridesAllowed=commandline
|
|
||||||
OutputDir=C:\Users\Daniel\Documents\Projects\Discord Media Loader\install
|
|
||||||
OutputBaseFilename=Discord_Media_Loader_Setup
|
|
||||||
Compression=lzma
|
|
||||||
WizardStyle=modern
|
|
||||||
|
|
||||||
[Languages]
|
|
||||||
Name: "english"; MessagesFile: "compiler:Default.isl"
|
|
||||||
|
|
||||||
[Tasks]
|
|
||||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
|
||||||
Name: "quicklaunchicon"; Description: "{cm:CreateQuickLaunchIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked; OnlyBelowVersion: 6.1; Check: not IsAdminInstallMode
|
|
||||||
|
|
||||||
[Files]
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.Application.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.Application.dll.config"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.Application.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.exe"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.exe.config"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord Media Loader.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Core.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Core.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Core.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Rest.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Rest.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.Rest.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.WebSocket.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.WebSocket.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Discord.Net.WebSocket.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\DML.Client.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\DML.Client.pdb"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\LiteDB.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\LiteDB.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Bcl.AsyncInterfaces.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Bcl.AsyncInterfaces.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Extensions.DependencyInjection.Abstractions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Extensions.DependencyInjection.Abstractions.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Extensions.DependencyInjection.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Extensions.DependencyInjection.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Win32.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Win32.Registry.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Microsoft.Win32.Registry.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\netstandard.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Newtonsoft.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Newtonsoft.Json.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Context.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Context.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Coordination.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Coordination.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Interop.WaitHandles.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Interop.WaitHandles.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Oop.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Oop.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Tasks.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.AsyncEx.Tasks.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Cancellation.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Cancellation.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Collections.Deque.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Collections.Deque.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Disposables.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Nito.Disposables.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Octokit.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\Octokit.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\SharpRaven.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\SweetLib.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\SweetLib.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.AppContext.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Buffers.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Buffers.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.Concurrent.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.Immutable.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.Immutable.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.NonGeneric.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Collections.Specialized.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ComponentModel.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ComponentModel.EventBasedAsync.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ComponentModel.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ComponentModel.TypeConverter.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Console.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Data.Common.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.Contracts.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.Debug.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.DiagnosticSource.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.DiagnosticSource.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.FileVersionInfo.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.Process.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.StackTrace.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.TextWriterTraceListener.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.Tools.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.TraceSource.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Diagnostics.Tracing.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Drawing.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Dynamic.Runtime.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Globalization.Calendars.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Globalization.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Globalization.Extensions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.Compression.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.Compression.ZipFile.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.FileSystem.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.FileSystem.DriveInfo.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.FileSystem.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.FileSystem.Watcher.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.IsolatedStorage.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.MemoryMappedFiles.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.Pipes.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.IO.UnmanagedMemoryStream.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.Async.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.Async.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.Expressions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.Parallel.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Linq.Queryable.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Memory.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Memory.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Http.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.NameResolution.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.NetworkInformation.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Ping.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Requests.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Security.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.Sockets.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.WebHeaderCollection.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.WebSockets.Client.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Net.WebSockets.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Numerics.Vectors.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Numerics.Vectors.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ObjectModel.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Reflection.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Reflection.Extensions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Reflection.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Resources.Reader.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Resources.ResourceManager.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Resources.Writer.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.CompilerServices.Unsafe.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.CompilerServices.Unsafe.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.CompilerServices.VisualC.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Extensions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Handles.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.InteropServices.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.InteropServices.RuntimeInformation.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Numerics.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Serialization.Formatters.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Serialization.Json.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Serialization.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Runtime.Serialization.Xml.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Claims.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Cryptography.Algorithms.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Cryptography.Csp.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Cryptography.Encoding.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Cryptography.Primitives.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Cryptography.X509Certificates.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.Principal.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Security.SecureString.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Text.Encoding.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Text.Encoding.Extensions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Text.RegularExpressions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Overlapped.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Tasks.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Tasks.Extensions.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Tasks.Extensions.xml"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Tasks.Parallel.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Thread.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.ThreadPool.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Threading.Timer.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.ValueTuple.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.ReaderWriter.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.XDocument.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.XmlDocument.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.XmlSerializer.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.XPath.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
Source: "C:\Users\Daniel\Documents\Projects\Discord Media Loader\Discord Media Loader\bin\Release\System.Xml.XPath.XDocument.dll"; DestDir: "{app}"; Flags: ignoreversion
|
|
||||||
; NOTE: Don't use "Flags: ignoreversion" on any shared system files
|
|
||||||
|
|
||||||
[Icons]
|
|
||||||
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
|
|
||||||
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon
|
|
||||||
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: quicklaunchicon
|
|
||||||
|
|
||||||
[Run]
|
|
||||||
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
iscc install.iss /O+ /O. /Qp
|
|
||||||
pause
|
|
|
@ -1,21 +0,0 @@
|
||||||
Id: Serraniel.DiscordMediaLoader
|
|
||||||
Publisher: Serraniel
|
|
||||||
Name: Discord Media Loader
|
|
||||||
Version: 1.3.0.0
|
|
||||||
License: Copyright (C) 2016-2020 Serraniel - Apache License 2.0
|
|
||||||
InstallerType: NULLSOFT
|
|
||||||
LicenseUrl: https://github.com/Serraniel/DiscordMediaLoader/blob/master/LICENSE
|
|
||||||
AppMoniker: Discord Media Loader
|
|
||||||
Tags: DiscordMediaLoader,Discord,DML
|
|
||||||
Description: Tool to automatically download media files from Discord Servers.
|
|
||||||
Homepage: https://github.com/Serraniel/DiscordMediaLoader
|
|
||||||
Installers:
|
|
||||||
- Arch: x86
|
|
||||||
InstallerType: Inno
|
|
||||||
Url: https://github.com/Serraniel/DiscordMediaLoader/releases/download/v1.3.0.0/Discord_Media_Loader_Setup.exe
|
|
||||||
Sha256: 0A0FE038F655E9BC6343A9A6F43F2AECA1EF90EE7CE61DB0D822CC3C76908855
|
|
||||||
Language: EN
|
|
||||||
Switches:
|
|
||||||
Silent: /VERYSILENT
|
|
||||||
SilentWithProgress: /SILENT
|
|
||||||
# Generated by https://github.com/ptorr-msft/WinGetYamlGenerator
|
|
|
@ -1,21 +0,0 @@
|
||||||
Id: Serraniel.DiscordMediaLoader
|
|
||||||
Publisher: Serraniel
|
|
||||||
Name: Discord Media Loader
|
|
||||||
Version: 1.4.0.0
|
|
||||||
License: Copyright (C) 2016-2020 Serraniel - Apache License 2.0
|
|
||||||
InstallerType: NULLSOFT
|
|
||||||
LicenseUrl: https://github.com/Serraniel/DiscordMediaLoader/blob/master/LICENSE
|
|
||||||
AppMoniker: Discord Media Loader
|
|
||||||
Tags: DiscordMediaLoader,Discord,DML
|
|
||||||
Description: Tool to automatically download media files from Discord Servers.
|
|
||||||
Homepage: https://github.com/Serraniel/DiscordMediaLoader
|
|
||||||
Installers:
|
|
||||||
- Arch: x86
|
|
||||||
InstallerType: Inno
|
|
||||||
Url: https://github.com/Serraniel/DiscordMediaLoader/releases/download/v1.4.0.0/Discord_Media_Loader_Setup.exe
|
|
||||||
Sha256: a48ad932d176976209797e7cb6aaaafce90811d97c06b25491323312ee849b59
|
|
||||||
Language: EN
|
|
||||||
Switches:
|
|
||||||
Silent: /VERYSILENT
|
|
||||||
SilentWithProgress: /SILENT
|
|
||||||
# Generated by https://github.com/ptorr-msft/WinGetYamlGenerator
|
|
|
@ -1 +0,0 @@
|
||||||
Subproject commit 373318d3eae295f789c11a24948d86690db91a0f
|
|
11
src/DML.Client/DML.Client.csproj
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>netstandard1.4</TargetFramework>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="Discord.Net" Version="1.0.2" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
40
src/DML.Client/DMLClient.cs
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Client".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Client" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited DMLClient.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using Discord;
|
||||||
|
using Discord.WebSocket;
|
||||||
|
|
||||||
|
namespace DML.Client
|
||||||
|
{
|
||||||
|
public static class DMLClient
|
||||||
|
{
|
||||||
|
public static DiscordSocketClient Client { get; set; } = new DiscordSocketClient(new DiscordSocketConfig(){DefaultRetryMode = RetryMode.RetryRatelimit|RetryMode.RetryTimeouts});
|
||||||
|
|
||||||
|
public static async Task<bool> Login(string token)
|
||||||
|
{
|
||||||
|
await Client.LoginAsync(TokenType.User, token);
|
||||||
|
await Client.StartAsync();
|
||||||
|
await Task.Delay(1000);
|
||||||
|
|
||||||
|
while (Client.LoginState == LoginState.LoggingIn || Client.ConnectionState == ConnectionState.Connecting)
|
||||||
|
{
|
||||||
|
// wait
|
||||||
|
}
|
||||||
|
|
||||||
|
return Client.LoginState == LoginState.LoggedIn && Client.ConnectionState == ConnectionState.Connected;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,44 +1,71 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
using System.Collections.Generic;
|
/**********************************************************************************************
|
||||||
using System.Linq;
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
using System.Threading.Tasks;
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Job.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
using Discord;
|
using Discord;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using DML.Application.Classes;
|
using DML.Application.Classes;
|
||||||
using DML.Client;
|
using DML.Client;
|
||||||
using SweetLib.Utils.Extensions;
|
using SweetLib.Utils.Extensions;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using static SweetLib.Utils.Logger.Logger;
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
namespace DML.AppCore.Classes
|
namespace DML.AppCore.Classes
|
||||||
{
|
{
|
||||||
|
internal enum JobState
|
||||||
|
{
|
||||||
|
Idle,
|
||||||
|
Scanning,
|
||||||
|
Listening
|
||||||
|
}
|
||||||
|
|
||||||
public class Job
|
public class Job
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
public ulong GuildId { get; set; }
|
public ulong GuildId { get; set; }
|
||||||
public ulong ChannelId { get; set; }
|
public ulong ChannelId { get; set; }
|
||||||
public double KnownTimestamp { get; set; } = 0;
|
public ulong LastMessageId { get; set; } = 0;
|
||||||
private double StopTimestamp { get; set; }
|
|
||||||
private bool IsValid { get; set; } = true;
|
private bool IsValid { get; set; } = true;
|
||||||
|
internal JobState State { get; set; } = JobState.Idle;
|
||||||
|
|
||||||
|
|
||||||
internal void Store()
|
internal void Store()
|
||||||
{
|
{
|
||||||
Debug("Storing job to database...");
|
Debug("Storing job to database...");
|
||||||
Trace("Getting jobs collection...");
|
Trace("Getting jobs collection...");
|
||||||
var jobDb = Core.Database.GetCollection<Job>("jobs");
|
var jobDb = Application.Core.Core.Database.GetCollection<Job>("jobs");
|
||||||
|
|
||||||
Trace("Adding new value...");
|
Trace("Adding new value...");
|
||||||
|
|
||||||
if (jobDb.Find(x => x.ChannelId == ChannelId && x.GuildId == GuildId).Any())
|
if (jobDb.Find(x => x.ChannelId == ChannelId && x.GuildId == GuildId).Any())
|
||||||
|
{
|
||||||
jobDb.Update(this);
|
jobDb.Update(this);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
jobDb.Insert(this);
|
jobDb.Insert(this);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void Delete()
|
public void Delete()
|
||||||
{
|
{
|
||||||
Debug("Deleting job from database...");
|
Debug("Deleting job from database...");
|
||||||
Trace("Getting jobs collection...");
|
Trace("Getting jobs collection...");
|
||||||
var jobDb = Core.Database.GetCollection<Job>("jobs");
|
var jobDb = Application.Core.Core.Database.GetCollection<Job>("jobs");
|
||||||
|
|
||||||
Trace("Deleting value...");
|
Trace("Deleting value...");
|
||||||
jobDb.Delete(Id);
|
jobDb.Delete(Id);
|
||||||
|
@ -56,94 +83,68 @@ namespace DML.AppCore.Classes
|
||||||
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
internal async Task<List<IMessage>> Scan()
|
/// <summary>
|
||||||
|
/// Performs scanning task of the job.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Returns true if the newest messages have been scanned.</returns>
|
||||||
|
internal async Task<bool> Scan()
|
||||||
{
|
{
|
||||||
Debug($"Starting scan of guild {GuildId} channel {ChannelId}...");
|
Debug($"Starting scan of guild {GuildId} channel {ChannelId}...");
|
||||||
var result = new List<IMessage>();
|
var result = new List<IMessage>();
|
||||||
|
const ushort limit = 100;
|
||||||
|
State = JobState.Scanning;
|
||||||
|
|
||||||
var limit = 100;
|
|
||||||
var lastId = ulong.MaxValue;
|
|
||||||
var isFirst = true;
|
|
||||||
var finished = false;
|
var finished = false;
|
||||||
|
var scanStartTimeStamp = DateTime.UtcNow;
|
||||||
|
|
||||||
var guild = FindServerById(GuildId);
|
var guild = FindServerById(GuildId);
|
||||||
var channel = FindChannelById(guild, ChannelId);
|
var channel = FindChannelById(guild, ChannelId);
|
||||||
|
|
||||||
Debug("Checking channel access");
|
Debug("Checking channel access");
|
||||||
//channel.GetUser(channel.Guild.CurrentUser.Id);
|
|
||||||
if (channel.GetUser(channel.Guild.CurrentUser.Id) == null)
|
if (channel.GetUser(channel.Guild.CurrentUser.Id) == null)
|
||||||
{
|
{
|
||||||
Info("Skipping channel without access");
|
Info("Skipping channel without access");
|
||||||
return result;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Math.Abs(StopTimestamp) < 0.4)
|
|
||||||
StopTimestamp = KnownTimestamp;
|
|
||||||
Trace("Initialized scanning parameters.");
|
Trace("Initialized scanning parameters.");
|
||||||
|
|
||||||
while (!finished)
|
while (!finished)
|
||||||
{
|
{
|
||||||
Trace("Entering scanning loop...");
|
Trace("Entering scanning loop...");
|
||||||
var messages = new List<IMessage>();
|
var messages = new List<IMessage>();
|
||||||
|
|
||||||
Trace($"Downloading next {limit} messages...");
|
Trace($"Downloading next {limit} messages...");
|
||||||
if (isFirst)
|
messages.AddRange((await channel.GetMessagesAsync(LastMessageId, Direction.After, limit).ToArray()).SelectMany(collection => collection));
|
||||||
{
|
|
||||||
//messages = await channel.GetMessagesAsync(limit).ToArray() as SocketMessage[];
|
|
||||||
var realMessages = await channel.GetMessagesAsync(limit).ToArrayAsync();
|
|
||||||
|
|
||||||
foreach (var realMessageArray in realMessages)
|
|
||||||
foreach (var realMessage in realMessageArray)
|
|
||||||
messages.Add(realMessage);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var realMessages = await channel.GetMessagesAsync(lastId, Direction.Before, limit).ToArrayAsync();
|
|
||||||
|
|
||||||
foreach (var realMessageArray in realMessages)
|
|
||||||
foreach (var realMessage in realMessageArray)
|
|
||||||
messages.Add(realMessage);
|
|
||||||
|
|
||||||
//messages = await channel.GetMessagesAsync(lastId, Direction.Before, limit).ToArray() as SocketMessage[];
|
|
||||||
}
|
|
||||||
|
|
||||||
Trace($"Downloaded {messages.Count} messages.");
|
|
||||||
|
|
||||||
isFirst = false;
|
|
||||||
|
|
||||||
|
Debug($"Downloaded {messages.Count} messages.");
|
||||||
|
Trace("Iterating messages...");
|
||||||
foreach (var m in messages)
|
foreach (var m in messages)
|
||||||
{
|
{
|
||||||
if (!IsValid)
|
if (!IsValid)
|
||||||
return null;
|
|
||||||
|
|
||||||
Core.Scheduler.MessagesScanned++;
|
|
||||||
|
|
||||||
Debug($"Processing message {m.Id}");
|
|
||||||
if (m.Id < lastId)
|
|
||||||
{
|
{
|
||||||
Trace($"Updating lastId ({lastId}) to {m.Id}");
|
return false;
|
||||||
lastId = m.Id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m.CreatedAt.UtcDateTime.ToUnixTimeStamp() <= StopTimestamp)
|
Application.Core.Core.Scheduler.MessagesScanned++;
|
||||||
|
|
||||||
|
Debug($"Processing message {m.Id}");
|
||||||
|
if (m.Id > LastMessageId)
|
||||||
{
|
{
|
||||||
Debug("Found a message with a known timestamp...Stopping scan.");
|
Trace($"Updating lastId ({LastMessageId}) to {m.Id}");
|
||||||
finished = true;
|
LastMessageId = m.Id;
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Trace($"Message {m.Id} has {m.Attachments.Count} attachments.");
|
Trace($"Message {m.Id} has {m.Attachments.Count} attachments.");
|
||||||
if (m.Attachments.Count > 0)
|
if (m.Attachments.Count > 0)
|
||||||
{
|
{
|
||||||
result.Add(m);
|
result.Add(m);
|
||||||
Core.Scheduler.TotalAttachments += (ulong) m.Attachments.Count;
|
Application.Core.Core.Scheduler.TotalAttachments += (ulong)m.Attachments.Count;
|
||||||
Trace($"Added message {m.Id}");
|
Trace($"Added message {m.Id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug($"Finished message {m.Id}");
|
Debug($"Finished message {m.Id}");
|
||||||
}
|
}
|
||||||
|
|
||||||
finished = finished || messages.Count < limit;
|
finished = messages.Count < limit;
|
||||||
}
|
}
|
||||||
|
|
||||||
Trace($"Downloaded all messages for guild {GuildId} channel {ChannelId}.");
|
Trace($"Downloaded all messages for guild {GuildId} channel {ChannelId}.");
|
||||||
|
@ -151,15 +152,27 @@ namespace DML.AppCore.Classes
|
||||||
Trace("Sorting messages...");
|
Trace("Sorting messages...");
|
||||||
result.Sort((a, b) => DateTime.Compare(a.CreatedAt.UtcDateTime, b.CreatedAt.UtcDateTime));
|
result.Sort((a, b) => DateTime.Compare(a.CreatedAt.UtcDateTime, b.CreatedAt.UtcDateTime));
|
||||||
|
|
||||||
if (result.Count > 0)
|
foreach (var message in result)
|
||||||
{
|
{
|
||||||
Trace("Updating StopTimestamp for next scan...");
|
foreach (var attachment in message.Attachments)
|
||||||
StopTimestamp = result[result.Count - 1].CreatedAt.UtcDateTime.ToUnixTimeStamp();
|
{
|
||||||
|
var mediaData = new MediaData
|
||||||
|
{
|
||||||
|
Id = attachment.Id,
|
||||||
|
GuildId = (message.Channel as SocketTextChannel)?.Guild?.Id ?? 0,
|
||||||
|
ChannelId = message.Channel.Id,
|
||||||
|
DownloadSource = attachment.Url,
|
||||||
|
Filename = attachment.Filename,
|
||||||
|
TimeStamp = message.CreatedAt.UtcDateTime.ToUnixTimeStamp(),
|
||||||
|
FileSize = attachment.Size
|
||||||
|
};
|
||||||
|
mediaData.Store();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Debug($"Fisnished scan of guild {GuildId} channel {ChannelId}.");
|
|
||||||
|
|
||||||
return result;
|
Debug($"Fisnished scan of guild {GuildId} channel {ChannelId}.");
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Stop()
|
public void Stop()
|
||||||
|
@ -171,7 +184,7 @@ namespace DML.AppCore.Classes
|
||||||
{
|
{
|
||||||
Debug("Restoring jobs...");
|
Debug("Restoring jobs...");
|
||||||
Trace("Getting jobs collection...");
|
Trace("Getting jobs collection...");
|
||||||
var jobDb = Core.Database.GetCollection<Job>("jobs");
|
var jobDb = Application.Core.Core.Database.GetCollection<Job>("jobs");
|
||||||
|
|
||||||
Trace("Creating new empty job list");
|
Trace("Creating new empty job list");
|
||||||
return jobDb.FindAll();
|
return jobDb.FindAll();
|
172
src/Discord Media Loader.Application/Classes/JobScheduler.cs
Normal file
|
@ -0,0 +1,172 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited JobScheduler.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using Discord;
|
||||||
|
using Discord.WebSocket;
|
||||||
|
using DML.AppCore.Classes;
|
||||||
|
using SweetLib.Utils.Extensions;
|
||||||
|
using SweetLib.Utils.Logger;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes
|
||||||
|
{
|
||||||
|
public class JobScheduler
|
||||||
|
{
|
||||||
|
private ulong messageScanned = 0;
|
||||||
|
private ulong totalAttachments = 0;
|
||||||
|
private ulong attachmentsDownloaded = 0;
|
||||||
|
|
||||||
|
private bool Run { get; set; } = false;
|
||||||
|
public List<Job> JobList { get; set; } = new List<Job>();
|
||||||
|
public Dictionary<int, Queue<IMessage>> RunningJobs { get; } = new Dictionary<int, Queue<IMessage>>();
|
||||||
|
internal int RunningThreads { get; set; } = 0;
|
||||||
|
internal Task SchedulerTask { get; private set; }
|
||||||
|
internal Task DownloadTask { get; private set; }
|
||||||
|
|
||||||
|
internal ulong MessagesScanned
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
return messageScanned;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
messageScanned = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal ulong TotalAttachments
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
return totalAttachments;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
totalAttachments = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal ulong AttachmentsDownloaded
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
return attachmentsDownloaded;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
lock (this)
|
||||||
|
{
|
||||||
|
attachmentsDownloaded = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void StartScheduler()
|
||||||
|
{
|
||||||
|
Logger.Info("Starting scheduler jobs");
|
||||||
|
SchedulerTask = Task.Run(() =>
|
||||||
|
{
|
||||||
|
PerformSchedulerTask();
|
||||||
|
});
|
||||||
|
|
||||||
|
DownloadTask = Task.Run(() =>
|
||||||
|
{
|
||||||
|
PerformDownloads();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Stop()
|
||||||
|
{
|
||||||
|
Run = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void PerformSchedulerTask()
|
||||||
|
{
|
||||||
|
Logger.Trace("SchedulerTask started");
|
||||||
|
foreach (var job in JobList)
|
||||||
|
{
|
||||||
|
if (job.State == JobState.Idle)
|
||||||
|
{
|
||||||
|
// scan all old messages first
|
||||||
|
Logger.Debug($"Starting scan for job {job.Id}");
|
||||||
|
await job.Scan();
|
||||||
|
job.State = JobState.Listening; // set to listening now
|
||||||
|
Logger.Debug($"Scan for job {job.Id} finished");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Logger.Trace("All jobs have been scanned");
|
||||||
|
}
|
||||||
|
|
||||||
|
private async void PerformDownloads()
|
||||||
|
{
|
||||||
|
Logger.Trace("SchedulerTask started");
|
||||||
|
// TODO
|
||||||
|
}
|
||||||
|
|
||||||
|
public Task HandleMessageReceived(SocketMessage msg)
|
||||||
|
{
|
||||||
|
Logger.Trace($"Received message: Id: {msg.Id}, Channel: {msg.Channel.Id}, Attachments: {msg.Attachments.Count}");
|
||||||
|
|
||||||
|
if (msg.Attachments.Count > 0)
|
||||||
|
{
|
||||||
|
foreach (var job in JobList)
|
||||||
|
{
|
||||||
|
if (job.State != JobState.Listening || job.ChannelId != msg.Channel.Id)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
Logger.Debug($"Job found [{job.Id}]");
|
||||||
|
foreach (var attachment in msg.Attachments)
|
||||||
|
{
|
||||||
|
var mediaData = new MediaData
|
||||||
|
{
|
||||||
|
Id = attachment.Id,
|
||||||
|
GuildId = (msg.Channel as SocketTextChannel)?.Guild?.Id ?? 0,
|
||||||
|
ChannelId = msg.Channel.Id,
|
||||||
|
DownloadSource = attachment.Url,
|
||||||
|
Filename = attachment.Filename,
|
||||||
|
TimeStamp = msg.CreatedAt.UtcDateTime.ToUnixTimeStamp(),
|
||||||
|
FileSize = attachment.Size
|
||||||
|
};
|
||||||
|
mediaData.Store();
|
||||||
|
}
|
||||||
|
|
||||||
|
job.LastMessageId = msg.Id;
|
||||||
|
job.Store();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return Task.CompletedTask;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
112
src/Discord Media Loader.Application/Classes/MediaData.cs
Normal file
|
@ -0,0 +1,112 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited MediaData.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using DML.Client;
|
||||||
|
using SweetLib.Utils.Logger;
|
||||||
|
using System;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes
|
||||||
|
{
|
||||||
|
public class MediaData
|
||||||
|
{
|
||||||
|
public ulong Id { get; set; }
|
||||||
|
public string DownloadSource { get; set; }
|
||||||
|
public ulong GuildId { get; set; }
|
||||||
|
public ulong ChannelId { get; set; }
|
||||||
|
public double TimeStamp { get; set; }
|
||||||
|
public string Filename { get; set; }
|
||||||
|
public int FileSize { get; set; }
|
||||||
|
|
||||||
|
internal void Store()
|
||||||
|
{
|
||||||
|
Debug("Storing job to database...");
|
||||||
|
Trace("Getting jobs collection...");
|
||||||
|
var db = Core.Core.Database.GetCollection<MediaData>("media");
|
||||||
|
|
||||||
|
Trace("Adding new value...");
|
||||||
|
|
||||||
|
if (db.Find(x => x.Id == Id).Any())
|
||||||
|
{
|
||||||
|
db.Update(this);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
db.Insert(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal void Delete()
|
||||||
|
{
|
||||||
|
Debug("Deleting job from database...");
|
||||||
|
Trace("Getting jobs collection...");
|
||||||
|
var db = Core.Core.Database.GetCollection<MediaData>("media");
|
||||||
|
|
||||||
|
Trace("Deleting value...");
|
||||||
|
db.Delete(Id);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal async Task Download()
|
||||||
|
{
|
||||||
|
Trace("Beginning attachment download...");
|
||||||
|
|
||||||
|
Debug("Building filename...");
|
||||||
|
var fileName = Path.Combine(Core.Core.Settings.OperatingFolder, Core.Core.Settings.FileNameScheme);
|
||||||
|
|
||||||
|
Debug($"Base filename: {fileName}");
|
||||||
|
|
||||||
|
Trace("Determining if extension is required");
|
||||||
|
var extensionRequired = !fileName.EndsWith("%name%");
|
||||||
|
Trace($"Extension required: {extensionRequired}");
|
||||||
|
|
||||||
|
Trace("Replacing filename placeholders...");
|
||||||
|
var guildName = DMLClient.Client.GetGuild(GuildId)?.Name ?? GuildId.ToString();
|
||||||
|
var channelName = DMLClient.Client.GetGuild(GuildId)?.GetChannel(ChannelId)?.Name ?? ChannelId.ToString();
|
||||||
|
|
||||||
|
fileName =
|
||||||
|
fileName.Replace("%guild%", guildName)
|
||||||
|
.Replace("%channel%", channelName)
|
||||||
|
.Replace("%timestamp%", TimeStamp.ToString("####"))
|
||||||
|
.Replace("%name%", Filename)
|
||||||
|
.Replace("%id%", Id.ToString());
|
||||||
|
|
||||||
|
Trace("Adding extension if required");
|
||||||
|
if (extensionRequired)
|
||||||
|
{
|
||||||
|
fileName += Path.GetExtension(Filename);
|
||||||
|
}
|
||||||
|
|
||||||
|
Debug($"Final filename: {fileName}");
|
||||||
|
|
||||||
|
if (File.Exists(fileName) && new FileInfo(fileName).Length == FileSize)
|
||||||
|
{
|
||||||
|
Logger.Debug($"{fileName} already existing with its estimated size. Skipping...");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var wc = new WebClient();
|
||||||
|
Logger.Debug($"Starting downloading of attachment {Id}...");
|
||||||
|
wc.DownloadFile(new Uri(DownloadSource), fileName);
|
||||||
|
Logger.Debug($"Downloaded attachment {Id}.");
|
||||||
|
|
||||||
|
|
||||||
|
Core.Core.Scheduler.AttachmentsDownloaded++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited DiscordRpc.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes.RPC
|
||||||
|
{
|
||||||
|
// https://github.com/discordapp/discord-rpc/blob/master/examples/button-clicker/Assets/DiscordRpc.cs
|
||||||
|
// Give that man a cookie ^.^
|
||||||
|
|
||||||
|
public class DiscordRpc
|
||||||
|
{
|
||||||
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
|
public delegate void ReadyCallback();
|
||||||
|
|
||||||
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
|
public delegate void DisconnectedCallback(int errorCode, string message);
|
||||||
|
|
||||||
|
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
|
||||||
|
public delegate void ErrorCallback(int errorCode, string message);
|
||||||
|
|
||||||
|
public struct EventHandlers
|
||||||
|
{
|
||||||
|
public ReadyCallback readyCallback;
|
||||||
|
public DisconnectedCallback disconnectedCallback;
|
||||||
|
public ErrorCallback errorCallback;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Values explanation and example: https://discordapp.com/developers/docs/rich-presence/how-to#updating-presence-update-presence-payload-fields
|
||||||
|
[System.Serializable]
|
||||||
|
public struct RichPresence
|
||||||
|
{
|
||||||
|
public string state; /* max 128 bytes */
|
||||||
|
public string details; /* max 128 bytes */
|
||||||
|
public long startTimestamp;
|
||||||
|
public long endTimestamp;
|
||||||
|
public string largeImageKey; /* max 32 bytes */
|
||||||
|
public string largeImageText; /* max 128 bytes */
|
||||||
|
public string smallImageKey; /* max 32 bytes */
|
||||||
|
public string smallImageText; /* max 128 bytes */
|
||||||
|
public string partyId; /* max 128 bytes */
|
||||||
|
public int partySize;
|
||||||
|
public int partyMax;
|
||||||
|
public string matchSecret; /* max 128 bytes */
|
||||||
|
public string joinSecret; /* max 128 bytes */
|
||||||
|
public string spectateSecret; /* max 128 bytes */
|
||||||
|
public bool instance;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport(RpcWrapper.Dll, EntryPoint = "Discord_Initialize", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern void Initialize(string applicationId, ref EventHandlers handlers, bool autoRegister, string optionalSteamId);
|
||||||
|
|
||||||
|
[DllImport(RpcWrapper.Dll, EntryPoint = "Discord_UpdatePresence", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern void UpdatePresence(ref RichPresence presence);
|
||||||
|
|
||||||
|
[DllImport(RpcWrapper.Dll, EntryPoint = "Discord_RunCallbacks", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern void RunCallbacks();
|
||||||
|
|
||||||
|
[DllImport(RpcWrapper.Dll, EntryPoint = "Discord_Shutdown", CallingConvention = CallingConvention.Cdecl)]
|
||||||
|
public static extern void Shutdown();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited DiscordRpcHelper.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes.RPC
|
||||||
|
{
|
||||||
|
public static class DiscordRpcHelper
|
||||||
|
{
|
||||||
|
public static long DateTimeToTimestamp(DateTime dt)
|
||||||
|
{
|
||||||
|
return (dt.Ticks - 621355968000000000) / 10000000;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited RpcWrapper.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DML.Application.Classes.RPC
|
||||||
|
{
|
||||||
|
public class RpcWrapper
|
||||||
|
{
|
||||||
|
public const string Dll = "discord-rpc-win32";
|
||||||
|
|
||||||
|
public RpcWrapper()
|
||||||
|
{
|
||||||
|
if (!File.Exists(Dll + ".dll"))
|
||||||
|
{
|
||||||
|
MessageBox.Show(
|
||||||
|
"Missing " + Dll + ".dll\n\n" +
|
||||||
|
"Grab it from the release on GitHub or from the DiscordRpcDemo/lib/ folder in the repo then put it alongside DiscordRpcDemo.exe.\n\n" +
|
||||||
|
"https://github.com/nostrenz/cshap-discord-rpc-demo"
|
||||||
|
);
|
||||||
|
|
||||||
|
System.Windows.Forms.Application.Exit();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,19 @@
|
||||||
using SweetLib.Utils.Logger;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Settings.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using SweetLib.Utils.Logger;
|
||||||
|
|
||||||
namespace DML.Application.Classes
|
namespace DML.Application.Classes
|
||||||
{
|
{
|
||||||
|
@ -16,11 +31,13 @@ namespace DML.Application.Classes
|
||||||
public bool SkipExistingFiles { get; set; } = true;
|
public bool SkipExistingFiles { get; set; } = true;
|
||||||
public int ThreadLimit { get; set; } = 50;
|
public int ThreadLimit { get; set; } = 50;
|
||||||
public bool ShowStartUpHints { get; set; } = true;
|
public bool ShowStartUpHints { get; set; } = true;
|
||||||
|
public bool RescanRequired { get; set; } = false;
|
||||||
|
public bool UseRPC { get; set; } = false;
|
||||||
|
|
||||||
public void Store()
|
public void Store()
|
||||||
{
|
{
|
||||||
Logger.Trace("Getting settings collection...");
|
Logger.Trace("Getting settings collection...");
|
||||||
var settingsDB = Core.Database.GetCollection<Settings>("settings");
|
var settingsDB = Core.Core.Database.GetCollection<Settings>("settings");
|
||||||
|
|
||||||
Logger.Debug("Storing settings to database...");
|
Logger.Debug("Storing settings to database...");
|
||||||
|
|
|
@ -1,7 +1,24 @@
|
||||||
using Discord;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Core.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using Discord;
|
||||||
using Discord.Net;
|
using Discord.Net;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using DML.AppCore.Classes;
|
using DML.AppCore.Classes;
|
||||||
|
using DML.Application.Classes;
|
||||||
|
using DML.Application.Classes.RPC;
|
||||||
using DML.Application.Dialogs;
|
using DML.Application.Dialogs;
|
||||||
using DML.Client;
|
using DML.Client;
|
||||||
using LiteDB;
|
using LiteDB;
|
||||||
|
@ -19,7 +36,7 @@ using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Logger = SweetLib.Utils.Logger.Logger;
|
using Logger = SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
namespace DML.Application.Classes
|
namespace DML.Application.Core
|
||||||
{
|
{
|
||||||
public static class Core
|
public static class Core
|
||||||
{
|
{
|
||||||
|
@ -27,11 +44,14 @@ namespace DML.Application.Classes
|
||||||
internal static LiteDatabase Database { get; set; }
|
internal static LiteDatabase Database { get; set; }
|
||||||
internal static Settings Settings { get; set; }
|
internal static Settings Settings { get; set; }
|
||||||
internal static JobScheduler Scheduler { get; } = new JobScheduler();
|
internal static JobScheduler Scheduler { get; } = new JobScheduler();
|
||||||
internal static RavenClient Raven = new RavenClient("https://0de964231669473e9098b9f6cc1d6278:79d9f2eb24034de199b2a37cc058e0f2@sentry.io/257114");
|
internal static RavenClient Raven { get; } = new RavenClient("https://0de964231669473e9098b9f6cc1d6278:79d9f2eb24034de199b2a37cc058e0f2@sentry.io/257114");
|
||||||
|
internal static bool ShuttingDown { get; private set; } = false;
|
||||||
internal static string DataDirectory
|
internal static string DataDirectory
|
||||||
=> Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Serraniel\Discord Media Loader");
|
=> Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), @"Serraniel\Discord Media Loader");
|
||||||
|
|
||||||
|
internal static DiscordRpc.RichPresence RpcPresence;
|
||||||
|
internal static DiscordRpc.EventHandlers RpcHandlers = new DiscordRpc.EventHandlers();
|
||||||
|
|
||||||
public static async Task Run(string[] paramStrings)
|
public static async Task Run(string[] paramStrings)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
@ -91,10 +111,16 @@ namespace DML.Application.Classes
|
||||||
logMemory.ArchiveFile = logFile;
|
logMemory.ArchiveFile = logFile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var databasePath = Path.Combine(DataDirectory, "config.db");
|
||||||
|
#if DEBUG
|
||||||
|
databasePath = Path.Combine(DataDirectory, "config.debug.db");
|
||||||
|
#endif
|
||||||
Logger.Debug("Loading database...");
|
Logger.Debug("Loading database...");
|
||||||
Database = new LiteDatabase(Path.Combine(DataDirectory, "config.db"));
|
Database = new LiteDatabase(databasePath);
|
||||||
Database.Log.Logging += (message) => Logger.Trace($"LiteDB: {message}");
|
Database.Log.Logging += (message) => Logger.Trace($"LiteDB: {message}");
|
||||||
|
|
||||||
|
Migrator.CheckMigrations();
|
||||||
|
|
||||||
Logger.Debug("Loading settings collection out of database...");
|
Logger.Debug("Loading settings collection out of database...");
|
||||||
var settingsDB = Database.GetCollection<Settings>("settings");
|
var settingsDB = Database.GetCollection<Settings>("settings");
|
||||||
if (settingsDB.Count() > 1)
|
if (settingsDB.Count() > 1)
|
||||||
|
@ -245,17 +271,59 @@ namespace DML.Application.Classes
|
||||||
job.Stop();
|
job.Stop();
|
||||||
job.Delete();
|
job.Delete();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Settings.RescanRequired)
|
||||||
|
{
|
||||||
|
Logger.Info("Restting timestamps");
|
||||||
|
job.LastMessageId = 0;
|
||||||
|
job.Store();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO
|
||||||
|
// Settings.RescanRequired = false;
|
||||||
|
// Settings.Store();
|
||||||
|
|
||||||
|
if (Settings.UseRPC)
|
||||||
|
{
|
||||||
|
Logger.Info("Initializing RPC client");
|
||||||
|
Logger.Trace("Registering RPC handlers");
|
||||||
|
RpcHandlers.readyCallback += RpcReadyCallback;
|
||||||
|
RpcHandlers.disconnectedCallback += RpcDisconnectedCallback;
|
||||||
|
RpcHandlers.errorCallback += RpcErrorCallback;
|
||||||
|
RpcPresence.startTimestamp = DiscordRpcHelper.DateTimeToTimestamp(DateTime.UtcNow);
|
||||||
|
|
||||||
|
Logger.Debug("Calling RPC initialize");
|
||||||
|
DiscordRpc.Initialize("430025401851707393", ref RpcHandlers, true, null);
|
||||||
|
|
||||||
|
// Do not await ;)
|
||||||
|
Task.Run(async () =>
|
||||||
|
{
|
||||||
|
while (!ShuttingDown)
|
||||||
|
{
|
||||||
|
Logger.Trace("Running RPC callbacks");
|
||||||
|
await Task.Delay(5000);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
DMLClient.Client.MessageReceived += Scheduler.HandleMessageReceived;
|
||||||
|
|
||||||
splash.Close();
|
splash.Close();
|
||||||
|
|
||||||
Logger.Info("Starting scheduler...");
|
Logger.Info("Starting scheduler...");
|
||||||
Scheduler.Start();
|
Scheduler.StartScheduler();
|
||||||
|
|
||||||
System.Windows.Forms.Application.Run(new MainForm());
|
System.Windows.Forms.Application.Run(new MainForm());
|
||||||
|
|
||||||
|
// shutting down
|
||||||
|
ShuttingDown = true;
|
||||||
|
|
||||||
Logger.Info("Stopping scheduler...");
|
Logger.Info("Stopping scheduler...");
|
||||||
Scheduler.Stop();
|
Scheduler.Stop();
|
||||||
|
|
||||||
|
Logger.Info("Shutting down RPC client");
|
||||||
|
DiscordRpc.Shutdown();
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
|
@ -285,5 +353,26 @@ namespace DML.Application.Classes
|
||||||
Logger.Trace($"Trying to find channel in {server} by id: {id}");
|
Logger.Trace($"Trying to find channel in {server} by id: {id}");
|
||||||
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static void RpcUpdatePresence()
|
||||||
|
{
|
||||||
|
Logger.Debug("Updating RPC presence");
|
||||||
|
DiscordRpc.UpdatePresence(ref RpcPresence);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RpcReadyCallback()
|
||||||
|
{
|
||||||
|
Logger.Debug("RpcReady");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RpcDisconnectedCallback(int errorCode, string message)
|
||||||
|
{
|
||||||
|
Logger.Warn($"RPC disconnect received: {errorCode} - {message}");
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void RpcErrorCallback(int errorCode, string message)
|
||||||
|
{
|
||||||
|
Logger.Error($"RPC error received: {errorCode} - {message}");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
70
src/Discord Media Loader.Application/Core/Migrator.cs
Normal file
|
@ -0,0 +1,70 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Migrator.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using DML.AppCore.Classes;
|
||||||
|
using LiteDB;
|
||||||
|
|
||||||
|
namespace DML.Application.Core
|
||||||
|
{
|
||||||
|
internal static class Migrator
|
||||||
|
{
|
||||||
|
internal static ushort Version => 1;
|
||||||
|
|
||||||
|
internal static void CheckMigrations()
|
||||||
|
{
|
||||||
|
var baseVersion = Core.Database.Engine.UserVersion;
|
||||||
|
|
||||||
|
for (var step = (ushort)(baseVersion + 1); step <= Version; step++)
|
||||||
|
{
|
||||||
|
Migrate(step);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Migrate(ushort step)
|
||||||
|
{
|
||||||
|
switch (step)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
// base database
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
foreach (var jobDoc in Core.Database.Engine.Find("jobs", Query.All()))
|
||||||
|
{
|
||||||
|
// pseudo datetime snowflake conversion https://discordapp.com/developers/docs/reference#convert-snowflake-to-datetime
|
||||||
|
var pseudoId = 0UL;
|
||||||
|
var timestamp = (ulong)jobDoc["KnownTimestamp"].AsDouble * 1000; // milliseconds have not been stored
|
||||||
|
|
||||||
|
if (timestamp > 0)
|
||||||
|
{
|
||||||
|
pseudoId = timestamp - 1420070400000 << 22;
|
||||||
|
pseudoId = pseudoId - (1000UL * 60 * 60 * 24 << 22); // substract one random day of pseudo id just in case the timestamp has errors
|
||||||
|
}
|
||||||
|
|
||||||
|
jobDoc["LastMessageId"] = Convert.ToInt64(pseudoId); // LiteDB maps (u)long to Int64
|
||||||
|
jobDoc.Remove("KnownTimestamp");
|
||||||
|
|
||||||
|
Core.Database.Engine.Update("jobs", jobDoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Core.Database.Engine.UserVersion = step;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,9 +11,6 @@
|
||||||
<AssemblyName>Discord Media Loader.Application</AssemblyName>
|
<AssemblyName>Discord Media Loader.Application</AssemblyName>
|
||||||
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<TargetFrameworkProfile />
|
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
|
@ -23,7 +20,6 @@
|
||||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<LangVersion>8</LangVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||||
<DebugType>pdbonly</DebugType>
|
<DebugType>pdbonly</DebugType>
|
||||||
|
@ -32,65 +28,63 @@
|
||||||
<DefineConstants>TRACE</DefineConstants>
|
<DefineConstants>TRACE</DefineConstants>
|
||||||
<ErrorReport>prompt</ErrorReport>
|
<ErrorReport>prompt</ErrorReport>
|
||||||
<WarningLevel>4</WarningLevel>
|
<WarningLevel>4</WarningLevel>
|
||||||
<LangVersion>8</LangVersion>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="LiteDB, Version=4.1.4.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Commands, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\LiteDB.4.1.4\lib\net40\LiteDB.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Commands.1.0.2\lib\netstandard1.1\Discord.Net.Commands.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Core, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Core.1.0.2\lib\net45\Discord.Net.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=3.1.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Rest, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.3.1.6\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Rest.1.0.2\lib\net45\Discord.Net.Rest.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Rpc, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.3.1.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Rpc.1.0.2\lib\net45\Discord.Net.Rpc.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Discord.Net.Webhook, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Discord.Net.Webhook.1.0.2\lib\netstandard1.1\Discord.Net.Webhook.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Discord.Net.WebSocket, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Discord.Net.WebSocket.1.0.2\lib\net45\Discord.Net.WebSocket.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="LiteDB, Version=3.1.0.0, Culture=neutral, PublicKeyToken=4ee40123013c9f27, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\LiteDB.3.1.0\lib\net35\LiteDB.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.1.1.1\lib\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.1.1\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Win32.Registry, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Win32.Registry, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Win32.Registry.4.7.0\lib\net461\Microsoft.Win32.Registry.dll</HintPath>
|
<HintPath>..\packages\Microsoft.Win32.Registry.4.3.0\lib\net46\Microsoft.Win32.Registry.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Context, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Context.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Context.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Coordination, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx.Concurrent, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Coordination.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Coordination.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Concurrent.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Interop.WaitHandles, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx.Enlightenment, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Interop.WaitHandles.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Interop.WaitHandles.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Oop, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="RestSharp, Version=105.2.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Oop.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Oop.dll</HintPath>
|
<HintPath>..\packages\RestSharp.105.2.3\lib\net46\RestSharp.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Tasks, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="SharpRaven, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Tasks.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Tasks.dll</HintPath>
|
<HintPath>..\packages\SharpRaven.2.2.0\lib\net45\SharpRaven.dll</HintPath>
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Cancellation, Version=1.0.5.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Cancellation.1.0.5\lib\netstandard2.0\Nito.Cancellation.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Collections.Deque, Version=1.0.4.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Collections.Deque.1.0.4\lib\netstandard2.0\Nito.Collections.Deque.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Disposables, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Disposables.2.1.0\lib\net461\Nito.Disposables.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Octokit, Version=0.48.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Octokit.0.48.0\lib\net46\Octokit.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="RestSharp, Version=106.11.4.0, Culture=neutral, PublicKeyToken=598062e77f915f75, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\RestSharp.106.11.4\lib\net452\RestSharp.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="SharpRaven, Version=2.4.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\SharpRaven.2.4.0\lib\net45\SharpRaven.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="SuperSocket.ClientEngine, Version=0.10.0.0, Culture=neutral, PublicKeyToken=ee9af13f57f00acc, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\SuperSocket.ClientEngine.Core.0.10.0\lib\net45\SuperSocket.ClientEngine.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="SweetLib, Version=0.2.1.0, Culture=neutral, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\SweetLib.0.2.1-alpha\lib\netstandard1.3\SweetLib.dll</HintPath>
|
||||||
|
@ -99,34 +93,24 @@
|
||||||
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
<HintPath>..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Collections.Immutable, Version=1.2.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Collections.Specialized, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Collections.Specialized.4.3.0\lib\net46\System.Collections.Specialized.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<Reference Include="System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||||
<HintPath>..\packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Drawing" />
|
<Reference Include="System.Drawing" />
|
||||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Interactive.Async, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
<Reference Include="System.Interactive.Async, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Interactive.Async.4.0.0\lib\net461\System.Interactive.Async.dll</HintPath>
|
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||||
|
@ -142,49 +126,19 @@
|
||||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Linq.Async, Version=4.1.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Linq.Async.4.1.1\lib\net461\System.Linq.Async.dll</HintPath>
|
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Net.NameResolution, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Net.NameResolution.4.3.0\lib\net46\System.Net.NameResolution.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Net.Security, Version=4.0.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Net.Security.4.3.2\lib\net46\System.Net.Security.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Numerics" />
|
<Reference Include="System.Numerics" />
|
||||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.AccessControl, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Security.AccessControl.4.7.0\lib\net461\System.Security.AccessControl.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||||
|
@ -192,18 +146,9 @@
|
||||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Principal.Windows, Version=4.1.3.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Security.Principal.Windows.4.7.0\lib\net461\System.Security.Principal.Windows.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Web" />
|
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -211,18 +156,22 @@
|
||||||
<Reference Include="System.Data" />
|
<Reference Include="System.Data" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="WebSocket4Net, Version=0.15.2.11, Culture=neutral, PublicKeyToken=eb4e154b696bf72a, processorArchitecture=MSIL">
|
<Reference Include="WebSocket4Net, Version=0.14.1.0, Culture=neutral, PublicKeyToken=eb4e154b696bf72a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\WebSocket4Net.0.15.2\lib\net45\WebSocket4Net.dll</HintPath>
|
<HintPath>..\packages\WebSocket4Net.0.14.1\lib\net45\WebSocket4Net.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Compile Include="Classes\Core.cs" />
|
<Compile Include="Core\Core.cs" />
|
||||||
<Compile Include="Classes\Job.cs" />
|
<Compile Include="Classes\Job.cs" />
|
||||||
<Compile Include="Classes\JobScheduler.cs" />
|
<Compile Include="Classes\JobScheduler.cs" />
|
||||||
|
<Compile Include="Classes\RPC\DiscordRpc.cs" />
|
||||||
|
<Compile Include="Classes\RPC\DiscordRpcHelper.cs" />
|
||||||
|
<Compile Include="Classes\RPC\RpcWrapper.cs" />
|
||||||
|
<Compile Include="Classes\MediaData.cs" />
|
||||||
|
<Compile Include="Core\Migrator.cs" />
|
||||||
<Compile Include="Dialogs\LoginDialog.cs">
|
<Compile Include="Dialogs\LoginDialog.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -274,33 +223,11 @@
|
||||||
<Project>{045eb4a1-34e7-47e0-867e-e10c40505095}</Project>
|
<Project>{045eb4a1-34e7-47e0-867e-e10c40505095}</Project>
|
||||||
<Name>DML.Client</Name>
|
<Name>DML.Client</Name>
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
<ProjectReference Include="..\libs\Discord.Net\src\Discord.Net.Core\Discord.Net.Core.csproj">
|
|
||||||
<Project>{8bd82fae-47f7-41fd-a862-892c8aff8c66}</Project>
|
|
||||||
<Name>Discord.Net.Core</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\libs\Discord.Net\src\Discord.Net.Rest\Discord.Net.Rest.csproj">
|
|
||||||
<Project>{103472c3-834d-4561-9395-6febfeb165ac}</Project>
|
|
||||||
<Name>Discord.Net.Rest</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
<ProjectReference Include="..\libs\Discord.Net\src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj">
|
|
||||||
<Project>{58009f12-b2d9-4f1c-954b-a7cfea17dbc7}</Project>
|
|
||||||
<Name>Discord.Net.WebSocket</Name>
|
|
||||||
</ProjectReference>
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="Resources\Serraniel-Logo4-NO-BG.png" />
|
<None Include="Resources\Serraniel-Logo4-NO-BG.png" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
|
||||||
<None Include="Resources\info_icon.png" />
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
|
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
|
|
||||||
</Target>
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
|
@ -1,4 +1,19 @@
|
||||||
namespace DML.Application.Dialogs
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited LoginDialog.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace DML.Application.Dialogs
|
||||||
{
|
{
|
||||||
partial class LoginDialog
|
partial class LoginDialog
|
||||||
{
|
{
|
|
@ -1,4 +1,19 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited LoginDialog.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using DML.Application.Classes;
|
using DML.Application.Classes;
|
||||||
using static SweetLib.Utils.Logger.Logger;
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
@ -15,7 +30,7 @@ namespace DML.Application.Dialogs
|
||||||
private void LoginDialog_Shown(object sender, EventArgs e)
|
private void LoginDialog_Shown(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Trace("Login dialog shown.");
|
Trace("Login dialog shown.");
|
||||||
edToken.Text = Core.Settings.LoginToken;
|
edToken.Text = Core.Core.Settings.LoginToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoginDialog_FormClosing(object sender, FormClosingEventArgs e)
|
private void LoginDialog_FormClosing(object sender, FormClosingEventArgs e)
|
||||||
|
@ -25,9 +40,9 @@ namespace DML.Application.Dialogs
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Debug("Adjusting login settings...");
|
Debug("Adjusting login settings...");
|
||||||
Core.Settings.LoginToken = edToken.Text;
|
Core.Core.Settings.LoginToken = edToken.Text;
|
||||||
|
|
||||||
Core.Settings.Store();
|
Core.Core.Settings.Store();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnOk_Click(object sender, EventArgs e)
|
private void btnOk_Click(object sender, EventArgs e)
|
|
@ -1,4 +1,19 @@
|
||||||
namespace DML.Application
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmInternalSplash.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace DML.Application
|
||||||
{
|
{
|
||||||
partial class FrmInternalSplash
|
partial class FrmInternalSplash
|
||||||
{
|
{
|
27
src/Discord Media Loader.Application/FrmInternalSplash.cs
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmInternalSplash.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace DML.Application
|
||||||
|
{
|
||||||
|
public partial class FrmInternalSplash : Form
|
||||||
|
{
|
||||||
|
public FrmInternalSplash()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited IdentifiedString.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,4 +1,19 @@
|
||||||
namespace DML.Application
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited MainForm.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace DML.Application
|
||||||
{
|
{
|
||||||
partial class MainForm
|
partial class MainForm
|
||||||
{
|
{
|
||||||
|
@ -31,7 +46,6 @@
|
||||||
this.components = new System.ComponentModel.Container();
|
this.components = new System.ComponentModel.Container();
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
|
||||||
this.pnlSettings = new System.Windows.Forms.GroupBox();
|
this.pnlSettings = new System.Windows.Forms.GroupBox();
|
||||||
this.btnFileNameHelp = new System.Windows.Forms.Button();
|
|
||||||
this.lbThreadLimit = new System.Windows.Forms.Label();
|
this.lbThreadLimit = new System.Windows.Forms.Label();
|
||||||
this.edThreadLimit = new System.Windows.Forms.NumericUpDown();
|
this.edThreadLimit = new System.Windows.Forms.NumericUpDown();
|
||||||
this.cbSkipExisting = new System.Windows.Forms.CheckBox();
|
this.cbSkipExisting = new System.Windows.Forms.CheckBox();
|
||||||
|
@ -57,8 +71,6 @@
|
||||||
this.lblVersionPlaceholder = new System.Windows.Forms.ToolStripStatusLabel();
|
this.lblVersionPlaceholder = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.lbVersion = new System.Windows.Forms.ToolStripStatusLabel();
|
this.lbVersion = new System.Windows.Forms.ToolStripStatusLabel();
|
||||||
this.btnDropDown = new System.Windows.Forms.ToolStripSplitButton();
|
this.btnDropDown = new System.Windows.Forms.ToolStripSplitButton();
|
||||||
this.showTokenToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
|
||||||
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
|
|
||||||
this.visitGithubToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.visitGithubToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
|
||||||
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
this.groupBox2 = new System.Windows.Forms.GroupBox();
|
||||||
|
@ -66,6 +78,8 @@
|
||||||
this.lbxJobs = new System.Windows.Forms.ListBox();
|
this.lbxJobs = new System.Windows.Forms.ListBox();
|
||||||
this.tmrRefreshProgress = new System.Windows.Forms.Timer(this.components);
|
this.tmrRefreshProgress = new System.Windows.Forms.Timer(this.components);
|
||||||
this.tmrTriggerRefresh = new System.Windows.Forms.Timer(this.components);
|
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();
|
this.pnlSettings.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.edThreadLimit)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.edThreadLimit)).BeginInit();
|
||||||
this.groupBox1.SuspendLayout();
|
this.groupBox1.SuspendLayout();
|
||||||
|
@ -75,7 +89,6 @@
|
||||||
//
|
//
|
||||||
// pnlSettings
|
// pnlSettings
|
||||||
//
|
//
|
||||||
this.pnlSettings.Controls.Add(this.btnFileNameHelp);
|
|
||||||
this.pnlSettings.Controls.Add(this.lbThreadLimit);
|
this.pnlSettings.Controls.Add(this.lbThreadLimit);
|
||||||
this.pnlSettings.Controls.Add(this.edThreadLimit);
|
this.pnlSettings.Controls.Add(this.edThreadLimit);
|
||||||
this.pnlSettings.Controls.Add(this.cbSkipExisting);
|
this.pnlSettings.Controls.Add(this.cbSkipExisting);
|
||||||
|
@ -92,17 +105,6 @@
|
||||||
this.pnlSettings.TabStop = false;
|
this.pnlSettings.TabStop = false;
|
||||||
this.pnlSettings.Text = "Settings";
|
this.pnlSettings.Text = "Settings";
|
||||||
//
|
//
|
||||||
// btnFileNameHelp
|
|
||||||
//
|
|
||||||
this.btnFileNameHelp.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
|
||||||
this.btnFileNameHelp.Image = global::DML.Application.Properties.Resources.info_icon;
|
|
||||||
this.btnFileNameHelp.Location = new System.Drawing.Point(554, 37);
|
|
||||||
this.btnFileNameHelp.Name = "btnFileNameHelp";
|
|
||||||
this.btnFileNameHelp.Size = new System.Drawing.Size(25, 23);
|
|
||||||
this.btnFileNameHelp.TabIndex = 8;
|
|
||||||
this.btnFileNameHelp.UseVisualStyleBackColor = true;
|
|
||||||
this.btnFileNameHelp.Click += new System.EventHandler(this.btnFileNameHelp_Click);
|
|
||||||
//
|
|
||||||
// lbThreadLimit
|
// lbThreadLimit
|
||||||
//
|
//
|
||||||
this.lbThreadLimit.AutoSize = true;
|
this.lbThreadLimit.AutoSize = true;
|
||||||
|
@ -148,7 +150,7 @@
|
||||||
| System.Windows.Forms.AnchorStyles.Right)));
|
| System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.edNameScheme.Location = new System.Drawing.Point(113, 39);
|
this.edNameScheme.Location = new System.Drawing.Point(113, 39);
|
||||||
this.edNameScheme.Name = "edNameScheme";
|
this.edNameScheme.Name = "edNameScheme";
|
||||||
this.edNameScheme.Size = new System.Drawing.Size(435, 20);
|
this.edNameScheme.Size = new System.Drawing.Size(465, 20);
|
||||||
this.edNameScheme.TabIndex = 4;
|
this.edNameScheme.TabIndex = 4;
|
||||||
this.edNameScheme.TextChanged += new System.EventHandler(this.DoSomethingChanged);
|
this.edNameScheme.TextChanged += new System.EventHandler(this.DoSomethingChanged);
|
||||||
//
|
//
|
||||||
|
@ -283,28 +285,28 @@
|
||||||
// invisibleToolStripMenuItem
|
// invisibleToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem";
|
this.invisibleToolStripMenuItem.Name = "invisibleToolStripMenuItem";
|
||||||
this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
this.invisibleToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.invisibleToolStripMenuItem.Tag = "3";
|
this.invisibleToolStripMenuItem.Tag = "3";
|
||||||
this.invisibleToolStripMenuItem.Text = "Invisible";
|
this.invisibleToolStripMenuItem.Text = "Invisible";
|
||||||
//
|
//
|
||||||
// doNotDisturbToolStripMenuItem
|
// doNotDisturbToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem";
|
this.doNotDisturbToolStripMenuItem.Name = "doNotDisturbToolStripMenuItem";
|
||||||
this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
this.doNotDisturbToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.doNotDisturbToolStripMenuItem.Tag = "2";
|
this.doNotDisturbToolStripMenuItem.Tag = "2";
|
||||||
this.doNotDisturbToolStripMenuItem.Text = "Do not disturb";
|
this.doNotDisturbToolStripMenuItem.Text = "Do not disturb";
|
||||||
//
|
//
|
||||||
// doNotDenyToolStripMenuItem
|
// doNotDenyToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem";
|
this.doNotDenyToolStripMenuItem.Name = "doNotDenyToolStripMenuItem";
|
||||||
this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
this.doNotDenyToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.doNotDenyToolStripMenuItem.Tag = "1";
|
this.doNotDenyToolStripMenuItem.Tag = "1";
|
||||||
this.doNotDenyToolStripMenuItem.Text = "Idle";
|
this.doNotDenyToolStripMenuItem.Text = "Idle";
|
||||||
//
|
//
|
||||||
// onlineToolStripMenuItem
|
// onlineToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem";
|
this.onlineToolStripMenuItem.Name = "onlineToolStripMenuItem";
|
||||||
this.onlineToolStripMenuItem.Size = new System.Drawing.Size(150, 22);
|
this.onlineToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.onlineToolStripMenuItem.Tag = "0";
|
this.onlineToolStripMenuItem.Tag = "0";
|
||||||
this.onlineToolStripMenuItem.Text = "Online";
|
this.onlineToolStripMenuItem.Text = "Online";
|
||||||
//
|
//
|
||||||
|
@ -321,7 +323,7 @@
|
||||||
// lblVersionPlaceholder
|
// lblVersionPlaceholder
|
||||||
//
|
//
|
||||||
this.lblVersionPlaceholder.Name = "lblVersionPlaceholder";
|
this.lblVersionPlaceholder.Name = "lblVersionPlaceholder";
|
||||||
this.lblVersionPlaceholder.Size = new System.Drawing.Size(490, 17);
|
this.lblVersionPlaceholder.Size = new System.Drawing.Size(459, 17);
|
||||||
this.lblVersionPlaceholder.Spring = true;
|
this.lblVersionPlaceholder.Spring = true;
|
||||||
//
|
//
|
||||||
// lbVersion
|
// lbVersion
|
||||||
|
@ -343,29 +345,17 @@
|
||||||
this.btnDropDown.Size = new System.Drawing.Size(16, 20);
|
this.btnDropDown.Size = new System.Drawing.Size(16, 20);
|
||||||
this.btnDropDown.Text = "Options";
|
this.btnDropDown.Text = "Options";
|
||||||
//
|
//
|
||||||
// showTokenToolStripMenuItem
|
|
||||||
//
|
|
||||||
this.showTokenToolStripMenuItem.Name = "showTokenToolStripMenuItem";
|
|
||||||
this.showTokenToolStripMenuItem.Size = new System.Drawing.Size(165, 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(162, 6);
|
|
||||||
//
|
|
||||||
// visitGithubToolStripMenuItem
|
// visitGithubToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.visitGithubToolStripMenuItem.Name = "visitGithubToolStripMenuItem";
|
this.visitGithubToolStripMenuItem.Name = "visitGithubToolStripMenuItem";
|
||||||
this.visitGithubToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
|
this.visitGithubToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.visitGithubToolStripMenuItem.Text = "Visit Github";
|
this.visitGithubToolStripMenuItem.Text = "Visit Github";
|
||||||
this.visitGithubToolStripMenuItem.Click += new System.EventHandler(this.visitGithubToolStripMenuItem_Click);
|
this.visitGithubToolStripMenuItem.Click += new System.EventHandler(this.visitGithubToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
// aboutToolStripMenuItem
|
// aboutToolStripMenuItem
|
||||||
//
|
//
|
||||||
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem";
|
||||||
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(165, 22);
|
this.aboutToolStripMenuItem.Size = new System.Drawing.Size(180, 22);
|
||||||
this.aboutToolStripMenuItem.Text = "About";
|
this.aboutToolStripMenuItem.Text = "About";
|
||||||
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click);
|
||||||
//
|
//
|
||||||
|
@ -414,6 +404,18 @@
|
||||||
this.tmrTriggerRefresh.Interval = 5000;
|
this.tmrTriggerRefresh.Interval = 5000;
|
||||||
this.tmrTriggerRefresh.Tick += new System.EventHandler(this.tmrTriggerRefresh_Tick);
|
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
|
// MainForm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
@ -479,6 +481,5 @@
|
||||||
private System.Windows.Forms.Timer tmrTriggerRefresh;
|
private System.Windows.Forms.Timer tmrTriggerRefresh;
|
||||||
private System.Windows.Forms.ToolStripMenuItem showTokenToolStripMenuItem;
|
private System.Windows.Forms.ToolStripMenuItem showTokenToolStripMenuItem;
|
||||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
|
||||||
private System.Windows.Forms.Button btnFileNameHelp;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,37 +1,55 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited MainForm.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using Discord;
|
using Discord;
|
||||||
using Discord.WebSocket;
|
using Discord.WebSocket;
|
||||||
using DML.AppCore.Classes;
|
using DML.AppCore.Classes;
|
||||||
using DML.Application.Classes;
|
using DML.Application.Classes;
|
||||||
using DML.Application.Helper;
|
using DML.Application.Helper;
|
||||||
using DML.Application.Properties;
|
using DML.Application.Classes.RPC;
|
||||||
using DML.Client;
|
using DML.Client;
|
||||||
|
using static DML.Client.DMLClient;
|
||||||
using static SweetLib.Utils.Logger.Logger;
|
using static SweetLib.Utils.Logger.Logger;
|
||||||
|
|
||||||
namespace DML.Application
|
namespace DML.Application
|
||||||
{
|
{
|
||||||
internal enum OnlineState
|
enum OnlineState
|
||||||
{
|
{
|
||||||
Online,
|
Online,
|
||||||
Idle,
|
Idle,
|
||||||
DoNotDisturb,
|
DoNotDisturb,
|
||||||
Invisible
|
Invisible
|
||||||
}
|
}
|
||||||
|
|
||||||
public partial class MainForm : Form
|
public partial class MainForm : Form
|
||||||
{
|
{
|
||||||
|
private bool IsInitialized { get; set; } = false;
|
||||||
|
private DiscordRpc.RichPresence Presence { get; }
|
||||||
|
|
||||||
public MainForm()
|
public MainForm()
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool IsInitialized { get; set; }
|
private void MainForm_Shown(object sender, System.EventArgs e)
|
||||||
|
|
||||||
private void MainForm_Shown(object sender, EventArgs e)
|
|
||||||
{
|
{
|
||||||
Trace("MainForm shown executed.");
|
Trace("MainForm shown executed.");
|
||||||
RefreshComponents();
|
RefreshComponents();
|
||||||
|
@ -46,23 +64,22 @@ namespace DML.Application
|
||||||
lbVersion.Text = $"v{Assembly.GetExecutingAssembly().GetName().Version} Copyright © by Serraniel";
|
lbVersion.Text = $"v{Assembly.GetExecutingAssembly().GetName().Version} Copyright © by Serraniel";
|
||||||
|
|
||||||
Trace("Refreshing operating folder component...");
|
Trace("Refreshing operating folder component...");
|
||||||
edOperatingFolder.Text = Core.Settings.OperatingFolder;
|
edOperatingFolder.Text = Core.Core.Settings.OperatingFolder;
|
||||||
|
|
||||||
Trace("Refreshing name scheme component...");
|
Trace("Refreshing name scheme component...");
|
||||||
edNameScheme.Text = Core.Settings.FileNameScheme;
|
edNameScheme.Text = Core.Core.Settings.FileNameScheme;
|
||||||
|
|
||||||
Trace("Refreshing skip existing files component...");
|
Trace("Refreshing skip existing files component...");
|
||||||
cbSkipExisting.Checked = Core.Settings.SkipExistingFiles;
|
cbSkipExisting.Checked = Core.Core.Settings.SkipExistingFiles;
|
||||||
|
|
||||||
Trace("Refreshing thread limit component...");
|
Trace("Refreshing thread limit component...");
|
||||||
edThreadLimit.Value = Core.Settings.ThreadLimit;
|
edThreadLimit.Value = Core.Core.Settings.ThreadLimit;
|
||||||
|
|
||||||
if (cbGuild.Items.Count == 0)
|
if (cbGuild.Items.Count == 0)
|
||||||
{
|
{
|
||||||
Trace("Adding guilds to component...");
|
Trace("Adding guilds to component...");
|
||||||
|
|
||||||
cbGuild.Items.AddRange(DMLClient.Client.Guilds.Where(g => g.Name != null).OrderBy(g => g.Name)
|
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());
|
||||||
.Select(g => new IdentifiedString<ulong>(g.Id, g.Name)).ToArray());
|
|
||||||
|
|
||||||
cbGuild.SelectedIndex = 0;
|
cbGuild.SelectedIndex = 0;
|
||||||
Trace("Guild component initialized.");
|
Trace("Guild component initialized.");
|
||||||
|
@ -71,15 +88,16 @@ namespace DML.Application
|
||||||
Trace("Refreshing job list component...");
|
Trace("Refreshing job list component...");
|
||||||
var oldIndex = lbxJobs.SelectedIndex;
|
var oldIndex = lbxJobs.SelectedIndex;
|
||||||
lbxJobs.Items.Clear();
|
lbxJobs.Items.Clear();
|
||||||
foreach (var job in Core.Scheduler.JobList)
|
foreach (var job in Core.Core.Scheduler.JobList)
|
||||||
lbxJobs.Items.Add(new IdentifiedString<int>(job.Id,
|
{
|
||||||
$"{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;
|
lbxJobs.SelectedIndex = oldIndex;
|
||||||
|
|
||||||
lbStatus.Text = DMLClient.Client.CurrentUser.Status.ToString();
|
lbStatus.Text = DMLClient.Client.CurrentUser.Status.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DoSomethingChanged(object sender, EventArgs e)
|
private void DoSomethingChanged(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Debug($"DoSomethingChanged excuted by {sender}.");
|
Debug($"DoSomethingChanged excuted by {sender}.");
|
||||||
if (!IsInitialized)
|
if (!IsInitialized)
|
||||||
|
@ -89,24 +107,24 @@ namespace DML.Application
|
||||||
}
|
}
|
||||||
|
|
||||||
Trace("Updating operating folder...");
|
Trace("Updating operating folder...");
|
||||||
Core.Settings.OperatingFolder = edOperatingFolder.Text;
|
Core.Core.Settings.OperatingFolder = edOperatingFolder.Text;
|
||||||
|
|
||||||
Trace("Updating name scheme...");
|
Trace("Updating name scheme...");
|
||||||
Core.Settings.FileNameScheme = edNameScheme.Text;
|
Core.Core.Settings.FileNameScheme = edNameScheme.Text;
|
||||||
|
|
||||||
Trace("Updating skip existing files...");
|
Trace("Updating skip existing files...");
|
||||||
Core.Settings.SkipExistingFiles = cbSkipExisting.Checked;
|
Core.Core.Settings.SkipExistingFiles = cbSkipExisting.Checked;
|
||||||
|
|
||||||
Trace("Updating thread limit...");
|
Trace("Updating thread limit...");
|
||||||
Core.Settings.ThreadLimit = (int) edThreadLimit.Value;
|
Core.Core.Settings.ThreadLimit = (int)edThreadLimit.Value;
|
||||||
|
|
||||||
Trace("Storing new settings...");
|
Trace("Storing new settings...");
|
||||||
Core.Settings.Store();
|
Core.Core.Settings.Store();
|
||||||
|
|
||||||
Info("New settings have been saved.");
|
Info("New settings have been saved.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnSearchFolders_Click(object sender, EventArgs e)
|
private void btnSearchFolders_Click(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Trace("Operating folder button pressed.");
|
Trace("Operating folder button pressed.");
|
||||||
using (var browserDialog = new FolderBrowserDialog())
|
using (var browserDialog = new FolderBrowserDialog())
|
||||||
|
@ -149,7 +167,7 @@ namespace DML.Application
|
||||||
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
return (from c in server.TextChannels where c.Id == id select c).FirstOrDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cbGuild_SelectedIndexChanged(object sender, EventArgs e)
|
private void cbGuild_SelectedIndexChanged(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Trace("Guild index changed.");
|
Trace("Guild index changed.");
|
||||||
Debug("Updating channel dropdown component...");
|
Debug("Updating channel dropdown component...");
|
||||||
|
@ -157,7 +175,7 @@ namespace DML.Application
|
||||||
UseWaitCursor = true;
|
UseWaitCursor = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var guild = FindServerById(((IdentifiedString<ulong>) cbGuild.SelectedItem).Id);
|
var guild = FindServerById(((IdentifiedString<ulong>)cbGuild.SelectedItem).Id);
|
||||||
|
|
||||||
if (guild != null)
|
if (guild != null)
|
||||||
{
|
{
|
||||||
|
@ -166,8 +184,7 @@ namespace DML.Application
|
||||||
|
|
||||||
Trace("Adding new channels...");
|
Trace("Adding new channels...");
|
||||||
|
|
||||||
cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position)
|
cbChannel.Items.AddRange(guild.TextChannels.OrderBy(c => c.Position).Select(c => new IdentifiedString<ulong>(c.Id, c.Name)).ToArray());
|
||||||
.Select(c => new IdentifiedString<ulong>(c.Id, c.Name)).ToArray());
|
|
||||||
|
|
||||||
Trace($"Added {cbChannel.Items.Count} channels.");
|
Trace($"Added {cbChannel.Items.Count} channels.");
|
||||||
|
|
||||||
|
@ -186,26 +203,26 @@ namespace DML.Application
|
||||||
Debug("Finished updating channel dropdown component.");
|
Debug("Finished updating channel dropdown component.");
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnAddJob_Click(object sender, EventArgs e)
|
private void btnAddJob_Click(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
var job = new Job
|
var job = new Job
|
||||||
{
|
{
|
||||||
GuildId = ((IdentifiedString<ulong>) cbGuild.SelectedItem).Id,
|
GuildId = ((IdentifiedString<ulong>)cbGuild.SelectedItem).Id,
|
||||||
ChannelId = ((IdentifiedString<ulong>) cbChannel.SelectedItem).Id
|
ChannelId = ((IdentifiedString<ulong>)cbChannel.SelectedItem).Id
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!(from j in Core.Scheduler.JobList
|
if (!(from j in Core.Core.Scheduler.JobList
|
||||||
where j.GuildId == job.GuildId && j.ChannelId == job.ChannelId
|
where j.GuildId == job.GuildId && j.ChannelId == job.ChannelId
|
||||||
select j).Any())
|
select j).Any())
|
||||||
{
|
{
|
||||||
job.Store();
|
job.Store();
|
||||||
Core.Scheduler.JobList.Add(job);
|
Core.Core.Scheduler.JobList.Add(job);
|
||||||
}
|
}
|
||||||
|
|
||||||
RefreshComponents();
|
RefreshComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnDelete_Click(object sender, EventArgs e)
|
private void btnDelete_Click(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Trace("Deleting job pressed.");
|
Trace("Deleting job pressed.");
|
||||||
|
|
||||||
|
@ -215,13 +232,13 @@ namespace DML.Application
|
||||||
MessageBox.Show("No job has been seleted.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
MessageBox.Show("No job has been seleted.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||||
}
|
}
|
||||||
|
|
||||||
var jobId = ((IdentifiedString<int>) lbxJobs.SelectedItem).Id;
|
var jobId = ((IdentifiedString<int>)lbxJobs.SelectedItem).Id;
|
||||||
|
|
||||||
var job = Core.Scheduler.JobList.FirstOrDefault(j => j.Id == jobId);
|
var job = Core.Core.Scheduler.JobList.FirstOrDefault(j => j.Id == jobId);
|
||||||
if (job != null)
|
if (job != null)
|
||||||
{
|
{
|
||||||
Core.Scheduler.JobList.Remove(job);
|
Core.Core.Scheduler.JobList.Remove(job);
|
||||||
Core.Scheduler.RunningJobs.Remove(job.Id);
|
Core.Core.Scheduler.RunningJobs.Remove(job.Id);
|
||||||
job.Stop();
|
job.Stop();
|
||||||
job.Delete();
|
job.Delete();
|
||||||
}
|
}
|
||||||
|
@ -230,33 +247,45 @@ namespace DML.Application
|
||||||
RefreshComponents();
|
RefreshComponents();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tmrRefreshProgress_Tick(object sender, EventArgs e)
|
private void tmrRefreshProgress_Tick(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
var scanned = Core.Scheduler.MessagesScanned;
|
var scanned = Core.Core.Scheduler.MessagesScanned;
|
||||||
var totalAttachments = Core.Scheduler.TotalAttachments;
|
var totalAttachments = Core.Core.Scheduler.TotalAttachments;
|
||||||
var done = Core.Scheduler.AttachmentsDownloaded;
|
var done = Core.Core.Scheduler.AttachmentsDownloaded;
|
||||||
|
|
||||||
var progress = totalAttachments > 0 ? (int) (100 * done / totalAttachments) : 0;
|
var progress = totalAttachments > 0 ? (int)(100 * done / totalAttachments) : 0;
|
||||||
progress = Math.Min(Math.Max(0, progress), 100);
|
progress = Math.Min(Math.Max(0, progress), 100);
|
||||||
pgbProgress.Maximum = 100;
|
pgbProgress.Maximum = 100;
|
||||||
pgbProgress.Value = progress;
|
pgbProgress.Value = progress;
|
||||||
|
|
||||||
lbProgress.Text = $"Scanned: {scanned} Downloaded: {done} Open: {totalAttachments - done}";
|
lbProgress.Text = $"Scanned: {scanned} Downloaded: {done} Open: {totalAttachments - done}";
|
||||||
}
|
|
||||||
|
|
||||||
private void aboutToolStripMenuItem_Click(object sender, EventArgs e)
|
if (Core.Core.Settings.UseRPC)
|
||||||
{
|
{
|
||||||
MessageBox.Show(Resources.AboutString);
|
Core.Core.RpcPresence.details = "Downloading media files";
|
||||||
|
Core.Core.RpcPresence.state = $"{done} / {totalAttachments} ({pgbProgress.Value}%)";
|
||||||
|
Core.Core.RpcPresence.largeImageKey = "main";
|
||||||
|
Core.Core.RpcPresence.largeImageText = "Visit discordmedialoader.net";
|
||||||
|
Core.Core.RpcPresence.smallImageKey = "author";
|
||||||
|
Core.Core.RpcPresence.smallImageText = "Made by Serraniel";
|
||||||
|
|
||||||
|
Core.Core.RpcUpdatePresence();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void visitGithubToolStripMenuItem_Click(object sender, EventArgs e)
|
private void aboutToolStripMenuItem_Click(object sender, System.EventArgs e)
|
||||||
|
{
|
||||||
|
MessageBox.Show(Properties.Resources.AboutString);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void visitGithubToolStripMenuItem_Click(object sender, System.EventArgs e)
|
||||||
{
|
{
|
||||||
Process.Start("https://github.com/Serraniel/DiscordMediaLoader/");
|
Process.Start("https://github.com/Serraniel/DiscordMediaLoader/");
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
private async void toolStripDropDownButton1_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e)
|
||||||
{
|
{
|
||||||
var state = (OnlineState) Convert.ToInt32(e.ClickedItem.Tag);
|
OnlineState state = (OnlineState)Convert.ToInt32(e.ClickedItem.Tag);
|
||||||
|
|
||||||
lbStatus.Text = state.ToString();
|
lbStatus.Text = state.ToString();
|
||||||
tmrTriggerRefresh.Start();
|
tmrTriggerRefresh.Start();
|
||||||
|
@ -286,14 +315,9 @@ namespace DML.Application
|
||||||
|
|
||||||
private void showTokenToolStripMenuItem_Click(object sender, EventArgs e)
|
private void showTokenToolStripMenuItem_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
Clipboard.SetText(Core.Settings.LoginToken);
|
Clipboard.SetText(Core.Core.Settings.LoginToken);
|
||||||
MessageBox.Show(this, "Your login token has been copied to your clipboard.", "Discord Media Loader",
|
MessageBox.Show(this, "Your login token has been copied to your clipboard.", "Discord Media Loader",
|
||||||
MessageBoxButtons.OK);
|
MessageBoxButtons.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void btnFileNameHelp_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
MessageBox.Show(Resources.FileNameInfo);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,3 +1,18 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "DML.Application".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited AssemblyInfo.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
@ -31,5 +46,5 @@ using System.Runtime.InteropServices;
|
||||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||||
// übernehmen, indem Sie "*" eingeben:
|
// übernehmen, indem Sie "*" eingeben:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.5.3.0")]
|
[assembly: AssemblyVersion("1.2.1.0")]
|
||||||
[assembly: AssemblyFileVersion("1.5.3.0")]
|
[assembly: AssemblyFileVersion("1.2.1.0")]
|
|
@ -1,12 +1,17 @@
|
||||||
//------------------------------------------------------------------------------
|
#region LICENSE
|
||||||
// <auto-generated>
|
/**********************************************************************************************
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
* Copyright (C) 2017-2019 - All Rights Reserved
|
||||||
// Laufzeitversion:4.0.30319.42000
|
*
|
||||||
//
|
* This file is part of "DML.Application".
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
// der Code erneut generiert wird.
|
*
|
||||||
// </auto-generated>
|
* "DML.Application" is licensed under Apache 2.0.
|
||||||
//------------------------------------------------------------------------------
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Resources.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
namespace DML.Application.Properties {
|
namespace DML.Application.Properties {
|
||||||
using System;
|
using System;
|
||||||
|
@ -19,7 +24,7 @@ namespace DML.Application.Properties {
|
||||||
// -Klasse über ein Tool wie ResGen oder Visual Studio 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
|
// 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.
|
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
internal class Resources {
|
internal class Resources {
|
||||||
|
@ -79,34 +84,6 @@ namespace DML.Application.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sucht eine lokalisierte Zeichenfolge, die You can use the following placeholders for your filenames:
|
|
||||||
///
|
|
||||||
///%guild% -> server name
|
|
||||||
///%channel% -> channel name
|
|
||||||
///%timestamp% -> message timestamp (Unix timestamp)
|
|
||||||
///%name% -> attachment filename
|
|
||||||
///%username% -> author username
|
|
||||||
///%nickname% -> author nickname (if unassigned, username will be used)
|
|
||||||
///%id% -> attachment id (given by Discord)
|
|
||||||
///%userid% -> author id (given by discord) ähnelt.
|
|
||||||
/// </summary>
|
|
||||||
internal static string FileNameInfo {
|
|
||||||
get {
|
|
||||||
return ResourceManager.GetString("FileNameInfo", resourceCulture);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
|
||||||
/// </summary>
|
|
||||||
internal static System.Drawing.Bitmap info_icon {
|
|
||||||
get {
|
|
||||||
object obj = ResourceManager.GetObject("info_icon", resourceCulture);
|
|
||||||
return ((System.Drawing.Bitmap)(obj));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
/// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
|
||||||
/// </summary>
|
/// </summary>
|
|
@ -129,25 +129,9 @@ Nito.AsyncEx (Copyright (c) 2014 StephenCleary - MIT License)
|
||||||
RestSharp (Copyright (c) restsharp - Apache 2.0 License)
|
RestSharp (Copyright (c) restsharp - Apache 2.0 License)
|
||||||
WebSocket4Net (Copyright (c) kerryjiang - Apache 2.0 License)
|
WebSocket4Net (Copyright (c) kerryjiang - Apache 2.0 License)
|
||||||
LiteDB (Copyright (c) 2014 - 2015 Mauricio David - MIT License)
|
LiteDB (Copyright (c) 2014 - 2015 Mauricio David - MIT License)
|
||||||
Octokit (Copyright (c) 2012 GitHub, Inc - MIT License)
|
Octokit (Copyright (c) 2012 GitHub, Inc - MIT License)</value>
|
||||||
Flaticons (Roundicons Circle Flat) - Flaticon Basic License</value>
|
|
||||||
</data>
|
|
||||||
<data name="FileNameInfo" xml:space="preserve">
|
|
||||||
<value>You can use the following placeholders for your filenames:
|
|
||||||
|
|
||||||
%guild% -> server name
|
|
||||||
%channel% -> channel name
|
|
||||||
%timestamp% -> message timestamp (Unix timestamp)
|
|
||||||
%name% -> attachment filename
|
|
||||||
%username% -> author username
|
|
||||||
%nickname% -> author nickname (if unassigned, username will be used)
|
|
||||||
%id% -> attachment id (given by Discord)
|
|
||||||
%userid% -> author id (given by discord)</value>
|
|
||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="info_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\info_icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="Serraniel_Logo4_NO_BG" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Serraniel_Logo4_NO_BG" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Serraniel-Logo4-NO-BG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Serraniel-Logo4-NO-BG.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 300 KiB |
39
src/Discord Media Loader.Application/app.config
Normal file
|
@ -0,0 +1,39 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<configuration>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<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>
|
68
src/Discord Media Loader.Application/packages.config
Normal file
|
@ -0,0 +1,68 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<packages>
|
||||||
|
<package id="Discord.Net.Commands" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Core" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Rest" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Rpc" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Webhook" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.WebSocket" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="LiteDB" version="3.1.0" targetFramework="net461" />
|
||||||
|
<package id="Microsoft.Extensions.DependencyInjection" version="1.1.1" targetFramework="net461" />
|
||||||
|
<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" />
|
||||||
|
<package id="System.Collections.Immutable" version="1.3.1" targetFramework="net461" />
|
||||||
|
<package id="System.ComponentModel" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Console" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Globalization" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net461" />
|
||||||
|
<package id="System.IO" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.Compression" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Linq" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Http" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.ObjectModel" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="WebSocket4Net" version="0.14.1" targetFramework="net461" />
|
||||||
|
</packages>
|
37
src/Discord Media Loader.sln
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio 15
|
||||||
|
VisualStudioVersion = 15.0.26730.16
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Discord Media Loader", "Discord Media Loader\Discord Media Loader.csproj", "{EDC92554-DBC1-4F9C-9317-379A8BF441E8}"
|
||||||
|
EndProject
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DML.Application", "Discord Media Loader.Application\DML.Application.csproj", "{C130DE6A-3237-42B5-BE9F-783D1CD104C6}"
|
||||||
|
EndProject
|
||||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DML.Client", "DML.Client\DML.Client.csproj", "{045EB4A1-34E7-47E0-867E-E10C40505095}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{EDC92554-DBC1-4F9C-9317-379A8BF441E8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
{C130DE6A-3237-42B5-BE9F-783D1CD104C6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{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
|
||||||
|
{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
|
||||||
|
{045EB4A1-34E7-47E0-867E-E10C40505095}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {0B742DE0-D6AF-4033-9605-863C32A7FFD8}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
15
src/Discord Media Loader.sln.licenseheader
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
extensions: .cs .cpp .h
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2017-%CurrentYear% - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "%Project%".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/DiscordMediaLoader
|
||||||
|
*
|
||||||
|
* "%Project%" is licensed under Apache 2.0.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited %FileName% under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
45
src/Discord Media Loader/App.config
Normal file
|
@ -0,0 +1,45 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Sample license text.
|
||||||
|
-->
|
||||||
|
<configuration>
|
||||||
|
<startup>
|
||||||
|
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
|
||||||
|
</startup>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.1.1.0" newVersion="4.1.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-3.0.3000.0" newVersion="3.0.3000.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-4.0.1.0" newVersion="4.0.1.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
<dependentAssembly>
|
||||||
|
<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>
|
|
@ -13,8 +13,6 @@
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
<NuGetPackageImportStamp>
|
|
||||||
</NuGetPackageImportStamp>
|
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
|
@ -42,73 +40,73 @@
|
||||||
<StartupObject />
|
<StartupObject />
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=6.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Commands, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.6.0.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Commands.1.0.2\lib\netstandard1.1\Discord.Net.Commands.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=3.1.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Core, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.3.1.6\lib\net461\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Core.1.0.2\lib\net45\Discord.Net.Core.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=3.1.6.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Discord.Net.Rest, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.3.1.6\lib\netstandard2.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
<HintPath>..\packages\Discord.Net.Rest.1.0.2\lib\net45\Discord.Net.Rest.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Discord.Net.Rpc, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Discord.Net.Rpc.1.0.2\lib\net45\Discord.Net.Rpc.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Discord.Net.Webhook, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Discord.Net.Webhook.1.0.2\lib\netstandard1.1\Discord.Net.Webhook.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Discord.Net.WebSocket, Version=1.0.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Discord.Net.WebSocket.1.0.2\lib\net45\Discord.Net.WebSocket.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.1.1.1\lib\netstandard1.1\Microsoft.Extensions.DependencyInjection.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=1.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.1.1.1\lib\netstandard1.0\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.Win32.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\Microsoft.Win32.Primitives.4.3.0\lib\net46\Microsoft.Win32.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
<Reference Include="Newtonsoft.Json, Version=10.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Newtonsoft.Json.12.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
<HintPath>..\packages\Newtonsoft.Json.10.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Context, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Context.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Context.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Coordination, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx.Concurrent, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Coordination.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Coordination.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Concurrent.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Interop.WaitHandles, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Nito.AsyncEx.Enlightenment, Version=3.0.1.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Interop.WaitHandles.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Interop.WaitHandles.dll</HintPath>
|
<HintPath>..\packages\Nito.AsyncEx.3.0.1\lib\net45\Nito.AsyncEx.Enlightenment.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Nito.AsyncEx.Oop, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="Octokit, Version=0.24.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Oop.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Oop.dll</HintPath>
|
<HintPath>..\packages\Octokit.0.24.1-alpha0001\lib\net45\Octokit.dll</HintPath>
|
||||||
</Reference>
|
<Private>True</Private>
|
||||||
<Reference Include="Nito.AsyncEx.Tasks, Version=5.0.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.AsyncEx.Tasks.5.0.0\lib\netstandard2.0\Nito.AsyncEx.Tasks.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Cancellation, Version=1.0.5.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Cancellation.1.0.5\lib\netstandard2.0\Nito.Cancellation.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Collections.Deque, Version=1.0.4.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Collections.Deque.1.0.4\lib\netstandard2.0\Nito.Collections.Deque.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Nito.Disposables, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Nito.Disposables.2.1.0\lib\net461\Nito.Disposables.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="Octokit, Version=0.48.0.0, Culture=neutral, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\Octokit.0.48.0\lib\net46\Octokit.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.AppContext, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<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>
|
<HintPath>..\packages\System.AppContext.4.3.0\lib\net46\System.AppContext.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Immutable, Version=1.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
|
<HintPath>..\packages\System.Collections.Immutable.1.3.1\lib\portable-net45+win8+wp8+wpa81\System.Collections.Immutable.dll</HintPath>
|
||||||
</Reference>
|
<Private>True</Private>
|
||||||
<Reference Include="System.Collections.Immutable, Version=1.2.5.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Collections.Immutable.1.7.1\lib\net461\System.Collections.Immutable.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel.Composition" />
|
<Reference Include="System.ComponentModel.Composition" />
|
||||||
<Reference Include="System.Console, Version=4.0.1.1, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Console, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Console.4.3.1\lib\net46\System.Console.dll</HintPath>
|
<HintPath>..\packages\System.Console.4.3.0\lib\net46\System.Console.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Diagnostics.DiagnosticSource, Version=4.0.1.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.7.1\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
<HintPath>..\packages\System.Diagnostics.DiagnosticSource.4.3.0\lib\net46\System.Diagnostics.DiagnosticSource.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Globalization.Calendars, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
<HintPath>..\packages\System.Globalization.Calendars.4.3.0\lib\net46\System.Globalization.Calendars.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Interactive.Async, Version=4.0.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
<Reference Include="System.Interactive.Async, Version=3.0.3000.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Interactive.Async.4.0.0\lib\net461\System.Interactive.Async.dll</HintPath>
|
<HintPath>..\packages\System.Interactive.Async.3.1.1\lib\net46\System.Interactive.Async.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
|
||||||
|
@ -124,35 +122,19 @@
|
||||||
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.IO.FileSystem.Primitives, Version=4.0.2.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.IO.FileSystem.Primitives.4.3.0\lib\net46\System.IO.FileSystem.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Linq.Async, Version=4.1.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Http, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Linq.Async.4.1.1\lib\net461\System.Linq.Async.dll</HintPath>
|
<HintPath>..\packages\System.Net.Http.4.3.0\lib\net46\System.Net.Http.dll</HintPath>
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Memory.4.5.4\lib\net461\System.Memory.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
|
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Net.Sockets, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
<HintPath>..\packages\System.Net.Sockets.4.3.0\lib\net46\System.Net.Sockets.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Numerics" />
|
<Reference Include="System.Numerics" />
|
||||||
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.1\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
|
||||||
|
@ -160,13 +142,8 @@
|
||||||
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
|
||||||
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
<Reference Include="System.Data.DataSetExtensions" />
|
<Reference Include="System.Data.DataSetExtensions" />
|
||||||
|
@ -177,9 +154,7 @@
|
||||||
<Reference Include="System.Windows.Forms" />
|
<Reference Include="System.Windows.Forms" />
|
||||||
<Reference Include="System.Xml" />
|
<Reference Include="System.Xml" />
|
||||||
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Xml.ReaderWriter, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.1\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
<HintPath>..\packages\System.Xml.ReaderWriter.4.3.0\lib\net46\System.Xml.ReaderWriter.dll</HintPath>
|
||||||
<Private>True</Private>
|
|
||||||
<Private>True</Private>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
@ -215,6 +190,9 @@
|
||||||
<DependentUpon>Resources.resx</DependentUpon>
|
<DependentUpon>Resources.resx</DependentUpon>
|
||||||
<DesignTime>True</DesignTime>
|
<DesignTime>True</DesignTime>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<None Include="..\..\Darkorbit Helper Program\src\Darkorbit Helper Program\Darkorbit Helper Program.licenseheader">
|
||||||
|
<Link>Darkorbit Helper Program.licenseheader</Link>
|
||||||
|
</None>
|
||||||
<None Include="packages.config" />
|
<None Include="packages.config" />
|
||||||
<None Include="Properties\Settings.settings">
|
<None Include="Properties\Settings.settings">
|
||||||
<Generator>SettingsSingleFileGenerator</Generator>
|
<Generator>SettingsSingleFileGenerator</Generator>
|
||||||
|
@ -241,13 +219,6 @@
|
||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
|
|
||||||
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
|
||||||
<PropertyGroup>
|
|
||||||
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
|
|
||||||
</Target>
|
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
|
@ -1,4 +1,19 @@
|
||||||
namespace Discord_Media_Loader
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmDownload.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Discord_Media_Loader
|
||||||
{
|
{
|
||||||
partial class FrmDownload
|
partial class FrmDownload
|
||||||
{
|
{
|
|
@ -1,4 +1,19 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmDownload.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.Net;
|
using System.Net;
|
|
@ -1,4 +1,19 @@
|
||||||
namespace Discord_Media_Loader
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmSplash.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Discord_Media_Loader
|
||||||
{
|
{
|
||||||
partial class FrmSplash
|
partial class FrmSplash
|
||||||
{
|
{
|
|
@ -1,4 +1,19 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited FrmSplash.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
@ -15,6 +30,7 @@ namespace Discord_Media_Loader
|
||||||
|
|
||||||
private async void FrmSplash_Shown(object sender, EventArgs e)
|
private async void FrmSplash_Shown(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
#if !DEBUG
|
||||||
UseWaitCursor = true;
|
UseWaitCursor = true;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
@ -52,6 +68,7 @@ namespace Discord_Media_Loader
|
||||||
{
|
{
|
||||||
UseWaitCursor = false;
|
UseWaitCursor = false;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
DialogResult = DialogResult.OK;
|
DialogResult = DialogResult.OK;
|
||||||
}
|
}
|
|
@ -1,4 +1,19 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited TaskBarProgress.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
namespace Discord_Media_Loader.Helper
|
namespace Discord_Media_Loader.Helper
|
|
@ -1,4 +1,19 @@
|
||||||
using System;
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited VersionHelper.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
@ -17,7 +32,7 @@ namespace Discord_Media_Loader.Helper
|
||||||
var github = new GitHubClient(new ProductHeaderValue("DiscordMedialLoader"));
|
var github = new GitHubClient(new ProductHeaderValue("DiscordMedialLoader"));
|
||||||
|
|
||||||
var tag =
|
var tag =
|
||||||
(await github.Repository.Release.GetAll("Serraniel", "DiscordMediaLoader")).Where(x => x.Prerelease == false).OrderByDescending(x => x.CreatedAt).First().TagName.Replace("v", "") ?? "";
|
(await github.Repository.Release.GetAll("Serraniel", "DiscordMediaLoader")).OrderByDescending(x => x.CreatedAt).First().TagName.Replace("v", "") ?? "";
|
||||||
|
|
||||||
var version = new Version(tag);
|
var version = new Version(tag);
|
||||||
return version;
|
return version;
|
47
src/Discord Media Loader/Program.cs
Normal file
|
@ -0,0 +1,47 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Program.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
using DML.Application.Core;
|
||||||
|
using Nito.AsyncEx;
|
||||||
|
using System;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
|
||||||
|
namespace Discord_Media_Loader
|
||||||
|
{
|
||||||
|
static class Program
|
||||||
|
{
|
||||||
|
[STAThread]
|
||||||
|
static void Main(string[] paramStrings)
|
||||||
|
{
|
||||||
|
Application.EnableVisualStyles();
|
||||||
|
Application.SetCompatibleTextRenderingDefault(false);
|
||||||
|
|
||||||
|
var splashScreen = new FrmSplash();
|
||||||
|
if (splashScreen.ShowDialog() == DialogResult.OK)
|
||||||
|
{
|
||||||
|
DoLaunch(paramStrings);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Application.Restart();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void DoLaunch(string[] paramStrings)
|
||||||
|
{
|
||||||
|
AsyncContext.Run(() => Core.Run(paramStrings));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,18 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited AssemblyInfo.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
using System.Reflection;
|
using System.Reflection;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
@ -31,5 +46,5 @@ using System.Runtime.InteropServices;
|
||||||
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
// Sie können alle Werte angeben oder die standardmäßigen Build- und Revisionsnummern
|
||||||
// übernehmen, indem Sie "*" eingeben:
|
// übernehmen, indem Sie "*" eingeben:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("1.1.0.0")]
|
[assembly: AssemblyVersion("1.0.3.0")]
|
||||||
[assembly: AssemblyFileVersion("1.1.0.0")]
|
[assembly: AssemblyFileVersion("1.0.3.0")]
|
|
@ -1,12 +1,17 @@
|
||||||
//------------------------------------------------------------------------------
|
#region LICENSE
|
||||||
// <auto-generated>
|
/**********************************************************************************************
|
||||||
// Dieser Code wurde von einem Tool generiert.
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
// Laufzeitversion:4.0.30319.42000
|
*
|
||||||
//
|
* This file is part of "Discord Media Loader".
|
||||||
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
// der Code erneut generiert wird.
|
*
|
||||||
// </auto-generated>
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
//------------------------------------------------------------------------------
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Resources.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
namespace Discord_Media_Loader.Properties {
|
namespace Discord_Media_Loader.Properties {
|
||||||
using System;
|
using System;
|
31
src/Discord Media Loader/Properties/Settings.Designer.cs
generated
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
#region LICENSE
|
||||||
|
/**********************************************************************************************
|
||||||
|
* Copyright (C) 2019-2019 - All Rights Reserved
|
||||||
|
*
|
||||||
|
* This file is part of "Discord Media Loader".
|
||||||
|
* The official repository is hosted at https://github.com/Serraniel/Darkorbit-Helper-Program
|
||||||
|
*
|
||||||
|
* "Discord Media Loader" is licensed under European Union Public Licence V. 1.2.
|
||||||
|
* Full license is included in the project repository.
|
||||||
|
*
|
||||||
|
* Users who edited Settings.Designer.cs under the condition of the used license:
|
||||||
|
* - Serraniel (https://github.com/Serraniel)
|
||||||
|
**********************************************************************************************/
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
namespace Discord_Media_Loader.Properties {
|
||||||
|
|
||||||
|
|
||||||
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.1.0.0")]
|
||||||
|
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||||
|
|
||||||
|
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||||
|
|
||||||
|
public static Settings Default {
|
||||||
|
get {
|
||||||
|
return defaultInstance;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Before Width: | Height: | Size: 300 KiB After Width: | Height: | Size: 300 KiB |
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 412 KiB After Width: | Height: | Size: 412 KiB |
67
src/Discord Media Loader/packages.config
Normal file
|
@ -0,0 +1,67 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!--
|
||||||
|
Sample license text.
|
||||||
|
-->
|
||||||
|
<packages>
|
||||||
|
<package id="Discord.Net" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Commands" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Core" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Rest" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Rpc" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.Webhook" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Discord.Net.WebSocket" version="1.0.2" targetFramework="net461" />
|
||||||
|
<package id="Microsoft.Extensions.DependencyInjection" version="1.1.1" targetFramework="net461" />
|
||||||
|
<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="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="net462" />
|
||||||
|
<package id="Octokit" version="0.24.1-alpha0001" 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" />
|
||||||
|
<package id="System.Collections.Immutable" version="1.3.1" targetFramework="net461" />
|
||||||
|
<package id="System.ComponentModel" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Console" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Debug" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.DiagnosticSource" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Tools" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Diagnostics.Tracing" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Globalization" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Globalization.Calendars" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Interactive.Async" version="3.1.1" targetFramework="net461" />
|
||||||
|
<package id="System.IO" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.Compression" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.Compression.ZipFile" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.FileSystem" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.IO.FileSystem.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Linq" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Linq.Expressions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Http" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Net.Sockets" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.ObjectModel" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Reflection.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Resources.ResourceManager" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Handles" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.InteropServices" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Runtime.Numerics" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.Encoding" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.Encoding.Extensions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Text.RegularExpressions" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading.Tasks" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Threading.Timer" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Xml.ReaderWriter" version="4.3.0" targetFramework="net461" />
|
||||||
|
<package id="System.Xml.XDocument" version="4.3.0" targetFramework="net461" />
|
||||||
|
</packages>
|