mirror of
https://github.com/NohamR/QobuzDownloaderX.git
synced 2026-05-17 12:27:11 +00:00
Compare commits
15 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ffbd8e521e | ||
|
|
ea09798e3c | ||
|
|
72db4d0814 | ||
|
|
7fee36c600 | ||
|
|
bb30ed6deb | ||
|
|
58a6be7283 | ||
|
|
6c225b895e | ||
|
|
e302608d6e | ||
|
|
56ffb88b16 | ||
|
|
5c40d5315a | ||
|
|
984bed19f2 | ||
|
|
b257e8540f | ||
|
|
aebd046185 | ||
|
|
8f33ebd46f | ||
|
|
7c6b826c77 |
178
QobuzDownloaderX/AboutForm.Designer.cs
generated
Normal file
178
QobuzDownloaderX/AboutForm.Designer.cs
generated
Normal file
@@ -0,0 +1,178 @@
|
|||||||
|
namespace QobuzDownloaderX
|
||||||
|
{
|
||||||
|
partial class AboutForm
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Required designer variable.
|
||||||
|
/// </summary>
|
||||||
|
private System.ComponentModel.IContainer components = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clean up any resources being used.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
|
protected override void Dispose(bool disposing)
|
||||||
|
{
|
||||||
|
if (disposing && (components != null))
|
||||||
|
{
|
||||||
|
components.Dispose();
|
||||||
|
}
|
||||||
|
base.Dispose(disposing);
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Windows Form Designer generated code
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Required method for Designer support - do not modify
|
||||||
|
/// the contents of this method with the code editor.
|
||||||
|
/// </summary>
|
||||||
|
private void InitializeComponent()
|
||||||
|
{
|
||||||
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(AboutForm));
|
||||||
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.verNumLabel2 = new System.Windows.Forms.Label();
|
||||||
|
this.exitLabel = new System.Windows.Forms.Label();
|
||||||
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.devLabel = new System.Windows.Forms.Label();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.panel1.SuspendLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// panel1
|
||||||
|
//
|
||||||
|
this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
|
||||||
|
this.panel1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch;
|
||||||
|
this.panel1.Controls.Add(this.exitLabel);
|
||||||
|
this.panel1.Controls.Add(this.pictureBox1);
|
||||||
|
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
|
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||||
|
this.panel1.Name = "panel1";
|
||||||
|
this.panel1.Size = new System.Drawing.Size(365, 95);
|
||||||
|
this.panel1.TabIndex = 1;
|
||||||
|
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
|
||||||
|
//
|
||||||
|
// verNumLabel2
|
||||||
|
//
|
||||||
|
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.verNumLabel2.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.verNumLabel2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.verNumLabel2.Location = new System.Drawing.Point(12, 98);
|
||||||
|
this.verNumLabel2.Name = "verNumLabel2";
|
||||||
|
this.verNumLabel2.Size = new System.Drawing.Size(341, 18);
|
||||||
|
this.verNumLabel2.TabIndex = 32;
|
||||||
|
this.verNumLabel2.Text = "#.#.#.#";
|
||||||
|
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
|
||||||
|
//
|
||||||
|
// exitLabel
|
||||||
|
//
|
||||||
|
this.exitLabel.AutoSize = true;
|
||||||
|
this.exitLabel.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.exitLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.exitLabel.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.exitLabel.Location = new System.Drawing.Point(345, 0);
|
||||||
|
this.exitLabel.Name = "exitLabel";
|
||||||
|
this.exitLabel.Size = new System.Drawing.Size(20, 23);
|
||||||
|
this.exitLabel.TabIndex = 9;
|
||||||
|
this.exitLabel.Text = "X";
|
||||||
|
this.exitLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
|
this.exitLabel.Click += new System.EventHandler(this.exitLabel_Click);
|
||||||
|
//
|
||||||
|
// pictureBox1
|
||||||
|
//
|
||||||
|
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx_white;
|
||||||
|
this.pictureBox1.Location = new System.Drawing.Point(53, 12);
|
||||||
|
this.pictureBox1.Name = "pictureBox1";
|
||||||
|
this.pictureBox1.Size = new System.Drawing.Size(258, 64);
|
||||||
|
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||||
|
this.pictureBox1.TabIndex = 29;
|
||||||
|
this.pictureBox1.TabStop = false;
|
||||||
|
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
|
||||||
|
//
|
||||||
|
// devLabel
|
||||||
|
//
|
||||||
|
this.devLabel.AutoSize = true;
|
||||||
|
this.devLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.devLabel.Location = new System.Drawing.Point(140, 131);
|
||||||
|
this.devLabel.Name = "devLabel";
|
||||||
|
this.devLabel.Size = new System.Drawing.Size(84, 13);
|
||||||
|
this.devLabel.TabIndex = 34;
|
||||||
|
this.devLabel.Text = "Developer - AiiR";
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.label1.Location = new System.Drawing.Point(79, 154);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(207, 13);
|
||||||
|
this.label1.TabIndex = 35;
|
||||||
|
this.label1.Text = "Inspired By - Qo-DL by Sorrow and DashLt";
|
||||||
|
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.label2.Location = new System.Drawing.Point(47, 177);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(271, 26);
|
||||||
|
this.label2.TabIndex = 36;
|
||||||
|
this.label2.Text = "Thanks to the users on Github and Telegram for offering\r\nbug reports and ideas!";
|
||||||
|
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.label3.Location = new System.Drawing.Point(15, 237);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(334, 26);
|
||||||
|
this.label3.TabIndex = 37;
|
||||||
|
this.label3.Text = "IF YOU PAID FOR THIS PROGRAM, YOU HAVE BEEN SCAMMED!\r\nTHIS SOFTWARE IS COMPLETELY" +
|
||||||
|
" FREE AND OPEN-SOURCE.";
|
||||||
|
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
|
//
|
||||||
|
// AboutForm
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
|
this.ClientSize = new System.Drawing.Size(365, 289);
|
||||||
|
this.Controls.Add(this.label3);
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.label1);
|
||||||
|
this.Controls.Add(this.devLabel);
|
||||||
|
this.Controls.Add(this.verNumLabel2);
|
||||||
|
this.Controls.Add(this.panel1);
|
||||||
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "AboutForm";
|
||||||
|
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||||
|
this.Text = "QobuzDLX | About";
|
||||||
|
this.Load += new System.EventHandler(this.AboutForm_Load);
|
||||||
|
this.MouseMove += new System.Windows.Forms.MouseEventHandler(this.AboutForm_MouseMove);
|
||||||
|
this.panel1.ResumeLayout(false);
|
||||||
|
this.panel1.PerformLayout();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.Panel panel1;
|
||||||
|
private System.Windows.Forms.Label verNumLabel2;
|
||||||
|
private System.Windows.Forms.Label exitLabel;
|
||||||
|
private System.Windows.Forms.PictureBox pictureBox1;
|
||||||
|
private System.Windows.Forms.Label devLabel;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
}
|
||||||
|
}
|
||||||
78
QobuzDownloaderX/AboutForm.cs
Normal file
78
QobuzDownloaderX/AboutForm.cs
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
using QobuzDownloaderX.Properties;
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.ComponentModel;
|
||||||
|
using System.Data;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
using System.Windows.Forms;
|
||||||
|
using System.Reflection;
|
||||||
|
|
||||||
|
namespace QobuzDownloaderX
|
||||||
|
{
|
||||||
|
public partial class AboutForm : Form
|
||||||
|
{
|
||||||
|
public AboutForm()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public const int WM_NCLBUTTONDOWN = 0xA1;
|
||||||
|
public const int HT_CAPTION = 0x2;
|
||||||
|
|
||||||
|
[DllImportAttribute("user32.dll")]
|
||||||
|
public static extern int SendMessage(IntPtr hWnd, int Msg, int wParam, int lParam);
|
||||||
|
[DllImportAttribute("user32.dll")]
|
||||||
|
public static extern bool ReleaseCapture();
|
||||||
|
|
||||||
|
private void AboutForm_Load(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
// Get and display version number.
|
||||||
|
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void exitLabel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
this.Close();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void panel1_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verNumLabel2_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AboutForm_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1052
QobuzDownloaderX/AboutForm.resx
Normal file
1052
QobuzDownloaderX/AboutForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
@@ -100,6 +100,21 @@
|
|||||||
<setting name="audioType" serializeAs="String">
|
<setting name="audioType" serializeAs="String">
|
||||||
<value>.flac</value>
|
<value>.flac</value>
|
||||||
</setting>
|
</setting>
|
||||||
|
<setting name="savedUserID" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="savedUserAuthToken" serializeAs="String">
|
||||||
|
<value />
|
||||||
|
</setting>
|
||||||
|
<setting name="savedAltLoginValue" serializeAs="String">
|
||||||
|
<value>0</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="savedArtSize" serializeAs="String">
|
||||||
|
<value>1</value>
|
||||||
|
</setting>
|
||||||
|
<setting name="typeTag" serializeAs="String">
|
||||||
|
<value>True</value>
|
||||||
|
</setting>
|
||||||
</QobuzDownloaderX.Properties.Settings>
|
</QobuzDownloaderX.Properties.Settings>
|
||||||
</userSettings>
|
</userSettings>
|
||||||
</configuration>
|
</configuration>
|
||||||
|
|||||||
84
QobuzDownloaderX/Form1.Designer.cs
generated
84
QobuzDownloaderX/Form1.Designer.cs
generated
@@ -101,6 +101,12 @@
|
|||||||
this.logoutLabel = new System.Windows.Forms.Label();
|
this.logoutLabel = new System.Windows.Forms.Label();
|
||||||
this.downloadLabelBG = new System.ComponentModel.BackgroundWorker();
|
this.downloadLabelBG = new System.ComponentModel.BackgroundWorker();
|
||||||
this.hiddenTextPanel = new System.Windows.Forms.Panel();
|
this.hiddenTextPanel = new System.Windows.Forms.Panel();
|
||||||
|
this.downloadFaveAlbumsBG = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.downloadFaveArtistsBG = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.artSizeSelect = new System.Windows.Forms.ComboBox();
|
||||||
|
this.artSizeLabel = new System.Windows.Forms.Label();
|
||||||
|
this.typeCheckbox = new System.Windows.Forms.CheckBox();
|
||||||
|
this.aboutLabel = new System.Windows.Forms.Label();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.logoBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.logoBox)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.profilePictureBox)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.profilePictureBox)).BeginInit();
|
||||||
@@ -927,12 +933,82 @@
|
|||||||
this.hiddenTextPanel.TabIndex = 87;
|
this.hiddenTextPanel.TabIndex = 87;
|
||||||
this.hiddenTextPanel.Visible = false;
|
this.hiddenTextPanel.Visible = false;
|
||||||
//
|
//
|
||||||
|
// downloadFaveAlbumsBG
|
||||||
|
//
|
||||||
|
this.downloadFaveAlbumsBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadFaveAlbumsBG_DoWork);
|
||||||
|
//
|
||||||
|
// downloadFaveArtistsBG
|
||||||
|
//
|
||||||
|
this.downloadFaveArtistsBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadFaveArtistsBG_DoWork);
|
||||||
|
//
|
||||||
|
// artSizeSelect
|
||||||
|
//
|
||||||
|
this.artSizeSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||||
|
this.artSizeSelect.FormattingEnabled = true;
|
||||||
|
this.artSizeSelect.Items.AddRange(new object[] {
|
||||||
|
"max",
|
||||||
|
"600",
|
||||||
|
"300",
|
||||||
|
"150",
|
||||||
|
"100",
|
||||||
|
"50"});
|
||||||
|
this.artSizeSelect.Location = new System.Drawing.Point(634, 538);
|
||||||
|
this.artSizeSelect.Name = "artSizeSelect";
|
||||||
|
this.artSizeSelect.Size = new System.Drawing.Size(121, 21);
|
||||||
|
this.artSizeSelect.TabIndex = 96;
|
||||||
|
this.artSizeSelect.SelectedIndexChanged += new System.EventHandler(this.artSizeSelect_SelectedIndexChanged);
|
||||||
|
//
|
||||||
|
// artSizeLabel
|
||||||
|
//
|
||||||
|
this.artSizeLabel.AutoSize = true;
|
||||||
|
this.artSizeLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.artSizeLabel.Location = new System.Drawing.Point(530, 541);
|
||||||
|
this.artSizeLabel.Name = "artSizeLabel";
|
||||||
|
this.artSizeLabel.Size = new System.Drawing.Size(246, 13);
|
||||||
|
this.artSizeLabel.TabIndex = 97;
|
||||||
|
this.artSizeLabel.Text = "Embedded Art Size: px";
|
||||||
|
//
|
||||||
|
// typeCheckbox
|
||||||
|
//
|
||||||
|
this.typeCheckbox.AutoSize = true;
|
||||||
|
this.typeCheckbox.Checked = true;
|
||||||
|
this.typeCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||||
|
this.typeCheckbox.FlatAppearance.BorderSize = 0;
|
||||||
|
this.typeCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.typeCheckbox.Location = new System.Drawing.Point(533, 563);
|
||||||
|
this.typeCheckbox.Name = "typeCheckbox";
|
||||||
|
this.typeCheckbox.Size = new System.Drawing.Size(92, 17);
|
||||||
|
this.typeCheckbox.TabIndex = 98;
|
||||||
|
this.typeCheckbox.Text = "Release Type";
|
||||||
|
this.typeCheckbox.UseVisualStyleBackColor = true;
|
||||||
|
this.typeCheckbox.CheckedChanged += new System.EventHandler(this.typeCheckbox_CheckedChanged);
|
||||||
|
//
|
||||||
|
// aboutLabel
|
||||||
|
//
|
||||||
|
this.aboutLabel.AutoSize = true;
|
||||||
|
this.aboutLabel.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.aboutLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.aboutLabel.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.aboutLabel.Location = new System.Drawing.Point(866, 8);
|
||||||
|
this.aboutLabel.Name = "aboutLabel";
|
||||||
|
this.aboutLabel.Size = new System.Drawing.Size(15, 23);
|
||||||
|
this.aboutLabel.TabIndex = 99;
|
||||||
|
this.aboutLabel.Text = "i";
|
||||||
|
this.aboutLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
|
this.aboutLabel.Click += new System.EventHandler(this.aboutLabel_Click);
|
||||||
|
this.aboutLabel.MouseLeave += new System.EventHandler(this.aboutLabel_MouseLeave);
|
||||||
|
this.aboutLabel.MouseHover += new System.EventHandler(this.aboutLabel_MouseHover);
|
||||||
|
//
|
||||||
// QobuzDownloaderX
|
// QobuzDownloaderX
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
this.ClientSize = new System.Drawing.Size(938, 533);
|
this.ClientSize = new System.Drawing.Size(938, 733);
|
||||||
|
this.Controls.Add(this.aboutLabel);
|
||||||
|
this.Controls.Add(this.typeCheckbox);
|
||||||
|
this.Controls.Add(this.artSizeSelect);
|
||||||
|
this.Controls.Add(this.artSizeLabel);
|
||||||
this.Controls.Add(this.hiddenTextPanel);
|
this.Controls.Add(this.hiddenTextPanel);
|
||||||
this.Controls.Add(this.logoutLabel);
|
this.Controls.Add(this.logoutLabel);
|
||||||
this.Controls.Add(this.profilePictureBox);
|
this.Controls.Add(this.profilePictureBox);
|
||||||
@@ -1088,6 +1164,12 @@
|
|||||||
private System.Windows.Forms.Label logoutLabel;
|
private System.Windows.Forms.Label logoutLabel;
|
||||||
private System.ComponentModel.BackgroundWorker downloadLabelBG;
|
private System.ComponentModel.BackgroundWorker downloadLabelBG;
|
||||||
private System.Windows.Forms.Panel hiddenTextPanel;
|
private System.Windows.Forms.Panel hiddenTextPanel;
|
||||||
|
private System.ComponentModel.BackgroundWorker downloadFaveAlbumsBG;
|
||||||
|
private System.ComponentModel.BackgroundWorker downloadFaveArtistsBG;
|
||||||
|
private System.Windows.Forms.ComboBox artSizeSelect;
|
||||||
|
private System.Windows.Forms.Label artSizeLabel;
|
||||||
|
private System.Windows.Forms.CheckBox typeCheckbox;
|
||||||
|
private System.Windows.Forms.Label aboutLabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -138,6 +138,12 @@
|
|||||||
<metadata name="downloadLabelBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="downloadLabelBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>901, 13</value>
|
<value>901, 13</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="downloadFaveAlbumsBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>1065, 13</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="downloadFaveArtistsBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>1229, 13</value>
|
||||||
|
</metadata>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
|
|||||||
159
QobuzDownloaderX/LoginForm-v2.Designer.cs
generated
159
QobuzDownloaderX/LoginForm-v2.Designer.cs
generated
@@ -30,20 +30,26 @@
|
|||||||
{
|
{
|
||||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginFrm));
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(LoginFrm));
|
||||||
this.panel1 = new System.Windows.Forms.Panel();
|
this.panel1 = new System.Windows.Forms.Panel();
|
||||||
|
this.disableLogin = new System.Windows.Forms.CheckBox();
|
||||||
this.verNumLabel2 = new System.Windows.Forms.Label();
|
this.verNumLabel2 = new System.Windows.Forms.Label();
|
||||||
|
this.md5Button = new System.Windows.Forms.Button();
|
||||||
this.exitLabel = new System.Windows.Forms.Label();
|
this.exitLabel = new System.Windows.Forms.Label();
|
||||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||||
|
this.userAuthTokenTextbox = new System.Windows.Forms.TextBox();
|
||||||
this.loginButton = new System.Windows.Forms.Button();
|
this.loginButton = new System.Windows.Forms.Button();
|
||||||
this.panel3 = new System.Windows.Forms.Panel();
|
this.panel3 = new System.Windows.Forms.Panel();
|
||||||
this.panel4 = new System.Windows.Forms.Panel();
|
this.panel4 = new System.Windows.Forms.Panel();
|
||||||
this.emailTextbox = new System.Windows.Forms.TextBox();
|
this.emailTextbox = new System.Windows.Forms.TextBox();
|
||||||
this.passwordTextbox = new System.Windows.Forms.TextBox();
|
this.passwordTextbox = new System.Windows.Forms.TextBox();
|
||||||
this.md5Button = new System.Windows.Forms.Button();
|
|
||||||
this.loginText = new System.Windows.Forms.Label();
|
this.loginText = new System.Windows.Forms.Label();
|
||||||
this.getSecretBG = new System.ComponentModel.BackgroundWorker();
|
this.getSecretBG = new System.ComponentModel.BackgroundWorker();
|
||||||
this.loginBG = new System.ComponentModel.BackgroundWorker();
|
this.loginBG = new System.ComponentModel.BackgroundWorker();
|
||||||
this.visableCheckbox = new System.Windows.Forms.CheckBox();
|
this.visableCheckbox = new System.Windows.Forms.CheckBox();
|
||||||
this.disableLogin = new System.Windows.Forms.CheckBox();
|
this.altLoginLabel = new System.Windows.Forms.Label();
|
||||||
|
this.altLoginTutLabel = new System.Windows.Forms.Label();
|
||||||
|
this.userIdTextbox = new System.Windows.Forms.TextBox();
|
||||||
|
this.altLoginBG = new System.ComponentModel.BackgroundWorker();
|
||||||
|
this.aboutLabel = new System.Windows.Forms.Label();
|
||||||
this.panel1.SuspendLayout();
|
this.panel1.SuspendLayout();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@@ -51,8 +57,10 @@
|
|||||||
// panel1
|
// panel1
|
||||||
//
|
//
|
||||||
this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
|
this.panel1.BackgroundImage = global::QobuzDownloaderX.Properties.Resources.login_frame;
|
||||||
|
this.panel1.Controls.Add(this.aboutLabel);
|
||||||
this.panel1.Controls.Add(this.disableLogin);
|
this.panel1.Controls.Add(this.disableLogin);
|
||||||
this.panel1.Controls.Add(this.verNumLabel2);
|
this.panel1.Controls.Add(this.verNumLabel2);
|
||||||
|
this.panel1.Controls.Add(this.md5Button);
|
||||||
this.panel1.Controls.Add(this.exitLabel);
|
this.panel1.Controls.Add(this.exitLabel);
|
||||||
this.panel1.Controls.Add(this.pictureBox1);
|
this.panel1.Controls.Add(this.pictureBox1);
|
||||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
this.panel1.Dock = System.Windows.Forms.DockStyle.Top;
|
||||||
@@ -62,6 +70,18 @@
|
|||||||
this.panel1.TabIndex = 0;
|
this.panel1.TabIndex = 0;
|
||||||
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
|
this.panel1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.panel1_MouseMove);
|
||||||
//
|
//
|
||||||
|
// disableLogin
|
||||||
|
//
|
||||||
|
this.disableLogin.AutoSize = true;
|
||||||
|
this.disableLogin.ForeColor = System.Drawing.Color.Transparent;
|
||||||
|
this.disableLogin.Location = new System.Drawing.Point(12, 155);
|
||||||
|
this.disableLogin.Name = "disableLogin";
|
||||||
|
this.disableLogin.Size = new System.Drawing.Size(90, 17);
|
||||||
|
this.disableLogin.TabIndex = 34;
|
||||||
|
this.disableLogin.Text = "Disable Login";
|
||||||
|
this.disableLogin.UseVisualStyleBackColor = true;
|
||||||
|
this.disableLogin.Visible = false;
|
||||||
|
//
|
||||||
// verNumLabel2
|
// verNumLabel2
|
||||||
//
|
//
|
||||||
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
|
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
|
||||||
@@ -75,6 +95,23 @@
|
|||||||
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||||
this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
|
this.verNumLabel2.MouseMove += new System.Windows.Forms.MouseEventHandler(this.verNumLabel2_MouseMove);
|
||||||
//
|
//
|
||||||
|
// md5Button
|
||||||
|
//
|
||||||
|
this.md5Button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
||||||
|
this.md5Button.Enabled = false;
|
||||||
|
this.md5Button.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
|
this.md5Button.FlatAppearance.BorderSize = 2;
|
||||||
|
this.md5Button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||||
|
this.md5Button.ForeColor = System.Drawing.Color.White;
|
||||||
|
this.md5Button.Location = new System.Drawing.Point(227, 122);
|
||||||
|
this.md5Button.Name = "md5Button";
|
||||||
|
this.md5Button.Size = new System.Drawing.Size(43, 27);
|
||||||
|
this.md5Button.TabIndex = 9;
|
||||||
|
this.md5Button.Text = "MD5";
|
||||||
|
this.md5Button.UseVisualStyleBackColor = false;
|
||||||
|
this.md5Button.Visible = false;
|
||||||
|
this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
|
||||||
|
//
|
||||||
// exitLabel
|
// exitLabel
|
||||||
//
|
//
|
||||||
this.exitLabel.AutoSize = true;
|
this.exitLabel.AutoSize = true;
|
||||||
@@ -101,6 +138,22 @@
|
|||||||
this.pictureBox1.TabStop = false;
|
this.pictureBox1.TabStop = false;
|
||||||
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
|
this.pictureBox1.MouseMove += new System.Windows.Forms.MouseEventHandler(this.pictureBox1_MouseMove);
|
||||||
//
|
//
|
||||||
|
// userAuthTokenTextbox
|
||||||
|
//
|
||||||
|
this.userAuthTokenTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
|
this.userAuthTokenTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.userAuthTokenTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.userAuthTokenTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.userAuthTokenTextbox.Location = new System.Drawing.Point(12, 255);
|
||||||
|
this.userAuthTokenTextbox.Multiline = true;
|
||||||
|
this.userAuthTokenTextbox.Name = "userAuthTokenTextbox";
|
||||||
|
this.userAuthTokenTextbox.Size = new System.Drawing.Size(237, 23);
|
||||||
|
this.userAuthTokenTextbox.TabIndex = 35;
|
||||||
|
this.userAuthTokenTextbox.Text = "user_auth_token";
|
||||||
|
this.userAuthTokenTextbox.Visible = false;
|
||||||
|
this.userAuthTokenTextbox.Click += new System.EventHandler(this.userAuthTokenTextbox_Click);
|
||||||
|
this.userAuthTokenTextbox.Leave += new System.EventHandler(this.userAuthTokenTextbox_Leave);
|
||||||
|
//
|
||||||
// loginButton
|
// loginButton
|
||||||
//
|
//
|
||||||
this.loginButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
this.loginButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
||||||
@@ -123,7 +176,6 @@
|
|||||||
this.panel3.Name = "panel3";
|
this.panel3.Name = "panel3";
|
||||||
this.panel3.Size = new System.Drawing.Size(258, 1);
|
this.panel3.Size = new System.Drawing.Size(258, 1);
|
||||||
this.panel3.TabIndex = 2;
|
this.panel3.TabIndex = 2;
|
||||||
this.panel3.Click += new System.EventHandler(this.panel3_Click);
|
|
||||||
//
|
//
|
||||||
// panel4
|
// panel4
|
||||||
//
|
//
|
||||||
@@ -132,7 +184,6 @@
|
|||||||
this.panel4.Name = "panel4";
|
this.panel4.Name = "panel4";
|
||||||
this.panel4.Size = new System.Drawing.Size(258, 1);
|
this.panel4.Size = new System.Drawing.Size(258, 1);
|
||||||
this.panel4.TabIndex = 2;
|
this.panel4.TabIndex = 2;
|
||||||
this.panel4.Click += new System.EventHandler(this.panel4_Click);
|
|
||||||
//
|
//
|
||||||
// emailTextbox
|
// emailTextbox
|
||||||
//
|
//
|
||||||
@@ -158,32 +209,17 @@
|
|||||||
this.passwordTextbox.Location = new System.Drawing.Point(12, 255);
|
this.passwordTextbox.Location = new System.Drawing.Point(12, 255);
|
||||||
this.passwordTextbox.Multiline = true;
|
this.passwordTextbox.Multiline = true;
|
||||||
this.passwordTextbox.Name = "passwordTextbox";
|
this.passwordTextbox.Name = "passwordTextbox";
|
||||||
this.passwordTextbox.Size = new System.Drawing.Size(209, 23);
|
this.passwordTextbox.Size = new System.Drawing.Size(237, 23);
|
||||||
this.passwordTextbox.TabIndex = 8;
|
this.passwordTextbox.TabIndex = 8;
|
||||||
this.passwordTextbox.Text = "Password";
|
this.passwordTextbox.Text = "Password";
|
||||||
this.passwordTextbox.Click += new System.EventHandler(this.passwordTextbox_Click);
|
this.passwordTextbox.Click += new System.EventHandler(this.passwordTextbox_Click);
|
||||||
this.passwordTextbox.Leave += new System.EventHandler(this.passwordTextbox_Leave);
|
this.passwordTextbox.Leave += new System.EventHandler(this.passwordTextbox_Leave);
|
||||||
//
|
//
|
||||||
// md5Button
|
|
||||||
//
|
|
||||||
this.md5Button.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
|
||||||
this.md5Button.FlatAppearance.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
|
||||||
this.md5Button.FlatAppearance.BorderSize = 2;
|
|
||||||
this.md5Button.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
|
||||||
this.md5Button.ForeColor = System.Drawing.Color.White;
|
|
||||||
this.md5Button.Location = new System.Drawing.Point(227, 250);
|
|
||||||
this.md5Button.Name = "md5Button";
|
|
||||||
this.md5Button.Size = new System.Drawing.Size(43, 27);
|
|
||||||
this.md5Button.TabIndex = 9;
|
|
||||||
this.md5Button.Text = "MD5";
|
|
||||||
this.md5Button.UseVisualStyleBackColor = false;
|
|
||||||
this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
|
|
||||||
//
|
|
||||||
// loginText
|
// loginText
|
||||||
//
|
//
|
||||||
this.loginText.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
this.loginText.Font = new System.Drawing.Font("Trebuchet MS", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
this.loginText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
this.loginText.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
this.loginText.Location = new System.Drawing.Point(12, 333);
|
this.loginText.Location = new System.Drawing.Point(12, 349);
|
||||||
this.loginText.Name = "loginText";
|
this.loginText.Name = "loginText";
|
||||||
this.loginText.Size = new System.Drawing.Size(258, 23);
|
this.loginText.Size = new System.Drawing.Size(258, 23);
|
||||||
this.loginText.TabIndex = 30;
|
this.loginText.TabIndex = 30;
|
||||||
@@ -201,40 +237,89 @@
|
|||||||
// visableCheckbox
|
// visableCheckbox
|
||||||
//
|
//
|
||||||
this.visableCheckbox.AutoSize = true;
|
this.visableCheckbox.AutoSize = true;
|
||||||
this.visableCheckbox.Location = new System.Drawing.Point(206, 257);
|
this.visableCheckbox.Location = new System.Drawing.Point(255, 256);
|
||||||
this.visableCheckbox.Name = "visableCheckbox";
|
this.visableCheckbox.Name = "visableCheckbox";
|
||||||
this.visableCheckbox.Size = new System.Drawing.Size(15, 14);
|
this.visableCheckbox.Size = new System.Drawing.Size(15, 14);
|
||||||
this.visableCheckbox.TabIndex = 31;
|
this.visableCheckbox.TabIndex = 31;
|
||||||
this.visableCheckbox.UseVisualStyleBackColor = true;
|
this.visableCheckbox.UseVisualStyleBackColor = true;
|
||||||
this.visableCheckbox.CheckedChanged += new System.EventHandler(this.visableCheckbox_CheckedChanged);
|
this.visableCheckbox.CheckedChanged += new System.EventHandler(this.visableCheckbox_CheckedChanged);
|
||||||
//
|
//
|
||||||
// disableLogin
|
// altLoginLabel
|
||||||
//
|
//
|
||||||
this.disableLogin.AutoSize = true;
|
this.altLoginLabel.Font = new System.Drawing.Font("Trebuchet MS", 8.25F);
|
||||||
this.disableLogin.ForeColor = System.Drawing.Color.Transparent;
|
this.altLoginLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
this.disableLogin.Location = new System.Drawing.Point(12, 155);
|
this.altLoginLabel.Location = new System.Drawing.Point(12, 326);
|
||||||
this.disableLogin.Name = "disableLogin";
|
this.altLoginLabel.Name = "altLoginLabel";
|
||||||
this.disableLogin.Size = new System.Drawing.Size(90, 17);
|
this.altLoginLabel.Size = new System.Drawing.Size(258, 20);
|
||||||
this.disableLogin.TabIndex = 34;
|
this.altLoginLabel.TabIndex = 32;
|
||||||
this.disableLogin.Text = "Disable Login";
|
this.altLoginLabel.Text = "Can\'t login? Click here";
|
||||||
this.disableLogin.UseVisualStyleBackColor = true;
|
this.altLoginLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||||
this.disableLogin.Visible = false;
|
this.altLoginLabel.Click += new System.EventHandler(this.altLoginLabel_Click);
|
||||||
|
//
|
||||||
|
// altLoginTutLabel
|
||||||
|
//
|
||||||
|
this.altLoginTutLabel.AutoSize = true;
|
||||||
|
this.altLoginTutLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.altLoginTutLabel.Location = new System.Drawing.Point(77, 180);
|
||||||
|
this.altLoginTutLabel.Name = "altLoginTutLabel";
|
||||||
|
this.altLoginTutLabel.Size = new System.Drawing.Size(128, 13);
|
||||||
|
this.altLoginTutLabel.TabIndex = 33;
|
||||||
|
this.altLoginTutLabel.Text = "Click Here for Instructions";
|
||||||
|
this.altLoginTutLabel.Visible = false;
|
||||||
|
this.altLoginTutLabel.Click += new System.EventHandler(this.altLoginTutLabel_Click);
|
||||||
|
//
|
||||||
|
// userIdTextbox
|
||||||
|
//
|
||||||
|
this.userIdTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
|
this.userIdTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||||
|
this.userIdTextbox.Font = new System.Drawing.Font("Trebuchet MS", 9.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.userIdTextbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||||
|
this.userIdTextbox.Location = new System.Drawing.Point(12, 199);
|
||||||
|
this.userIdTextbox.Multiline = true;
|
||||||
|
this.userIdTextbox.Name = "userIdTextbox";
|
||||||
|
this.userIdTextbox.Size = new System.Drawing.Size(258, 23);
|
||||||
|
this.userIdTextbox.TabIndex = 9;
|
||||||
|
this.userIdTextbox.Text = "user_id";
|
||||||
|
this.userIdTextbox.Visible = false;
|
||||||
|
this.userIdTextbox.Click += new System.EventHandler(this.userIdTextbox_Click);
|
||||||
|
this.userIdTextbox.Leave += new System.EventHandler(this.userIdTextbox_Leave);
|
||||||
|
//
|
||||||
|
// altLoginBG
|
||||||
|
//
|
||||||
|
this.altLoginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.altLoginBG_DoWork);
|
||||||
|
//
|
||||||
|
// aboutLabel
|
||||||
|
//
|
||||||
|
this.aboutLabel.AutoSize = true;
|
||||||
|
this.aboutLabel.BackColor = System.Drawing.Color.Transparent;
|
||||||
|
this.aboutLabel.Font = new System.Drawing.Font("Calibri", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||||
|
this.aboutLabel.ForeColor = System.Drawing.Color.Black;
|
||||||
|
this.aboutLabel.Location = new System.Drawing.Point(241, 0);
|
||||||
|
this.aboutLabel.Name = "aboutLabel";
|
||||||
|
this.aboutLabel.Size = new System.Drawing.Size(15, 23);
|
||||||
|
this.aboutLabel.TabIndex = 35;
|
||||||
|
this.aboutLabel.Text = "i";
|
||||||
|
this.aboutLabel.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||||
|
this.aboutLabel.Click += new System.EventHandler(this.aboutLabel_Click);
|
||||||
//
|
//
|
||||||
// LoginFrm
|
// LoginFrm
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||||
this.ClientSize = new System.Drawing.Size(282, 377);
|
this.ClientSize = new System.Drawing.Size(282, 392);
|
||||||
|
this.Controls.Add(this.altLoginTutLabel);
|
||||||
|
this.Controls.Add(this.altLoginLabel);
|
||||||
this.Controls.Add(this.visableCheckbox);
|
this.Controls.Add(this.visableCheckbox);
|
||||||
this.Controls.Add(this.loginText);
|
this.Controls.Add(this.loginText);
|
||||||
this.Controls.Add(this.md5Button);
|
|
||||||
this.Controls.Add(this.panel4);
|
this.Controls.Add(this.panel4);
|
||||||
this.Controls.Add(this.panel3);
|
this.Controls.Add(this.panel3);
|
||||||
this.Controls.Add(this.passwordTextbox);
|
this.Controls.Add(this.passwordTextbox);
|
||||||
this.Controls.Add(this.emailTextbox);
|
this.Controls.Add(this.emailTextbox);
|
||||||
this.Controls.Add(this.loginButton);
|
this.Controls.Add(this.loginButton);
|
||||||
this.Controls.Add(this.panel1);
|
this.Controls.Add(this.panel1);
|
||||||
|
this.Controls.Add(this.userIdTextbox);
|
||||||
|
this.Controls.Add(this.userAuthTokenTextbox);
|
||||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;
|
||||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
this.Name = "LoginFrm";
|
this.Name = "LoginFrm";
|
||||||
@@ -265,5 +350,11 @@
|
|||||||
private System.Windows.Forms.Label verNumLabel2;
|
private System.Windows.Forms.Label verNumLabel2;
|
||||||
private System.Windows.Forms.CheckBox visableCheckbox;
|
private System.Windows.Forms.CheckBox visableCheckbox;
|
||||||
private System.Windows.Forms.CheckBox disableLogin;
|
private System.Windows.Forms.CheckBox disableLogin;
|
||||||
|
private System.Windows.Forms.TextBox userAuthTokenTextbox;
|
||||||
|
private System.Windows.Forms.Label altLoginLabel;
|
||||||
|
private System.Windows.Forms.Label altLoginTutLabel;
|
||||||
|
private System.Windows.Forms.TextBox userIdTextbox;
|
||||||
|
private System.ComponentModel.BackgroundWorker altLoginBG;
|
||||||
|
private System.Windows.Forms.Label aboutLabel;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -19,6 +19,7 @@ using System.Net.Http;
|
|||||||
using System.Net.Http.Headers;
|
using System.Net.Http.Headers;
|
||||||
using System.Drawing.Imaging;
|
using System.Drawing.Imaging;
|
||||||
using TagLib.Flac;
|
using TagLib.Flac;
|
||||||
|
using Newtonsoft.Json.Linq;
|
||||||
using QobuzDownloaderX;
|
using QobuzDownloaderX;
|
||||||
|
|
||||||
namespace QobuzDownloaderX
|
namespace QobuzDownloaderX
|
||||||
@@ -44,12 +45,16 @@ namespace QobuzDownloaderX
|
|||||||
}
|
}
|
||||||
|
|
||||||
QobuzDownloaderX qbdlx = new QobuzDownloaderX();
|
QobuzDownloaderX qbdlx = new QobuzDownloaderX();
|
||||||
|
AboutForm about = new AboutForm();
|
||||||
|
|
||||||
public string appSecret { get; set; }
|
public string appSecret { get; set; }
|
||||||
public string appID { get; set; }
|
public string appID { get; set; }
|
||||||
|
public string userID { get; set; }
|
||||||
|
public string userAuthToken { get; set; }
|
||||||
|
public string altLoginValue { get; set; }
|
||||||
|
|
||||||
string errorLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\Latest_Error.log";
|
string errorLog = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Latest_Error.log");
|
||||||
string dllCheck = Path.GetDirectoryName(Application.ExecutablePath) + "\\taglib-sharp.dll";
|
string dllCheck = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "taglib-sharp.dll");
|
||||||
|
|
||||||
static string GetMd5Hash(MD5 md5Hash, string input)
|
static string GetMd5Hash(MD5 md5Hash, string input)
|
||||||
{
|
{
|
||||||
@@ -89,18 +94,137 @@ namespace QobuzDownloaderX
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void LoginFrm_Load(object sender, EventArgs e)
|
private async void LoginFrm_Load(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
// Get and display version number.
|
||||||
|
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||||
|
|
||||||
|
// Check for taglib-sharp.dll
|
||||||
|
if (!System.IO.File.Exists(dllCheck))
|
||||||
|
{
|
||||||
|
MessageBox.Show("taglib-sharp.dll missing from folder!\r\nPlease Make sure the DLL is in the same folder as QobuzDownloaderX.exe!", "ERROR",
|
||||||
|
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bring to center of screen.
|
||||||
|
CenterToScreen();
|
||||||
|
|
||||||
|
if (Properties.Settings.Default.UpgradeRequired)
|
||||||
|
{
|
||||||
|
Properties.Settings.Default.Upgrade();
|
||||||
|
Properties.Settings.Default.UpgradeRequired = false;
|
||||||
|
Properties.Settings.Default.Save();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set saved settings to correct places.
|
||||||
|
emailTextbox.Text = Settings.Default.savedEmail.ToString();
|
||||||
|
passwordTextbox.Text = Settings.Default.savedPassword.ToString();
|
||||||
|
userIdTextbox.Text = Settings.Default.savedUserID.ToString();
|
||||||
|
userAuthTokenTextbox.Text = Settings.Default.savedUserAuthToken.ToString();
|
||||||
|
altLoginValue = Settings.Default.savedAltLoginValue.ToString();
|
||||||
|
|
||||||
|
// Set alt login mode & label text based on saved value
|
||||||
|
if (altLoginValue == "0")
|
||||||
|
{
|
||||||
|
// Change alt login label text
|
||||||
|
altLoginLabel.Text = "Can't login? Click here";
|
||||||
|
|
||||||
|
// Hide alt login methods
|
||||||
|
altLoginTutLabel.Visible = false;
|
||||||
|
userIdTextbox.Visible = false;
|
||||||
|
userAuthTokenTextbox.Visible = false;
|
||||||
|
|
||||||
|
// Unhide standard login methods
|
||||||
|
emailTextbox.Visible = true;
|
||||||
|
passwordTextbox.Visible = true;
|
||||||
|
}
|
||||||
|
else if (altLoginValue == "1")
|
||||||
|
{
|
||||||
|
// Change alt login label text
|
||||||
|
altLoginLabel.Text = "Login normally? Click here";
|
||||||
|
|
||||||
|
// Hide standard login methods
|
||||||
|
emailTextbox.Visible = false;
|
||||||
|
passwordTextbox.Visible = false;
|
||||||
|
|
||||||
|
// Unhide alt login methods
|
||||||
|
altLoginTutLabel.Visible = true;
|
||||||
|
userIdTextbox.Visible = true;
|
||||||
|
userAuthTokenTextbox.Visible = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set values for email textbox.
|
||||||
|
if (emailTextbox.Text != "Email")
|
||||||
|
{
|
||||||
|
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
if (emailTextbox.Text == null | emailTextbox.Text == "")
|
||||||
|
{
|
||||||
|
emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
emailTextbox.Text = "Email";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set values for user_id textbox.
|
||||||
|
if (userIdTextbox.Text != "user_id")
|
||||||
|
{
|
||||||
|
userIdTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
if (userIdTextbox.Text == null | userIdTextbox.Text == "")
|
||||||
|
{
|
||||||
|
userIdTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
userIdTextbox.Text = "user_id";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set values for password textbox.
|
||||||
|
if (passwordTextbox.Text != "Password")
|
||||||
|
{
|
||||||
|
passwordTextbox.PasswordChar = '*';
|
||||||
|
passwordTextbox.UseSystemPasswordChar = false;
|
||||||
|
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
if (passwordTextbox.Text == null | passwordTextbox.Text == "")
|
||||||
|
{
|
||||||
|
passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
passwordTextbox.UseSystemPasswordChar = true;
|
||||||
|
passwordTextbox.Text = "Password";
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set values for user_auth_token textbox.
|
||||||
|
if (userAuthTokenTextbox.Text != "user_auth_token")
|
||||||
|
{
|
||||||
|
userAuthTokenTextbox.PasswordChar = '*';
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = false;
|
||||||
|
userAuthTokenTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
if (userAuthTokenTextbox.Text == null | userAuthTokenTextbox.Text == "")
|
||||||
|
{
|
||||||
|
userAuthTokenTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = true;
|
||||||
|
userAuthTokenTextbox.Text = "user_auth_token";
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
WebClient versionURLClient = new WebClient();
|
// Create HttpClient to grab version number from Github
|
||||||
|
var versionURLClient = new HttpClient();
|
||||||
// Run through TLS to allow secure connection.
|
// Run through TLS to allow secure connection.
|
||||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||||
string versionHTML = versionURLClient.DownloadString("https://github.com/ImAiiR/QobuzDownloaderX/releases");
|
// Set user-agent to Firefox.
|
||||||
|
versionURLClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
|
||||||
|
|
||||||
// Grab link to bundle.js
|
// Grab response from Github to get Track IDs from Album response.
|
||||||
var versionLog = Regex.Match(versionHTML, "<span class=\"css-truncate-target\" style=\"max-width: 125px\">(?<latestVersion>.*?)<\\/span>").Groups;
|
var versionURL = "https://api.github.com/repos/ImAiiR/QobuzDownloaderX/releases/latest";
|
||||||
var version = versionLog[1].Value;
|
var versionURLResponse = await versionURLClient.GetAsync(versionURL);
|
||||||
|
string versionURLResponseString = versionURLResponse.Content.ReadAsStringAsync().Result;
|
||||||
|
|
||||||
|
// Grab metadata from API JSON response
|
||||||
|
JObject joVersionResponse = JObject.Parse(versionURLResponseString);
|
||||||
|
|
||||||
|
// Grab latest version number
|
||||||
|
string version = (string)joVersionResponse["tag_name"];
|
||||||
|
// Grab changelog
|
||||||
|
string changes = (string)joVersionResponse["body"];
|
||||||
|
|
||||||
string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||||
string newVersion = version;
|
string newVersion = version;
|
||||||
@@ -111,7 +235,7 @@ namespace QobuzDownloaderX
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DialogResult dialogResult = MessageBox.Show("New version of QBDLX is available!\r\n\r\nInstalled version - " + currentVersion + "\r\nLatest version - "+ newVersion + "\r\n\r\nWould you like to update?", "QBDLX | Update Available", MessageBoxButtons.YesNo);
|
DialogResult dialogResult = MessageBox.Show("New version of QBDLX is available!\r\n\r\nInstalled version - " + currentVersion + "\r\nLatest version - " + newVersion + "\r\n\r\nChangelog Below\r\n==============\r\n" + changes.Replace("\\r\\n", "\r\n") + "\r\n==============\r\n\r\nWould you like to update?", "QBDLX | Update Available", MessageBoxButtons.YesNo);
|
||||||
if (dialogResult == DialogResult.Yes)
|
if (dialogResult == DialogResult.Yes)
|
||||||
{
|
{
|
||||||
// If "Yes" is clicked, open GitHub page and close QBDLX.
|
// If "Yes" is clicked, open GitHub page and close QBDLX.
|
||||||
@@ -138,266 +262,106 @@ namespace QobuzDownloaderX
|
|||||||
// Ignore the update until next open.
|
// Ignore the update until next open.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Get and display version number.
|
|
||||||
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
|
||||||
|
|
||||||
// Check for taglib-sharp.dll
|
|
||||||
if (!System.IO.File.Exists(dllCheck))
|
|
||||||
{
|
|
||||||
MessageBox.Show("taglib-sharp.dll missing from folder!\r\nPlease Make sure the DLL is in the same folder as QobuzDownloaderX.exe!", "ERROR",
|
|
||||||
MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
||||||
Application.Exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Bring to center of screen.
|
|
||||||
CenterToScreen();
|
|
||||||
|
|
||||||
if (Properties.Settings.Default.UpgradeRequired)
|
|
||||||
{
|
|
||||||
Properties.Settings.Default.Upgrade();
|
|
||||||
Properties.Settings.Default.UpgradeRequired = false;
|
|
||||||
Properties.Settings.Default.Save();
|
|
||||||
}
|
|
||||||
|
|
||||||
// Set saved settings to correct places.
|
|
||||||
emailTextbox.Text = Settings.Default.savedEmail.ToString();
|
|
||||||
passwordTextbox.Text = Settings.Default.savedPassword.ToString();
|
|
||||||
|
|
||||||
if (emailTextbox.Text != "Email")
|
|
||||||
{
|
|
||||||
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (emailTextbox.Text == null | emailTextbox.Text == "")
|
|
||||||
{
|
|
||||||
emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
|
||||||
emailTextbox.Text = "Email";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (passwordTextbox.Text != "Password")
|
|
||||||
{
|
|
||||||
passwordTextbox.PasswordChar = '*';
|
|
||||||
passwordTextbox.UseSystemPasswordChar = false;
|
|
||||||
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (passwordTextbox.Text == null | passwordTextbox.Text == "")
|
|
||||||
{
|
|
||||||
passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
|
||||||
passwordTextbox.UseSystemPasswordChar = true;
|
|
||||||
passwordTextbox.Text = "Password";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loginButton_Click(object sender, EventArgs e)
|
private void loginButton_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//if (appidTextbox.Text == "app_id" | appidTextbox.Text == null | appidTextbox.Text == "")
|
// Hide alt login label until job is finished or failed
|
||||||
//{
|
altLoginLabel.Visible = false;
|
||||||
// // If there's no app_id typed in.
|
|
||||||
// loginText.Invoke(new Action(() => loginText.Text = "No app_id, please input app_id first."));
|
switch (altLoginValue)
|
||||||
// return;
|
|
||||||
//}
|
|
||||||
if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
|
|
||||||
{
|
{
|
||||||
// If there's no email typed in.
|
// If logging in normally (email & password)
|
||||||
loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first."));
|
case "0":
|
||||||
return;
|
#region Normal Login
|
||||||
}
|
|
||||||
|
|
||||||
var passMD5CheckLog = Regex.Match(passwordTextbox.Text, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
|
#region Check if textboxes are valid
|
||||||
var passMD5Check = passMD5CheckLog[1].Value;
|
if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
|
||||||
|
{
|
||||||
|
// If there's no email typed in.
|
||||||
|
loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (passMD5Check == null | passMD5Check == "")
|
if (passwordTextbox.Text == "Password")
|
||||||
{
|
{
|
||||||
loginText.Text = "Password not MD5! Hit \"MD5\" before logging in!";
|
// If there's no password typed in.
|
||||||
return;
|
loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
|
||||||
}
|
return;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
// Save info locally to be used on next launch.
|
string plainTextPW = passwordTextbox.Text;
|
||||||
Settings.Default.savedEmail = emailTextbox.Text;
|
|
||||||
Settings.Default.savedPassword = passwordTextbox.Text;
|
|
||||||
Settings.Default.Save();
|
|
||||||
|
|
||||||
loginText.Text = "Getting App ID and Secret...";
|
var passMD5CheckLog = Regex.Match(plainTextPW, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
|
||||||
loginButton.Enabled = false;
|
var passMD5Check = passMD5CheckLog[1].Value;
|
||||||
getSecretBG.RunWorkerAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
#region Textbox Focous & Text Change
|
if (passMD5Check == null | passMD5Check == "")
|
||||||
|
{
|
||||||
|
// Generate the MD5 hash using the string created above.
|
||||||
|
using (MD5 md5PassHash = MD5.Create())
|
||||||
|
{
|
||||||
|
string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
|
||||||
|
|
||||||
#region app_id Textbox (Removed)
|
if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
|
||||||
//private void appIdTextbox_Click(object sender, EventArgs e)
|
{
|
||||||
//{
|
// If the MD5 hash is verified, proceed to get the streaming URL.
|
||||||
// if (appidTextbox.Text == "app_id")
|
passwordTextbox.Text = hashedPW;
|
||||||
// {
|
}
|
||||||
// appidTextbox.Text = null;
|
else
|
||||||
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
{
|
||||||
// }
|
// If the hash can't be verified.
|
||||||
//}
|
loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//private void panel2_Click(object sender, EventArgs e)
|
// Save info locally to be used on next launch.
|
||||||
//{
|
Settings.Default.savedEmail = emailTextbox.Text;
|
||||||
// appidTextbox.Focus();
|
Settings.Default.savedPassword = passwordTextbox.Text;
|
||||||
|
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||||
|
Settings.Default.Save();
|
||||||
|
|
||||||
// if (appidTextbox.Text == "app_id")
|
loginText.Text = "Getting App ID and Secret...";
|
||||||
// {
|
loginButton.Enabled = false;
|
||||||
// appidTextbox.Text = null;
|
getSecretBG.RunWorkerAsync();
|
||||||
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
#endregion
|
||||||
// }
|
break;
|
||||||
//}
|
default:
|
||||||
|
#region Alt Login
|
||||||
|
|
||||||
//private void appIdTextbox_Leave(object sender, EventArgs e)
|
#region Check if textboxes are valid
|
||||||
//{
|
if (userIdTextbox.Text == "user_id" | userIdTextbox.Text == null | userIdTextbox.Text == "")
|
||||||
// if (appidTextbox.Text == null | appidTextbox.Text == "")
|
{
|
||||||
// {
|
// If there's no email typed in.
|
||||||
// appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
loginText.Invoke(new Action(() => loginText.Text = "No user_id, please input user_id first."));
|
||||||
// appidTextbox.Text = "app_id";
|
return;
|
||||||
// }
|
}
|
||||||
//}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Email Textbox
|
if (userAuthTokenTextbox.Text == "user_auth_token")
|
||||||
private void emailTextbox_Click(object sender, EventArgs e)
|
{
|
||||||
{
|
// If there's no password typed in.
|
||||||
if (emailTextbox.Text == "Email")
|
loginText.Invoke(new Action(() => loginText.Text = "No user_auth_token typed, please input user_auth_token first."));
|
||||||
{
|
return;
|
||||||
emailTextbox.Text = null;
|
}
|
||||||
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
#endregion
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void panel3_Click(object sender, EventArgs e)
|
// Set user_id & user_auth_token to login.
|
||||||
{
|
userID = userIdTextbox.Text;
|
||||||
emailTextbox.Focus();
|
userAuthToken = userAuthTokenTextbox.Text;
|
||||||
|
|
||||||
if (emailTextbox.Text == "Email")
|
// Save info locally to be used on next launch.
|
||||||
{
|
Settings.Default.savedUserID = userIdTextbox.Text;
|
||||||
emailTextbox.Text = null;
|
Settings.Default.savedUserAuthToken = userAuthTokenTextbox.Text;
|
||||||
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||||
}
|
Settings.Default.Save();
|
||||||
}
|
|
||||||
|
|
||||||
private void emailTextbox_Leave(object sender, EventArgs e)
|
loginText.Text = "Getting App ID and Secret...";
|
||||||
{
|
loginButton.Enabled = false;
|
||||||
if (emailTextbox.Text == null | emailTextbox.Text == "")
|
getSecretBG.RunWorkerAsync();
|
||||||
{
|
#endregion
|
||||||
emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
break;
|
||||||
emailTextbox.Text = "Email";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region Password Textbox
|
|
||||||
private void passwordTextbox_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (passwordTextbox.Text == "Password")
|
|
||||||
{
|
|
||||||
passwordTextbox.Text = null;
|
|
||||||
passwordTextbox.PasswordChar = '*';
|
|
||||||
passwordTextbox.UseSystemPasswordChar = false;
|
|
||||||
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void panel4_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
passwordTextbox.Focus();
|
|
||||||
|
|
||||||
if (passwordTextbox.Text == "Password")
|
|
||||||
{
|
|
||||||
passwordTextbox.Text = null;
|
|
||||||
passwordTextbox.PasswordChar = '*';
|
|
||||||
passwordTextbox.UseSystemPasswordChar = false;
|
|
||||||
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void passwordTextbox_Leave(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (passwordTextbox.Text == null | passwordTextbox.Text == "")
|
|
||||||
{
|
|
||||||
passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
|
||||||
passwordTextbox.UseSystemPasswordChar = true;
|
|
||||||
passwordTextbox.Text = "Password";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
private void visableCheckbox_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (visableCheckbox.Checked == true)
|
|
||||||
{
|
|
||||||
passwordTextbox.UseSystemPasswordChar = true;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
passwordTextbox.UseSystemPasswordChar = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void exitLabel_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
Application.Exit();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void panel1_MouseMove(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Button == MouseButtons.Left)
|
|
||||||
{
|
|
||||||
ReleaseCapture();
|
|
||||||
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Button == MouseButtons.Left)
|
|
||||||
{
|
|
||||||
ReleaseCapture();
|
|
||||||
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void verNumLabel2_MouseMove(object sender, MouseEventArgs e)
|
|
||||||
{
|
|
||||||
if (e.Button == MouseButtons.Left)
|
|
||||||
{
|
|
||||||
ReleaseCapture();
|
|
||||||
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void md5Button_Click(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
if (passwordTextbox.Text == "Password")
|
|
||||||
{
|
|
||||||
// If there's no password typed in.
|
|
||||||
loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
string plainTextPW = passwordTextbox.Text;
|
|
||||||
|
|
||||||
// Generate the MD5 hash using the string created above.
|
|
||||||
using (MD5 md5PassHash = MD5.Create())
|
|
||||||
{
|
|
||||||
string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
|
|
||||||
|
|
||||||
if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
|
|
||||||
{
|
|
||||||
// If the MD5 hash is verified, proceed to get the streaming URL.
|
|
||||||
passwordTextbox.Text = hashedPW;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// If the hash can't be verified.
|
|
||||||
loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -462,51 +426,84 @@ namespace QobuzDownloaderX
|
|||||||
System.IO.File.WriteAllText(errorLog, bundleError);
|
System.IO.File.WriteAllText(errorLog, bundleError);
|
||||||
bundleWR.Abort();
|
bundleWR.Abort();
|
||||||
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||||
|
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
bundleWR.Abort();
|
bundleWR.Abort();
|
||||||
loginBG.RunWorkerAsync();
|
|
||||||
|
if (altLoginValue == "0")
|
||||||
|
{
|
||||||
|
loginBG.RunWorkerAsync();
|
||||||
|
}
|
||||||
|
else if (altLoginValue == "1")
|
||||||
|
{
|
||||||
|
altLoginBG.RunWorkerAsync();
|
||||||
|
}
|
||||||
getSecretBG.CancelAsync();
|
getSecretBG.CancelAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void loginBG_DoWork(object sender, DoWorkEventArgs e)
|
private async void loginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||||
{
|
{
|
||||||
loginBG.WorkerSupportsCancellation = true;
|
loginBG.WorkerSupportsCancellation = true;
|
||||||
|
|
||||||
// Create WebRequest to login using login information from input textboxes.
|
// Create HttpClient to grab Track ID
|
||||||
WebRequest wr = WebRequest.Create("https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appID);
|
var loginClient = new HttpClient();
|
||||||
|
// Run through TLS to allow secure connection.
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||||
|
// Set user-agent to Firefox.
|
||||||
|
loginClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
|
||||||
|
|
||||||
|
// Grab response from Rhapsody to get Track IDs from Album response.
|
||||||
|
var loginUrl = "https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appID;
|
||||||
|
var loginResponse = await loginClient.GetAsync(loginUrl);
|
||||||
|
string loginResponseString = loginResponse.Content.ReadAsStringAsync().Result;
|
||||||
|
|
||||||
|
// Grab metadata from API JSON response
|
||||||
|
JObject joLoginResponse = JObject.Parse(loginResponseString);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
// Grab info to be displayed and used.
|
// Grab user_id
|
||||||
WebResponse ws = wr.GetResponse();
|
string userID = (string)joLoginResponse["user"]["id"];
|
||||||
StreamReader sr = new StreamReader(ws.GetResponseStream());
|
qbdlx.userID = userID;
|
||||||
|
|
||||||
string loginRequest = sr.ReadToEnd();
|
|
||||||
string text = loginRequest;
|
|
||||||
|
|
||||||
// Grab display name
|
// Grab display name
|
||||||
var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?<displayName>.*?)\",\\\"").Groups;
|
string displayName = (string)joLoginResponse["user"]["display_name"];
|
||||||
var displayName = displayNameLog[1].Value;
|
|
||||||
qbdlx.displayName = displayName;
|
qbdlx.displayName = displayName;
|
||||||
|
|
||||||
// Grab account type
|
// Grab account type
|
||||||
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
|
try
|
||||||
var accountType = accountTypeLog[1].Value;
|
{
|
||||||
qbdlx.accountType = accountType;
|
string accountType = (string)joLoginResponse["user"]["credential"]["parameters"]["short_label"];
|
||||||
|
|
||||||
|
// Check if accountType returns null or not
|
||||||
|
switch (accountType)
|
||||||
|
{
|
||||||
|
case null:
|
||||||
|
qbdlx.accountType = null;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qbdlx.accountType = accountType;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Free account, still able to login but won't be able to download anything.
|
||||||
|
qbdlx.accountType = null;
|
||||||
|
}
|
||||||
|
|
||||||
// Grab authentication token
|
// Grab authentication token
|
||||||
var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?<userAuth>.*?)\\\"}").Groups;
|
string userAuthToken = (string)joLoginResponse["user_auth_token"];
|
||||||
var userAuthToken = userAuth[1].Value;
|
qbdlx.userAuth = userAuthToken;
|
||||||
|
|
||||||
// Grab profile image
|
// Grab profile image
|
||||||
var profilePic = Regex.Match(loginRequest, "avatar\\\":\\\"(?<profilePic>.*?)\",").Groups;
|
string profilePic = (string)joLoginResponse["user"]["avatar"];
|
||||||
var profilePicURL = profilePic[1].Value.Replace(@"\", null).Replace("s=50", "s=20");
|
string profilePicURL = profilePic.Replace(@"\", null).Replace("s=50", "s=20");
|
||||||
qbdlx.profilePic = profilePicURL;
|
qbdlx.profilePic = profilePicURL;
|
||||||
|
|
||||||
// Set user_auth_token
|
// Set user_auth_token
|
||||||
qbdlx.userAuth = userAuthToken;
|
|
||||||
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
|
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
@@ -515,19 +512,94 @@ namespace QobuzDownloaderX
|
|||||||
string error = ex.ToString();
|
string error = ex.ToString();
|
||||||
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
|
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
|
||||||
System.IO.File.WriteAllText(errorLog, error);
|
System.IO.File.WriteAllText(errorLog, error);
|
||||||
wr.Abort();
|
|
||||||
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||||
|
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wr.Abort();
|
|
||||||
finishLogin(sender, e);
|
finishLogin(sender, e);
|
||||||
loginBG.CancelAsync();
|
loginBG.CancelAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async void altLoginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||||
|
{
|
||||||
|
altLoginBG.WorkerSupportsCancellation = true;
|
||||||
|
|
||||||
|
// Create HttpClient to grab Track ID
|
||||||
|
var altLoginClient = new HttpClient();
|
||||||
|
// Run through TLS to allow secure connection.
|
||||||
|
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||||
|
// Set user-agent to Firefox.
|
||||||
|
altLoginClient.DefaultRequestHeaders.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
|
||||||
|
|
||||||
|
// Grab response from Rhapsody to get Track IDs from Album response.
|
||||||
|
var altLoginUrl = "http://www.qobuz.com/api.json/0.2/user/get?user_id=" + userID + "&user_auth_token=" + userAuthToken + "&app_id=" + appID;
|
||||||
|
var altLoginResponse = await altLoginClient.GetAsync(altLoginUrl);
|
||||||
|
string altLoginResponseString = altLoginResponse.Content.ReadAsStringAsync().Result;
|
||||||
|
|
||||||
|
// Grab metadata from API JSON response
|
||||||
|
JObject joAltLoginResponse = JObject.Parse(altLoginResponseString);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
// Use user_id that was used by the user
|
||||||
|
qbdlx.userID = userID;
|
||||||
|
|
||||||
|
// Use user_auth_token that was used by the user
|
||||||
|
qbdlx.userAuth = userAuthToken;
|
||||||
|
|
||||||
|
// Grab display name
|
||||||
|
string displayName = (string)joAltLoginResponse["display_name"];
|
||||||
|
qbdlx.displayName = displayName;
|
||||||
|
|
||||||
|
// Grab account type
|
||||||
|
try
|
||||||
|
{
|
||||||
|
string accountType = (string)joAltLoginResponse["subscription"]["offer"];
|
||||||
|
|
||||||
|
// Check if accountType returns null or not
|
||||||
|
switch (accountType)
|
||||||
|
{
|
||||||
|
case null:
|
||||||
|
qbdlx.accountType = null;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
qbdlx.accountType = accountType;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
// Free account, still able to login but won't be able to download anything.
|
||||||
|
qbdlx.accountType = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Grab profile image
|
||||||
|
string profilePic = (string)joAltLoginResponse["avatar"];
|
||||||
|
var profilePicURL = profilePic.Replace(@"\", null).Replace("s=50", "s=20");
|
||||||
|
qbdlx.profilePic = profilePicURL;
|
||||||
|
|
||||||
|
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
|
||||||
|
}
|
||||||
|
catch (Exception ex)
|
||||||
|
{
|
||||||
|
// If connection to API fails, show error info.
|
||||||
|
string error = ex.ToString();
|
||||||
|
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
|
||||||
|
System.IO.File.WriteAllText(errorLog, error);
|
||||||
|
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||||
|
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
finishLogin(sender, e);
|
||||||
|
altLoginBG.CancelAsync();
|
||||||
|
}
|
||||||
|
|
||||||
private void finishLogin(object sender, EventArgs e)
|
private void finishLogin(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||||
|
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||||
// If info is legit, go to the main form.
|
// If info is legit, go to the main form.
|
||||||
qbdlx.appid = appID;
|
qbdlx.appid = appID;
|
||||||
qbdlx.eMail = emailTextbox.Text;
|
qbdlx.eMail = emailTextbox.Text;
|
||||||
@@ -539,7 +611,253 @@ namespace QobuzDownloaderX
|
|||||||
this.Invoke(new Action(() => this.Hide()));
|
this.Invoke(new Action(() => this.Hide()));
|
||||||
Application.Run(qbdlx);
|
Application.Run(qbdlx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
#region Textbox Focous & Text Change
|
||||||
|
|
||||||
|
#region app_id Textbox (Removed)
|
||||||
|
//private void appIdTextbox_Click(object sender, EventArgs e)
|
||||||
|
//{
|
||||||
|
// if (appidTextbox.Text == "app_id")
|
||||||
|
// {
|
||||||
|
// appidTextbox.Text = null;
|
||||||
|
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//private void panel2_Click(object sender, EventArgs e)
|
||||||
|
//{
|
||||||
|
// appidTextbox.Focus();
|
||||||
|
|
||||||
|
// if (appidTextbox.Text == "app_id")
|
||||||
|
// {
|
||||||
|
// appidTextbox.Text = null;
|
||||||
|
// appidTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
|
||||||
|
//private void appIdTextbox_Leave(object sender, EventArgs e)
|
||||||
|
//{
|
||||||
|
// if (appidTextbox.Text == null | appidTextbox.Text == "")
|
||||||
|
// {
|
||||||
|
// appidTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
// appidTextbox.Text = "app_id";
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Email Textbox
|
||||||
|
private void emailTextbox_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (emailTextbox.Text == "Email")
|
||||||
|
{
|
||||||
|
emailTextbox.Text = null;
|
||||||
|
emailTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void emailTextbox_Leave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (emailTextbox.Text == null | emailTextbox.Text == "")
|
||||||
|
{
|
||||||
|
emailTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
emailTextbox.Text = "Email";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region Password Textbox
|
||||||
|
private void passwordTextbox_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (passwordTextbox.Text == "Password")
|
||||||
|
{
|
||||||
|
passwordTextbox.Text = null;
|
||||||
|
passwordTextbox.PasswordChar = '*';
|
||||||
|
passwordTextbox.UseSystemPasswordChar = false;
|
||||||
|
passwordTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void passwordTextbox_Leave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (passwordTextbox.Text == null | passwordTextbox.Text == "")
|
||||||
|
{
|
||||||
|
passwordTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
passwordTextbox.UseSystemPasswordChar = true;
|
||||||
|
passwordTextbox.Text = "Password";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region user_id Textbox
|
||||||
|
private void userIdTextbox_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (userIdTextbox.Text == "user_id")
|
||||||
|
{
|
||||||
|
userIdTextbox.Text = null;
|
||||||
|
userIdTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void userIdTextbox_Leave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (userIdTextbox.Text == null | userIdTextbox.Text == "")
|
||||||
|
{
|
||||||
|
userIdTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
userIdTextbox.Text = "user_id";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region user_auth_token Textbox
|
||||||
|
private void userAuthTokenTextbox_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (userAuthTokenTextbox.Text == "user_auth_token")
|
||||||
|
{
|
||||||
|
userAuthTokenTextbox.Text = null;
|
||||||
|
userAuthTokenTextbox.PasswordChar = '*';
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = false;
|
||||||
|
userAuthTokenTextbox.ForeColor = Color.FromArgb(186, 186, 186);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void userAuthTokenTextbox_Leave(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (userAuthTokenTextbox.Text == null | userAuthTokenTextbox.Text == "")
|
||||||
|
{
|
||||||
|
userAuthTokenTextbox.ForeColor = Color.FromArgb(88, 92, 102);
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = true;
|
||||||
|
userAuthTokenTextbox.Text = "user_auth_token";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
private void visableCheckbox_CheckedChanged(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (visableCheckbox.Checked == true)
|
||||||
|
{
|
||||||
|
passwordTextbox.UseSystemPasswordChar = true;
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
passwordTextbox.UseSystemPasswordChar = false;
|
||||||
|
userAuthTokenTextbox.UseSystemPasswordChar = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void exitLabel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Application.Exit();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void panel1_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void verNumLabel2_MouseMove(object sender, MouseEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.Button == MouseButtons.Left)
|
||||||
|
{
|
||||||
|
ReleaseCapture();
|
||||||
|
SendMessage(Handle, WM_NCLBUTTONDOWN, HT_CAPTION, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void md5Button_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
//if (passwordTextbox.Text == "Password")
|
||||||
|
//{
|
||||||
|
// // If there's no password typed in.
|
||||||
|
// loginText.Invoke(new Action(() => loginText.Text = "No password typed, please input password first."));
|
||||||
|
// return;
|
||||||
|
//}
|
||||||
|
|
||||||
|
//string plainTextPW = passwordTextbox.Text;
|
||||||
|
|
||||||
|
//// Generate the MD5 hash using the string created above.
|
||||||
|
//using (MD5 md5PassHash = MD5.Create())
|
||||||
|
//{
|
||||||
|
// string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
|
||||||
|
|
||||||
|
// if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
|
||||||
|
// {
|
||||||
|
// // If the MD5 hash is verified, proceed to get the streaming URL.
|
||||||
|
// passwordTextbox.Text = hashedPW;
|
||||||
|
// }
|
||||||
|
// else
|
||||||
|
// {
|
||||||
|
// // If the hash can't be verified.
|
||||||
|
// loginText.Invoke(new Action(() => loginText.Text = "Hashing failed. Please retry."));
|
||||||
|
// return;
|
||||||
|
// }
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void altLoginLabel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (altLoginLabel.Text == "Can't login? Click here")
|
||||||
|
{
|
||||||
|
// Set value if alt login is needed.
|
||||||
|
altLoginValue = "1";
|
||||||
|
|
||||||
|
// Change alt login label text
|
||||||
|
altLoginLabel.Text = "Login normally? Click here";
|
||||||
|
|
||||||
|
// Hide standard login methods
|
||||||
|
emailTextbox.Visible = false;
|
||||||
|
passwordTextbox.Visible = false;
|
||||||
|
|
||||||
|
// Unhide alt login methods
|
||||||
|
altLoginTutLabel.Visible = true;
|
||||||
|
userIdTextbox.Visible = true;
|
||||||
|
userAuthTokenTextbox.Visible = true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Set value if alt login is not needed.
|
||||||
|
altLoginValue = "0";
|
||||||
|
|
||||||
|
// Change alt login label text
|
||||||
|
altLoginLabel.Text = "Can't login? Click here";
|
||||||
|
|
||||||
|
// Hide alt login methods
|
||||||
|
altLoginTutLabel.Visible = false;
|
||||||
|
userIdTextbox.Visible = false;
|
||||||
|
userAuthTokenTextbox.Visible = false;
|
||||||
|
|
||||||
|
// Unhide standard login methods
|
||||||
|
emailTextbox.Visible = true;
|
||||||
|
passwordTextbox.Visible = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void altLoginTutLabel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/wiki/Logging-In-(The-Alternate-Way)");
|
||||||
|
}
|
||||||
|
|
||||||
|
private void aboutLabel_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
about.Show();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -123,6 +123,9 @@
|
|||||||
<metadata name="loginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="loginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>138, 20</value>
|
<value>138, 20</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="altLoginBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>302, 20</value>
|
||||||
|
</metadata>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
|
|||||||
@@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
|||||||
// You can specify all the values or you can default the Build and Revision Numbers
|
// You can specify all the values or you can default the Build and Revision Numbers
|
||||||
// by using the '*' as shown below:
|
// by using the '*' as shown below:
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("0.9.9.10")]
|
[assembly: AssemblyVersion("0.9.9.17")]
|
||||||
[assembly: AssemblyFileVersion("0.9.9.10")]
|
[assembly: AssemblyFileVersion("0.9.9.17")]
|
||||||
|
|||||||
60
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
60
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
@@ -382,5 +382,65 @@ namespace QobuzDownloaderX.Properties {
|
|||||||
this["audioType"] = value;
|
this["audioType"] = value;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string savedUserID {
|
||||||
|
get {
|
||||||
|
return ((string)(this["savedUserID"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["savedUserID"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||||
|
public string savedUserAuthToken {
|
||||||
|
get {
|
||||||
|
return ((string)(this["savedUserAuthToken"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["savedUserAuthToken"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("0")]
|
||||||
|
public string savedAltLoginValue {
|
||||||
|
get {
|
||||||
|
return ((string)(this["savedAltLoginValue"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["savedAltLoginValue"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("1")]
|
||||||
|
public int savedArtSize {
|
||||||
|
get {
|
||||||
|
return ((int)(this["savedArtSize"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["savedArtSize"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||||
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
|
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||||
|
public bool typeTag {
|
||||||
|
get {
|
||||||
|
return ((bool)(this["typeTag"]));
|
||||||
|
}
|
||||||
|
set {
|
||||||
|
this["typeTag"] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -92,5 +92,20 @@
|
|||||||
<Setting Name="audioType" Type="System.String" Scope="User">
|
<Setting Name="audioType" Type="System.String" Scope="User">
|
||||||
<Value Profile="(Default)">.flac</Value>
|
<Value Profile="(Default)">.flac</Value>
|
||||||
</Setting>
|
</Setting>
|
||||||
|
<Setting Name="savedUserID" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="savedUserAuthToken" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)" />
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="savedAltLoginValue" Type="System.String" Scope="User">
|
||||||
|
<Value Profile="(Default)">0</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="savedArtSize" Type="System.Int32" Scope="User">
|
||||||
|
<Value Profile="(Default)">1</Value>
|
||||||
|
</Setting>
|
||||||
|
<Setting Name="typeTag" Type="System.Boolean" Scope="User">
|
||||||
|
<Value Profile="(Default)">True</Value>
|
||||||
|
</Setting>
|
||||||
</Settings>
|
</Settings>
|
||||||
</SettingsFile>
|
</SettingsFile>
|
||||||
@@ -52,6 +52,10 @@
|
|||||||
<ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon>
|
<ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
|
||||||
|
<Private>True</Private>
|
||||||
|
</Reference>
|
||||||
<Reference Include="policy.2.0.taglib-sharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
|
<Reference Include="policy.2.0.taglib-sharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll</HintPath>
|
<HintPath>..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll</HintPath>
|
||||||
<Private>True</Private>
|
<Private>True</Private>
|
||||||
@@ -79,6 +83,12 @@
|
|||||||
<Compile Include="Form1.Designer.cs">
|
<Compile Include="Form1.Designer.cs">
|
||||||
<DependentUpon>Form1.cs</DependentUpon>
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="AboutForm.cs">
|
||||||
|
<SubType>Form</SubType>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="AboutForm.Designer.cs">
|
||||||
|
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||||
|
</Compile>
|
||||||
<Compile Include="LoginForm-v2.cs">
|
<Compile Include="LoginForm-v2.cs">
|
||||||
<SubType>Form</SubType>
|
<SubType>Form</SubType>
|
||||||
</Compile>
|
</Compile>
|
||||||
@@ -103,6 +113,9 @@
|
|||||||
<EmbeddedResource Include="Form1.resx">
|
<EmbeddedResource Include="Form1.resx">
|
||||||
<DependentUpon>Form1.cs</DependentUpon>
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
<EmbeddedResource Include="AboutForm.resx">
|
||||||
|
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="LoginForm-v2.resx">
|
<EmbeddedResource Include="LoginForm-v2.resx">
|
||||||
<DependentUpon>LoginForm-v2.cs</DependentUpon>
|
<DependentUpon>LoginForm-v2.cs</DependentUpon>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net46" />
|
||||||
<package id="taglib" version="2.1.0.0" targetFramework="net46" />
|
<package id="taglib" version="2.1.0.0" targetFramework="net46" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -60,7 +60,7 @@ namespace QobuzDownloaderX
|
|||||||
string searchRequest = searchsr.ReadToEnd();
|
string searchRequest = searchsr.ReadToEnd();
|
||||||
|
|
||||||
// Remove backslashes from the stream URL to have a proper URL.
|
// Remove backslashes from the stream URL to have a proper URL.
|
||||||
string resultpattern = "\"maximum_sampling_rate\":(?<sampleRate>.*?),(?:.*?)\",\"id\":\"(?<albumID>.*?)\",\"maximum_bit_depth\":(?<bitDepth>.*?),(?:.*?)\"title\":\"(?<albumTitle>.*?)\",\"(?:.*?)\"artist\":(?:.*?)\"name\":\"(?<albumArtist>.*?)\"";
|
string resultpattern = "\"maximum_bit_depth\":(?<bitDepth>.*?),(?:.*?),\"artist\":(?:.*?)\"name\":\"(?<albumArtist>.*?)\",(?:.*?)\"title\":\"(?<albumTitle>.*?)\"(?:.*?),\"maximum_channel_count\":(?:.*?),\"id\":\"(?<albumID>.*?)\",\"maximum_sampling_rate\":(?<sampleRate>.*?),\"";
|
||||||
string resultinput = searchRequest;
|
string resultinput = searchRequest;
|
||||||
RegexOptions resultoptions = RegexOptions.Multiline;
|
RegexOptions resultoptions = RegexOptions.Multiline;
|
||||||
|
|
||||||
|
|||||||
@@ -2,10 +2,9 @@
|
|||||||
<a href="https://github.com/ImAiiR/QobuzDownloaderX">
|
<a href="https://github.com/ImAiiR/QobuzDownloaderX">
|
||||||
<img src="https://github.com/ImAiiR/QobuzDownloaderX/raw/master/QobuzDownloaderX/Resources/qbdlx.png?raw=true" />
|
<img src="https://github.com/ImAiiR/QobuzDownloaderX/raw/master/QobuzDownloaderX/Resources/qbdlx.png?raw=true" />
|
||||||
</a>
|
</a>
|
||||||
<a href="https://ko-fi.com/I3I41A5DY">
|
|
||||||
<img src="https://www.ko-fi.com/img/githubbutton_sm.svg" />
|
|
||||||
</a>
|
|
||||||
</p>
|
</p>
|
||||||
|
<center><a href="https://www.buymeacoffee.com/ImAiiR" target="_blank"><img src="https://i.imgur.com/H2hMOg6.png" alt="Buy Me A Coffee" style="height: 51px !important;width: 217px !important;" ></a></center>
|
||||||
|
|
||||||
|
|
||||||
Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href="https://github.com/DashLt">Dash</a>
|
Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href="https://github.com/DashLt">Dash</a>
|
||||||
|
|
||||||
@@ -15,6 +14,9 @@ Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href
|
|||||||
</a>
|
</a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
Telegram Group Chat - <a href="https://t.me/QbdLX">@QbdLX</a><br />
|
||||||
|
Telegram Updates Channel - <a href="https://t.me/QobuzDownloaderX">@QobuzDownloaderX</a>
|
||||||
|
|
||||||
# About
|
# About
|
||||||
QobuzDownloaderX is a program for downloading music streams from the streaming platform <a href="https://qobuz.com/">Qobuz</a>.
|
QobuzDownloaderX is a program for downloading music streams from the streaming platform <a href="https://qobuz.com/">Qobuz</a>.
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user