mirror of
https://github.com/NohamR/QobuzDownloaderX.git
synced 2025-05-24 14:22:19 +00:00
Add files via upload
This commit is contained in:
parent
fc47ebfdb6
commit
65b22ceee8
22
QobuzDownloaderX.sln
Normal file
22
QobuzDownloaderX.sln
Normal file
@ -0,0 +1,22 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25420.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "QobuzDownloaderX", "QobuzDownloaderX\QobuzDownloaderX.csproj", "{4CEB979A-035A-4D36-9607-D554BBECABE0}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4CEB979A-035A-4D36-9607-D554BBECABE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4CEB979A-035A-4D36-9607-D554BBECABE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4CEB979A-035A-4D36-9607-D554BBECABE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4CEB979A-035A-4D36-9607-D554BBECABE0}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
105
QobuzDownloaderX/App.config
Normal file
105
QobuzDownloaderX/App.config
Normal file
@ -0,0 +1,105 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<configSections>
|
||||
<sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
|
||||
<section name="QobuzDownloaderX.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
|
||||
</sectionGroup>
|
||||
</configSections>
|
||||
<startup>
|
||||
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6"/>
|
||||
</startup>
|
||||
<userSettings>
|
||||
<QobuzDownloaderX.Properties.Settings>
|
||||
<setting name="savedFolder" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="savedAppID" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="savedEmail" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="savedPassword" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="savedFormatID" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="UpgradeRequired" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="albumTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="artistTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="albumArtistTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="trackTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="totalTracksTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="discTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="totalDiscsTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="genreTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="isrcTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="upcTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="copyrightTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="yearTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="explicitTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="imageTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="commentTag" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="composerTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="trackTitleTag" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="commentText" serializeAs="String">
|
||||
<value />
|
||||
</setting>
|
||||
<setting name="quality1" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="quality2" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="quality3" serializeAs="String">
|
||||
<value>False</value>
|
||||
</setting>
|
||||
<setting name="quality4" serializeAs="String">
|
||||
<value>True</value>
|
||||
</setting>
|
||||
<setting name="qualityFormat" serializeAs="String">
|
||||
<value>27</value>
|
||||
</setting>
|
||||
<setting name="audioType" serializeAs="String">
|
||||
<value>.flac</value>
|
||||
</setting>
|
||||
</QobuzDownloaderX.Properties.Settings>
|
||||
</userSettings>
|
||||
</configuration>
|
766
QobuzDownloaderX/Form1.Designer.cs
generated
Normal file
766
QobuzDownloaderX/Form1.Designer.cs
generated
Normal file
@ -0,0 +1,766 @@
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
partial class QobuzDownloaderX
|
||||
{
|
||||
/// <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(QobuzDownloaderX));
|
||||
this.testURLBox = new System.Windows.Forms.TextBox();
|
||||
this.selectFolder = new System.Windows.Forms.Button();
|
||||
this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||
this.output = new System.Windows.Forms.TextBox();
|
||||
this.downloadBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.openFolderButton = new System.Windows.Forms.Button();
|
||||
this.downloadButton = new System.Windows.Forms.Button();
|
||||
this.albumUrl = new System.Windows.Forms.TextBox();
|
||||
this.imageURLTextbox = new System.Windows.Forms.TextBox();
|
||||
this.verNumLabel = new System.Windows.Forms.Label();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.albumArtistTextBox = new System.Windows.Forms.TextBox();
|
||||
this.albumTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.releaseDateTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.upcTextBox = new System.Windows.Forms.TextBox();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.albumArtPicBox = new System.Windows.Forms.PictureBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.totalTracksTextbox = new System.Windows.Forms.TextBox();
|
||||
this.totalTracksLabel = new System.Windows.Forms.Label();
|
||||
this.getLinkTypeBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.downloadAlbumBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.downloadTrackBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.downloadDiscogBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.qualityTextbox = new System.Windows.Forms.TextBox();
|
||||
this.qualityLabel = new System.Windows.Forms.Label();
|
||||
this.openSearch = new System.Windows.Forms.Button();
|
||||
this.tagsLabel = new System.Windows.Forms.Label();
|
||||
this.albumArtistCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.artistCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.trackTitleCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.trackNumberCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.trackTotalCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.discNumberCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.discTotalCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.albumCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.explicitCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.upcCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.isrcCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.copyrightCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.composerCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.genreCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.releaseCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.commentCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.commentTextbox = new System.Windows.Forms.TextBox();
|
||||
this.imageCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.mp3Checkbox = new System.Windows.Forms.CheckBox();
|
||||
this.flacLowCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.flacMidCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.flacHighCheckbox = new System.Windows.Forms.CheckBox();
|
||||
this.mp3WarnLabel = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// testURLBox
|
||||
//
|
||||
this.testURLBox.Location = new System.Drawing.Point(946, 394);
|
||||
this.testURLBox.Multiline = true;
|
||||
this.testURLBox.Name = "testURLBox";
|
||||
this.testURLBox.Size = new System.Drawing.Size(390, 20);
|
||||
this.testURLBox.TabIndex = 1;
|
||||
this.testURLBox.Text = "Steamed Qobuz File URL";
|
||||
this.testURLBox.Visible = false;
|
||||
this.testURLBox.WordWrap = false;
|
||||
//
|
||||
// selectFolder
|
||||
//
|
||||
this.selectFolder.Location = new System.Drawing.Point(13, 115);
|
||||
this.selectFolder.Name = "selectFolder";
|
||||
this.selectFolder.Size = new System.Drawing.Size(349, 23);
|
||||
this.selectFolder.TabIndex = 2;
|
||||
this.selectFolder.Text = "Choose Folder";
|
||||
this.selectFolder.UseVisualStyleBackColor = true;
|
||||
this.selectFolder.Click += new System.EventHandler(this.selectFolder_Click);
|
||||
//
|
||||
// output
|
||||
//
|
||||
this.output.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(33)))), ((int)(((byte)(33)))), ((int)(((byte)(33)))));
|
||||
this.output.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
|
||||
this.output.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(255)))), ((int)(((byte)(128)))), ((int)(((byte)(128)))));
|
||||
this.output.Location = new System.Drawing.Point(12, 144);
|
||||
this.output.Multiline = true;
|
||||
this.output.Name = "output";
|
||||
this.output.ReadOnly = true;
|
||||
this.output.RightToLeft = System.Windows.Forms.RightToLeft.No;
|
||||
this.output.Size = new System.Drawing.Size(705, 339);
|
||||
this.output.TabIndex = 3;
|
||||
this.output.Text = "Test String";
|
||||
//
|
||||
// openFolderButton
|
||||
//
|
||||
this.openFolderButton.Location = new System.Drawing.Point(368, 115);
|
||||
this.openFolderButton.Name = "openFolderButton";
|
||||
this.openFolderButton.Size = new System.Drawing.Size(349, 23);
|
||||
this.openFolderButton.TabIndex = 13;
|
||||
this.openFolderButton.Text = "Open Folder";
|
||||
this.openFolderButton.UseVisualStyleBackColor = true;
|
||||
this.openFolderButton.Click += new System.EventHandler(this.openFolderButton_Click);
|
||||
//
|
||||
// downloadButton
|
||||
//
|
||||
this.downloadButton.Location = new System.Drawing.Point(597, 86);
|
||||
this.downloadButton.Name = "downloadButton";
|
||||
this.downloadButton.Size = new System.Drawing.Size(120, 23);
|
||||
this.downloadButton.TabIndex = 17;
|
||||
this.downloadButton.Text = "Download";
|
||||
this.downloadButton.UseVisualStyleBackColor = true;
|
||||
this.downloadButton.Click += new System.EventHandler(this.downloadButton_Click);
|
||||
//
|
||||
// albumUrl
|
||||
//
|
||||
this.albumUrl.Location = new System.Drawing.Point(15, 88);
|
||||
this.albumUrl.Name = "albumUrl";
|
||||
this.albumUrl.Size = new System.Drawing.Size(579, 20);
|
||||
this.albumUrl.TabIndex = 16;
|
||||
this.albumUrl.WordWrap = false;
|
||||
this.albumUrl.KeyDown += new System.Windows.Forms.KeyEventHandler(this.albumUrl_KeyDown);
|
||||
//
|
||||
// imageURLTextbox
|
||||
//
|
||||
this.imageURLTextbox.Location = new System.Drawing.Point(946, 420);
|
||||
this.imageURLTextbox.Multiline = true;
|
||||
this.imageURLTextbox.Name = "imageURLTextbox";
|
||||
this.imageURLTextbox.Size = new System.Drawing.Size(390, 20);
|
||||
this.imageURLTextbox.TabIndex = 31;
|
||||
this.imageURLTextbox.Text = "Release Cover Art URL";
|
||||
this.imageURLTextbox.Visible = false;
|
||||
this.imageURLTextbox.WordWrap = false;
|
||||
//
|
||||
// verNumLabel
|
||||
//
|
||||
this.verNumLabel.Location = new System.Drawing.Point(159, 55);
|
||||
this.verNumLabel.Name = "verNumLabel";
|
||||
this.verNumLabel.Size = new System.Drawing.Size(63, 13);
|
||||
this.verNumLabel.TabIndex = 38;
|
||||
this.verNumLabel.Text = "#.#.#.#";
|
||||
this.verNumLabel.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(801, 213);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(51, 13);
|
||||
this.label1.TabIndex = 40;
|
||||
this.label1.Text = "Cover Art";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(751, 236);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(62, 13);
|
||||
this.label2.TabIndex = 41;
|
||||
this.label2.Text = "Album Artist";
|
||||
//
|
||||
// albumArtistTextBox
|
||||
//
|
||||
this.albumArtistTextBox.Location = new System.Drawing.Point(754, 252);
|
||||
this.albumArtistTextBox.Name = "albumArtistTextBox";
|
||||
this.albumArtistTextBox.ReadOnly = true;
|
||||
this.albumArtistTextBox.Size = new System.Drawing.Size(150, 20);
|
||||
this.albumArtistTextBox.TabIndex = 42;
|
||||
this.albumArtistTextBox.WordWrap = false;
|
||||
//
|
||||
// albumTextBox
|
||||
//
|
||||
this.albumTextBox.Location = new System.Drawing.Point(754, 294);
|
||||
this.albumTextBox.Name = "albumTextBox";
|
||||
this.albumTextBox.ReadOnly = true;
|
||||
this.albumTextBox.Size = new System.Drawing.Size(150, 20);
|
||||
this.albumTextBox.TabIndex = 44;
|
||||
this.albumTextBox.WordWrap = false;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(751, 278);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(36, 13);
|
||||
this.label3.TabIndex = 43;
|
||||
this.label3.Text = "Album";
|
||||
//
|
||||
// releaseDateTextBox
|
||||
//
|
||||
this.releaseDateTextBox.Location = new System.Drawing.Point(754, 463);
|
||||
this.releaseDateTextBox.Name = "releaseDateTextBox";
|
||||
this.releaseDateTextBox.ReadOnly = true;
|
||||
this.releaseDateTextBox.Size = new System.Drawing.Size(150, 20);
|
||||
this.releaseDateTextBox.TabIndex = 46;
|
||||
this.releaseDateTextBox.WordWrap = false;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(751, 447);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(72, 13);
|
||||
this.label4.TabIndex = 45;
|
||||
this.label4.Text = "Release Date";
|
||||
//
|
||||
// upcTextBox
|
||||
//
|
||||
this.upcTextBox.Location = new System.Drawing.Point(754, 420);
|
||||
this.upcTextBox.Name = "upcTextBox";
|
||||
this.upcTextBox.ReadOnly = true;
|
||||
this.upcTextBox.Size = new System.Drawing.Size(150, 20);
|
||||
this.upcTextBox.TabIndex = 48;
|
||||
this.upcTextBox.WordWrap = false;
|
||||
//
|
||||
// label5
|
||||
//
|
||||
this.label5.AutoSize = true;
|
||||
this.label5.Location = new System.Drawing.Point(751, 404);
|
||||
this.label5.Name = "label5";
|
||||
this.label5.Size = new System.Drawing.Size(29, 13);
|
||||
this.label5.TabIndex = 47;
|
||||
this.label5.Text = "UPC";
|
||||
//
|
||||
// albumArtPicBox
|
||||
//
|
||||
this.albumArtPicBox.Location = new System.Drawing.Point(754, 57);
|
||||
this.albumArtPicBox.MaximumSize = new System.Drawing.Size(150, 150);
|
||||
this.albumArtPicBox.MinimumSize = new System.Drawing.Size(150, 150);
|
||||
this.albumArtPicBox.Name = "albumArtPicBox";
|
||||
this.albumArtPicBox.Size = new System.Drawing.Size(150, 150);
|
||||
this.albumArtPicBox.TabIndex = 39;
|
||||
this.albumArtPicBox.TabStop = false;
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(207, 52);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 36;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(12, 70);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(132, 13);
|
||||
this.label6.TabIndex = 49;
|
||||
this.label6.Text = "Qobuz Album / Track Link";
|
||||
//
|
||||
// totalTracksTextbox
|
||||
//
|
||||
this.totalTracksTextbox.Location = new System.Drawing.Point(754, 378);
|
||||
this.totalTracksTextbox.Name = "totalTracksTextbox";
|
||||
this.totalTracksTextbox.ReadOnly = true;
|
||||
this.totalTracksTextbox.Size = new System.Drawing.Size(150, 20);
|
||||
this.totalTracksTextbox.TabIndex = 56;
|
||||
this.totalTracksTextbox.WordWrap = false;
|
||||
//
|
||||
// totalTracksLabel
|
||||
//
|
||||
this.totalTracksLabel.AutoSize = true;
|
||||
this.totalTracksLabel.Location = new System.Drawing.Point(751, 362);
|
||||
this.totalTracksLabel.Name = "totalTracksLabel";
|
||||
this.totalTracksLabel.Size = new System.Drawing.Size(67, 13);
|
||||
this.totalTracksLabel.TabIndex = 55;
|
||||
this.totalTracksLabel.Text = "Total Tracks";
|
||||
//
|
||||
// getLinkTypeBG
|
||||
//
|
||||
this.getLinkTypeBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.getLinkTypeBG_DoWork);
|
||||
//
|
||||
// downloadAlbumBG
|
||||
//
|
||||
this.downloadAlbumBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadAlbumBG_DoWork);
|
||||
//
|
||||
// downloadTrackBG
|
||||
//
|
||||
this.downloadTrackBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadTrackBG_DoWork);
|
||||
//
|
||||
// downloadDiscogBG
|
||||
//
|
||||
this.downloadDiscogBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.downloadDiscogBG_DoWork);
|
||||
//
|
||||
// qualityTextbox
|
||||
//
|
||||
this.qualityTextbox.Location = new System.Drawing.Point(754, 336);
|
||||
this.qualityTextbox.Name = "qualityTextbox";
|
||||
this.qualityTextbox.ReadOnly = true;
|
||||
this.qualityTextbox.Size = new System.Drawing.Size(150, 20);
|
||||
this.qualityTextbox.TabIndex = 59;
|
||||
this.qualityTextbox.WordWrap = false;
|
||||
//
|
||||
// qualityLabel
|
||||
//
|
||||
this.qualityLabel.AutoSize = true;
|
||||
this.qualityLabel.Location = new System.Drawing.Point(751, 320);
|
||||
this.qualityLabel.Name = "qualityLabel";
|
||||
this.qualityLabel.Size = new System.Drawing.Size(71, 13);
|
||||
this.qualityLabel.TabIndex = 58;
|
||||
this.qualityLabel.Text = "Album Quality";
|
||||
//
|
||||
// openSearch
|
||||
//
|
||||
this.openSearch.Location = new System.Drawing.Point(597, 57);
|
||||
this.openSearch.Name = "openSearch";
|
||||
this.openSearch.Size = new System.Drawing.Size(120, 23);
|
||||
this.openSearch.TabIndex = 60;
|
||||
this.openSearch.Text = "Open Search";
|
||||
this.openSearch.UseVisualStyleBackColor = true;
|
||||
this.openSearch.Click += new System.EventHandler(this.openSearch_Click);
|
||||
//
|
||||
// tagsLabel
|
||||
//
|
||||
this.tagsLabel.Location = new System.Drawing.Point(12, 501);
|
||||
this.tagsLabel.Name = "tagsLabel";
|
||||
this.tagsLabel.Size = new System.Drawing.Size(914, 23);
|
||||
this.tagsLabel.TabIndex = 61;
|
||||
this.tagsLabel.Text = "🠋 Choose which tags to save 🠋";
|
||||
this.tagsLabel.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
this.tagsLabel.Click += new System.EventHandler(this.tagsLabel_Click);
|
||||
//
|
||||
// albumArtistCheckbox
|
||||
//
|
||||
this.albumArtistCheckbox.AutoSize = true;
|
||||
this.albumArtistCheckbox.Checked = true;
|
||||
this.albumArtistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.albumArtistCheckbox.Location = new System.Drawing.Point(325, 563);
|
||||
this.albumArtistCheckbox.Name = "albumArtistCheckbox";
|
||||
this.albumArtistCheckbox.Size = new System.Drawing.Size(81, 17);
|
||||
this.albumArtistCheckbox.TabIndex = 62;
|
||||
this.albumArtistCheckbox.Text = "Album Artist";
|
||||
this.albumArtistCheckbox.UseVisualStyleBackColor = true;
|
||||
this.albumArtistCheckbox.CheckedChanged += new System.EventHandler(this.albumArtistCheckbox_CheckedChanged);
|
||||
//
|
||||
// artistCheckbox
|
||||
//
|
||||
this.artistCheckbox.AutoSize = true;
|
||||
this.artistCheckbox.Checked = true;
|
||||
this.artistCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.artistCheckbox.Location = new System.Drawing.Point(325, 609);
|
||||
this.artistCheckbox.Name = "artistCheckbox";
|
||||
this.artistCheckbox.Size = new System.Drawing.Size(80, 17);
|
||||
this.artistCheckbox.TabIndex = 63;
|
||||
this.artistCheckbox.Text = "Track Artist";
|
||||
this.artistCheckbox.UseVisualStyleBackColor = true;
|
||||
this.artistCheckbox.CheckedChanged += new System.EventHandler(this.artistCheckbox_CheckedChanged);
|
||||
//
|
||||
// trackTitleCheckbox
|
||||
//
|
||||
this.trackTitleCheckbox.AutoSize = true;
|
||||
this.trackTitleCheckbox.Checked = true;
|
||||
this.trackTitleCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackTitleCheckbox.Location = new System.Drawing.Point(325, 586);
|
||||
this.trackTitleCheckbox.Name = "trackTitleCheckbox";
|
||||
this.trackTitleCheckbox.Size = new System.Drawing.Size(77, 17);
|
||||
this.trackTitleCheckbox.TabIndex = 64;
|
||||
this.trackTitleCheckbox.Text = "Track Title";
|
||||
this.trackTitleCheckbox.UseVisualStyleBackColor = true;
|
||||
this.trackTitleCheckbox.CheckedChanged += new System.EventHandler(this.trackTitleCheckbox_CheckedChanged);
|
||||
//
|
||||
// trackNumberCheckbox
|
||||
//
|
||||
this.trackNumberCheckbox.AutoSize = true;
|
||||
this.trackNumberCheckbox.Checked = true;
|
||||
this.trackNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackNumberCheckbox.Location = new System.Drawing.Point(325, 632);
|
||||
this.trackNumberCheckbox.Name = "trackNumberCheckbox";
|
||||
this.trackNumberCheckbox.Size = new System.Drawing.Size(94, 17);
|
||||
this.trackNumberCheckbox.TabIndex = 65;
|
||||
this.trackNumberCheckbox.Text = "Track Number";
|
||||
this.trackNumberCheckbox.UseVisualStyleBackColor = true;
|
||||
this.trackNumberCheckbox.CheckedChanged += new System.EventHandler(this.trackNumberCheckbox_CheckedChanged);
|
||||
//
|
||||
// trackTotalCheckbox
|
||||
//
|
||||
this.trackTotalCheckbox.AutoSize = true;
|
||||
this.trackTotalCheckbox.Checked = true;
|
||||
this.trackTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.trackTotalCheckbox.Location = new System.Drawing.Point(325, 655);
|
||||
this.trackTotalCheckbox.Name = "trackTotalCheckbox";
|
||||
this.trackTotalCheckbox.Size = new System.Drawing.Size(86, 17);
|
||||
this.trackTotalCheckbox.TabIndex = 66;
|
||||
this.trackTotalCheckbox.Text = "Total Tracks";
|
||||
this.trackTotalCheckbox.UseVisualStyleBackColor = true;
|
||||
this.trackTotalCheckbox.CheckedChanged += new System.EventHandler(this.trackTotalCheckbox_CheckedChanged);
|
||||
//
|
||||
// discNumberCheckbox
|
||||
//
|
||||
this.discNumberCheckbox.AutoSize = true;
|
||||
this.discNumberCheckbox.Checked = true;
|
||||
this.discNumberCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.discNumberCheckbox.Location = new System.Drawing.Point(325, 676);
|
||||
this.discNumberCheckbox.Name = "discNumberCheckbox";
|
||||
this.discNumberCheckbox.Size = new System.Drawing.Size(87, 17);
|
||||
this.discNumberCheckbox.TabIndex = 67;
|
||||
this.discNumberCheckbox.Text = "Disc Number";
|
||||
this.discNumberCheckbox.UseVisualStyleBackColor = true;
|
||||
this.discNumberCheckbox.CheckedChanged += new System.EventHandler(this.discNumberCheckbox_CheckedChanged);
|
||||
//
|
||||
// discTotalCheckbox
|
||||
//
|
||||
this.discTotalCheckbox.AutoSize = true;
|
||||
this.discTotalCheckbox.Checked = true;
|
||||
this.discTotalCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.discTotalCheckbox.Location = new System.Drawing.Point(325, 699);
|
||||
this.discTotalCheckbox.Name = "discTotalCheckbox";
|
||||
this.discTotalCheckbox.Size = new System.Drawing.Size(79, 17);
|
||||
this.discTotalCheckbox.TabIndex = 68;
|
||||
this.discTotalCheckbox.Text = "Total Discs";
|
||||
this.discTotalCheckbox.UseVisualStyleBackColor = true;
|
||||
this.discTotalCheckbox.CheckedChanged += new System.EventHandler(this.discTotalCheckbox_CheckedChanged);
|
||||
//
|
||||
// albumCheckbox
|
||||
//
|
||||
this.albumCheckbox.AutoSize = true;
|
||||
this.albumCheckbox.Checked = true;
|
||||
this.albumCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.albumCheckbox.Location = new System.Drawing.Point(325, 540);
|
||||
this.albumCheckbox.Name = "albumCheckbox";
|
||||
this.albumCheckbox.Size = new System.Drawing.Size(78, 17);
|
||||
this.albumCheckbox.TabIndex = 69;
|
||||
this.albumCheckbox.Text = "Album Title";
|
||||
this.albumCheckbox.UseVisualStyleBackColor = true;
|
||||
this.albumCheckbox.CheckedChanged += new System.EventHandler(this.albumCheckbox_CheckedChanged);
|
||||
//
|
||||
// explicitCheckbox
|
||||
//
|
||||
this.explicitCheckbox.AutoSize = true;
|
||||
this.explicitCheckbox.Checked = true;
|
||||
this.explicitCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.explicitCheckbox.Location = new System.Drawing.Point(425, 678);
|
||||
this.explicitCheckbox.Name = "explicitCheckbox";
|
||||
this.explicitCheckbox.Size = new System.Drawing.Size(106, 17);
|
||||
this.explicitCheckbox.TabIndex = 76;
|
||||
this.explicitCheckbox.Text = "Explicit Advisory*";
|
||||
this.explicitCheckbox.UseVisualStyleBackColor = true;
|
||||
this.explicitCheckbox.CheckedChanged += new System.EventHandler(this.explicitCheckbox_CheckedChanged);
|
||||
//
|
||||
// upcCheckbox
|
||||
//
|
||||
this.upcCheckbox.AutoSize = true;
|
||||
this.upcCheckbox.Checked = true;
|
||||
this.upcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.upcCheckbox.Location = new System.Drawing.Point(425, 655);
|
||||
this.upcCheckbox.Name = "upcCheckbox";
|
||||
this.upcCheckbox.Size = new System.Drawing.Size(52, 17);
|
||||
this.upcCheckbox.TabIndex = 75;
|
||||
this.upcCheckbox.Text = "UPC*";
|
||||
this.upcCheckbox.UseVisualStyleBackColor = true;
|
||||
this.upcCheckbox.CheckedChanged += new System.EventHandler(this.upcCheckbox_CheckedChanged);
|
||||
//
|
||||
// isrcCheckbox
|
||||
//
|
||||
this.isrcCheckbox.AutoSize = true;
|
||||
this.isrcCheckbox.Checked = true;
|
||||
this.isrcCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.isrcCheckbox.Location = new System.Drawing.Point(425, 632);
|
||||
this.isrcCheckbox.Name = "isrcCheckbox";
|
||||
this.isrcCheckbox.Size = new System.Drawing.Size(51, 17);
|
||||
this.isrcCheckbox.TabIndex = 74;
|
||||
this.isrcCheckbox.Text = "ISRC";
|
||||
this.isrcCheckbox.UseVisualStyleBackColor = true;
|
||||
this.isrcCheckbox.CheckedChanged += new System.EventHandler(this.isrcCheckbox_CheckedChanged);
|
||||
//
|
||||
// copyrightCheckbox
|
||||
//
|
||||
this.copyrightCheckbox.AutoSize = true;
|
||||
this.copyrightCheckbox.Checked = true;
|
||||
this.copyrightCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.copyrightCheckbox.Location = new System.Drawing.Point(425, 609);
|
||||
this.copyrightCheckbox.Name = "copyrightCheckbox";
|
||||
this.copyrightCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.copyrightCheckbox.TabIndex = 73;
|
||||
this.copyrightCheckbox.Text = "Copyright";
|
||||
this.copyrightCheckbox.UseVisualStyleBackColor = true;
|
||||
this.copyrightCheckbox.CheckedChanged += new System.EventHandler(this.copyrightCheckbox_CheckedChanged);
|
||||
//
|
||||
// composerCheckbox
|
||||
//
|
||||
this.composerCheckbox.AutoSize = true;
|
||||
this.composerCheckbox.Checked = true;
|
||||
this.composerCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.composerCheckbox.Location = new System.Drawing.Point(425, 586);
|
||||
this.composerCheckbox.Name = "composerCheckbox";
|
||||
this.composerCheckbox.Size = new System.Drawing.Size(73, 17);
|
||||
this.composerCheckbox.TabIndex = 72;
|
||||
this.composerCheckbox.Text = "Composer";
|
||||
this.composerCheckbox.UseVisualStyleBackColor = true;
|
||||
this.composerCheckbox.CheckedChanged += new System.EventHandler(this.composerCheckbox_CheckedChanged);
|
||||
//
|
||||
// genreCheckbox
|
||||
//
|
||||
this.genreCheckbox.AutoSize = true;
|
||||
this.genreCheckbox.Checked = true;
|
||||
this.genreCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.genreCheckbox.Location = new System.Drawing.Point(425, 563);
|
||||
this.genreCheckbox.Name = "genreCheckbox";
|
||||
this.genreCheckbox.Size = new System.Drawing.Size(55, 17);
|
||||
this.genreCheckbox.TabIndex = 71;
|
||||
this.genreCheckbox.Text = "Genre";
|
||||
this.genreCheckbox.UseVisualStyleBackColor = true;
|
||||
this.genreCheckbox.CheckedChanged += new System.EventHandler(this.genreCheckbox_CheckedChanged);
|
||||
//
|
||||
// releaseCheckbox
|
||||
//
|
||||
this.releaseCheckbox.AutoSize = true;
|
||||
this.releaseCheckbox.Checked = true;
|
||||
this.releaseCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.releaseCheckbox.Location = new System.Drawing.Point(425, 540);
|
||||
this.releaseCheckbox.Name = "releaseCheckbox";
|
||||
this.releaseCheckbox.Size = new System.Drawing.Size(91, 17);
|
||||
this.releaseCheckbox.TabIndex = 70;
|
||||
this.releaseCheckbox.Text = "Release Date";
|
||||
this.releaseCheckbox.UseVisualStyleBackColor = true;
|
||||
this.releaseCheckbox.CheckedChanged += new System.EventHandler(this.releaseCheckbox_CheckedChanged);
|
||||
//
|
||||
// commentCheckbox
|
||||
//
|
||||
this.commentCheckbox.AutoSize = true;
|
||||
this.commentCheckbox.Location = new System.Drawing.Point(533, 699);
|
||||
this.commentCheckbox.Name = "commentCheckbox";
|
||||
this.commentCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.commentCheckbox.TabIndex = 78;
|
||||
this.commentCheckbox.Text = "Comment";
|
||||
this.commentCheckbox.UseVisualStyleBackColor = true;
|
||||
this.commentCheckbox.CheckedChanged += new System.EventHandler(this.commentCheckbox_CheckedChanged);
|
||||
//
|
||||
// commentTextbox
|
||||
//
|
||||
this.commentTextbox.Location = new System.Drawing.Point(609, 697);
|
||||
this.commentTextbox.Name = "commentTextbox";
|
||||
this.commentTextbox.Size = new System.Drawing.Size(112, 20);
|
||||
this.commentTextbox.TabIndex = 79;
|
||||
this.commentTextbox.TextChanged += new System.EventHandler(this.commentTextbox_TextChanged);
|
||||
//
|
||||
// imageCheckbox
|
||||
//
|
||||
this.imageCheckbox.AutoSize = true;
|
||||
this.imageCheckbox.Checked = true;
|
||||
this.imageCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.imageCheckbox.Location = new System.Drawing.Point(425, 699);
|
||||
this.imageCheckbox.Name = "imageCheckbox";
|
||||
this.imageCheckbox.Size = new System.Drawing.Size(70, 17);
|
||||
this.imageCheckbox.TabIndex = 80;
|
||||
this.imageCheckbox.Text = "Cover Art";
|
||||
this.imageCheckbox.UseVisualStyleBackColor = true;
|
||||
this.imageCheckbox.CheckedChanged += new System.EventHandler(this.imageCheckbox_CheckedChanged);
|
||||
//
|
||||
// mp3Checkbox
|
||||
//
|
||||
this.mp3Checkbox.AutoSize = true;
|
||||
this.mp3Checkbox.Location = new System.Drawing.Point(243, 61);
|
||||
this.mp3Checkbox.Name = "mp3Checkbox";
|
||||
this.mp3Checkbox.Size = new System.Drawing.Size(69, 17);
|
||||
this.mp3Checkbox.TabIndex = 81;
|
||||
this.mp3Checkbox.Text = "MP3 320";
|
||||
this.mp3Checkbox.UseVisualStyleBackColor = true;
|
||||
this.mp3Checkbox.CheckedChanged += new System.EventHandler(this.mp3Checkbox_CheckedChanged);
|
||||
//
|
||||
// flacLowCheckbox
|
||||
//
|
||||
this.flacLowCheckbox.AutoSize = true;
|
||||
this.flacLowCheckbox.Location = new System.Drawing.Point(318, 61);
|
||||
this.flacLowCheckbox.Name = "flacLowCheckbox";
|
||||
this.flacLowCheckbox.Size = new System.Drawing.Size(93, 17);
|
||||
this.flacLowCheckbox.TabIndex = 82;
|
||||
this.flacLowCheckbox.Text = "FLAC 16/44.1";
|
||||
this.flacLowCheckbox.UseVisualStyleBackColor = true;
|
||||
this.flacLowCheckbox.CheckedChanged += new System.EventHandler(this.flacLowCheckbox_CheckedChanged);
|
||||
//
|
||||
// flacMidCheckbox
|
||||
//
|
||||
this.flacMidCheckbox.AutoSize = true;
|
||||
this.flacMidCheckbox.Location = new System.Drawing.Point(417, 61);
|
||||
this.flacMidCheckbox.Name = "flacMidCheckbox";
|
||||
this.flacMidCheckbox.Size = new System.Drawing.Size(84, 17);
|
||||
this.flacMidCheckbox.TabIndex = 83;
|
||||
this.flacMidCheckbox.Text = "FLAC 24/96";
|
||||
this.flacMidCheckbox.UseVisualStyleBackColor = true;
|
||||
this.flacMidCheckbox.CheckedChanged += new System.EventHandler(this.flacMidCheckbox_CheckedChanged);
|
||||
//
|
||||
// flacHighCheckbox
|
||||
//
|
||||
this.flacHighCheckbox.AutoSize = true;
|
||||
this.flacHighCheckbox.Checked = true;
|
||||
this.flacHighCheckbox.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.flacHighCheckbox.Location = new System.Drawing.Point(507, 61);
|
||||
this.flacHighCheckbox.Name = "flacHighCheckbox";
|
||||
this.flacHighCheckbox.Size = new System.Drawing.Size(90, 17);
|
||||
this.flacHighCheckbox.TabIndex = 84;
|
||||
this.flacHighCheckbox.Text = "FLAC 24/192";
|
||||
this.flacHighCheckbox.UseVisualStyleBackColor = true;
|
||||
this.flacHighCheckbox.CheckedChanged += new System.EventHandler(this.flacHighCheckbox_CheckedChanged);
|
||||
//
|
||||
// mp3WarnLabel
|
||||
//
|
||||
this.mp3WarnLabel.AutoSize = true;
|
||||
this.mp3WarnLabel.Location = new System.Drawing.Point(744, 711);
|
||||
this.mp3WarnLabel.Name = "mp3WarnLabel";
|
||||
this.mp3WarnLabel.Size = new System.Drawing.Size(182, 13);
|
||||
this.mp3WarnLabel.TabIndex = 85;
|
||||
this.mp3WarnLabel.Text = "* = Not available on MP3 downloads.";
|
||||
//
|
||||
// QobuzDownloaderX
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(938, 533);
|
||||
this.Controls.Add(this.mp3WarnLabel);
|
||||
this.Controls.Add(this.flacHighCheckbox);
|
||||
this.Controls.Add(this.flacMidCheckbox);
|
||||
this.Controls.Add(this.flacLowCheckbox);
|
||||
this.Controls.Add(this.mp3Checkbox);
|
||||
this.Controls.Add(this.imageCheckbox);
|
||||
this.Controls.Add(this.commentTextbox);
|
||||
this.Controls.Add(this.commentCheckbox);
|
||||
this.Controls.Add(this.explicitCheckbox);
|
||||
this.Controls.Add(this.upcCheckbox);
|
||||
this.Controls.Add(this.isrcCheckbox);
|
||||
this.Controls.Add(this.copyrightCheckbox);
|
||||
this.Controls.Add(this.composerCheckbox);
|
||||
this.Controls.Add(this.genreCheckbox);
|
||||
this.Controls.Add(this.releaseCheckbox);
|
||||
this.Controls.Add(this.albumCheckbox);
|
||||
this.Controls.Add(this.discTotalCheckbox);
|
||||
this.Controls.Add(this.discNumberCheckbox);
|
||||
this.Controls.Add(this.trackTotalCheckbox);
|
||||
this.Controls.Add(this.trackNumberCheckbox);
|
||||
this.Controls.Add(this.trackTitleCheckbox);
|
||||
this.Controls.Add(this.artistCheckbox);
|
||||
this.Controls.Add(this.albumArtistCheckbox);
|
||||
this.Controls.Add(this.tagsLabel);
|
||||
this.Controls.Add(this.openSearch);
|
||||
this.Controls.Add(this.qualityTextbox);
|
||||
this.Controls.Add(this.qualityLabel);
|
||||
this.Controls.Add(this.totalTracksTextbox);
|
||||
this.Controls.Add(this.totalTracksLabel);
|
||||
this.Controls.Add(this.label6);
|
||||
this.Controls.Add(this.upcTextBox);
|
||||
this.Controls.Add(this.label5);
|
||||
this.Controls.Add(this.releaseDateTextBox);
|
||||
this.Controls.Add(this.label4);
|
||||
this.Controls.Add(this.albumTextBox);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.albumArtistTextBox);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.albumArtPicBox);
|
||||
this.Controls.Add(this.verNumLabel);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.imageURLTextbox);
|
||||
this.Controls.Add(this.downloadButton);
|
||||
this.Controls.Add(this.albumUrl);
|
||||
this.Controls.Add(this.openFolderButton);
|
||||
this.Controls.Add(this.output);
|
||||
this.Controls.Add(this.selectFolder);
|
||||
this.Controls.Add(this.testURLBox);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "QobuzDownloaderX";
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
|
||||
this.Text = "QobuzDownloaderX";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.QobuzDownloaderX_FormClosed);
|
||||
this.Load += new System.EventHandler(this.Form1_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.albumArtPicBox)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
private System.Windows.Forms.TextBox testURLBox;
|
||||
private System.Windows.Forms.Button selectFolder;
|
||||
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
|
||||
private System.Windows.Forms.TextBox output;
|
||||
private System.ComponentModel.BackgroundWorker downloadBG;
|
||||
private System.Windows.Forms.Button openFolderButton;
|
||||
private System.Windows.Forms.Button downloadButton;
|
||||
private System.Windows.Forms.TextBox albumUrl;
|
||||
private System.Windows.Forms.TextBox imageURLTextbox;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.Label verNumLabel;
|
||||
private System.Windows.Forms.PictureBox albumArtPicBox;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox albumArtistTextBox;
|
||||
private System.Windows.Forms.TextBox albumTextBox;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox releaseDateTextBox;
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox upcTextBox;
|
||||
private System.Windows.Forms.Label label5;
|
||||
private System.Windows.Forms.Label label6;
|
||||
private System.Windows.Forms.TextBox totalTracksTextbox;
|
||||
private System.Windows.Forms.Label totalTracksLabel;
|
||||
private System.ComponentModel.BackgroundWorker getLinkTypeBG;
|
||||
private System.ComponentModel.BackgroundWorker downloadAlbumBG;
|
||||
private System.ComponentModel.BackgroundWorker downloadTrackBG;
|
||||
private System.ComponentModel.BackgroundWorker downloadDiscogBG;
|
||||
private System.Windows.Forms.TextBox qualityTextbox;
|
||||
private System.Windows.Forms.Label qualityLabel;
|
||||
private System.Windows.Forms.Button openSearch;
|
||||
private System.Windows.Forms.Label tagsLabel;
|
||||
private System.Windows.Forms.CheckBox albumArtistCheckbox;
|
||||
private System.Windows.Forms.CheckBox artistCheckbox;
|
||||
private System.Windows.Forms.CheckBox trackTitleCheckbox;
|
||||
private System.Windows.Forms.CheckBox trackNumberCheckbox;
|
||||
private System.Windows.Forms.CheckBox trackTotalCheckbox;
|
||||
private System.Windows.Forms.CheckBox discNumberCheckbox;
|
||||
private System.Windows.Forms.CheckBox discTotalCheckbox;
|
||||
private System.Windows.Forms.CheckBox albumCheckbox;
|
||||
private System.Windows.Forms.CheckBox explicitCheckbox;
|
||||
private System.Windows.Forms.CheckBox upcCheckbox;
|
||||
private System.Windows.Forms.CheckBox isrcCheckbox;
|
||||
private System.Windows.Forms.CheckBox copyrightCheckbox;
|
||||
private System.Windows.Forms.CheckBox composerCheckbox;
|
||||
private System.Windows.Forms.CheckBox genreCheckbox;
|
||||
private System.Windows.Forms.CheckBox releaseCheckbox;
|
||||
private System.Windows.Forms.CheckBox commentCheckbox;
|
||||
private System.Windows.Forms.TextBox commentTextbox;
|
||||
private System.Windows.Forms.CheckBox imageCheckbox;
|
||||
private System.Windows.Forms.CheckBox mp3Checkbox;
|
||||
private System.Windows.Forms.CheckBox flacLowCheckbox;
|
||||
private System.Windows.Forms.CheckBox flacMidCheckbox;
|
||||
private System.Windows.Forms.CheckBox flacHighCheckbox;
|
||||
private System.Windows.Forms.Label mp3WarnLabel;
|
||||
}
|
||||
}
|
||||
|
3539
QobuzDownloaderX/Form1.cs
Normal file
3539
QobuzDownloaderX/Form1.cs
Normal file
File diff suppressed because it is too large
Load Diff
1070
QobuzDownloaderX/Form1.resx
Normal file
1070
QobuzDownloaderX/Form1.resx
Normal file
File diff suppressed because it is too large
Load Diff
207
QobuzDownloaderX/LoginForm.Designer.cs
generated
Normal file
207
QobuzDownloaderX/LoginForm.Designer.cs
generated
Normal file
@ -0,0 +1,207 @@
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
partial class LoginForm
|
||||
{
|
||||
/// <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(LoginForm));
|
||||
this.passwordLabel = new System.Windows.Forms.Label();
|
||||
this.emailLabel = new System.Windows.Forms.Label();
|
||||
this.appIdLabel = new System.Windows.Forms.Label();
|
||||
this.emailTextbox = new System.Windows.Forms.TextBox();
|
||||
this.passwordTextbox = new System.Windows.Forms.TextBox();
|
||||
this.loginButton = new System.Windows.Forms.Button();
|
||||
this.appidTextbox = new System.Windows.Forms.TextBox();
|
||||
this.pictureBox1 = new System.Windows.Forms.PictureBox();
|
||||
this.loginText = new System.Windows.Forms.Label();
|
||||
this.md5Button = new System.Windows.Forms.Button();
|
||||
this.loginBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.getSecretBG = new System.ComponentModel.BackgroundWorker();
|
||||
this.verNumLabel2 = new System.Windows.Forms.Label();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// passwordLabel
|
||||
//
|
||||
this.passwordLabel.AutoSize = true;
|
||||
this.passwordLabel.Location = new System.Drawing.Point(12, 143);
|
||||
this.passwordLabel.Name = "passwordLabel";
|
||||
this.passwordLabel.Size = new System.Drawing.Size(59, 13);
|
||||
this.passwordLabel.TabIndex = 27;
|
||||
this.passwordLabel.Text = "Password -";
|
||||
//
|
||||
// emailLabel
|
||||
//
|
||||
this.emailLabel.AutoSize = true;
|
||||
this.emailLabel.Location = new System.Drawing.Point(33, 114);
|
||||
this.emailLabel.Name = "emailLabel";
|
||||
this.emailLabel.Size = new System.Drawing.Size(38, 13);
|
||||
this.emailLabel.TabIndex = 26;
|
||||
this.emailLabel.Text = "Email -";
|
||||
//
|
||||
// appIdLabel
|
||||
//
|
||||
this.appIdLabel.AutoSize = true;
|
||||
this.appIdLabel.Location = new System.Drawing.Point(25, 85);
|
||||
this.appIdLabel.Name = "appIdLabel";
|
||||
this.appIdLabel.Size = new System.Drawing.Size(46, 13);
|
||||
this.appIdLabel.TabIndex = 25;
|
||||
this.appIdLabel.Text = "App ID -";
|
||||
//
|
||||
// emailTextbox
|
||||
//
|
||||
this.emailTextbox.Location = new System.Drawing.Point(77, 111);
|
||||
this.emailTextbox.Multiline = true;
|
||||
this.emailTextbox.Name = "emailTextbox";
|
||||
this.emailTextbox.Size = new System.Drawing.Size(189, 23);
|
||||
this.emailTextbox.TabIndex = 24;
|
||||
this.emailTextbox.Text = "E-mail";
|
||||
this.emailTextbox.WordWrap = false;
|
||||
//
|
||||
// passwordTextbox
|
||||
//
|
||||
this.passwordTextbox.Location = new System.Drawing.Point(77, 140);
|
||||
this.passwordTextbox.Multiline = true;
|
||||
this.passwordTextbox.Name = "passwordTextbox";
|
||||
this.passwordTextbox.Size = new System.Drawing.Size(144, 23);
|
||||
this.passwordTextbox.TabIndex = 23;
|
||||
this.passwordTextbox.Text = "Password (Hashed)";
|
||||
this.passwordTextbox.WordWrap = false;
|
||||
//
|
||||
// loginButton
|
||||
//
|
||||
this.loginButton.Location = new System.Drawing.Point(77, 169);
|
||||
this.loginButton.Name = "loginButton";
|
||||
this.loginButton.Size = new System.Drawing.Size(189, 23);
|
||||
this.loginButton.TabIndex = 22;
|
||||
this.loginButton.Text = "Login";
|
||||
this.loginButton.UseVisualStyleBackColor = true;
|
||||
this.loginButton.Click += new System.EventHandler(this.loginButton_Click);
|
||||
//
|
||||
// appidTextbox
|
||||
//
|
||||
this.appidTextbox.Location = new System.Drawing.Point(77, 82);
|
||||
this.appidTextbox.Multiline = true;
|
||||
this.appidTextbox.Name = "appidTextbox";
|
||||
this.appidTextbox.Size = new System.Drawing.Size(189, 23);
|
||||
this.appidTextbox.TabIndex = 21;
|
||||
this.appidTextbox.Text = "app_id Here";
|
||||
this.appidTextbox.WordWrap = false;
|
||||
//
|
||||
// pictureBox1
|
||||
//
|
||||
this.pictureBox1.BackColor = System.Drawing.Color.Transparent;
|
||||
this.pictureBox1.Image = global::QobuzDownloaderX.Properties.Resources.qbdlx;
|
||||
this.pictureBox1.Location = new System.Drawing.Point(12, 12);
|
||||
this.pictureBox1.Name = "pictureBox1";
|
||||
this.pictureBox1.Size = new System.Drawing.Size(257, 64);
|
||||
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.pictureBox1.TabIndex = 28;
|
||||
this.pictureBox1.TabStop = false;
|
||||
//
|
||||
// loginText
|
||||
//
|
||||
this.loginText.Location = new System.Drawing.Point(12, 203);
|
||||
this.loginText.Name = "loginText";
|
||||
this.loginText.Size = new System.Drawing.Size(254, 23);
|
||||
this.loginText.TabIndex = 29;
|
||||
this.loginText.Text = "Waiting for login...";
|
||||
this.loginText.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;
|
||||
//
|
||||
// md5Button
|
||||
//
|
||||
this.md5Button.Location = new System.Drawing.Point(227, 140);
|
||||
this.md5Button.Name = "md5Button";
|
||||
this.md5Button.Size = new System.Drawing.Size(39, 23);
|
||||
this.md5Button.TabIndex = 30;
|
||||
this.md5Button.Text = "MD5";
|
||||
this.md5Button.UseVisualStyleBackColor = true;
|
||||
this.md5Button.Click += new System.EventHandler(this.md5Button_Click);
|
||||
//
|
||||
// loginBG
|
||||
//
|
||||
this.loginBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.loginBG_DoWork);
|
||||
//
|
||||
// getSecretBG
|
||||
//
|
||||
this.getSecretBG.DoWork += new System.ComponentModel.DoWorkEventHandler(this.getSecretBG_DoWork);
|
||||
//
|
||||
// verNumLabel2
|
||||
//
|
||||
this.verNumLabel2.BackColor = System.Drawing.Color.Transparent;
|
||||
this.verNumLabel2.Location = new System.Drawing.Point(181, 61);
|
||||
this.verNumLabel2.Name = "verNumLabel2";
|
||||
this.verNumLabel2.Size = new System.Drawing.Size(85, 18);
|
||||
this.verNumLabel2.TabIndex = 31;
|
||||
this.verNumLabel2.Text = "#.#.#.#";
|
||||
this.verNumLabel2.TextAlign = System.Drawing.ContentAlignment.MiddleRight;
|
||||
//
|
||||
// LoginForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(281, 235);
|
||||
this.Controls.Add(this.verNumLabel2);
|
||||
this.Controls.Add(this.md5Button);
|
||||
this.Controls.Add(this.loginText);
|
||||
this.Controls.Add(this.pictureBox1);
|
||||
this.Controls.Add(this.passwordLabel);
|
||||
this.Controls.Add(this.emailLabel);
|
||||
this.Controls.Add(this.appIdLabel);
|
||||
this.Controls.Add(this.emailTextbox);
|
||||
this.Controls.Add(this.passwordTextbox);
|
||||
this.Controls.Add(this.loginButton);
|
||||
this.Controls.Add(this.appidTextbox);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.Name = "LoginForm";
|
||||
this.Text = "QobuzDLX | Login";
|
||||
this.Load += new System.EventHandler(this.LoginForm_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.Label passwordLabel;
|
||||
private System.Windows.Forms.Label emailLabel;
|
||||
private System.Windows.Forms.Label appIdLabel;
|
||||
private System.Windows.Forms.TextBox emailTextbox;
|
||||
private System.Windows.Forms.TextBox passwordTextbox;
|
||||
private System.Windows.Forms.Button loginButton;
|
||||
private System.Windows.Forms.TextBox appidTextbox;
|
||||
private System.Windows.Forms.PictureBox pictureBox1;
|
||||
private System.Windows.Forms.Label loginText;
|
||||
private System.Windows.Forms.Button md5Button;
|
||||
private System.ComponentModel.BackgroundWorker loginBG;
|
||||
private System.ComponentModel.BackgroundWorker getSecretBG;
|
||||
private System.Windows.Forms.Label verNumLabel2;
|
||||
}
|
||||
}
|
277
QobuzDownloaderX/LoginForm.cs
Normal file
277
QobuzDownloaderX/LoginForm.cs
Normal file
@ -0,0 +1,277 @@
|
||||
using QobuzDownloaderX.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Security.Cryptography;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Drawing.Imaging;
|
||||
using TagLib.Flac;
|
||||
using QobuzDownloaderX;
|
||||
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
public partial class LoginForm : Form
|
||||
{
|
||||
public LoginForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void QobuzDownloaderX_FormClosing(Object sender, FormClosingEventArgs e)
|
||||
{
|
||||
Application.Exit();
|
||||
}
|
||||
|
||||
QobuzDownloaderX qbdlx = new QobuzDownloaderX();
|
||||
|
||||
public string appSecret { get; set; }
|
||||
|
||||
string errorLog = Path.GetDirectoryName(Application.ExecutablePath) + "\\Latest_Error.log";
|
||||
string dllCheck = Path.GetDirectoryName(Application.ExecutablePath) + "\\taglib-sharp.dll";
|
||||
|
||||
private void LoginForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
// Get and display version number.
|
||||
verNumLabel2.Text = Assembly.GetExecutingAssembly().GetName().Version.ToString();
|
||||
|
||||
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.
|
||||
appidTextbox.Text = Settings.Default.savedAppID.ToString();
|
||||
emailTextbox.Text = Settings.Default.savedEmail.ToString();
|
||||
passwordTextbox.Text = Settings.Default.savedPassword.ToString();
|
||||
}
|
||||
|
||||
static string GetMd5Hash(MD5 md5Hash, string input)
|
||||
{
|
||||
|
||||
// Convert the input string to a byte array and compute the hash.
|
||||
byte[] data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(input));
|
||||
|
||||
// Create a new Stringbuilder to collect the bytes and create a string.
|
||||
StringBuilder sBuilder = new StringBuilder();
|
||||
|
||||
// Loop through each byte of the hashed data and format each one as a hexadecimal string.
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
sBuilder.Append(data[i].ToString("x2"));
|
||||
}
|
||||
|
||||
// Return the hexadecimal string.
|
||||
return sBuilder.ToString();
|
||||
}
|
||||
|
||||
// Verify a hash against a string.
|
||||
static bool VerifyMd5Hash(MD5 md5Hash, string input, string hash)
|
||||
{
|
||||
// Hash the input.
|
||||
string hashOfInput = GetMd5Hash(md5Hash, input);
|
||||
|
||||
// Create a StringComparer an compare the hashes.
|
||||
StringComparer comparer = StringComparer.OrdinalIgnoreCase;
|
||||
|
||||
if (0 == comparer.Compare(hashOfInput, hash))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private void md5Button_Click(object sender, EventArgs e)
|
||||
{
|
||||
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 loginButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
var passMD5CheckLog = Regex.Match(passwordTextbox.Text, "(?<md5Test>^[0-9a-f]{32}$)").Groups;
|
||||
var passMD5Check = passMD5CheckLog[1].Value;
|
||||
|
||||
if (passMD5Check == null | passMD5Check == "")
|
||||
{
|
||||
loginText.Text = "Password not MD5! Hit \"MD5\" before logging in!";
|
||||
return;
|
||||
}
|
||||
|
||||
// Save info locally to be used on next launch.
|
||||
Settings.Default.savedEmail = emailTextbox.Text;
|
||||
Settings.Default.savedAppID = appidTextbox.Text;
|
||||
Settings.Default.savedPassword = passwordTextbox.Text;
|
||||
Settings.Default.Save();
|
||||
|
||||
loginText.Text = "Logging in + obtaining app_secret...";
|
||||
loginBG.RunWorkerAsync();
|
||||
}
|
||||
|
||||
private 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=" + appidTextbox.Text);
|
||||
|
||||
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 display name
|
||||
var displayNameLog = Regex.Match(loginRequest, "\"display_name\":\"(?<displayName>.*?)\",\\\"").Groups;
|
||||
var displayName = displayNameLog[1].Value;
|
||||
qbdlx.displayName = displayName;
|
||||
|
||||
// Grab account type
|
||||
var accountTypeLog = Regex.Match(loginRequest, "short_label\":\"(?<accountType>\\w+)").Groups;
|
||||
var accountType = accountTypeLog[1].Value;
|
||||
qbdlx.accountType = accountType;
|
||||
|
||||
// Grab authentication token
|
||||
var userAuth = Regex.Match(loginRequest, "\"user_auth_token\":\"(?<userAuth>.*?)\\\"}").Groups;
|
||||
var userAuthToken = userAuth[1].Value;
|
||||
|
||||
// Set user_auth_token
|
||||
qbdlx.userAuth = userAuthToken;
|
||||
loginText.Invoke(new Action(() => loginText.Text = "Login Successful! Getting app_secret..."));
|
||||
}
|
||||
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);
|
||||
wr.Abort();
|
||||
return;
|
||||
}
|
||||
|
||||
wr.Abort();
|
||||
getSecretBG.RunWorkerAsync();
|
||||
loginBG.CancelAsync();
|
||||
}
|
||||
|
||||
private void getSecretBG_DoWork(object sender, DoWorkEventArgs e)
|
||||
{
|
||||
getSecretBG.WorkerSupportsCancellation = true;
|
||||
|
||||
WebClient bundleURLClient = new WebClient();
|
||||
string bundleHTML = bundleURLClient.DownloadString("https://play.qobuz.com/");
|
||||
|
||||
// Grab link to bundle.js
|
||||
var bundleLog = Regex.Match(bundleHTML, "<script src=\"(?<bundleJS>\\/resources\\/\\d+\\.\\d+\\.\\d+-[a-z]\\d{3}\\/bundle\\.js)").Groups;
|
||||
var bundleSuffix = bundleLog[1].Value;
|
||||
var bundleURL = "https://play.qobuz.com" + bundleSuffix;
|
||||
|
||||
WebRequest bundleWR = WebRequest.Create(bundleURL);
|
||||
|
||||
try
|
||||
{
|
||||
WebResponse bundleWS = bundleWR.GetResponse();
|
||||
StreamReader bundleSR = new StreamReader(bundleWS.GetResponseStream());
|
||||
|
||||
string getBundleRequest = bundleSR.ReadToEnd();
|
||||
string text = getBundleRequest;
|
||||
|
||||
// Grab "info" and "extras"
|
||||
var bundleLog1 = Regex.Match(getBundleRequest, "{offset:\"(?<notUsed>.*?)\",name:\"Europe\\/Berlin\",info:\"(?<info>.*?)\",extras:\"(?<extras>.*?)\"}").Groups;
|
||||
var bundleInfo = bundleLog1[2].Value;
|
||||
var bundleExtras = bundleLog1[3].Value;
|
||||
|
||||
// Grab "seed"
|
||||
var bundleLog2 = Regex.Match(getBundleRequest, "window.utimezone.paris\\):h.initialSeed\\(\"(?<seed>.*?)\",window.utimezone.berlin\\)").Groups;
|
||||
var bundleSeed = bundleLog2[1].Value;
|
||||
|
||||
// Step 1 of getting the app_secret
|
||||
string B64step1 = bundleSeed + bundleInfo + bundleExtras;
|
||||
B64step1 = B64step1.Remove(B64step1.Length - 44, 44);
|
||||
byte[] step1Bytes = Encoding.UTF8.GetBytes(B64step1);
|
||||
B64step1 = Convert.ToBase64String(step1Bytes);
|
||||
|
||||
// Step 2 of getting the app_secret
|
||||
byte[] step2Data = Convert.FromBase64String(B64step1);
|
||||
string B64step2 = Encoding.UTF8.GetString(step2Data);
|
||||
|
||||
// Step 3 of getting the app_secret
|
||||
byte[] step3Data = Convert.FromBase64String(B64step2);
|
||||
|
||||
// Set app_secret
|
||||
appSecret = Encoding.UTF8.GetString(step3Data);
|
||||
loginText.Invoke(new Action(() => loginText.Text = "app_secret Obtained! Launching QBDLX..."));
|
||||
System.Threading.Thread.Sleep(1000);
|
||||
}
|
||||
catch (Exception bundleEx)
|
||||
{
|
||||
// If obtaining bundle.js info fails, show error info.
|
||||
string bundleError = bundleEx.ToString();
|
||||
loginText.Invoke(new Action(() => loginText.Text = "Couldn't obtain app_secret. Error Log saved"));
|
||||
System.IO.File.WriteAllText(errorLog, bundleError);
|
||||
bundleWR.Abort();
|
||||
return;
|
||||
}
|
||||
|
||||
bundleWR.Abort();
|
||||
finishLogin(sender, e);
|
||||
getSecretBG.CancelAsync();
|
||||
}
|
||||
|
||||
private void finishLogin(object sender, EventArgs e)
|
||||
{
|
||||
// If info is legit, go to the main form.
|
||||
qbdlx.appid = appidTextbox.Text;
|
||||
qbdlx.eMail = emailTextbox.Text;
|
||||
qbdlx.password = passwordTextbox.Text;
|
||||
qbdlx.appSecret = appSecret;
|
||||
this.Invoke(new Action(() => this.Hide()));
|
||||
Application.Run(qbdlx);
|
||||
}
|
||||
}
|
||||
}
|
1058
QobuzDownloaderX/LoginForm.resx
Normal file
1058
QobuzDownloaderX/LoginForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
22
QobuzDownloaderX/Program.cs
Normal file
22
QobuzDownloaderX/Program.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// The main entry point for the application.
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new LoginForm());
|
||||
}
|
||||
}
|
||||
}
|
36
QobuzDownloaderX/Properties/AssemblyInfo.cs
Normal file
36
QobuzDownloaderX/Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("QobuzDownloaderX")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("AiiR")]
|
||||
[assembly: AssemblyProduct("QobuzDownloaderX")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2019")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("4ceb979a-035a-4d36-9607-d554bbecabe0")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// 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.8.7")]
|
||||
[assembly: AssemblyFileVersion("0.9.8.7")]
|
83
QobuzDownloaderX/Properties/Resources.Designer.cs
generated
Normal file
83
QobuzDownloaderX/Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,83 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace QobuzDownloaderX.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources {
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources() {
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager {
|
||||
get {
|
||||
if (object.ReferenceEquals(resourceMan, null)) {
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("QobuzDownloaderX.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Bitmap.
|
||||
/// </summary>
|
||||
internal static System.Drawing.Bitmap qbdlx {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("qbdlx", resourceCulture);
|
||||
return ((System.Drawing.Bitmap)(obj));
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Looks up a localized resource of type System.Drawing.Icon similar to (Icon).
|
||||
/// </summary>
|
||||
internal static System.Drawing.Icon qbdlx_icon {
|
||||
get {
|
||||
object obj = ResourceManager.GetObject("qbdlx_icon", resourceCulture);
|
||||
return ((System.Drawing.Icon)(obj));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
127
QobuzDownloaderX/Properties/Resources.resx
Normal file
127
QobuzDownloaderX/Properties/Resources.resx
Normal file
@ -0,0 +1,127 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||
<data name="qbdlx" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\qbdlx.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
<data name="qbdlx_icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||
<value>..\Resources\qbdlx_icon.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||
</data>
|
||||
</root>
|
386
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
Normal file
386
QobuzDownloaderX/Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,386 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:4.0.30319.42000
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace QobuzDownloaderX.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default {
|
||||
get {
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedFolder {
|
||||
get {
|
||||
return ((string)(this["savedFolder"]));
|
||||
}
|
||||
set {
|
||||
this["savedFolder"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedAppID {
|
||||
get {
|
||||
return ((string)(this["savedAppID"]));
|
||||
}
|
||||
set {
|
||||
this["savedAppID"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedEmail {
|
||||
get {
|
||||
return ((string)(this["savedEmail"]));
|
||||
}
|
||||
set {
|
||||
this["savedEmail"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedPassword {
|
||||
get {
|
||||
return ((string)(this["savedPassword"]));
|
||||
}
|
||||
set {
|
||||
this["savedPassword"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string savedFormatID {
|
||||
get {
|
||||
return ((string)(this["savedFormatID"]));
|
||||
}
|
||||
set {
|
||||
this["savedFormatID"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool UpgradeRequired {
|
||||
get {
|
||||
return ((bool)(this["UpgradeRequired"]));
|
||||
}
|
||||
set {
|
||||
this["UpgradeRequired"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool albumTag {
|
||||
get {
|
||||
return ((bool)(this["albumTag"]));
|
||||
}
|
||||
set {
|
||||
this["albumTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool artistTag {
|
||||
get {
|
||||
return ((bool)(this["artistTag"]));
|
||||
}
|
||||
set {
|
||||
this["artistTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool albumArtistTag {
|
||||
get {
|
||||
return ((bool)(this["albumArtistTag"]));
|
||||
}
|
||||
set {
|
||||
this["albumArtistTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool trackTag {
|
||||
get {
|
||||
return ((bool)(this["trackTag"]));
|
||||
}
|
||||
set {
|
||||
this["trackTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool totalTracksTag {
|
||||
get {
|
||||
return ((bool)(this["totalTracksTag"]));
|
||||
}
|
||||
set {
|
||||
this["totalTracksTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool discTag {
|
||||
get {
|
||||
return ((bool)(this["discTag"]));
|
||||
}
|
||||
set {
|
||||
this["discTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool totalDiscsTag {
|
||||
get {
|
||||
return ((bool)(this["totalDiscsTag"]));
|
||||
}
|
||||
set {
|
||||
this["totalDiscsTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool genreTag {
|
||||
get {
|
||||
return ((bool)(this["genreTag"]));
|
||||
}
|
||||
set {
|
||||
this["genreTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool isrcTag {
|
||||
get {
|
||||
return ((bool)(this["isrcTag"]));
|
||||
}
|
||||
set {
|
||||
this["isrcTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool upcTag {
|
||||
get {
|
||||
return ((bool)(this["upcTag"]));
|
||||
}
|
||||
set {
|
||||
this["upcTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool copyrightTag {
|
||||
get {
|
||||
return ((bool)(this["copyrightTag"]));
|
||||
}
|
||||
set {
|
||||
this["copyrightTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool yearTag {
|
||||
get {
|
||||
return ((bool)(this["yearTag"]));
|
||||
}
|
||||
set {
|
||||
this["yearTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool explicitTag {
|
||||
get {
|
||||
return ((bool)(this["explicitTag"]));
|
||||
}
|
||||
set {
|
||||
this["explicitTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool imageTag {
|
||||
get {
|
||||
return ((bool)(this["imageTag"]));
|
||||
}
|
||||
set {
|
||||
this["imageTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool commentTag {
|
||||
get {
|
||||
return ((bool)(this["commentTag"]));
|
||||
}
|
||||
set {
|
||||
this["commentTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool composerTag {
|
||||
get {
|
||||
return ((bool)(this["composerTag"]));
|
||||
}
|
||||
set {
|
||||
this["composerTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool trackTitleTag {
|
||||
get {
|
||||
return ((bool)(this["trackTitleTag"]));
|
||||
}
|
||||
set {
|
||||
this["trackTitleTag"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("")]
|
||||
public string commentText {
|
||||
get {
|
||||
return ((string)(this["commentText"]));
|
||||
}
|
||||
set {
|
||||
this["commentText"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool quality1 {
|
||||
get {
|
||||
return ((bool)(this["quality1"]));
|
||||
}
|
||||
set {
|
||||
this["quality1"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool quality2 {
|
||||
get {
|
||||
return ((bool)(this["quality2"]));
|
||||
}
|
||||
set {
|
||||
this["quality2"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("False")]
|
||||
public bool quality3 {
|
||||
get {
|
||||
return ((bool)(this["quality3"]));
|
||||
}
|
||||
set {
|
||||
this["quality3"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("True")]
|
||||
public bool quality4 {
|
||||
get {
|
||||
return ((bool)(this["quality4"]));
|
||||
}
|
||||
set {
|
||||
this["quality4"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute("27")]
|
||||
public string qualityFormat {
|
||||
get {
|
||||
return ((string)(this["qualityFormat"]));
|
||||
}
|
||||
set {
|
||||
this["qualityFormat"] = value;
|
||||
}
|
||||
}
|
||||
|
||||
[global::System.Configuration.UserScopedSettingAttribute()]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Configuration.DefaultSettingValueAttribute(".flac")]
|
||||
public string audioType {
|
||||
get {
|
||||
return ((string)(this["audioType"]));
|
||||
}
|
||||
set {
|
||||
this["audioType"] = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
96
QobuzDownloaderX/Properties/Settings.settings
Normal file
96
QobuzDownloaderX/Properties/Settings.settings
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="QobuzDownloaderX.Properties" GeneratedClassName="Settings">
|
||||
<Profiles />
|
||||
<Settings>
|
||||
<Setting Name="savedFolder" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="savedAppID" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="savedEmail" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="savedPassword" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="savedFormatID" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="UpgradeRequired" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="albumTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="artistTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="albumArtistTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="trackTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="totalTracksTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="discTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="totalDiscsTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="genreTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="isrcTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="upcTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="copyrightTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="yearTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="explicitTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="imageTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="commentTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="composerTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="trackTitleTag" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="commentText" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)" />
|
||||
</Setting>
|
||||
<Setting Name="quality1" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="quality2" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="quality3" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">False</Value>
|
||||
</Setting>
|
||||
<Setting Name="quality4" Type="System.Boolean" Scope="User">
|
||||
<Value Profile="(Default)">True</Value>
|
||||
</Setting>
|
||||
<Setting Name="qualityFormat" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">27</Value>
|
||||
</Setting>
|
||||
<Setting Name="audioType" Type="System.String" Scope="User">
|
||||
<Value Profile="(Default)">.flac</Value>
|
||||
</Setting>
|
||||
</Settings>
|
||||
</SettingsFile>
|
159
QobuzDownloaderX/QobuzDownloaderX.csproj
Normal file
159
QobuzDownloaderX/QobuzDownloaderX.csproj
Normal file
@ -0,0 +1,159 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{4CEB979A-035A-4D36-9607-D554BBECABE0}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>QobuzDownloaderX</RootNamespace>
|
||||
<AssemblyName>QobuzDownloaderX</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.6</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||
<TargetFrameworkProfile />
|
||||
<PublishUrl>publish\</PublishUrl>
|
||||
<Install>true</Install>
|
||||
<InstallFrom>Disk</InstallFrom>
|
||||
<UpdateEnabled>false</UpdateEnabled>
|
||||
<UpdateMode>Foreground</UpdateMode>
|
||||
<UpdateInterval>7</UpdateInterval>
|
||||
<UpdateIntervalUnits>Days</UpdateIntervalUnits>
|
||||
<UpdatePeriodically>false</UpdatePeriodically>
|
||||
<UpdateRequired>false</UpdateRequired>
|
||||
<MapFileExtensions>true</MapFileExtensions>
|
||||
<ApplicationRevision>0</ApplicationRevision>
|
||||
<ApplicationVersion>1.0.0.%2a</ApplicationVersion>
|
||||
<IsWebBootstrapper>false</IsWebBootstrapper>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<BootstrapperEnabled>true</BootstrapperEnabled>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>Resources\qbdlx_icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<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>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Core" />
|
||||
<Reference Include="System.Xml.Linq" />
|
||||
<Reference Include="System.Data.DataSetExtensions" />
|
||||
<Reference Include="Microsoft.CSharp" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Net.Http" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="taglib-sharp, Version=2.1.0.0, Culture=neutral, PublicKeyToken=db62eba44689b5b0, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\taglib.2.1.0.0\lib\taglib-sharp.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="searchForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="searchForm.Designer.cs">
|
||||
<DependentUpon>searchForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="LoginForm.Designer.cs">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="Settings.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="searchForm.resx">
|
||||
<DependentUpon>searchForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="LoginForm.resx">
|
||||
<DependentUpon>LoginForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
<DesignTime>True</DesignTime>
|
||||
</Compile>
|
||||
<None Include="packages.config" />
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="App.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\qbdlx.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\qbdlx_icon.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="Resources\Untitled-1.png" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<BootstrapperPackage Include=".NETFramework,Version=v4.6">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>Microsoft .NET Framework 4.6 %28x86 and x64%29</ProductName>
|
||||
<Install>true</Install>
|
||||
</BootstrapperPackage>
|
||||
<BootstrapperPackage Include="Microsoft.Net.Framework.3.5.SP1">
|
||||
<Visible>False</Visible>
|
||||
<ProductName>.NET Framework 3.5 SP1</ProductName>
|
||||
<Install>false</Install>
|
||||
</BootstrapperPackage>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
13
QobuzDownloaderX/QobuzDownloaderX.csproj.user
Normal file
13
QobuzDownloaderX/QobuzDownloaderX.csproj.user
Normal file
@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<PublishUrlHistory>publish\</PublishUrlHistory>
|
||||
<InstallUrlHistory />
|
||||
<SupportUrlHistory />
|
||||
<UpdateUrlHistory />
|
||||
<BootstrapperUrlHistory />
|
||||
<ErrorReportUrlHistory />
|
||||
<FallbackCulture>en-US</FallbackCulture>
|
||||
<VerifyUploadedFiles>false</VerifyUploadedFiles>
|
||||
</PropertyGroup>
|
||||
</Project>
|
BIN
QobuzDownloaderX/Resources/Untitled-1.png
Normal file
BIN
QobuzDownloaderX/Resources/Untitled-1.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 872 KiB |
BIN
QobuzDownloaderX/Resources/qbdlx.png
Normal file
BIN
QobuzDownloaderX/Resources/qbdlx.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 26 KiB |
BIN
QobuzDownloaderX/Resources/qbdlx_icon.ico
Normal file
BIN
QobuzDownloaderX/Resources/qbdlx_icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 54 KiB |
28
QobuzDownloaderX/Settings.cs
Normal file
28
QobuzDownloaderX/Settings.cs
Normal file
@ -0,0 +1,28 @@
|
||||
namespace QobuzDownloaderX.Properties {
|
||||
|
||||
|
||||
// This class allows you to handle specific events on the settings class:
|
||||
// The SettingChanging event is raised before a setting's value is changed.
|
||||
// The PropertyChanged event is raised after a setting's value is changed.
|
||||
// The SettingsLoaded event is raised after the setting values are loaded.
|
||||
// The SettingsSaving event is raised before the setting values are saved.
|
||||
internal sealed partial class Settings {
|
||||
|
||||
public Settings() {
|
||||
// // To add event handlers for saving and changing settings, uncomment the lines below:
|
||||
//
|
||||
// this.SettingChanging += this.SettingChangingEventHandler;
|
||||
//
|
||||
// this.SettingsSaving += this.SettingsSavingEventHandler;
|
||||
//
|
||||
}
|
||||
|
||||
private void SettingChangingEventHandler(object sender, System.Configuration.SettingChangingEventArgs e) {
|
||||
// Add code to handle the SettingChangingEvent event here.
|
||||
}
|
||||
|
||||
private void SettingsSavingEventHandler(object sender, System.ComponentModel.CancelEventArgs e) {
|
||||
// Add code to handle the SettingsSaving event here.
|
||||
}
|
||||
}
|
||||
}
|
Binary file not shown.
Binary file not shown.
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.LoginForm.resources
Normal file
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.LoginForm.resources
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\QobuzDownloaderX.exe.config
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\QobuzDownloaderX.exe
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\QobuzDownloaderX.pdb
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.csprojResolveAssemblyReference.cache
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.Properties.Resources.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.csproj.GenerateResource.Cache
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.exe
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.pdb
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.QobuzDownloaderX.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\policy.2.0.taglib-sharp.dll
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\taglib-sharp.dll
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Debug\policy.2.0.taglib-sharp.config
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.LoginForm.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Debug\QobuzDownloaderX.searchForm.resources
|
Binary file not shown.
Binary file not shown.
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.exe
Normal file
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.exe
Normal file
Binary file not shown.
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.pdb
Normal file
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.pdb
Normal file
Binary file not shown.
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.searchForm.resources
Normal file
BIN
QobuzDownloaderX/obj/Debug/QobuzDownloaderX.searchForm.resources
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,14 @@
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\QobuzDownloaderX.exe.config
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\QobuzDownloaderX.exe
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\QobuzDownloaderX.pdb
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\policy.2.0.taglib-sharp.dll
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\taglib-sharp.dll
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\bin\Release\policy.2.0.taglib-sharp.config
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.QobuzDownloaderX.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.LoginForm.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.Properties.Resources.resources
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.csproj.GenerateResource.Cache
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.exe
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.pdb
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.csprojResolveAssemblyReference.cache
|
||||
F:\Documents\- Visual Studio Projects\QobuzDownloaderX\QobuzDownloaderX\obj\Release\QobuzDownloaderX.searchForm.resources
|
Binary file not shown.
Binary file not shown.
BIN
QobuzDownloaderX/obj/Release/QobuzDownloaderX.exe
Normal file
BIN
QobuzDownloaderX/obj/Release/QobuzDownloaderX.exe
Normal file
Binary file not shown.
BIN
QobuzDownloaderX/obj/Release/QobuzDownloaderX.pdb
Normal file
BIN
QobuzDownloaderX/obj/Release/QobuzDownloaderX.pdb
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
4
QobuzDownloaderX/packages.config
Normal file
4
QobuzDownloaderX/packages.config
Normal file
@ -0,0 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="taglib" version="2.1.0.0" targetFramework="net46" />
|
||||
</packages>
|
89
QobuzDownloaderX/searchForm.Designer.cs
generated
Normal file
89
QobuzDownloaderX/searchForm.Designer.cs
generated
Normal file
@ -0,0 +1,89 @@
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
partial class searchForm
|
||||
{
|
||||
/// <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(searchForm));
|
||||
this.searchInput = new System.Windows.Forms.TextBox();
|
||||
this.searchButton = new System.Windows.Forms.Button();
|
||||
this.resultTextbox = new System.Windows.Forms.TextBox();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// searchInput
|
||||
//
|
||||
this.searchInput.Location = new System.Drawing.Point(12, 14);
|
||||
this.searchInput.Name = "searchInput";
|
||||
this.searchInput.Size = new System.Drawing.Size(612, 20);
|
||||
this.searchInput.TabIndex = 0;
|
||||
this.searchInput.KeyDown += new System.Windows.Forms.KeyEventHandler(this.searchInput_KeyDown);
|
||||
//
|
||||
// searchButton
|
||||
//
|
||||
this.searchButton.Location = new System.Drawing.Point(630, 12);
|
||||
this.searchButton.Name = "searchButton";
|
||||
this.searchButton.Size = new System.Drawing.Size(98, 23);
|
||||
this.searchButton.TabIndex = 1;
|
||||
this.searchButton.Text = "Search";
|
||||
this.searchButton.UseVisualStyleBackColor = true;
|
||||
this.searchButton.Click += new System.EventHandler(this.searchButton_Click);
|
||||
//
|
||||
// resultTextbox
|
||||
//
|
||||
this.resultTextbox.Location = new System.Drawing.Point(12, 40);
|
||||
this.resultTextbox.Multiline = true;
|
||||
this.resultTextbox.Name = "resultTextbox";
|
||||
this.resultTextbox.ScrollBars = System.Windows.Forms.ScrollBars.Both;
|
||||
this.resultTextbox.Size = new System.Drawing.Size(716, 513);
|
||||
this.resultTextbox.TabIndex = 2;
|
||||
this.resultTextbox.WordWrap = false;
|
||||
//
|
||||
// searchForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(740, 565);
|
||||
this.Controls.Add(this.resultTextbox);
|
||||
this.Controls.Add(this.searchButton);
|
||||
this.Controls.Add(this.searchInput);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "searchForm";
|
||||
this.Text = "QobuzDLX | Search";
|
||||
this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.searchForm_FormClosed);
|
||||
this.Load += new System.EventHandler(this.searchForm_Load);
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TextBox searchInput;
|
||||
private System.Windows.Forms.Button searchButton;
|
||||
private System.Windows.Forms.TextBox resultTextbox;
|
||||
}
|
||||
}
|
99
QobuzDownloaderX/searchForm.cs
Normal file
99
QobuzDownloaderX/searchForm.cs
Normal file
@ -0,0 +1,99 @@
|
||||
using QobuzDownloaderX.Properties;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Net;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
using System.Security.Cryptography;
|
||||
using System.Reflection;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Net.Http;
|
||||
using System.Net.Http.Headers;
|
||||
using System.Drawing.Imaging;
|
||||
using TagLib.Flac;
|
||||
using System.Globalization;
|
||||
using System.Threading;
|
||||
|
||||
namespace QobuzDownloaderX
|
||||
{
|
||||
public partial class searchForm : Form
|
||||
{
|
||||
public searchForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
public String appid { get; set; }
|
||||
public String userAuth { get; set; }
|
||||
|
||||
static string DecodeEncodedNonAsciiCharacters(string value)
|
||||
{
|
||||
return Regex.Replace(
|
||||
value,
|
||||
@"\\u(?<Value>[a-zA-Z0-9]{4})",
|
||||
m => {
|
||||
return ((char)int.Parse(m.Groups["Value"].Value, NumberStyles.HexNumber)).ToString();
|
||||
});
|
||||
}
|
||||
|
||||
private void searchForm_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void searchButton_Click(object sender, EventArgs e)
|
||||
{
|
||||
#region Do Search
|
||||
WebRequest searchwr = WebRequest.Create("http://www.qobuz.com/api.json/0.2/album/search?app_id=" + appid + "&query=" + searchInput.Text + "&limit=15&user_auth_token=" + userAuth);
|
||||
|
||||
WebResponse searchws = searchwr.GetResponse();
|
||||
StreamReader searchsr = new StreamReader(searchws.GetResponseStream());
|
||||
|
||||
string searchRequest = searchsr.ReadToEnd();
|
||||
|
||||
// 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 resultinput = searchRequest;
|
||||
RegexOptions resultoptions = RegexOptions.Multiline;
|
||||
|
||||
resultTextbox.Invoke(new Action(() => resultTextbox.Text = String.Empty));
|
||||
|
||||
foreach (Match mResult in Regex.Matches(resultinput, resultpattern, resultoptions))
|
||||
{
|
||||
resultTextbox.Invoke(new Action(() => resultTextbox.AppendText(string.Format("{0} - {1} [{2}bit/{3}kHz]\r\nhttps://play.qobuz.com/album/{4}\r\n\r\n", mResult.Groups["albumArtist"].Value, mResult.Groups["albumTitle"].Value, mResult.Groups["bitDepth"].Value, mResult.Groups["sampleRate"].Value, mResult.Groups["albumID"].Value))));
|
||||
|
||||
// For converting unicode characters to ASCII
|
||||
string unicodeResult = resultTextbox.Text;
|
||||
string decodedResult = DecodeEncodedNonAsciiCharacters(unicodeResult);
|
||||
|
||||
var fixedText = decodedResult.Replace(@"\/", "/");
|
||||
resultTextbox.Invoke(new Action(() => resultTextbox.Text = fixedText));
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
|
||||
private void searchForm_FormClosed(object sender, FormClosedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void searchInput_KeyDown(object sender, KeyEventArgs e)
|
||||
{
|
||||
if (e.KeyCode == Keys.Enter)
|
||||
{
|
||||
searchButton_Click(sender, e);
|
||||
e.Handled = true;
|
||||
e.SuppressKeyPress = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
1052
QobuzDownloaderX/searchForm.resx
Normal file
1052
QobuzDownloaderX/searchForm.resx
Normal file
File diff suppressed because it is too large
Load Diff
10
packages/taglib.2.1.0.0/lib/policy.2.0.taglib-sharp.config
vendored
Normal file
10
packages/taglib.2.1.0.0/lib/policy.2.0.taglib-sharp.config
vendored
Normal file
@ -0,0 +1,10 @@
|
||||
<configuration>
|
||||
<runtime>
|
||||
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||
<dependentAssembly>
|
||||
<assemblyIdentity name="taglib-sharp" publicKeyToken="db62eba44689b5b0" />
|
||||
<bindingRedirect oldVersion="2.0.0.0-2.1.0.0" newVersion="2.1.0.0"/>
|
||||
</dependentAssembly>
|
||||
</assemblyBinding>
|
||||
</runtime>
|
||||
</configuration>
|
BIN
packages/taglib.2.1.0.0/lib/policy.2.0.taglib-sharp.dll
vendored
Normal file
BIN
packages/taglib.2.1.0.0/lib/policy.2.0.taglib-sharp.dll
vendored
Normal file
Binary file not shown.
BIN
packages/taglib.2.1.0.0/lib/taglib-sharp.dll
vendored
Normal file
BIN
packages/taglib.2.1.0.0/lib/taglib-sharp.dll
vendored
Normal file
Binary file not shown.
BIN
packages/taglib.2.1.0.0/taglib.2.1.0.0.nupkg
vendored
Normal file
BIN
packages/taglib.2.1.0.0/taglib.2.1.0.0.nupkg
vendored
Normal file
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user