mirror of
https://github.com/NohamR/QobuzDownloaderX.git
synced 2025-06-03 03:10:57 +00:00
Compare commits
14 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
048c577b65 | ||
![]() |
ff3496f24c | ||
![]() |
59d2d0de95 | ||
![]() |
d39800c6c5 | ||
![]() |
be43bdde0a | ||
![]() |
e548bfe90b | ||
![]() |
bcc81b8462 | ||
![]() |
ba8b9e3eec | ||
![]() |
1ead0ed343 | ||
![]() |
3962e0f682 | ||
![]() |
ffbd8e521e | ||
![]() |
ea09798e3c | ||
![]() |
72db4d0814 | ||
![]() |
7fee36c600 |
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
@ -115,6 +115,16 @@
|
||||
<setting name="typeTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="savedMaxLength" serializeAs="String">
|
||||
<value>36</value>
|
||||
</setting>
|
||||
<setting name="savedFilenameTemplate" serializeAs="String">
|
||||
<value>1</value>
|
||||
</setting>
|
||||
<setting name="savedFilenameTemplateString" serializeAs="String">
|
||||
<value>
|
||||
</value>
|
||||
</setting>
|
||||
</QobuzDownloaderX.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
||||
|
252
QobuzDownloaderX/Form1.Designer.cs
generated
252
QobuzDownloaderX/Form1.Designer.cs
generated
@ -106,6 +106,19 @@
|
||||
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();
|
||||
this.enableBtnsButton = new System.Windows.Forms.Button();
|
||||
this.hideDebugButton = new System.Windows.Forms.Button();
|
||||
this.maxLengthLabel = new System.Windows.Forms.Label();
|
||||
this.panel9 = new System.Windows.Forms.Panel();
|
||||
this.maxLengthTextbox = new System.Windows.Forms.TextBox();
|
||||
this.maxLengthWarnLabel = new System.Windows.Forms.Label();
|
||||
this.customFormatPanel = new System.Windows.Forms.Panel();
|
||||
this.customFormatIDTextbox = new System.Windows.Forms.TextBox();
|
||||
this.formatIDLabel = new System.Windows.Forms.Label();
|
||||
this.filenameTempSelect = new System.Windows.Forms.ComboBox();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.downloadPlaylistBG = new System.ComponentModel.BackgroundWorker();
|
||||
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.logoBox)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.profilePictureBox)).BeginInit();
|
||||
@ -442,7 +455,7 @@
|
||||
this.albumArtistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.albumArtistCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.albumArtistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.albumArtistCheckbox.Location = new System.Drawing.Point(325, 563);
|
||||
this.albumArtistCheckbox.Location = new System.Drawing.Point(12, 540);
|
||||
this.albumArtistCheckbox.Name = "albumArtistCheckbox";
|
||||
this.albumArtistCheckbox.Size = new System.Drawing.Size(81, 17);
|
||||
this.albumArtistCheckbox.TabIndex = 62;
|
||||
@ -457,7 +470,7 @@
|
||||
this.artistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.artistCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.artistCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.artistCheckbox.Location = new System.Drawing.Point(325, 609);
|
||||
this.artistCheckbox.Location = new System.Drawing.Point(183, 540);
|
||||
this.artistCheckbox.Name = "artistCheckbox";
|
||||
this.artistCheckbox.Size = new System.Drawing.Size(80, 17);
|
||||
this.artistCheckbox.TabIndex = 63;
|
||||
@ -472,7 +485,7 @@
|
||||
this.trackTitleCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackTitleCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.trackTitleCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.trackTitleCheckbox.Location = new System.Drawing.Point(325, 586);
|
||||
this.trackTitleCheckbox.Location = new System.Drawing.Point(269, 540);
|
||||
this.trackTitleCheckbox.Name = "trackTitleCheckbox";
|
||||
this.trackTitleCheckbox.Size = new System.Drawing.Size(77, 17);
|
||||
this.trackTitleCheckbox.TabIndex = 64;
|
||||
@ -487,7 +500,7 @@
|
||||
this.trackNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackNumberCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.trackNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.trackNumberCheckbox.Location = new System.Drawing.Point(325, 632);
|
||||
this.trackNumberCheckbox.Location = new System.Drawing.Point(104, 568);
|
||||
this.trackNumberCheckbox.Name = "trackNumberCheckbox";
|
||||
this.trackNumberCheckbox.Size = new System.Drawing.Size(94, 17);
|
||||
this.trackNumberCheckbox.TabIndex = 65;
|
||||
@ -502,7 +515,7 @@
|
||||
this.trackTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackTotalCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.trackTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.trackTotalCheckbox.Location = new System.Drawing.Point(325, 655);
|
||||
this.trackTotalCheckbox.Location = new System.Drawing.Point(12, 568);
|
||||
this.trackTotalCheckbox.Name = "trackTotalCheckbox";
|
||||
this.trackTotalCheckbox.Size = new System.Drawing.Size(86, 17);
|
||||
this.trackTotalCheckbox.TabIndex = 66;
|
||||
@ -517,7 +530,7 @@
|
||||
this.discNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.discNumberCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.discNumberCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.discNumberCheckbox.Location = new System.Drawing.Point(325, 676);
|
||||
this.discNumberCheckbox.Location = new System.Drawing.Point(289, 568);
|
||||
this.discNumberCheckbox.Name = "discNumberCheckbox";
|
||||
this.discNumberCheckbox.Size = new System.Drawing.Size(87, 17);
|
||||
this.discNumberCheckbox.TabIndex = 67;
|
||||
@ -532,7 +545,7 @@
|
||||
this.discTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.discTotalCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.discTotalCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.discTotalCheckbox.Location = new System.Drawing.Point(325, 699);
|
||||
this.discTotalCheckbox.Location = new System.Drawing.Point(204, 568);
|
||||
this.discTotalCheckbox.Name = "discTotalCheckbox";
|
||||
this.discTotalCheckbox.Size = new System.Drawing.Size(79, 17);
|
||||
this.discTotalCheckbox.TabIndex = 68;
|
||||
@ -547,7 +560,7 @@
|
||||
this.albumCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.albumCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.albumCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.albumCheckbox.Location = new System.Drawing.Point(325, 540);
|
||||
this.albumCheckbox.Location = new System.Drawing.Point(99, 540);
|
||||
this.albumCheckbox.Name = "albumCheckbox";
|
||||
this.albumCheckbox.Size = new System.Drawing.Size(78, 17);
|
||||
this.albumCheckbox.TabIndex = 69;
|
||||
@ -562,7 +575,7 @@
|
||||
this.explicitCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.explicitCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.explicitCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.explicitCheckbox.Location = new System.Drawing.Point(425, 678);
|
||||
this.explicitCheckbox.Location = new System.Drawing.Point(458, 568);
|
||||
this.explicitCheckbox.Name = "explicitCheckbox";
|
||||
this.explicitCheckbox.Size = new System.Drawing.Size(106, 17);
|
||||
this.explicitCheckbox.TabIndex = 76;
|
||||
@ -577,7 +590,7 @@
|
||||
this.upcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.upcCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.upcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.upcCheckbox.Location = new System.Drawing.Point(425, 655);
|
||||
this.upcCheckbox.Location = new System.Drawing.Point(763, 540);
|
||||
this.upcCheckbox.Name = "upcCheckbox";
|
||||
this.upcCheckbox.Size = new System.Drawing.Size(52, 17);
|
||||
this.upcCheckbox.TabIndex = 75;
|
||||
@ -592,7 +605,7 @@
|
||||
this.isrcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.isrcCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.isrcCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.isrcCheckbox.Location = new System.Drawing.Point(425, 632);
|
||||
this.isrcCheckbox.Location = new System.Drawing.Point(821, 540);
|
||||
this.isrcCheckbox.Name = "isrcCheckbox";
|
||||
this.isrcCheckbox.Size = new System.Drawing.Size(51, 17);
|
||||
this.isrcCheckbox.TabIndex = 74;
|
||||
@ -607,7 +620,7 @@
|
||||
this.copyrightCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.copyrightCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.copyrightCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.copyrightCheckbox.Location = new System.Drawing.Point(425, 609);
|
||||
this.copyrightCheckbox.Location = new System.Drawing.Point(687, 540);
|
||||
this.copyrightCheckbox.Name = "copyrightCheckbox";
|
||||
this.copyrightCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.copyrightCheckbox.TabIndex = 73;
|
||||
@ -622,7 +635,7 @@
|
||||
this.composerCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.composerCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.composerCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.composerCheckbox.Location = new System.Drawing.Point(425, 586);
|
||||
this.composerCheckbox.Location = new System.Drawing.Point(608, 540);
|
||||
this.composerCheckbox.Name = "composerCheckbox";
|
||||
this.composerCheckbox.Size = new System.Drawing.Size(73, 17);
|
||||
this.composerCheckbox.TabIndex = 72;
|
||||
@ -637,7 +650,7 @@
|
||||
this.genreCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.genreCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.genreCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.genreCheckbox.Location = new System.Drawing.Point(425, 563);
|
||||
this.genreCheckbox.Location = new System.Drawing.Point(547, 540);
|
||||
this.genreCheckbox.Name = "genreCheckbox";
|
||||
this.genreCheckbox.Size = new System.Drawing.Size(55, 17);
|
||||
this.genreCheckbox.TabIndex = 71;
|
||||
@ -652,7 +665,7 @@
|
||||
this.releaseCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.releaseCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.releaseCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.releaseCheckbox.Location = new System.Drawing.Point(425, 540);
|
||||
this.releaseCheckbox.Location = new System.Drawing.Point(450, 540);
|
||||
this.releaseCheckbox.Name = "releaseCheckbox";
|
||||
this.releaseCheckbox.Size = new System.Drawing.Size(91, 17);
|
||||
this.releaseCheckbox.TabIndex = 70;
|
||||
@ -665,7 +678,7 @@
|
||||
this.commentCheckbox.AutoSize = true;
|
||||
this.commentCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.commentCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.commentCheckbox.Location = new System.Drawing.Point(533, 699);
|
||||
this.commentCheckbox.Location = new System.Drawing.Point(570, 568);
|
||||
this.commentCheckbox.Name = "commentCheckbox";
|
||||
this.commentCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.commentCheckbox.TabIndex = 78;
|
||||
@ -678,7 +691,7 @@
|
||||
this.commentTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.commentTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.commentTextbox.ForeColor = System.Drawing.Color.White;
|
||||
this.commentTextbox.Location = new System.Drawing.Point(609, 697);
|
||||
this.commentTextbox.Location = new System.Drawing.Point(646, 566);
|
||||
this.commentTextbox.Multiline = true;
|
||||
this.commentTextbox.Name = "commentTextbox";
|
||||
this.commentTextbox.Size = new System.Drawing.Size(112, 17);
|
||||
@ -692,7 +705,7 @@
|
||||
this.imageCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.imageCheckbox.FlatAppearance.BorderSize = 0;
|
||||
this.imageCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.imageCheckbox.Location = new System.Drawing.Point(425, 699);
|
||||
this.imageCheckbox.Location = new System.Drawing.Point(382, 568);
|
||||
this.imageCheckbox.Name = "imageCheckbox";
|
||||
this.imageCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.imageCheckbox.TabIndex = 80;
|
||||
@ -754,7 +767,7 @@
|
||||
//
|
||||
this.mp3WarnLabel.AutoSize = true;
|
||||
this.mp3WarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.mp3WarnLabel.Location = new System.Drawing.Point(744, 711);
|
||||
this.mp3WarnLabel.Location = new System.Drawing.Point(744, 596);
|
||||
this.mp3WarnLabel.Name = "mp3WarnLabel";
|
||||
this.mp3WarnLabel.Size = new System.Drawing.Size(182, 13);
|
||||
this.mp3WarnLabel.TabIndex = 85;
|
||||
@ -851,7 +864,7 @@
|
||||
// panel8
|
||||
//
|
||||
this.panel8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.panel8.Location = new System.Drawing.Point(609, 716);
|
||||
this.panel8.Location = new System.Drawing.Point(646, 585);
|
||||
this.panel8.Name = "panel8";
|
||||
this.panel8.Size = new System.Drawing.Size(112, 1);
|
||||
this.panel8.TabIndex = 90;
|
||||
@ -862,7 +875,7 @@
|
||||
this.streamableCheckbox.Checked = true;
|
||||
this.streamableCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.streamableCheckbox.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.streamableCheckbox.Location = new System.Drawing.Point(243, 12);
|
||||
this.streamableCheckbox.Location = new System.Drawing.Point(243, 41);
|
||||
this.streamableCheckbox.Name = "streamableCheckbox";
|
||||
this.streamableCheckbox.Size = new System.Drawing.Size(113, 17);
|
||||
this.streamableCheckbox.TabIndex = 91;
|
||||
@ -875,13 +888,14 @@
|
||||
this.secretTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.secretTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.secretTextbox.ForeColor = System.Drawing.Color.White;
|
||||
this.secretTextbox.Location = new System.Drawing.Point(352, 35);
|
||||
this.secretTextbox.Location = new System.Drawing.Point(412, 15);
|
||||
this.secretTextbox.Multiline = true;
|
||||
this.secretTextbox.Name = "secretTextbox";
|
||||
this.secretTextbox.ReadOnly = true;
|
||||
this.secretTextbox.Size = new System.Drawing.Size(209, 20);
|
||||
this.secretTextbox.Size = new System.Drawing.Size(179, 20);
|
||||
this.secretTextbox.TabIndex = 92;
|
||||
this.secretTextbox.Visible = false;
|
||||
this.secretTextbox.WordWrap = false;
|
||||
//
|
||||
// displaySecretButton
|
||||
//
|
||||
@ -889,7 +903,7 @@
|
||||
this.displaySecretButton.FlatAppearance.BorderSize = 0;
|
||||
this.displaySecretButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.displaySecretButton.ForeColor = System.Drawing.Color.White;
|
||||
this.displaySecretButton.Location = new System.Drawing.Point(243, 32);
|
||||
this.displaySecretButton.Location = new System.Drawing.Point(303, 12);
|
||||
this.displaySecretButton.Name = "displaySecretButton";
|
||||
this.displaySecretButton.Size = new System.Drawing.Size(103, 23);
|
||||
this.displaySecretButton.TabIndex = 93;
|
||||
@ -926,9 +940,9 @@
|
||||
// hiddenTextPanel
|
||||
//
|
||||
this.hiddenTextPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.hiddenTextPanel.Location = new System.Drawing.Point(352, 55);
|
||||
this.hiddenTextPanel.Location = new System.Drawing.Point(412, 36);
|
||||
this.hiddenTextPanel.Name = "hiddenTextPanel";
|
||||
this.hiddenTextPanel.Size = new System.Drawing.Size(209, 1);
|
||||
this.hiddenTextPanel.Size = new System.Drawing.Size(179, 1);
|
||||
this.hiddenTextPanel.TabIndex = 87;
|
||||
this.hiddenTextPanel.Visible = false;
|
||||
//
|
||||
@ -951,9 +965,9 @@
|
||||
"150",
|
||||
"100",
|
||||
"50"});
|
||||
this.artSizeSelect.Location = new System.Drawing.Point(634, 538);
|
||||
this.artSizeSelect.Location = new System.Drawing.Point(113, 593);
|
||||
this.artSizeSelect.Name = "artSizeSelect";
|
||||
this.artSizeSelect.Size = new System.Drawing.Size(121, 21);
|
||||
this.artSizeSelect.Size = new System.Drawing.Size(87, 21);
|
||||
this.artSizeSelect.TabIndex = 96;
|
||||
this.artSizeSelect.SelectedIndexChanged += new System.EventHandler(this.artSizeSelect_SelectedIndexChanged);
|
||||
//
|
||||
@ -961,11 +975,11 @@
|
||||
//
|
||||
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.Location = new System.Drawing.Point(12, 596);
|
||||
this.artSizeLabel.Name = "artSizeLabel";
|
||||
this.artSizeLabel.Size = new System.Drawing.Size(246, 13);
|
||||
this.artSizeLabel.Size = new System.Drawing.Size(207, 13);
|
||||
this.artSizeLabel.TabIndex = 97;
|
||||
this.artSizeLabel.Text = "Embedded Art Size: px";
|
||||
this.artSizeLabel.Text = "Embedded Art Size: px";
|
||||
//
|
||||
// typeCheckbox
|
||||
//
|
||||
@ -974,7 +988,7 @@
|
||||
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.Location = new System.Drawing.Point(352, 540);
|
||||
this.typeCheckbox.Name = "typeCheckbox";
|
||||
this.typeCheckbox.Size = new System.Drawing.Size(92, 17);
|
||||
this.typeCheckbox.TabIndex = 98;
|
||||
@ -982,12 +996,171 @@
|
||||
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);
|
||||
//
|
||||
// enableBtnsButton
|
||||
//
|
||||
this.enableBtnsButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
||||
this.enableBtnsButton.FlatAppearance.BorderSize = 0;
|
||||
this.enableBtnsButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.enableBtnsButton.ForeColor = System.Drawing.Color.White;
|
||||
this.enableBtnsButton.Location = new System.Drawing.Point(597, 28);
|
||||
this.enableBtnsButton.Name = "enableBtnsButton";
|
||||
this.enableBtnsButton.Size = new System.Drawing.Size(120, 23);
|
||||
this.enableBtnsButton.TabIndex = 100;
|
||||
this.enableBtnsButton.Text = "Re-Enable Buttons";
|
||||
this.enableBtnsButton.UseVisualStyleBackColor = false;
|
||||
this.enableBtnsButton.Visible = false;
|
||||
this.enableBtnsButton.Click += new System.EventHandler(this.enableBtnsButton_Click);
|
||||
//
|
||||
// hideDebugButton
|
||||
//
|
||||
this.hideDebugButton.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(112)))), ((int)(((byte)(239)))));
|
||||
this.hideDebugButton.FlatAppearance.BorderSize = 0;
|
||||
this.hideDebugButton.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
|
||||
this.hideDebugButton.ForeColor = System.Drawing.Color.White;
|
||||
this.hideDebugButton.Location = new System.Drawing.Point(243, 12);
|
||||
this.hideDebugButton.Name = "hideDebugButton";
|
||||
this.hideDebugButton.Size = new System.Drawing.Size(54, 23);
|
||||
this.hideDebugButton.TabIndex = 101;
|
||||
this.hideDebugButton.Text = "Hide";
|
||||
this.hideDebugButton.UseVisualStyleBackColor = false;
|
||||
this.hideDebugButton.Visible = false;
|
||||
this.hideDebugButton.Click += new System.EventHandler(this.hideDebugButton_Click);
|
||||
//
|
||||
// maxLengthLabel
|
||||
//
|
||||
this.maxLengthLabel.AutoSize = true;
|
||||
this.maxLengthLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.maxLengthLabel.Location = new System.Drawing.Point(444, 596);
|
||||
this.maxLengthLabel.Name = "maxLengthLabel";
|
||||
this.maxLengthLabel.Size = new System.Drawing.Size(121, 13);
|
||||
this.maxLengthLabel.TabIndex = 102;
|
||||
this.maxLengthLabel.Text = "Max File Name Length**";
|
||||
//
|
||||
// panel9
|
||||
//
|
||||
this.panel9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.panel9.Location = new System.Drawing.Point(567, 610);
|
||||
this.panel9.Name = "panel9";
|
||||
this.panel9.Size = new System.Drawing.Size(68, 1);
|
||||
this.panel9.TabIndex = 92;
|
||||
//
|
||||
// maxLengthTextbox
|
||||
//
|
||||
this.maxLengthTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.maxLengthTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.maxLengthTextbox.ForeColor = System.Drawing.Color.White;
|
||||
this.maxLengthTextbox.Location = new System.Drawing.Point(567, 596);
|
||||
this.maxLengthTextbox.Multiline = true;
|
||||
this.maxLengthTextbox.Name = "maxLengthTextbox";
|
||||
this.maxLengthTextbox.Size = new System.Drawing.Size(68, 17);
|
||||
this.maxLengthTextbox.TabIndex = 91;
|
||||
this.maxLengthTextbox.TextChanged += new System.EventHandler(this.maxLengthTextbox_TextChanged);
|
||||
//
|
||||
// maxLengthWarnLabel
|
||||
//
|
||||
this.maxLengthWarnLabel.AutoSize = true;
|
||||
this.maxLengthWarnLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.maxLengthWarnLabel.Location = new System.Drawing.Point(819, 610);
|
||||
this.maxLengthWarnLabel.Name = "maxLengthWarnLabel";
|
||||
this.maxLengthWarnLabel.Size = new System.Drawing.Size(107, 13);
|
||||
this.maxLengthWarnLabel.TabIndex = 103;
|
||||
this.maxLengthWarnLabel.Text = "** = Max value is 110";
|
||||
//
|
||||
// customFormatPanel
|
||||
//
|
||||
this.customFormatPanel.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.customFormatPanel.Location = new System.Drawing.Point(572, 60);
|
||||
this.customFormatPanel.Name = "customFormatPanel";
|
||||
this.customFormatPanel.Size = new System.Drawing.Size(19, 1);
|
||||
this.customFormatPanel.TabIndex = 104;
|
||||
this.customFormatPanel.Visible = false;
|
||||
//
|
||||
// customFormatIDTextbox
|
||||
//
|
||||
this.customFormatIDTextbox.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(20)))), ((int)(((byte)(20)))), ((int)(((byte)(20)))));
|
||||
this.customFormatIDTextbox.BorderStyle = System.Windows.Forms.BorderStyle.None;
|
||||
this.customFormatIDTextbox.ForeColor = System.Drawing.Color.White;
|
||||
this.customFormatIDTextbox.Location = new System.Drawing.Point(572, 42);
|
||||
this.customFormatIDTextbox.Multiline = true;
|
||||
this.customFormatIDTextbox.Name = "customFormatIDTextbox";
|
||||
this.customFormatIDTextbox.Size = new System.Drawing.Size(19, 20);
|
||||
this.customFormatIDTextbox.TabIndex = 105;
|
||||
this.customFormatIDTextbox.Visible = false;
|
||||
this.customFormatIDTextbox.WordWrap = false;
|
||||
this.customFormatIDTextbox.TextChanged += new System.EventHandler(this.customFormatIDTextbox_TextChanged);
|
||||
//
|
||||
// formatIDLabel
|
||||
//
|
||||
this.formatIDLabel.AutoSize = true;
|
||||
this.formatIDLabel.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.formatIDLabel.Location = new System.Drawing.Point(513, 42);
|
||||
this.formatIDLabel.Name = "formatIDLabel";
|
||||
this.formatIDLabel.Size = new System.Drawing.Size(53, 13);
|
||||
this.formatIDLabel.TabIndex = 106;
|
||||
this.formatIDLabel.Text = "Format ID";
|
||||
this.formatIDLabel.Visible = false;
|
||||
//
|
||||
// filenameTempSelect
|
||||
//
|
||||
this.filenameTempSelect.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList;
|
||||
this.filenameTempSelect.FormattingEnabled = true;
|
||||
this.filenameTempSelect.Items.AddRange(new object[] {
|
||||
"00 Trackname",
|
||||
"00 - Trackname"});
|
||||
this.filenameTempSelect.Location = new System.Drawing.Point(325, 593);
|
||||
this.filenameTempSelect.Name = "filenameTempSelect";
|
||||
this.filenameTempSelect.Size = new System.Drawing.Size(108, 21);
|
||||
this.filenameTempSelect.TabIndex = 107;
|
||||
this.filenameTempSelect.SelectedIndexChanged += new System.EventHandler(this.filenameTempSelect_SelectedIndexChanged);
|
||||
//
|
||||
// label7
|
||||
//
|
||||
this.label7.AutoSize = true;
|
||||
this.label7.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(88)))), ((int)(((byte)(92)))), ((int)(((byte)(102)))));
|
||||
this.label7.Location = new System.Drawing.Point(225, 596);
|
||||
this.label7.Name = "label7";
|
||||
this.label7.Size = new System.Drawing.Size(99, 13);
|
||||
this.label7.TabIndex = 108;
|
||||
this.label7.Text = "Filename Template:";
|
||||
//
|
||||
// downloadPlaylistBG
|
||||
//
|
||||
this.downloadPlaylistBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadPlaylistBG_DoWork);
|
||||
//
|
||||
// QobuzDownloaderX
|
||||
//
|
||||
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(938, 733);
|
||||
this.ClientSize = new System.Drawing.Size(938, 632);
|
||||
this.Controls.Add(this.filenameTempSelect);
|
||||
this.Controls.Add(this.label7);
|
||||
this.Controls.Add(this.formatIDLabel);
|
||||
this.Controls.Add(this.customFormatPanel);
|
||||
this.Controls.Add(this.customFormatIDTextbox);
|
||||
this.Controls.Add(this.maxLengthWarnLabel);
|
||||
this.Controls.Add(this.panel9);
|
||||
this.Controls.Add(this.maxLengthTextbox);
|
||||
this.Controls.Add(this.maxLengthLabel);
|
||||
this.Controls.Add(this.hideDebugButton);
|
||||
this.Controls.Add(this.enableBtnsButton);
|
||||
this.Controls.Add(this.aboutLabel);
|
||||
this.Controls.Add(this.typeCheckbox);
|
||||
this.Controls.Add(this.artSizeSelect);
|
||||
this.Controls.Add(this.artSizeLabel);
|
||||
@ -1151,6 +1324,19 @@
|
||||
private System.Windows.Forms.ComboBox artSizeSelect;
|
||||
private System.Windows.Forms.Label artSizeLabel;
|
||||
private System.Windows.Forms.CheckBox typeCheckbox;
|
||||
private System.Windows.Forms.Label aboutLabel;
|
||||
private System.Windows.Forms.Button enableBtnsButton;
|
||||
private System.Windows.Forms.Button hideDebugButton;
|
||||
private System.Windows.Forms.Label maxLengthLabel;
|
||||
private System.Windows.Forms.Panel panel9;
|
||||
private System.Windows.Forms.TextBox maxLengthTextbox;
|
||||
private System.Windows.Forms.Label maxLengthWarnLabel;
|
||||
private System.Windows.Forms.Panel customFormatPanel;
|
||||
private System.Windows.Forms.TextBox customFormatIDTextbox;
|
||||
private System.Windows.Forms.Label formatIDLabel;
|
||||
private System.Windows.Forms.ComboBox filenameTempSelect;
|
||||
private System.Windows.Forms.Label label7;
|
||||
private System.ComponentModel.BackgroundWorker downloadPlaylistBG;
|
||||
}
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -144,6 +144,9 @@
|
||||
<metadata name="downloadFaveArtistsBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>1229, 13</value>
|
||||
</metadata>
|
||||
<metadata name="downloadPlaylistBG.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 52</value>
|
||||
</metadata>
|
||||
<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">
|
||||
<value>
|
||||
|
17
QobuzDownloaderX/LoginForm-v2.Designer.cs
generated
17
QobuzDownloaderX/LoginForm-v2.Designer.cs
generated
@ -49,6 +49,7 @@
|
||||
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();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
@ -56,6 +57,7 @@
|
||||
// panel1
|
||||
//
|
||||
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.verNumLabel2);
|
||||
this.panel1.Controls.Add(this.md5Button);
|
||||
@ -286,6 +288,20 @@
|
||||
//
|
||||
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
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
@ -339,5 +355,6 @@
|
||||
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.Drawing.Imaging;
|
||||
using TagLib.Flac;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using QobuzDownloaderX;
|
||||
|
||||
namespace QobuzDownloaderX
|
||||
@ -44,6 +45,7 @@ namespace QobuzDownloaderX
|
||||
}
|
||||
|
||||
QobuzDownloaderX qbdlx = new QobuzDownloaderX();
|
||||
AboutForm about = new AboutForm();
|
||||
|
||||
public string appSecret { get; set; }
|
||||
public string appID { get; set; }
|
||||
@ -51,8 +53,8 @@ namespace QobuzDownloaderX
|
||||
public string userAuthToken { get; set; }
|
||||
public string altLoginValue { get; set; }
|
||||
|
||||
string errorLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\Latest_Error.log";
|
||||
string dllCheck = Path.GetDirectoryName(Application.ExecutablePath) + "\\taglib-sharp.dll";
|
||||
string errorLog = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "Latest_Error.log");
|
||||
string dllCheck = Path.Combine(Path.GetDirectoryName(Application.ExecutablePath), "taglib-sharp.dll");
|
||||
|
||||
static string GetMd5Hash(MD5 md5Hash, string input)
|
||||
{
|
||||
@ -92,62 +94,8 @@ namespace QobuzDownloaderX
|
||||
}
|
||||
}
|
||||
|
||||
private void LoginFrm_Load(object sender, EventArgs e)
|
||||
private async void LoginFrm_Load(object sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
WebClient versionURLClient = new WebClient();
|
||||
// Run through TLS to allow secure connection.
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
// Set user-agent to Firefox.
|
||||
versionURLClient.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:67.0) Gecko/20100101 Firefox/67.0");
|
||||
string versionHTML = versionURLClient.DownloadString("https://api.github.com/repos/ImAiiR/QobuzDownloaderX/releases/latest");
|
||||
|
||||
// Grab latest version number
|
||||
var versionLog = Regex.Match(versionHTML, "\"tag_name\": \"(?<latestVersion>.*?)\",").Groups;
|
||||
var version = versionLog[1].Value;
|
||||
|
||||
// Grab changelog
|
||||
var changesLog = Regex.Match(versionHTML, "\"body\": \"(?<changeLog>.*?)\"").Groups;
|
||||
var changes = changesLog[1].Value;
|
||||
|
||||
string currentVersion = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
string newVersion = version;
|
||||
|
||||
if (currentVersion.Contains(newVersion))
|
||||
{
|
||||
// Do nothing. All is good.
|
||||
}
|
||||
else
|
||||
{
|
||||
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 "Yes" is clicked, open GitHub page and close QBDLX.
|
||||
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
|
||||
Application.Exit();
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
// Ignore the update until next open.
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("Connection to GitHub to check for an update has failed.\r\nWould you like to check for an update manually?\r\n\r\nYour current version is " + Assembly.GetExecutingAssembly().GetName().Version.ToString(), "QBDLX | GitHub Connection Failed", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
// If "Yes" is clicked, open GitHub page and close QBDLX.
|
||||
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
|
||||
Application.Exit();
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
// Ignore the update until next open.
|
||||
}
|
||||
}
|
||||
|
||||
// Get and display version number.
|
||||
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
|
||||
@ -255,6 +203,65 @@ namespace QobuzDownloaderX
|
||||
userAuthTokenTextbox.UseSystemPasswordChar = true;
|
||||
userAuthTokenTextbox.Text = "user_auth_token";
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
// Create HttpClient to grab version number from Github
|
||||
var versionURLClient = new HttpClient();
|
||||
// Run through TLS to allow secure connection.
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
// 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 response from Github to get Track IDs from Album response.
|
||||
var versionURL = "https://api.github.com/repos/ImAiiR/QobuzDownloaderX/releases/latest";
|
||||
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 newVersion = version;
|
||||
|
||||
if (currentVersion.Contains(newVersion))
|
||||
{
|
||||
// Do nothing. All is good.
|
||||
}
|
||||
else
|
||||
{
|
||||
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 "Yes" is clicked, open GitHub page and close QBDLX.
|
||||
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
|
||||
Application.Exit();
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
// Ignore the update until next open.
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
DialogResult dialogResult = MessageBox.Show("Connection to GitHub to check for an update has failed.\r\nWould you like to check for an update manually?\r\n\r\nYour current version is " + Assembly.GetExecutingAssembly().GetName().Version.ToString(), "QBDLX | GitHub Connection Failed", MessageBoxButtons.YesNo);
|
||||
if (dialogResult == DialogResult.Yes)
|
||||
{
|
||||
// If "Yes" is clicked, open GitHub page and close QBDLX.
|
||||
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/releases/latest");
|
||||
Application.Exit();
|
||||
}
|
||||
else if (dialogResult == DialogResult.No)
|
||||
{
|
||||
// Ignore the update until next open.
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void loginButton_Click(object sender, EventArgs e)
|
||||
@ -262,93 +269,99 @@ namespace QobuzDownloaderX
|
||||
// Hide alt login label until job is finished or failed
|
||||
altLoginLabel.Visible = false;
|
||||
|
||||
// If logging in normally (email & password)
|
||||
if (altLoginValue == "0")
|
||||
switch (altLoginValue)
|
||||
{
|
||||
#region Normal Login
|
||||
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 logging in normally (email & password)
|
||||
case "0":
|
||||
#region Normal Login
|
||||
|
||||
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;
|
||||
|
||||
var passMD5CheckLog = Regex.Match(plainTextPW, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
|
||||
var passMD5Check = passMD5CheckLog[1].Value;
|
||||
|
||||
if (passMD5Check == null | passMD5Check == "")
|
||||
{
|
||||
// Generate the MD5 hash using the string created above.
|
||||
using (MD5 md5PassHash = MD5.Create())
|
||||
#region Check if textboxes are valid
|
||||
if (emailTextbox.Text == "Email" | emailTextbox.Text == null | emailTextbox.Text == "")
|
||||
{
|
||||
string hashedPW = GetMd5Hash(md5PassHash, plainTextPW);
|
||||
// If there's no email typed in.
|
||||
loginText.Invoke(new Action(() => loginText.Text = "No email, please input email first."));
|
||||
return;
|
||||
}
|
||||
|
||||
if (VerifyMd5Hash(md5PassHash, plainTextPW, hashedPW))
|
||||
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;
|
||||
}
|
||||
#endregion
|
||||
|
||||
string plainTextPW = passwordTextbox.Text;
|
||||
|
||||
var passMD5CheckLog = Regex.Match(plainTextPW, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
|
||||
var passMD5Check = passMD5CheckLog[1].Value;
|
||||
|
||||
if (passMD5Check == null | passMD5Check == "")
|
||||
{
|
||||
// Generate the MD5 hash using the string created above.
|
||||
using (MD5 md5PassHash = MD5.Create())
|
||||
{
|
||||
// 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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Save info locally to be used on next launch.
|
||||
Settings.Default.savedEmail = emailTextbox.Text;
|
||||
Settings.Default.savedPassword = passwordTextbox.Text;
|
||||
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||
Settings.Default.Save();
|
||||
// Save info locally to be used on next launch.
|
||||
Settings.Default.savedEmail = emailTextbox.Text;
|
||||
Settings.Default.savedPassword = passwordTextbox.Text;
|
||||
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||
Settings.Default.Save();
|
||||
|
||||
loginText.Text = "Getting App ID and Secret...";
|
||||
loginButton.Enabled = false;
|
||||
getSecretBG.RunWorkerAsync();
|
||||
#endregion
|
||||
}
|
||||
// If logging in the alternate way (user_id & user_auth_token)
|
||||
else
|
||||
{
|
||||
#region Alt Login
|
||||
if (userIdTextbox.Text == "user_id" | userIdTextbox.Text == null | userIdTextbox.Text == "")
|
||||
{
|
||||
// If there's no email typed in.
|
||||
loginText.Invoke(new Action(() => loginText.Text = "No user_id, please input user_id first."));
|
||||
return;
|
||||
}
|
||||
loginText.Text = "Getting App ID and Secret...";
|
||||
loginButton.Enabled = false;
|
||||
getSecretBG.RunWorkerAsync();
|
||||
#endregion
|
||||
break;
|
||||
default:
|
||||
#region Alt Login
|
||||
|
||||
if (userAuthTokenTextbox.Text == "user_auth_token")
|
||||
{
|
||||
// If there's no password typed in.
|
||||
loginText.Invoke(new Action(() => loginText.Text = "No user_auth_token typed, please input user_auth_token first."));
|
||||
return;
|
||||
}
|
||||
#region Check if textboxes are valid
|
||||
if (userIdTextbox.Text == "user_id" | userIdTextbox.Text == null | userIdTextbox.Text == "")
|
||||
{
|
||||
// If there's no email typed in.
|
||||
loginText.Invoke(new Action(() => loginText.Text = "No user_id, please input user_id first."));
|
||||
return;
|
||||
}
|
||||
|
||||
// Set user_id & user_auth_token to login.
|
||||
userID = userIdTextbox.Text;
|
||||
userAuthToken = userAuthTokenTextbox.Text;
|
||||
if (userAuthTokenTextbox.Text == "user_auth_token")
|
||||
{
|
||||
// If there's no password typed in.
|
||||
loginText.Invoke(new Action(() => loginText.Text = "No user_auth_token typed, please input user_auth_token first."));
|
||||
return;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// Save info locally to be used on next launch.
|
||||
Settings.Default.savedUserID = userIdTextbox.Text;
|
||||
Settings.Default.savedUserAuthToken = userAuthTokenTextbox.Text;
|
||||
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||
Settings.Default.Save();
|
||||
// Set user_id & user_auth_token to login.
|
||||
userID = userIdTextbox.Text;
|
||||
userAuthToken = userAuthTokenTextbox.Text;
|
||||
|
||||
loginText.Text = "Getting App ID and Secret...";
|
||||
loginButton.Enabled = false;
|
||||
getSecretBG.RunWorkerAsync();
|
||||
#endregion
|
||||
// Save info locally to be used on next launch.
|
||||
Settings.Default.savedUserID = userIdTextbox.Text;
|
||||
Settings.Default.savedUserAuthToken = userAuthTokenTextbox.Text;
|
||||
Settings.Default.savedAltLoginValue = altLoginValue;
|
||||
Settings.Default.Save();
|
||||
|
||||
loginText.Text = "Getting App ID and Secret...";
|
||||
loginButton.Enabled = false;
|
||||
getSecretBG.RunWorkerAsync();
|
||||
#endregion
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
@ -357,6 +370,7 @@ namespace QobuzDownloaderX
|
||||
getSecretBG.WorkerSupportsCancellation = true;
|
||||
|
||||
WebClient bundleURLClient = new WebClient();
|
||||
bundleURLClient.Proxy = null;
|
||||
string bundleHTML = bundleURLClient.DownloadString("https://play.qobuz.com/login");
|
||||
|
||||
// Grab link to bundle.js
|
||||
@ -384,7 +398,7 @@ namespace QobuzDownloaderX
|
||||
var bundleExtras = bundleLog1[3].Value;
|
||||
|
||||
// Grab "seed"
|
||||
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.paris\\):h.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
|
||||
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.algier\\):f.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
|
||||
var bundleSeed = bundleLog2[1].Value;
|
||||
|
||||
// Step 1 of getting the app_secret
|
||||
@ -430,48 +444,76 @@ namespace QobuzDownloaderX
|
||||
getSecretBG.CancelAsync();
|
||||
}
|
||||
|
||||
private void loginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||
private async void loginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
loginBG.WorkerSupportsCancellation = true;
|
||||
|
||||
// Create WebRequest to login using login information from input textboxes.
|
||||
WebRequest wr = WebRequest.Create("https://www.qobuz.com/api.json/0.2/user/login?email=" + emailTextbox.Text + "&password=" + passwordTextbox.Text + "&app_id=" + appID);
|
||||
// Create HttpClient for logging in using Napster / Rhapsody API.
|
||||
var loginClient = new HttpClient();
|
||||
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12; //Make connection secure
|
||||
loginClient.DefaultRequestHeaders.Add("Authorization", "Basic WlRKbE9XTmhaR1V0TnpsbVpTMDBaR1UyTFRrd1lqTXRaRGsxT0RSbE1Ea3dPRE01Ok1UUmpaVFZqTTJFdE9HVmxaaTAwT1RVM0xXRm1Oamt0TlRsbE9ERmhObVl5TnpJNQ=="); //This value is from logging in to the Napster Android app.
|
||||
|
||||
// Create HttpClient to grab Track ID
|
||||
var loginClient2 = 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");
|
||||
|
||||
var loginURL = "https://www.qobuz.com/api.json/0.2/user/login"; //Set base URL
|
||||
var parameters = new Dictionary<string, string> { { "username", emailTextbox.Text }, { "email", emailTextbox.Text }, { "password", passwordTextbox.Text }, { "extra", "partner" }, { "app_id", appID } }; //Set email & password parameters
|
||||
var encodedContent = new FormUrlEncodedContent(parameters); //Add parameters as encoded content to login
|
||||
|
||||
// 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.PostAsync(loginURL, encodedContent);
|
||||
string loginResponseString = loginResponse.Content.ReadAsStringAsync().Result;
|
||||
|
||||
// Grab metadata from API JSON response
|
||||
JObject joLoginResponse = JObject.Parse(loginResponseString);
|
||||
|
||||
try
|
||||
{
|
||||
// Grab info to be displayed and used.
|
||||
WebResponse ws = wr.GetResponse();
|
||||
StreamReader sr = new StreamReader(ws.GetResponseStream());
|
||||
|
||||
string loginRequest = sr.ReadToEnd();
|
||||
string text = loginRequest;
|
||||
|
||||
// Grab user_id
|
||||
var userIDLog = Regex.Match(loginRequest, "{\"user\":{\"id\":(?<userID>.*?),\"publicId").Groups;
|
||||
var userID = userIDLog[1].Value;
|
||||
string userID = (string)joLoginResponse["user"]["id"];
|
||||
qbdlx.userID = userID;
|
||||
|
||||
// Grab display name
|
||||
var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?<displayName>.*?)\",\\\"").Groups;
|
||||
var displayName = displayNameLog[1].Value;
|
||||
string displayName = (string)joLoginResponse["user"]["display_name"];
|
||||
qbdlx.displayName = displayName;
|
||||
|
||||
// Grab account type
|
||||
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
|
||||
var accountType = accountTypeLog[1].Value;
|
||||
qbdlx.accountType = accountType;
|
||||
try
|
||||
{
|
||||
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
|
||||
var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?<userAuth>.*?)\\\"}").Groups;
|
||||
var userAuthToken = userAuth[1].Value;
|
||||
string userAuthToken = (string)joLoginResponse["user_auth_token"];
|
||||
qbdlx.userAuth = userAuthToken;
|
||||
|
||||
// Grab profile image
|
||||
var profilePic = Regex.Match(loginRequest, "avatar\\\":\\\"(?<profilePic>.*?)\",").Groups;
|
||||
var profilePicURL = profilePic[1].Value.Replace(@"\", null).Replace("s=50", "s=20");
|
||||
string profilePic = (string)joLoginResponse["user"]["avatar"];
|
||||
string profilePicURL = profilePic.Replace(@"\", null).Replace("s=50", "s=20");
|
||||
qbdlx.profilePic = profilePicURL;
|
||||
|
||||
// Set user_auth_token
|
||||
qbdlx.userAuth = userAuthToken;
|
||||
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Launching QBDLX..."));
|
||||
}
|
||||
catch (Exception ex)
|
||||
@ -480,33 +522,36 @@ namespace QobuzDownloaderX
|
||||
string error = ex.ToString();
|
||||
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
|
||||
System.IO.File.WriteAllText(errorLog, error);
|
||||
wr.Abort();
|
||||
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||
return;
|
||||
}
|
||||
|
||||
wr.Abort();
|
||||
|
||||
finishLogin(sender, e);
|
||||
loginBG.CancelAsync();
|
||||
}
|
||||
|
||||
private void altLoginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||
private async void altLoginBG_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
altLoginBG.WorkerSupportsCancellation = true;
|
||||
|
||||
// Create WebRequest to login using login information from input textboxes.
|
||||
WebRequest wr = WebRequest.Create("http://www.qobuz.com/api.json/0.2/user/get?user_id=" + userID + "&user_auth_token=" + userAuthToken + "&app_id=" + appID);
|
||||
// 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
|
||||
{
|
||||
// Grab info to be displayed and used.
|
||||
WebResponse ws = wr.GetResponse();
|
||||
StreamReader sr = new StreamReader(ws.GetResponseStream());
|
||||
|
||||
string loginRequest = sr.ReadToEnd();
|
||||
string text = loginRequest;
|
||||
|
||||
// Use user_id that was used by the user
|
||||
qbdlx.userID = userID;
|
||||
|
||||
@ -514,18 +559,34 @@ namespace QobuzDownloaderX
|
||||
qbdlx.userAuth = userAuthToken;
|
||||
|
||||
// Grab display name
|
||||
var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?<displayName>.*?)\",\\\"").Groups;
|
||||
var displayName = displayNameLog[1].Value;
|
||||
string displayName = (string)joAltLoginResponse["display_name"];
|
||||
qbdlx.displayName = displayName;
|
||||
|
||||
// Grab account type
|
||||
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
|
||||
var accountType = accountTypeLog[1].Value;
|
||||
qbdlx.accountType = accountType;
|
||||
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
|
||||
var profilePic = Regex.Match(loginRequest, "avatar\\\":\\\"(?<profilePic>.*?)\\\"}").Groups;
|
||||
var profilePicURL = profilePic[1].Value.Replace(@"\", null).Replace("s=50", "s=20");
|
||||
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..."));
|
||||
@ -536,13 +597,11 @@ namespace QobuzDownloaderX
|
||||
string error = ex.ToString();
|
||||
loginText.Invoke(new Action(() => loginText.Text = "Login Failed. Error Log saved"));
|
||||
System.IO.File.WriteAllText(errorLog, error);
|
||||
wr.Abort();
|
||||
loginButton.Invoke(new Action(() => loginButton.Enabled = true));
|
||||
altLoginLabel.Invoke(new Action(() => altLoginLabel.Visible = true));
|
||||
return;
|
||||
}
|
||||
|
||||
wr.Abort();
|
||||
|
||||
finishLogin(sender, e);
|
||||
altLoginBG.CancelAsync();
|
||||
}
|
||||
@ -805,5 +864,10 @@ namespace QobuzDownloaderX
|
||||
{
|
||||
Process.Start("https://github.com/ImAiiR/QobuzDownloaderX/wiki/Logging-In-(The-Alternate-Way)");
|
||||
}
|
||||
|
||||
private void aboutLabel_Click(object sender, EventArgs e)
|
||||
{
|
||||
about.Show();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("0.9.9.16")]
|
||||
[assembly: AssemblyFileVersion("0.9.9.16")]
|
||||
[assembly: AssemblyVersion("0.9.9.23")]
|
||||
[assembly: AssemblyFileVersion("0.9.9.23")]
|
||||
|
36
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
36
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
@ -442,5 +442,41 @@ namespace QobuzDownloaderX.Properties {
|
||||
this["typeTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("36")]
|
||||
public int savedMaxLength {
|
||||
get {
|
||||
return ((int)(this["savedMaxLength"]));
|
||||
}
|
||||
set {
|
||||
this["savedMaxLength"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("1")]
|
||||
public int savedFilenameTemplate {
|
||||
get {
|
||||
return ((int)(this["savedFilenameTemplate"]));
|
||||
}
|
||||
set {
|
||||
this["savedFilenameTemplate"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedFilenameTemplateString {
|
||||
get {
|
||||
return ((string)(this["savedFilenameTemplateString"]));
|
||||
}
|
||||
set {
|
||||
this["savedFilenameTemplateString"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -107,5 +107,14 @@
|
||||
<Setting Name="typeTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="savedMaxLength" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">36</Value>
|
||||
</Setting>
|
||||
<Setting Name="savedFilenameTemplate" Type="System.Int32" Scope="User">
|
||||
<Value Profile="(Default)">1</Value>
|
||||
</Setting>
|
||||
<Setting Name="savedFilenameTemplateString" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)"> </Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
@ -52,6 +52,10 @@
|
||||
<ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<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">
|
||||
<HintPath>..\packages\taglib.2.1.0.0\lib\policy.2.0.taglib-sharp.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
@ -79,6 +83,12 @@
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="AboutForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="AboutForm.Designer.cs">
|
||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm-v2.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@ -103,6 +113,9 @@
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="AboutForm.resx">
|
||||
<DependentUpon>AboutForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LoginForm-v2.resx">
|
||||
<DependentUpon>LoginForm-v2.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
@ -1,4 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net46" />
|
||||
<package id="taglib" version="2.1.0.0" targetFramework="net46" />
|
||||
</packages>
|
@ -15,7 +15,8 @@ Inspired by Qo-DL by <a href="https://github.com/Sorrow446">Sorrow</a> & <a href
|
||||
</p>
|
||||
|
||||
Telegram Group Chat - <a href="https://t.me/QbdLX">@QbdLX</a><br />
|
||||
Telegram Updates Channel - <a href="https://t.me/QobuzDownloaderX">@QobuzDownloaderX</a>
|
||||
Telegram Updates Channel - <a href="https://t.me/QobuzDownloaderX">@QobuzDownloaderX</a><br />
|
||||
I'm rarely active on Telegram, but these are official.
|
||||
|
||||
# About
|
||||
QobuzDownloaderX is a program for downloading music streams from the streaming platform <a href="https://qobuz.com/">Qobuz</a>.
|
||||
|
Loading…
x
Reference in New Issue
Block a user