diff --git a/淘宝网址解析.sln b/淘宝网址解析.sln new file mode 100644 index 0000000..c3cdd57 --- /dev/null +++ b/淘宝网址解析.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.33424.131 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "淘宝网址解析", "淘宝网址解析\淘宝网址解析.csproj", "{D5486880-F468-4149-86BF-AD79659BC9A0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {D5486880-F468-4149-86BF-AD79659BC9A0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D5486880-F468-4149-86BF-AD79659BC9A0}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D5486880-F468-4149-86BF-AD79659BC9A0}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D5486880-F468-4149-86BF-AD79659BC9A0}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {7B2779C1-6668-48BC-86EE-635258772CB4} + EndGlobalSection +EndGlobal diff --git a/淘宝网址解析/Form1.Designer.cs b/淘宝网址解析/Form1.Designer.cs new file mode 100644 index 0000000..708f81d --- /dev/null +++ b/淘宝网址解析/Form1.Designer.cs @@ -0,0 +1,203 @@ +namespace 淘宝网址解析 +{ + partial class Form1 + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + button1 = new Button(); + textBox1 = new TextBox(); + textBox2 = new TextBox(); + splitContainer1 = new SplitContainer(); + tableLayoutPanel1 = new TableLayoutPanel(); + flowLayoutPanel1 = new FlowLayoutPanel(); + checkBox1 = new CheckBox(); + checkBox2 = new CheckBox(); + dataGridView1 = new DataGridView(); + ((System.ComponentModel.ISupportInitialize)splitContainer1).BeginInit(); + splitContainer1.Panel1.SuspendLayout(); + splitContainer1.Panel2.SuspendLayout(); + splitContainer1.SuspendLayout(); + tableLayoutPanel1.SuspendLayout(); + flowLayoutPanel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView1).BeginInit(); + SuspendLayout(); + // + // button1 + // + button1.Dock = DockStyle.Fill; + button1.Location = new Point(2, 289); + button1.Margin = new Padding(2, 3, 2, 3); + button1.Name = "button1"; + button1.Size = new Size(453, 43); + button1.TabIndex = 0; + button1.Text = "解析"; + button1.UseVisualStyleBackColor = true; + button1.Click += button1_ClickAsync; + // + // textBox1 + // + textBox1.Dock = DockStyle.Fill; + textBox1.Location = new Point(2, 3); + textBox1.Margin = new Padding(2, 3, 2, 3); + textBox1.Multiline = true; + textBox1.Name = "textBox1"; + textBox1.Size = new Size(453, 233); + textBox1.TabIndex = 1; + textBox1.Text = "在这里输入需要缩短的淘宝宝贝链接"; + // + // textBox2 + // + textBox2.Dock = DockStyle.Fill; + textBox2.Location = new Point(2, 242); + textBox2.Margin = new Padding(2, 3, 2, 3); + textBox2.Multiline = true; + textBox2.Name = "textBox2"; + textBox2.Size = new Size(453, 41); + textBox2.TabIndex = 3; + textBox2.Text = "点击解析后这里会输出结果"; + // + // splitContainer1 + // + splitContainer1.Dock = DockStyle.Fill; + splitContainer1.Location = new Point(0, 0); + splitContainer1.Margin = new Padding(2, 3, 2, 3); + splitContainer1.Name = "splitContainer1"; + // + // splitContainer1.Panel1 + // + splitContainer1.Panel1.Controls.Add(tableLayoutPanel1); + // + // splitContainer1.Panel2 + // + splitContainer1.Panel2.Controls.Add(dataGridView1); + splitContainer1.Size = new Size(931, 382); + splitContainer1.SplitterDistance = 457; + splitContainer1.SplitterWidth = 3; + splitContainer1.TabIndex = 4; + // + // tableLayoutPanel1 + // + tableLayoutPanel1.ColumnCount = 1; + tableLayoutPanel1.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 50F)); + tableLayoutPanel1.Controls.Add(textBox1, 0, 0); + tableLayoutPanel1.Controls.Add(textBox2, 0, 1); + tableLayoutPanel1.Controls.Add(button1, 0, 2); + tableLayoutPanel1.Controls.Add(flowLayoutPanel1, 0, 3); + tableLayoutPanel1.Dock = DockStyle.Fill; + tableLayoutPanel1.Location = new Point(0, 0); + tableLayoutPanel1.Margin = new Padding(2, 3, 2, 3); + tableLayoutPanel1.Name = "tableLayoutPanel1"; + tableLayoutPanel1.RowCount = 4; + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 83.62069F)); + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Percent, 16.37931F)); + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 49F)); + tableLayoutPanel1.RowStyles.Add(new RowStyle(SizeType.Absolute, 46F)); + tableLayoutPanel1.Size = new Size(457, 382); + tableLayoutPanel1.TabIndex = 4; + // + // flowLayoutPanel1 + // + flowLayoutPanel1.Controls.Add(checkBox1); + flowLayoutPanel1.Controls.Add(checkBox2); + flowLayoutPanel1.Dock = DockStyle.Fill; + flowLayoutPanel1.Location = new Point(3, 338); + flowLayoutPanel1.Name = "flowLayoutPanel1"; + flowLayoutPanel1.Size = new Size(451, 41); + flowLayoutPanel1.TabIndex = 4; + // + // checkBox1 + // + checkBox1.AutoSize = true; + checkBox1.Checked = true; + checkBox1.CheckState = CheckState.Checked; + checkBox1.Location = new Point(3, 3); + checkBox1.Name = "checkBox1"; + checkBox1.Size = new Size(87, 21); + checkBox1.TabIndex = 0; + checkBox1.Text = "强制网页版"; + checkBox1.UseVisualStyleBackColor = true; + // + // checkBox2 + // + checkBox2.AutoSize = true; + checkBox2.Checked = true; + checkBox2.CheckState = CheckState.Checked; + checkBox2.Location = new Point(96, 3); + checkBox2.Name = "checkBox2"; + checkBox2.Size = new Size(123, 21); + checkBox2.TabIndex = 1; + checkBox2.Text = "解析完成自动打开"; + checkBox2.UseVisualStyleBackColor = true; + // + // dataGridView1 + // + dataGridView1.ColumnHeadersHeightSizeMode = DataGridViewColumnHeadersHeightSizeMode.AutoSize; + dataGridView1.Dock = DockStyle.Fill; + dataGridView1.Location = new Point(0, 0); + dataGridView1.Margin = new Padding(2, 3, 2, 3); + dataGridView1.Name = "dataGridView1"; + dataGridView1.RowHeadersWidth = 51; + dataGridView1.RowTemplate.Height = 29; + dataGridView1.Size = new Size(471, 382); + dataGridView1.TabIndex = 0; + // + // Form1 + // + AutoScaleDimensions = new SizeF(7F, 17F); + AutoScaleMode = AutoScaleMode.Font; + ClientSize = new Size(931, 382); + Controls.Add(splitContainer1); + Margin = new Padding(2, 3, 2, 3); + Name = "Form1"; + Text = "淘宝链接缩短工具"; + splitContainer1.Panel1.ResumeLayout(false); + splitContainer1.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)splitContainer1).EndInit(); + splitContainer1.ResumeLayout(false); + tableLayoutPanel1.ResumeLayout(false); + tableLayoutPanel1.PerformLayout(); + flowLayoutPanel1.ResumeLayout(false); + flowLayoutPanel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)dataGridView1).EndInit(); + ResumeLayout(false); + } + + #endregion + + private Button button1; + private TextBox textBox1; + private TextBox textBox2; + private SplitContainer splitContainer1; + private TableLayoutPanel tableLayoutPanel1; + private DataGridView dataGridView1; + private FlowLayoutPanel flowLayoutPanel1; + private CheckBox checkBox1; + private CheckBox checkBox2; + private DataGridViewTextBoxColumn 参数名称; + private DataGridViewTextBoxColumn 参数内容; + } +} \ No newline at end of file diff --git a/淘宝网址解析/Form1.cs b/淘宝网址解析/Form1.cs new file mode 100644 index 0000000..56512cc --- /dev/null +++ b/淘宝网址解析/Form1.cs @@ -0,0 +1,136 @@ +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; + +namespace 淘宝网址解析 +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + static Dictionary 淘宝网站 = new Dictionary + { + ["淘宝网页版"] = "item.taobao.com", + ["淘宝手机版"] = "m.taobao.com", + ["淘宝手机版new"] = "new.m.taobao.com", + ["淘宝短网址"] = "m.tb.cn", + ["天猫网址"] = "detail.tmall.com", + ["天猫超市"] = "chaoshi.detail.tmall.com", + }; + BindingList<网址参数> 参数列表 = new(); + private async void button1_ClickAsync(object sender, EventArgs e) + { + //清空参数列表 + 参数列表.Clear(); + string temp = ""; + //取出完整网址 + try + { + temp = textBox1.Text.Substring(textBox1.Text.IndexOf("http")); + } + catch (Exception) + { + MessageBox.Show("请输入正确的网址,例如https://detail.tmall.com/item.htm?id=640330331740"); + return; + } + + temp = temp.Split(' ')[0]; + + //解析链接 + var 网页域名 = ""; + var 网站页面 = ""; + try + { + 网页域名 = temp.Split('/')[2]; + 网站页面 = temp.Split('/')[3].Split('?')[0]; + } + catch (Exception) + { + MessageBox.Show("网址可能不是太正确..."); + return; + } + + + if (网页域名 == 淘宝网站["淘宝短网址"]) + { + //解析短网址 + temp = await 解析短网址(temp); + temp = temp.Substring(textBox1.Text.IndexOf("http")); + temp = temp.Split(' ')[0]; + } + if (checkBox1.Checked) if (网页域名 == 淘宝网站["淘宝手机版new"] || 网页域名 == 淘宝网站["淘宝手机版"]) + { + 网页域名 = 淘宝网站["淘宝网页版"]; + 网站页面 = @"item.htm"; + } + + var 结果网址 = $"https://{网页域名}/{网站页面}?"; + temp = temp.Substring(temp.IndexOf("htm?") + 4); + var 参数 = temp.Split("&"); + bool 找到id = false; + foreach (var item in 参数) + { + var 参数与内容 = item.Split("="); + 参数列表.Add(new 网址参数 { 参数名称 = 参数与内容[0], 参数内容 = 参数与内容[1] }); + if (参数与内容[0] == "id") + { + 结果网址 += $"{参数与内容[0]}={参数与内容[1]}"; + 找到id = true; + } + } + if(找到id == false) { MessageBox.Show("未找到宝贝id!结果大概率是寄了","可恶!"); } + dataGridView1.DataSource = 参数列表; + dataGridView1.Columns[0].AutoSizeMode = DataGridViewAutoSizeColumnMode.DisplayedCells; + dataGridView1.Columns[1].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill; + textBox2.Text = 结果网址; + if (checkBox2.Checked) + { + Process.Start(new ProcessStartInfo() + { + FileName = 结果网址, + UseShellExecute = true + }); + } + } + + + private static HttpClient http客户端 = new(); + private async Task 解析短网址(string 网址) + { + try + { + HttpResponseMessage response = await http客户端.GetAsync(网址); + response.EnsureSuccessStatusCode(); + string responseBody = await response.Content.ReadAsStringAsync(); + // Above three lines can be replaced with new helper method below + // string responseBody = await client.GetStringAsync(uri); + var aa = responseBody.Substring(responseBody.IndexOf(@"var url = 'https://new.m.taobao.com")); + aa = aa.Substring(0, aa.IndexOf('\'', aa.IndexOf('\'') + 1)); + aa = aa.Replace(@"var url = '", "").Replace(@"'", ""); + return aa; + + } + catch (HttpRequestException e) + { + Debug.WriteLine("\nException Caught!"); + Debug.WriteLine("Message :{0} ", e.Message); + return null; + } + } + + public class 网址参数 + { + public string 参数名称 { get; set; } + public string 参数内容 { get; set; } + + } + + private void button2_Click(object sender, EventArgs e) + { + http客户端.BaseAddress = new Uri($"https://{淘宝网站["淘宝短网址"]}"); + + } + } +} \ No newline at end of file diff --git a/淘宝网址解析/Form1.resx b/淘宝网址解析/Form1.resx new file mode 100644 index 0000000..f298a7b --- /dev/null +++ b/淘宝网址解析/Form1.resx @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/淘宝网址解析/Program.cs b/淘宝网址解析/Program.cs new file mode 100644 index 0000000..4c2cb76 --- /dev/null +++ b/淘宝网址解析/Program.cs @@ -0,0 +1,17 @@ +namespace 淘宝网址解析 +{ + internal static class Program + { + /// + /// The main entry point for the application. + /// + [STAThread] + static void Main() + { + // To customize application configuration such as set high DPI settings or default font, + // see https://aka.ms/applicationconfiguration. + ApplicationConfiguration.Initialize(); + Application.Run(new Form1()); + } + } +} \ No newline at end of file diff --git a/淘宝网址解析/淘宝网址解析.csproj b/淘宝网址解析/淘宝网址解析.csproj new file mode 100644 index 0000000..e1a0735 --- /dev/null +++ b/淘宝网址解析/淘宝网址解析.csproj @@ -0,0 +1,11 @@ + + + + WinExe + net7.0-windows + enable + true + enable + + + \ No newline at end of file