Created
November 29, 2010 04:54
-
-
Save itissid/719596 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.ComponentModel; | |
using System.Data; | |
using System.Drawing; | |
using System.Text; | |
using System.Windows.Forms; | |
using System.Xml; | |
using System.Xml.XPath; | |
using System.Net; | |
using System.IO; | |
using System.Runtime.InteropServices; | |
namespace PandoraSmuggler | |
{ | |
public partial class PandoraSmuggler : Form | |
{ | |
#region PInvoke functions | |
// From http://support.microsoft.com/default.aspx/kb/326201/EN-US/ | |
// For PInvoke: Contains information about an entry in the Internet cache | |
[StructLayout(LayoutKind.Explicit, Size = 80)] | |
public struct INTERNET_CACHE_ENTRY_INFOA | |
{ | |
[FieldOffset(0)] | |
public uint dwStructSize; | |
[FieldOffset(4)] | |
public IntPtr lpszSourceUrlName; | |
[FieldOffset(8)] | |
public IntPtr lpszLocalFileName; | |
[FieldOffset(12)] | |
public uint CacheEntryType; | |
[FieldOffset(16)] | |
public uint dwUseCount; | |
[FieldOffset(20)] | |
public uint dwHitRate; | |
[FieldOffset(24)] | |
public uint dwSizeLow; | |
[FieldOffset(28)] | |
public uint dwSizeHigh; | |
[FieldOffset(32)] | |
public System.Runtime.InteropServices.ComTypes.FILETIME LastModifiedTime; | |
[FieldOffset(40)] | |
public System.Runtime.InteropServices.ComTypes.FILETIME ExpireTime; | |
[FieldOffset(48)] | |
public System.Runtime.InteropServices.ComTypes.FILETIME LastAccessTime; | |
[FieldOffset(56)] | |
public System.Runtime.InteropServices.ComTypes.FILETIME LastSyncTime; | |
[FieldOffset(64)] | |
public IntPtr lpHeaderInfo; | |
[FieldOffset(68)] | |
public uint dwHeaderInfoSize; | |
[FieldOffset(72)] | |
public IntPtr lpszFileExtension; | |
[FieldOffset(76)] | |
public uint dwReserved; | |
[FieldOffset(76)] | |
public uint dwExemptDelta; | |
} | |
// For PInvoke: Initiates the enumeration of the cache groups in the Internet cache | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "FindFirstUrlCacheGroup", CallingConvention = CallingConvention.StdCall)] | |
public static extern IntPtr FindFirstUrlCacheGroup(int dwFlags, int dwFilter, IntPtr lpSearchCondition, int dwSearchCondition, ref long lpGroupId, IntPtr lpReserved); | |
// For PInvoke: Retrieves the next cache group in a cache group enumeration | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "FindNextUrlCacheGroup", CallingConvention = CallingConvention.StdCall)] | |
public static extern bool FindNextUrlCacheGroup(IntPtr hFind, ref long lpGroupId, IntPtr lpReserved); | |
// For PInvoke: Releases the specified GROUPID and any associated state in the cache index file | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "DeleteUrlCacheGroup", CallingConvention = CallingConvention.StdCall)] | |
public static extern bool DeleteUrlCacheGroup(long GroupId, int dwFlags, IntPtr lpReserved); | |
// For PInvoke: Begins the enumeration of the Internet cache | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "FindFirstUrlCacheEntryA", CallingConvention = CallingConvention.StdCall)] | |
public static extern IntPtr FindFirstUrlCacheEntry([MarshalAs(UnmanagedType.LPTStr)] string lpszUrlSearchPattern, IntPtr lpFirstCacheEntryInfo, ref int lpdwFirstCacheEntryInfoBufferSize); | |
// For PInvoke: Retrieves the next entry in the Internet cache | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "FindNextUrlCacheEntryA", CallingConvention = CallingConvention.StdCall)] | |
public static extern bool FindNextUrlCacheEntry(IntPtr hFind, IntPtr lpNextCacheEntryInfo, ref int lpdwNextCacheEntryInfoBufferSize); | |
// For PInvoke: Removes the file that is associated with the source name from the cache, if the file exists | |
[DllImport(@"wininet", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "DeleteUrlCacheEntryA", CallingConvention = CallingConvention.StdCall)] | |
public static extern bool DeleteUrlCacheEntry(IntPtr lpszUrlName); | |
#endregion | |
# region Variables | |
private Dictionary<string, string> downloadURLList = new Dictionary<string, string>(); | |
private Dictionary<string, string> songTitleList = new Dictionary<string, string>(); | |
private Dictionary<string, string> artistNameList = new Dictionary<string, string>(); | |
private Dictionary<string, string> albumTitleList = new Dictionary<string, string>(); | |
private Dictionary<int, int> viewCountRelation = new Dictionary<int, int>(); | |
WebClient client = new WebClient(); | |
Queue<int> downloadQueue = new Queue<int>(); | |
private int count = 0; | |
private bool findingFiles = false; | |
private bool downloadingData = false; | |
private string downloadDirectoryPath = @"C:\\Pandora\\"; | |
private DialogResult drexit; | |
#endregion | |
#region constructor | |
public PandoraSmuggler() | |
{ | |
InitializeComponent(); | |
this.Show(); | |
findFiles(); | |
if(!System.IO.Directory.Exists(downloadDirectoryPath)) | |
{ | |
System.IO.Directory.CreateDirectory(downloadDirectoryPath); | |
} | |
} | |
#endregion | |
public void findFiles() | |
{ | |
findingFiles = true; | |
const int ERROR_NO_MORE_ITEMS = 259; | |
viewCountRelation.Clear(); | |
downloadURLList.Clear(); | |
songTitleList.Clear(); | |
albumTitleList.Clear(); | |
artistNameList.Clear(); | |
listView1.Items.Clear(); | |
// Local variables | |
int cacheEntryInfoBufferSizeInitial = 0; | |
int cacheEntryInfoBufferSize = 0; | |
IntPtr cacheEntryInfoBuffer = IntPtr.Zero; | |
INTERNET_CACHE_ENTRY_INFOA internetCacheEntry; | |
IntPtr enumHandle = IntPtr.Zero; | |
bool returnValue = true; | |
bool tempFileFound = false; | |
// Start to delete URLs that do not belong to any group. | |
enumHandle = FindFirstUrlCacheEntry(null, IntPtr.Zero, ref cacheEntryInfoBufferSizeInitial); | |
if (enumHandle != IntPtr.Zero && ERROR_NO_MORE_ITEMS == Marshal.GetLastWin32Error()) | |
return; | |
cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial; | |
cacheEntryInfoBuffer = Marshal.AllocHGlobal(cacheEntryInfoBufferSize); | |
enumHandle = FindFirstUrlCacheEntry(null, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSizeInitial); | |
while (returnValue) | |
{ | |
internetCacheEntry = (INTERNET_CACHE_ENTRY_INFOA)Marshal.PtrToStructure(cacheEntryInfoBuffer, typeof(INTERNET_CACHE_ENTRY_INFOA)); | |
string localName = (string)Marshal.PtrToStringAnsi(internetCacheEntry.lpszLocalFileName); | |
string remoteName = (string)Marshal.PtrToStringAnsi(internetCacheEntry.lpszSourceUrlName); | |
if ((localName != null) && (remoteName != null)) | |
{ | |
if ((localName.Substring(localName.Length - 3).ToLower() == "xml") && (remoteName.Contains("pandora.com")) && (remoteName.Contains("getFragment"))) | |
{ | |
checkData(localName); | |
tempFileFound = true; | |
} | |
} | |
cacheEntryInfoBufferSizeInitial = cacheEntryInfoBufferSize; | |
if (ERROR_NO_MORE_ITEMS == Marshal.GetLastWin32Error()) | |
{ | |
returnValue = false; | |
} | |
else | |
{ | |
returnValue = FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSizeInitial); | |
} | |
if (cacheEntryInfoBufferSizeInitial > cacheEntryInfoBufferSize) | |
{ | |
cacheEntryInfoBufferSize = cacheEntryInfoBufferSizeInitial; | |
cacheEntryInfoBuffer = Marshal.ReAllocHGlobal(cacheEntryInfoBuffer, (IntPtr)cacheEntryInfoBufferSize); | |
returnValue = FindNextUrlCacheEntry(enumHandle, cacheEntryInfoBuffer, ref cacheEntryInfoBufferSizeInitial); | |
} | |
if (ERROR_NO_MORE_ITEMS == Marshal.GetLastWin32Error()) | |
{ | |
returnValue = false; | |
if (!tempFileFound) | |
{ | |
MessageBox.Show("No data available yet. Please run Pandora.com in Internet Explorer", "Need to run pandora.com", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); | |
} | |
} | |
} | |
Marshal.FreeHGlobal(cacheEntryInfoBuffer); | |
findingFiles = false; | |
} | |
private void checkData(string localName) | |
{ | |
XmlTextReader reader = new XmlTextReader(localName); | |
XmlDocument doc = new XmlDocument(); | |
doc.Load(reader); | |
reader.Close(); | |
int tagsPerSong = 0; | |
XmlElement root = doc.DocumentElement; | |
XmlNodeList list = root.SelectNodes("//methodResponse/params/param/value/array/data/value/struct/member"); | |
XmlNodeList songs = root.SelectNodes("//methodResponse/params/param/value/array/data/value"); | |
if ((list.Count % songs.Count) == 0) | |
{ | |
tagsPerSong = list.Count / songs.Count; | |
} | |
else | |
{ | |
MessageBox.Show("Error in format, please contact support", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); | |
Application.Exit(); | |
} | |
string artistSummary = null; | |
string albumTitle = null; | |
string audioUrl = null; | |
string songTitle = null; | |
for (int i = 0; i < list.Count; i++) | |
{ | |
// Corresponds to a particular row | |
XmlElement member = (XmlElement) list[i]; | |
string memberXml = member.InnerXml; | |
int nameStart = memberXml.IndexOf("<name>"); | |
int nameEnd = memberXml.IndexOf("</name>"); | |
int valueStart = memberXml.IndexOf("<value>"); | |
int valueEnd = memberXml.IndexOf("</value>"); | |
string memberName = memberXml.Substring(nameStart + 6, nameEnd - nameStart - 6); | |
string memberValue = memberXml.Substring(valueStart + 7, valueEnd - valueStart - 7); | |
if (memberName == "artistSummary") artistSummary = memberValue; | |
if (memberName == "albumTitle") albumTitle = memberValue; | |
if (memberName == "audioURL") audioUrl = memberValue; | |
if (memberName == "songTitle") songTitle = memberValue; | |
if ((i != 0) && (((i+1) % tagsPerSong) == 0)) | |
{ | |
// Access for a song completed | |
count++; | |
string[] itemValues = new string[3]; | |
itemValues[0] = songTitle; | |
itemValues[1] = artistSummary; | |
itemValues[2] = albumTitle; | |
ListViewItem item = new ListViewItem(itemValues); | |
listView1.Items.Add(item); | |
viewCountRelation.Add(listView1.Items.Count - 1, count); | |
downloadURLList.Add(count.ToString(), audioUrl); | |
songTitleList.Add(count.ToString(), songTitle); | |
artistNameList.Add(count.ToString(), artistSummary); | |
albumTitleList.Add(count.ToString(), albumTitle); | |
// Refresh for new values | |
artistSummary = null; | |
albumTitle = null; | |
audioUrl = null; | |
songTitle = null; | |
} | |
} | |
} | |
private void OnCloseClick(object sender, EventArgs e) | |
{ | |
if (downloadingData) | |
{ | |
drexit = MessageBox.Show("Data download is in progress. Are you sure you want to quit?", "Data Downloading", MessageBoxButtons.YesNo, MessageBoxIcon.Question); | |
if (drexit == DialogResult.Yes) | |
{ | |
client.CancelAsync(); | |
Application.Exit(); | |
} | |
} | |
else | |
{ | |
Application.Exit(); | |
} | |
} | |
private void OnRefreshClick(object sender, EventArgs e) | |
{ | |
if (downloadingData) | |
MessageBox.Show("Please wait for current downloads to finish", "Please wait", MessageBoxButtons.OK, MessageBoxIcon.Hand); | |
else if (findingFiles) | |
MessageBox.Show("Please wait for current search to finish", "Please wait", MessageBoxButtons.OK, MessageBoxIcon.Hand); | |
else | |
findFiles(); | |
} | |
private void OnDownloadClick(object sender, EventArgs e) | |
{ | |
// Find which items have been selected | |
for (int i = 0; i < listView1.Items.Count; i++) | |
{ | |
if (listView1.Items[i].Checked) | |
{ | |
downloadQueue.Enqueue(viewCountRelation[i]); | |
listView1.Items[i].Checked = false; | |
} | |
} | |
if(!downloadingData) | |
checkDownloadQueue(); | |
} | |
void checkDownloadQueue() | |
{ | |
if (!downloadingData) | |
{ | |
if (downloadQueue.Count != 0) | |
{ | |
int i = downloadQueue.Dequeue(); | |
try | |
{ | |
if (System.IO.File.Exists(downloadDirectoryPath + artistNameList[i.ToString()] + " - " + songTitleList[i.ToString()] + ".mp3")) | |
{ | |
DialogResult dr = MessageBox.Show("File has already been downloaded. Do you want to download it again?", "File already Downloaded", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1); | |
if (dr == DialogResult.OK) | |
{ | |
try | |
{ | |
Uri url = new Uri(downloadURLList[i.ToString()]); | |
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted); | |
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged); | |
client.DownloadFileAsync(url, downloadDirectoryPath + artistNameList[i.ToString()] + " - " + songTitleList[i.ToString()] + ".mp3"); | |
label4.Text = "Currently downloading " + songTitleList[i.ToString()] + " by " + artistNameList[i.ToString()] + " from album " + albumTitleList[i.ToString()]; | |
downloadingData = true; | |
progressBar1.Value = 0; | |
} | |
catch (KeyNotFoundException) | |
{ | |
drexit = DialogResult.Yes; | |
MessageBox.Show("A butterfly fluttered in South America. I can no longer exits. Please call me again if you feel like", "Butterfly effect", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); | |
} | |
} | |
else | |
{ | |
checkDownloadQueue(); | |
} | |
} | |
else | |
{ | |
Uri url = new Uri(downloadURLList[i.ToString()]); | |
client.DownloadFileCompleted += new AsyncCompletedEventHandler(client_DownloadFileCompleted); | |
client.DownloadProgressChanged += new DownloadProgressChangedEventHandler(client_DownloadProgressChanged); | |
client.DownloadFileAsync(url, downloadDirectoryPath + artistNameList[i.ToString()] + " - " + songTitleList[i.ToString()] + ".mp3"); | |
label4.Text = "Currently downloading " + songTitleList[i.ToString()] + " by " + artistNameList[i.ToString()] + " from album " + albumTitleList[i.ToString()]; | |
downloadingData = true; | |
progressBar1.Value = 0; | |
} | |
} | |
catch (WebException) | |
{ | |
MessageBox.Show("Please check your internet connection.", "Connection Failure", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); | |
downloadQueue.Clear(); | |
} | |
catch (InvalidOperationException) | |
{ | |
MessageBox.Show("File in use by another application.", "File in user", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1); | |
checkDownloadQueue(); | |
} | |
} | |
else | |
{ | |
label4.Text = "No songs in Queue"; | |
progressBar1.Value = 0; | |
} | |
} | |
} | |
void client_DownloadFileCompleted(object sender, AsyncCompletedEventArgs e) | |
{ | |
progressBar1.Value = 0; | |
checkDownloadQueue(); | |
label4.Text = "No songs in Queue"; | |
downloadingData = false; | |
} | |
void client_DownloadProgressChanged(object sender, DownloadProgressChangedEventArgs e) | |
{ | |
if (drexit == DialogResult.Yes) | |
{ | |
client.CancelAsync(); | |
Application.Exit(); | |
} | |
progressBar1.Value = e.ProgressPercentage; | |
} | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace PandoraSmuggler | |
{ | |
partial class PandoraSmuggler | |
{ | |
/// <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() | |
{ | |
this.label1 = new System.Windows.Forms.Label(); | |
this.label2 = new System.Windows.Forms.Label(); | |
this.listView1 = new System.Windows.Forms.ListView(); | |
this.columnHeader1 = new System.Windows.Forms.ColumnHeader(); | |
this.columnHeader2 = new System.Windows.Forms.ColumnHeader(); | |
this.columnHeader3 = new System.Windows.Forms.ColumnHeader(); | |
this.button1 = new System.Windows.Forms.Button(); | |
this.button2 = new System.Windows.Forms.Button(); | |
this.button3 = new System.Windows.Forms.Button(); | |
this.button4 = new System.Windows.Forms.Button(); | |
this.label3 = new System.Windows.Forms.Label(); | |
this.button5 = new System.Windows.Forms.Button(); | |
this.progressBar1 = new System.Windows.Forms.ProgressBar(); | |
this.label4 = new System.Windows.Forms.Label(); | |
this.SuspendLayout(); | |
// | |
// label1 | |
// | |
this.label1.Font = new System.Drawing.Font("Verdana", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); | |
this.label1.Location = new System.Drawing.Point(215, 19); | |
this.label1.Name = "label1"; | |
this.label1.Size = new System.Drawing.Size(327, 20); | |
this.label1.TabIndex = 0; | |
this.label1.Text = "Pandora Downloader by Vercingetorix"; | |
this.label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |
// | |
// label2 | |
// | |
this.label2.Location = new System.Drawing.Point(218, 44); | |
this.label2.Name = "label2"; | |
this.label2.Size = new System.Drawing.Size(324, 20); | |
this.label2.TabIndex = 2; | |
this.label2.Text = "Songs currently available for download"; | |
this.label2.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |
// | |
// listView1 | |
// | |
this.listView1.Activation = System.Windows.Forms.ItemActivation.OneClick; | |
this.listView1.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); | |
this.listView1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; | |
this.listView1.CheckBoxes = true; | |
this.listView1.Columns.AddRange(new System.Windows.Forms.ColumnHeader[] { | |
this.columnHeader1, | |
this.columnHeader2, | |
this.columnHeader3}); | |
this.listView1.FullRowSelect = true; | |
this.listView1.GridLines = true; | |
this.listView1.HideSelection = false; | |
this.listView1.HotTracking = true; | |
this.listView1.HoverSelection = true; | |
this.listView1.Location = new System.Drawing.Point(24, 75); | |
this.listView1.Name = "listView1"; | |
this.listView1.Size = new System.Drawing.Size(700, 353); | |
this.listView1.TabIndex = 3; | |
this.listView1.UseCompatibleStateImageBehavior = false; | |
this.listView1.View = System.Windows.Forms.View.Details; | |
// | |
// columnHeader1 | |
// | |
this.columnHeader1.Text = "Title"; | |
this.columnHeader1.Width = 200; | |
// | |
// columnHeader2 | |
// | |
this.columnHeader2.Text = "Artist"; | |
this.columnHeader2.Width = 200; | |
// | |
// columnHeader3 | |
// | |
this.columnHeader3.Text = "Album"; | |
this.columnHeader3.Width = 300; | |
// | |
// button1 | |
// | |
this.button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat; | |
this.button1.Image = global::PandoraSmuggler.Properties.Resources.Vxmini; | |
this.button1.Location = new System.Drawing.Point(24, 19); | |
this.button1.Name = "button1"; | |
this.button1.Size = new System.Drawing.Size(45, 45); | |
this.button1.TabIndex = 5; | |
this.button1.UseVisualStyleBackColor = true; | |
// | |
// button2 | |
// | |
this.button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat; | |
this.button2.Image = global::PandoraSmuggler.Properties.Resources.Vxmini; | |
this.button2.Location = new System.Drawing.Point(678, 19); | |
this.button2.Name = "button2"; | |
this.button2.Size = new System.Drawing.Size(45, 45); | |
this.button2.TabIndex = 6; | |
this.button2.UseVisualStyleBackColor = true; | |
// | |
// button3 | |
// | |
this.button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat; | |
this.button3.Location = new System.Drawing.Point(24, 484); | |
this.button3.Name = "button3"; | |
this.button3.Size = new System.Drawing.Size(120, 25); | |
this.button3.TabIndex = 7; | |
this.button3.Text = "Refresh"; | |
this.button3.UseVisualStyleBackColor = true; | |
this.button3.Click += new System.EventHandler(this.OnRefreshClick); | |
// | |
// button4 | |
// | |
this.button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat; | |
this.button4.Location = new System.Drawing.Point(147, 484); | |
this.button4.Name = "button4"; | |
this.button4.Size = new System.Drawing.Size(120, 25); | |
this.button4.TabIndex = 8; | |
this.button4.Text = "Download"; | |
this.button4.UseVisualStyleBackColor = true; | |
this.button4.Click += new System.EventHandler(this.OnDownloadClick); | |
// | |
// label3 | |
// | |
this.label3.Font = new System.Drawing.Font("Verdana", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); | |
this.label3.Location = new System.Drawing.Point(397, 486); | |
this.label3.Name = "label3"; | |
this.label3.Size = new System.Drawing.Size(326, 20); | |
this.label3.TabIndex = 4; | |
this.label3.Text = "Please mail any bugs to sudhanshuraheja@gmail.com"; | |
this.label3.TextAlign = System.Drawing.ContentAlignment.MiddleRight; | |
// | |
// button5 | |
// | |
this.button5.FlatStyle = System.Windows.Forms.FlatStyle.Flat; | |
this.button5.Location = new System.Drawing.Point(270, 484); | |
this.button5.Name = "button5"; | |
this.button5.Size = new System.Drawing.Size(120, 25); | |
this.button5.TabIndex = 9; | |
this.button5.Text = "Close"; | |
this.button5.UseVisualStyleBackColor = true; | |
this.button5.Click += new System.EventHandler(this.OnCloseClick); | |
// | |
// progressBar1 | |
// | |
this.progressBar1.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(192)))), ((int)(((byte)(192)))), ((int)(((byte)(255))))); | |
this.progressBar1.Location = new System.Drawing.Point(25, 455); | |
this.progressBar1.Name = "progressBar1"; | |
this.progressBar1.Size = new System.Drawing.Size(699, 23); | |
this.progressBar1.Style = System.Windows.Forms.ProgressBarStyle.Continuous; | |
this.progressBar1.TabIndex = 10; | |
// | |
// label4 | |
// | |
this.label4.Font = new System.Drawing.Font("Verdana", 6.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); | |
this.label4.Location = new System.Drawing.Point(22, 431); | |
this.label4.Name = "label4"; | |
this.label4.Size = new System.Drawing.Size(701, 20); | |
this.label4.TabIndex = 11; | |
this.label4.Text = "No songs in queue"; | |
this.label4.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; | |
// | |
// Form1 | |
// | |
this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F); | |
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; | |
this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(128)))), ((int)(((byte)(128)))), ((int)(((byte)(255))))); | |
this.ClientSize = new System.Drawing.Size(750, 520); | |
this.Controls.Add(this.label4); | |
this.Controls.Add(this.progressBar1); | |
this.Controls.Add(this.button5); | |
this.Controls.Add(this.button4); | |
this.Controls.Add(this.button3); | |
this.Controls.Add(this.button2); | |
this.Controls.Add(this.button1); | |
this.Controls.Add(this.label3); | |
this.Controls.Add(this.listView1); | |
this.Controls.Add(this.label2); | |
this.Controls.Add(this.label1); | |
this.Font = new System.Drawing.Font("Verdana", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); | |
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; | |
this.Margin = new System.Windows.Forms.Padding(4); | |
this.Name = "Form1"; | |
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; | |
this.Text = "Pandora Download by Vercingetorix"; | |
this.ResumeLayout(false); | |
} | |
#endregion | |
private System.Windows.Forms.Label label1; | |
private System.Windows.Forms.Label label2; | |
private System.Windows.Forms.ListView listView1; | |
private System.Windows.Forms.ColumnHeader columnHeader1; | |
private System.Windows.Forms.ColumnHeader columnHeader2; | |
private System.Windows.Forms.ColumnHeader columnHeader3; | |
private System.Windows.Forms.Button button1; | |
private System.Windows.Forms.Button button2; | |
private System.Windows.Forms.Button button3; | |
private System.Windows.Forms.Button button4; | |
private System.Windows.Forms.Label label3; | |
private System.Windows.Forms.Button button5; | |
private System.Windows.Forms.ProgressBar progressBar1; | |
private System.Windows.Forms.Label label4; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Windows.Forms; | |
namespace PandoraSmuggler | |
{ | |
static class Program | |
{ | |
/// <summary> | |
/// The main entry point for the application. | |
/// </summary> | |
[STAThread] | |
static void Main() | |
{ | |
Application.EnableVisualStyles(); | |
Application.SetCompatibleTextRenderingDefault(false); | |
Application.Run(new PandoraSmuggler()); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment