Database is updatable from Wiibrew (NUS_Downloader/database)

This commit is contained in:
givememystuffplease 2009-08-04 18:17:21 +00:00
parent fda8531e22
commit 94d0178987
2 changed files with 97 additions and 13 deletions

View File

@ -107,6 +107,8 @@
this.radioButton1 = new System.Windows.Forms.RadioButton(); this.radioButton1 = new System.Windows.Forms.RadioButton();
this.radioButton2 = new System.Windows.Forms.RadioButton(); this.radioButton2 = new System.Windows.Forms.RadioButton();
this.button17 = new System.Windows.Forms.Button(); this.button17 = new System.Windows.Forms.Button();
this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator();
this.updateDatabaseToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.databaseStrip.SuspendLayout(); this.databaseStrip.SuspendLayout();
this.tmdgpbox.SuspendLayout(); this.tmdgpbox.SuspendLayout();
this.ticketgpbox.SuspendLayout(); this.ticketgpbox.SuspendLayout();
@ -295,10 +297,12 @@
this.VCMenuList, this.VCMenuList,
this.WiiWareMenuList, this.WiiWareMenuList,
this.toolStripSeparator1, this.toolStripSeparator1,
this.RegionCodesList}); this.RegionCodesList,
this.toolStripSeparator2,
this.updateDatabaseToolStripMenuItem});
this.databaseStrip.Name = "databaseStrip"; this.databaseStrip.Name = "databaseStrip";
this.databaseStrip.ShowItemToolTips = false; this.databaseStrip.ShowItemToolTips = false;
this.databaseStrip.Size = new System.Drawing.Size(155, 120); this.databaseStrip.Size = new System.Drawing.Size(164, 170);
// //
// SystemMenuList // SystemMenuList
// //
@ -310,7 +314,7 @@
// IOSMenuList // IOSMenuList
// //
this.IOSMenuList.Name = "IOSMenuList"; this.IOSMenuList.Name = "IOSMenuList";
this.IOSMenuList.Size = new System.Drawing.Size(154, 22); this.IOSMenuList.Size = new System.Drawing.Size(163, 22);
this.IOSMenuList.Text = "IOS"; this.IOSMenuList.Text = "IOS";
// //
// VCMenuList // VCMenuList
@ -328,7 +332,7 @@
this.TurboGrafxCDMenuList, this.TurboGrafxCDMenuList,
this.VCArcadeMenuList}); this.VCArcadeMenuList});
this.VCMenuList.Name = "VCMenuList"; this.VCMenuList.Name = "VCMenuList";
this.VCMenuList.Size = new System.Drawing.Size(154, 22); this.VCMenuList.Size = new System.Drawing.Size(163, 22);
this.VCMenuList.Text = "Virtual Console"; this.VCMenuList.Text = "Virtual Console";
// //
// C64MenuList // C64MenuList
@ -400,18 +404,18 @@
// WiiWareMenuList // WiiWareMenuList
// //
this.WiiWareMenuList.Name = "WiiWareMenuList"; this.WiiWareMenuList.Name = "WiiWareMenuList";
this.WiiWareMenuList.Size = new System.Drawing.Size(154, 22); this.WiiWareMenuList.Size = new System.Drawing.Size(163, 22);
this.WiiWareMenuList.Text = "WiiWare"; this.WiiWareMenuList.Text = "WiiWare";
// //
// toolStripSeparator1 // toolStripSeparator1
// //
this.toolStripSeparator1.Name = "toolStripSeparator1"; this.toolStripSeparator1.Name = "toolStripSeparator1";
this.toolStripSeparator1.Size = new System.Drawing.Size(151, 6); this.toolStripSeparator1.Size = new System.Drawing.Size(160, 6);
// //
// RegionCodesList // RegionCodesList
// //
this.RegionCodesList.Name = "RegionCodesList"; this.RegionCodesList.Name = "RegionCodesList";
this.RegionCodesList.Size = new System.Drawing.Size(154, 22); this.RegionCodesList.Size = new System.Drawing.Size(163, 22);
this.RegionCodesList.Text = "Region Codes"; this.RegionCodesList.Text = "Region Codes";
this.RegionCodesList.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.RegionCodesList_DropDownItemClicked); this.RegionCodesList.DropDownItemClicked += new System.Windows.Forms.ToolStripItemClickedEventHandler(this.RegionCodesList_DropDownItemClicked);
// //
@ -873,6 +877,18 @@
this.button17.UseVisualStyleBackColor = true; this.button17.UseVisualStyleBackColor = true;
this.button17.Click += new System.EventHandler(this.button17_Click); this.button17.Click += new System.EventHandler(this.button17_Click);
// //
// toolStripSeparator2
//
this.toolStripSeparator2.Name = "toolStripSeparator2";
this.toolStripSeparator2.Size = new System.Drawing.Size(160, 6);
//
// updateDatabaseToolStripMenuItem
//
this.updateDatabaseToolStripMenuItem.Name = "updateDatabaseToolStripMenuItem";
this.updateDatabaseToolStripMenuItem.Size = new System.Drawing.Size(163, 22);
this.updateDatabaseToolStripMenuItem.Text = "Update Database";
this.updateDatabaseToolStripMenuItem.Click += new System.EventHandler(this.updateDatabaseToolStripMenuItem_Click);
//
// Form1 // Form1
// //
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
@ -1006,6 +1022,8 @@
private System.Windows.Forms.Button button13; private System.Windows.Forms.Button button13;
private System.Windows.Forms.Button button16; private System.Windows.Forms.Button button16;
private System.Windows.Forms.Button button17; private System.Windows.Forms.Button button17;
private System.Windows.Forms.ToolStripSeparator toolStripSeparator2;
private System.Windows.Forms.ToolStripMenuItem updateDatabaseToolStripMenuItem;
} }
} }

