mirror of
https://github.com/italicsjenga/TidalDownloader.git
synced 2024-11-24 15:11:31 +11:00
Started build - works for all without a "suffix" in their segment URI (ie. Famous, New Workout Plan but not Lemonade)
This commit is contained in:
parent
2cb0199f6f
commit
0452d282e0
198
TidalDownloader/Form1.Designer.cs
generated
198
TidalDownloader/Form1.Designer.cs
generated
|
@ -28,12 +28,206 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.components = new System.ComponentModel.Container();
|
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||||
|
this.URI = new System.Windows.Forms.TextBox();
|
||||||
|
this.label1 = new System.Windows.Forms.Label();
|
||||||
|
this.downloadButton = new System.Windows.Forms.Button();
|
||||||
|
this.output = new System.Windows.Forms.TextBox();
|
||||||
|
this.label2 = new System.Windows.Forms.Label();
|
||||||
|
this.startNo = new System.Windows.Forms.NumericUpDown();
|
||||||
|
this.endNo = new System.Windows.Forms.NumericUpDown();
|
||||||
|
this.label3 = new System.Windows.Forms.Label();
|
||||||
|
this.stitchButton = new System.Windows.Forms.Button();
|
||||||
|
this.folderBrowserDialog = new System.Windows.Forms.FolderBrowserDialog();
|
||||||
|
this.pickFolder = new System.Windows.Forms.Button();
|
||||||
|
this.outfile = new System.Windows.Forms.TextBox();
|
||||||
|
this.label4 = new System.Windows.Forms.Label();
|
||||||
|
this.label5 = new System.Windows.Forms.Label();
|
||||||
|
this.suffix = new System.Windows.Forms.TextBox();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.startNo)).BeginInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.endNo)).BeginInit();
|
||||||
|
this.SuspendLayout();
|
||||||
|
//
|
||||||
|
// URI
|
||||||
|
//
|
||||||
|
this.URI.Location = new System.Drawing.Point(12, 29);
|
||||||
|
this.URI.Name = "URI";
|
||||||
|
this.URI.Size = new System.Drawing.Size(260, 20);
|
||||||
|
this.URI.TabIndex = 0;
|
||||||
|
//
|
||||||
|
// label1
|
||||||
|
//
|
||||||
|
this.label1.AutoSize = true;
|
||||||
|
this.label1.Location = new System.Drawing.Point(13, 13);
|
||||||
|
this.label1.Name = "label1";
|
||||||
|
this.label1.Size = new System.Drawing.Size(103, 13);
|
||||||
|
this.label1.TabIndex = 1;
|
||||||
|
this.label1.Text = "TIDAL URI segment";
|
||||||
|
//
|
||||||
|
// downloadButton
|
||||||
|
//
|
||||||
|
this.downloadButton.Location = new System.Drawing.Point(12, 152);
|
||||||
|
this.downloadButton.Name = "downloadButton";
|
||||||
|
this.downloadButton.Size = new System.Drawing.Size(97, 23);
|
||||||
|
this.downloadButton.TabIndex = 2;
|
||||||
|
this.downloadButton.Text = "Download";
|
||||||
|
this.downloadButton.UseVisualStyleBackColor = true;
|
||||||
|
this.downloadButton.Click += new System.EventHandler(this.clickDownload);
|
||||||
|
//
|
||||||
|
// output
|
||||||
|
//
|
||||||
|
this.output.Location = new System.Drawing.Point(115, 122);
|
||||||
|
this.output.Multiline = true;
|
||||||
|
this.output.Name = "output";
|
||||||
|
this.output.ReadOnly = true;
|
||||||
|
this.output.Size = new System.Drawing.Size(157, 194);
|
||||||
|
this.output.TabIndex = 3;
|
||||||
|
//
|
||||||
|
// label2
|
||||||
|
//
|
||||||
|
this.label2.AutoSize = true;
|
||||||
|
this.label2.Location = new System.Drawing.Point(12, 195);
|
||||||
|
this.label2.Name = "label2";
|
||||||
|
this.label2.Size = new System.Drawing.Size(32, 13);
|
||||||
|
this.label2.TabIndex = 4;
|
||||||
|
this.label2.Text = "Start:";
|
||||||
|
//
|
||||||
|
// startNo
|
||||||
|
//
|
||||||
|
this.startNo.Location = new System.Drawing.Point(50, 192);
|
||||||
|
this.startNo.Maximum = new decimal(new int[] {
|
||||||
|
10000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.startNo.Name = "startNo";
|
||||||
|
this.startNo.Size = new System.Drawing.Size(59, 20);
|
||||||
|
this.startNo.TabIndex = 5;
|
||||||
|
//
|
||||||
|
// endNo
|
||||||
|
//
|
||||||
|
this.endNo.Location = new System.Drawing.Point(50, 219);
|
||||||
|
this.endNo.Maximum = new decimal(new int[] {
|
||||||
|
10000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
this.endNo.Name = "endNo";
|
||||||
|
this.endNo.Size = new System.Drawing.Size(59, 20);
|
||||||
|
this.endNo.TabIndex = 7;
|
||||||
|
this.endNo.Value = new decimal(new int[] {
|
||||||
|
1000,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0});
|
||||||
|
//
|
||||||
|
// label3
|
||||||
|
//
|
||||||
|
this.label3.AutoSize = true;
|
||||||
|
this.label3.Location = new System.Drawing.Point(12, 221);
|
||||||
|
this.label3.Name = "label3";
|
||||||
|
this.label3.Size = new System.Drawing.Size(29, 13);
|
||||||
|
this.label3.TabIndex = 6;
|
||||||
|
this.label3.Text = "End:";
|
||||||
|
//
|
||||||
|
// stitchButton
|
||||||
|
//
|
||||||
|
this.stitchButton.Location = new System.Drawing.Point(12, 293);
|
||||||
|
this.stitchButton.Name = "stitchButton";
|
||||||
|
this.stitchButton.Size = new System.Drawing.Size(97, 23);
|
||||||
|
this.stitchButton.TabIndex = 8;
|
||||||
|
this.stitchButton.Text = "Stitch";
|
||||||
|
this.stitchButton.UseVisualStyleBackColor = true;
|
||||||
|
this.stitchButton.Click += new System.EventHandler(this.stitchButton_Click);
|
||||||
|
//
|
||||||
|
// pickFolder
|
||||||
|
//
|
||||||
|
this.pickFolder.Location = new System.Drawing.Point(13, 123);
|
||||||
|
this.pickFolder.Name = "pickFolder";
|
||||||
|
this.pickFolder.Size = new System.Drawing.Size(96, 23);
|
||||||
|
this.pickFolder.TabIndex = 9;
|
||||||
|
this.pickFolder.Text = "Choose Folder";
|
||||||
|
this.pickFolder.UseVisualStyleBackColor = true;
|
||||||
|
this.pickFolder.Click += new System.EventHandler(this.pickFolder_Click);
|
||||||
|
//
|
||||||
|
// outfile
|
||||||
|
//
|
||||||
|
this.outfile.Location = new System.Drawing.Point(12, 267);
|
||||||
|
this.outfile.Name = "outfile";
|
||||||
|
this.outfile.Size = new System.Drawing.Size(97, 20);
|
||||||
|
this.outfile.TabIndex = 10;
|
||||||
|
//
|
||||||
|
// label4
|
||||||
|
//
|
||||||
|
this.label4.AutoSize = true;
|
||||||
|
this.label4.Location = new System.Drawing.Point(9, 251);
|
||||||
|
this.label4.Name = "label4";
|
||||||
|
this.label4.Size = new System.Drawing.Size(52, 13);
|
||||||
|
this.label4.TabIndex = 11;
|
||||||
|
this.label4.Text = "Filename:";
|
||||||
|
//
|
||||||
|
// label5
|
||||||
|
//
|
||||||
|
this.label5.AutoSize = true;
|
||||||
|
this.label5.Location = new System.Drawing.Point(13, 59);
|
||||||
|
this.label5.Name = "label5";
|
||||||
|
this.label5.Size = new System.Drawing.Size(33, 13);
|
||||||
|
this.label5.TabIndex = 13;
|
||||||
|
this.label5.Text = "Suffix";
|
||||||
|
//
|
||||||
|
// suffix
|
||||||
|
//
|
||||||
|
this.suffix.Location = new System.Drawing.Point(12, 75);
|
||||||
|
this.suffix.Name = "suffix";
|
||||||
|
this.suffix.Size = new System.Drawing.Size(260, 20);
|
||||||
|
this.suffix.TabIndex = 12;
|
||||||
|
//
|
||||||
|
// Form1
|
||||||
|
//
|
||||||
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
this.Text = "Form1";
|
this.ClientSize = new System.Drawing.Size(284, 328);
|
||||||
|
this.Controls.Add(this.label5);
|
||||||
|
this.Controls.Add(this.suffix);
|
||||||
|
this.Controls.Add(this.label4);
|
||||||
|
this.Controls.Add(this.outfile);
|
||||||
|
this.Controls.Add(this.pickFolder);
|
||||||
|
this.Controls.Add(this.stitchButton);
|
||||||
|
this.Controls.Add(this.endNo);
|
||||||
|
this.Controls.Add(this.label3);
|
||||||
|
this.Controls.Add(this.startNo);
|
||||||
|
this.Controls.Add(this.label2);
|
||||||
|
this.Controls.Add(this.output);
|
||||||
|
this.Controls.Add(this.downloadButton);
|
||||||
|
this.Controls.Add(this.label1);
|
||||||
|
this.Controls.Add(this.URI);
|
||||||
|
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||||
|
this.Name = "Form1";
|
||||||
|
this.Text = "TIDAL Downloader";
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.startNo)).EndInit();
|
||||||
|
((System.ComponentModel.ISupportInitialize)(this.endNo)).EndInit();
|
||||||
|
this.ResumeLayout(false);
|
||||||
|
this.PerformLayout();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
private System.Windows.Forms.TextBox URI;
|
||||||
|
private System.Windows.Forms.Label label1;
|
||||||
|
private System.Windows.Forms.Button downloadButton;
|
||||||
|
private System.Windows.Forms.TextBox output;
|
||||||
|
private System.Windows.Forms.Label label2;
|
||||||
|
private System.Windows.Forms.NumericUpDown startNo;
|
||||||
|
private System.Windows.Forms.NumericUpDown endNo;
|
||||||
|
private System.Windows.Forms.Label label3;
|
||||||
|
private System.Windows.Forms.Button stitchButton;
|
||||||
|
private System.Windows.Forms.FolderBrowserDialog folderBrowserDialog;
|
||||||
|
private System.Windows.Forms.Button pickFolder;
|
||||||
|
private System.Windows.Forms.TextBox outfile;
|
||||||
|
private System.Windows.Forms.Label label4;
|
||||||
|
private System.Windows.Forms.Label label5;
|
||||||
|
private System.Windows.Forms.TextBox suffix;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,9 @@ using System.Linq;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
|
using System.Net;
|
||||||
|
using System.IO;
|
||||||
|
using System.Diagnostics;
|
||||||
|
|
||||||
namespace TidalDownloader
|
namespace TidalDownloader
|
||||||
{
|
{
|
||||||
|
@ -16,5 +19,88 @@ namespace TidalDownloader
|
||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void clickDownload(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
WebClient wc = new WebClient();
|
||||||
|
|
||||||
|
if(folderBrowserDialog.SelectedPath == null | folderBrowserDialog.SelectedPath == "")
|
||||||
|
{
|
||||||
|
output.AppendText("Error: no path selected\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(URI.Text == null | URI.Text == "")
|
||||||
|
{
|
||||||
|
output.AppendText("Error: no partial Tidal URI\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String loc = folderBrowserDialog.SelectedPath;
|
||||||
|
|
||||||
|
for (int i = (int)startNo.Value; i < (int)endNo.Value + 1; i++)
|
||||||
|
{
|
||||||
|
output.AppendText("Downloading section #" + i.ToString() + "\n");
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
wc.DownloadFile(URI.Text + i.ToString() + ".ts" + suffix.Text, loc + "\\" + i.ToString() + ".ts");
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
output.AppendText("Error downloading section #" + i.ToString() + "\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void pickFolder_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
folderBrowserDialog.ShowDialog();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void stitchButton_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
if (folderBrowserDialog.SelectedPath == null | folderBrowserDialog.SelectedPath == "")
|
||||||
|
{
|
||||||
|
output.AppendText("Error: no path selected\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (outfile.Text == null | outfile.Text == "")
|
||||||
|
{
|
||||||
|
output.AppendText("Error: no output filename\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
String command = " -i \"concat:";
|
||||||
|
|
||||||
|
for (int i = (int)startNo.Value; i < (int)endNo.Value + 1; i++)
|
||||||
|
{
|
||||||
|
command += folderBrowserDialog.SelectedPath + "\\" + i.ToString() + ".ts";
|
||||||
|
|
||||||
|
if (i != (int)endNo.Value)
|
||||||
|
{
|
||||||
|
command += "|";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
command += "\" -c copy -bsf aac_adtstoasc \"" + folderBrowserDialog.SelectedPath + "\\" + outfile.Text + ".mp4\"";
|
||||||
|
|
||||||
|
Console.WriteLine(command);
|
||||||
|
|
||||||
|
var proc1 = new ProcessStartInfo();
|
||||||
|
proc1.UseShellExecute = true;
|
||||||
|
|
||||||
|
proc1.WorkingDirectory = folderBrowserDialog.SelectedPath;
|
||||||
|
|
||||||
|
proc1.FileName = @"C:\Program Files\ImageMagick-6.9.3-Q16\ffmpeg.exe";
|
||||||
|
proc1.Verb = "runas";
|
||||||
|
proc1.Arguments = command;
|
||||||
|
proc1.WindowStyle = ProcessWindowStyle.Hidden;
|
||||||
|
Process.Start(proc1);
|
||||||
|
|
||||||
|
//Process.Start("ffmpeg", command);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
219
TidalDownloader/Form1.resx
Normal file
219
TidalDownloader/Form1.resx
Normal file
|
@ -0,0 +1,219 @@
|
||||||
|
<?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>
|
||||||
|
<metadata name="folderBrowserDialog.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>17, 17</value>
|
||||||
|
</metadata>
|
||||||
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
|
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
|
<value>
|
||||||
|
AAABAAIAEBAAAAAAIABoBAAAJgAAACAgAAAAACAAqBAAAI4EAAAoAAAAEAAAACAAAAABACAAAAAAAEAE
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AS0t
|
||||||
|
LYsiIiKZ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////ATMz
|
||||||
|
M4UAAAD/AAAA/ykpKZP///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AS4u
|
||||||
|
LmEAAAD/AAAA/wAAAP8AAAD/IiIicf///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wFMTEwDBgYGqwAAAP8AAAD/BwcHu1VVVQf///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////AcrKygMZGRmtBgYGvSsrKwf///8B////Af///wH///8B////Af///wH///8B////ARkZ
|
||||||
|
GX2YmJgV////Af///wH///8BLS0tVygoKGP///8B////Af///wGsrKwPFRUVh////wH///8B////ARIS
|
||||||
|
Eo8AAAD/Dg4O04aGhhv///8BJCQkQwMDA/cBAQH7KCgoUf///wGZmZkVDAwMzQAAAP8ODg6d////ARAQ
|
||||||
|
EI0AAAD/AAAA/wAAAP8RERHbUlJSSwQEBPcAAAD/AAAA/wEBAftKSkpVERER0wAAAP8AAAD/AAAA/xIS
|
||||||
|
EpksLCxhAAAA/wAAAP8AAAD/FxcXsVtbWyUKCgrdAAAA/wAAAP8KCgrjR0dHKR4eHqEAAAD/AAAA/wAA
|
||||||
|
AP8QEBBt////ATIyMlkAAAD/Gxsbof///wH///8BTU1NHwkJCd0JCQnlQUFBJf///wH///8BJCQklQAA
|
||||||
|
AP8qKipl////Af///wH///8BS0tLRdra2gP///8B////Af///wEzMzMnKysrLf///wH///8B////Af//
|
||||||
|
/wFMTExJ////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////AQAA//8AAP//AAD//wAA//8AAP//AAD//wAA//8AAP//AAD//wAA
|
||||||
|
//8AAP//AAD//wAA//8AAP//AAD//wAA//8oAAAAIAAAAEAAAAABACAAAAAAAIAQAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAA////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8BSEhIozAw
|
||||||
|
ML3///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////AWFh
|
||||||
|
YYsAAAD/AAAA/0hISKf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wFjY2OJAAAA/wAAAP8AAAD/AAAA/0lJSaX///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8BZWVliQAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0tLS6X///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////AV5eXqUAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/0VFRb////8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wF3d3cDCgoK2wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA8XBw
|
||||||
|
cBf///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wFMTEwHCgoK0QAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wkJ
|
||||||
|
CedVVVUb////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wFGRkYJCAgI0wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8FBQXpTU1NG////wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wHKysoJHh4e0wAA
|
||||||
|
AP8AAAD/AAAA6SsrKxv///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wHt7e0LKCgo2wAAAPGmpqYd////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8BMzMzFYqKijn///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wGZmZlXZWVlY////wH///8B////Af///wH///8B////Af///wH///8B////AZmZ
|
||||||
|
mTUzMzMf////Af///wH///8B////Af///wH///8B////Af///wEXFxenAAAA/5iYmFX///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8BeXl5FQAAAO0EBAT/gICAKf///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wGsrKw7AAAA/wsLC8f///8B////Af///wH///8B////Af///wH///8BISEhnQAAAP8AAAD/AAAA/5iY
|
||||||
|
mFP///8B////Af///wH///8B////AZOTkxUQEBDhAAAA/wAAAP8GBgbzkJCQKf///wH///8B////Af//
|
||||||
|
/wH///8BqqqqOwAAAP8AAAD/AAAA/xgYGLn///8B////Af///wH///8B////ASIiIp0AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/AAAA/4aGhmf///8B////Af///wGcnJwTERER4QAAAP8AAAD/AAAA/wAAAP8GBgbzmJiYJ///
|
||||||
|
/wH///8B////AZmZmVEAAAD/AAAA/wAAAP8AAAD/AAAA/xgYGLn///8B////Af///wEsLCybAAAA/wAA
|
||||||
|
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/46Ojm3///8BnJycDxQUFN8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8ICAjzk5OTJf///wGhoaFTAAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/x8fH7f///8BEhISmQAA
|
||||||
|
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/3t7e2U3Nze3AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/AAAA/wAAAP8kJCTRg4ODXwUFBf0AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/yAg
|
||||||
|
ILFTU1NRCQkJ/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8lJSXdrq6uF01NTXsAAAD/AAAA/wAA
|
||||||
|
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/z4+PpexsbEPNTU1xwAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/KSkpZ////wGlpaUzAAAA/QAAAP8AAAD/AAAA/wAAAP8AAAD/Gxsb2ejo6A3///8B////AU5O
|
||||||
|
TnkAAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP9DQ0OT////Af///wH///8BLi4uwQAAAP8AAAD/AAAA/wAA
|
||||||
|
AP8AAAD/AAAA/ycnJ0v///8B////Af///wGtra0zAAAA/QAAAP8AAAD/AAAA/ywsLMXj4+MF////Af//
|
||||||
|
/wH///8B////AU1NTXsAAAD/AAAA/wAAAP8AAAD/QUFBlf///wH///8B////Af///wH///8BPDw8rwAA
|
||||||
|
AP8AAAD/AAAA/wEBAf9UVFRL////Af///wH///8B////Af///wGwsLA1AAAA/QAAAP8vLy/B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////AUhISHsAAAD/AAAA/z09PZX///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8BQ0NDpwAAAP8AAAD/jo6OTf///wH///8B////Af///wH///8B////Af///wGjo6NTJycnw9ra
|
||||||
|
2g3///8B////Af///wH///8B////Af///wH///8B////ATMzM5krKyuv////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8BLy8vt35+fm////8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af///wH///8B////Af//
|
||||||
|
/wH///8B////Af///wH///8B////AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||||
|
</value>
|
||||||
|
</data>
|
||||||
|
</root>
|
|
@ -54,6 +54,9 @@
|
||||||
</Compile>
|
</Compile>
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
|
<EmbeddedResource Include="Form1.resx">
|
||||||
|
<DependentUpon>Form1.cs</DependentUpon>
|
||||||
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="Properties\Resources.resx">
|
<EmbeddedResource Include="Properties\Resources.resx">
|
||||||
<Generator>ResXFileCodeGenerator</Generator>
|
<Generator>ResXFileCodeGenerator</Generator>
|
||||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||||
|
@ -76,6 +79,9 @@
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<None Include="App.config" />
|
<None Include="App.config" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<Content Include="icon.ico" />
|
||||||
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
|
|
BIN
TidalDownloader/icon.ico
Normal file
BIN
TidalDownloader/icon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.3 KiB |
Loading…
Reference in a new issue