View File

@ -5,6 +5,9 @@ using System.Net;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Xml; using System.Xml;
using System.Drawing; using System.Drawing;
using System.Text.RegularExpressions;
using System.ComponentModel;
using System.Threading;
namespace NUS_Downloader namespace NUS_Downloader
@ -237,13 +240,9 @@ namespace NUS_Downloader
} }
else else
{ {
// Read version of Database.xml string version = GetDatabaseVersion("database.xml");
XmlDocument xDoc = new XmlDocument();
xDoc.Load("database.xml");
XmlNodeList DatabaseList = xDoc.GetElementsByTagName("database");
XmlAttributeCollection Attributes = DatabaseList[0].Attributes;
WriteStatus("Database.xml detected."); WriteStatus("Database.xml detected.");
WriteStatus(" - Version: " + Attributes[0].Value); WriteStatus(" - Version: " + version);
// Load it up... // Load it up...
ClearDatabaseStrip(); ClearDatabaseStrip();
@ -255,6 +254,19 @@ namespace NUS_Downloader
return result; return result;
} }
private string GetDatabaseVersion(string file)
{
// Read version of Database.xml
XmlDocument xDoc = new XmlDocument();
if (file.Contains("<"))
xDoc.LoadXml(file);
else
xDoc.Load(file);
XmlNodeList DatabaseList = xDoc.GetElementsByTagName("database");
XmlAttributeCollection Attributes = DatabaseList[0].Attributes;
return Attributes[0].Value;
}
private void button1_Click(object sender, EventArgs e) private void button1_Click(object sender, EventArgs e)
{ {
// Show dialog for opening TMD file... // Show dialog for opening TMD file...
@ -3150,5 +3162,59 @@ namespace NUS_Downloader
} }
} }
} }
private string RetrieveNewDatabase()
{
// Retrieve Wiibrew database page source code
WebClient databasedl = new WebClient();
string wiibrewsource = databasedl.DownloadString("http://www.wiibrew.org/wiki/NUS_Downloader/database");
// Strip out HTML
wiibrewsource = Regex.Replace(wiibrewsource, @"<(.|\n)*?>", "");
// Shrink to fix only the database
string startofdatabase = "&lt;database v";
string endofdatabase = "&lt;/database&gt;";
wiibrewsource = wiibrewsource.Substring(wiibrewsource.IndexOf(startofdatabase), wiibrewsource.Length - wiibrewsource.IndexOf(startofdatabase));
wiibrewsource = wiibrewsource.Substring(0, wiibrewsource.IndexOf(endofdatabase) + endofdatabase.Length);
// Fix ", <, and >
wiibrewsource = wiibrewsource.Replace("&lt;","<");
wiibrewsource = wiibrewsource.Replace("&gt;",">");
wiibrewsource = wiibrewsource.Replace("&quot;",'"'.ToString());
wiibrewsource = wiibrewsource.Replace("&nbsp;", ""); // Shouldn't occur, but they happen...
// Return parsed xml database...
return wiibrewsource;
}
private void updateDatabaseToolStripMenuItem_Click(object sender, EventArgs e)
{
statusbox.Text = "";
WriteStatus("Updating your database.xml from Wiibrew.org");
WriteStatus(" - Database successfully parsed!");
string database = RetrieveNewDatabase();
string currentversion = GetDatabaseVersion("database.xml");
string onlineversion = GetDatabaseVersion(database);
WriteStatus(" - Current Database Version: " + currentversion);
WriteStatus(" - Online Database Version: " + onlineversion);
if (currentversion == onlineversion)
{
WriteStatus(" - You have the latest database version!");
return;
}
WriteStatus(" - Overwriting your current database.xml...");
WriteStatus(" - The old database will become 'olddatabase.xml' in case the new one is faulty.");
string olddatabase = File.ReadAllText("database.xml");
File.WriteAllText("olddatabase.xml", olddatabase);
File.Delete("database.xml");
File.WriteAllText("database.xml", database);
WriteStatus("Database successfully updated!");
}
} }
} }