mirror of
https://e.coding.net/circlecloud/SEOKeywordSearch.git
synced 2024-11-23 02:18:48 +00:00
首次修改提交...
Signed-off-by: j502647092 <jtb1@163.com>
This commit is contained in:
commit
be29882c7d
63
.gitattributes
vendored
Normal file
63
.gitattributes
vendored
Normal file
@ -0,0 +1,63 @@
|
||||
###############################################################################
|
||||
# Set default behavior to automatically normalize line endings.
|
||||
###############################################################################
|
||||
* text=auto
|
||||
|
||||
###############################################################################
|
||||
# Set default behavior for command prompt diff.
|
||||
#
|
||||
# This is need for earlier builds of msysgit that does not have it on by
|
||||
# default for csharp files.
|
||||
# Note: This is only used by command line
|
||||
###############################################################################
|
||||
#*.cs diff=csharp
|
||||
|
||||
###############################################################################
|
||||
# Set the merge driver for project and solution files
|
||||
#
|
||||
# Merging from the command prompt will add diff markers to the files if there
|
||||
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||
# the diff markers are never inserted). Diff markers may cause the following
|
||||
# file extensions to fail to load in VS. An alternative would be to treat
|
||||
# these files as binary and thus will always conflict and require user
|
||||
# intervention with every merge. To do so, just uncomment the entries below
|
||||
###############################################################################
|
||||
#*.sln merge=binary
|
||||
#*.csproj merge=binary
|
||||
#*.vbproj merge=binary
|
||||
#*.vcxproj merge=binary
|
||||
#*.vcproj merge=binary
|
||||
#*.dbproj merge=binary
|
||||
#*.fsproj merge=binary
|
||||
#*.lsproj merge=binary
|
||||
#*.wixproj merge=binary
|
||||
#*.modelproj merge=binary
|
||||
#*.sqlproj merge=binary
|
||||
#*.wwaproj merge=binary
|
||||
|
||||
###############################################################################
|
||||
# behavior for image files
|
||||
#
|
||||
# image files are treated as binary by default.
|
||||
###############################################################################
|
||||
#*.jpg binary
|
||||
#*.png binary
|
||||
#*.gif binary
|
||||
|
||||
###############################################################################
|
||||
# diff behavior for common document formats
|
||||
#
|
||||
# Convert binary document formats to text before diffing them. This feature
|
||||
# is only available from the command line. Turn it on by uncommenting the
|
||||
# entries below.
|
||||
###############################################################################
|
||||
#*.doc diff=astextplain
|
||||
#*.DOC diff=astextplain
|
||||
#*.docx diff=astextplain
|
||||
#*.DOCX diff=astextplain
|
||||
#*.dot diff=astextplain
|
||||
#*.DOT diff=astextplain
|
||||
#*.pdf diff=astextplain
|
||||
#*.PDF diff=astextplain
|
||||
#*.rtf diff=astextplain
|
||||
#*.RTF diff=astextplain
|
156
.gitignore
vendored
Normal file
156
.gitignore
vendored
Normal file
@ -0,0 +1,156 @@
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.sln.docstates
|
||||
|
||||
# Build results
|
||||
|
||||
[Dd]ebug/
|
||||
[Rr]elease/
|
||||
x64/
|
||||
build/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
|
||||
# Enable "build/" folder in the NuGet Packages folder since NuGet packages use it for MSBuild targets
|
||||
!packages/*/build/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.log
|
||||
*.scc
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
*.ncrunch*
|
||||
.*crunch*.local.xml
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.Publish.xml
|
||||
|
||||
# NuGet Packages Directory
|
||||
## TODO: If you have NuGet Package Restore enabled, uncomment the next line
|
||||
#packages/
|
||||
|
||||
# Windows Azure Build Output
|
||||
csx
|
||||
*.build.csdef
|
||||
|
||||
# Windows Store app package directory
|
||||
AppPackages/
|
||||
|
||||
# Others
|
||||
sql/
|
||||
*.Cache
|
||||
ClientBin/
|
||||
[Ss]tyle[Cc]op.*
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.[Pp]ublish.xml
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file to a newer
|
||||
# Visual Studio version. Backup files are not needed, because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
App_Data/*.mdf
|
||||
App_Data/*.ldf
|
||||
|
||||
|
||||
#LightSwitch generated files
|
||||
GeneratedArtifacts/
|
||||
_Pvt_Extensions/
|
||||
ModelManifest.xml
|
||||
|
||||
# =========================
|
||||
# Windows detritus
|
||||
# =========================
|
||||
|
||||
# Windows image file caches
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
|
||||
# Folder config file
|
||||
Desktop.ini
|
||||
|
||||
# Recycle Bin used on file shares
|
||||
$RECYCLE.BIN/
|
||||
|
||||
# Mac desktop service store files
|
||||
.DS_Store
|
54
Config.cs
Normal file
54
Config.cs
Normal file
@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text;
|
||||
|
||||
namespace AliKeywordSearch
|
||||
{
|
||||
class Config
|
||||
{
|
||||
protected string fileName;
|
||||
public Config(string fileName)
|
||||
{
|
||||
this.fileName = fileName;
|
||||
}
|
||||
|
||||
//将List转换为TXT文件
|
||||
public void WriteListToTextFile(List<string> list)
|
||||
{
|
||||
//创建一个文件流,用以写入或者创建一个StreamWriter
|
||||
FileStream fs = new FileStream(fileName, FileMode.OpenOrCreate, FileAccess.Write);
|
||||
StreamWriter sw = new StreamWriter(fs);
|
||||
sw.Flush();
|
||||
// 使用StreamWriter来往文件中写入内容
|
||||
sw.BaseStream.Seek(0, SeekOrigin.Begin);
|
||||
for (int i = 0; i < list.Count; i++) sw.WriteLine(list[i]);
|
||||
//关闭此文件t
|
||||
sw.Flush();
|
||||
sw.Close();
|
||||
fs.Close();
|
||||
}
|
||||
|
||||
//读取文本文件转换为List
|
||||
public List<string> ReadTextFileToList()
|
||||
{
|
||||
FileStream fs = new FileStream(fileName, FileMode.Open, FileAccess.Read);
|
||||
List<string> list = new List<string>();
|
||||
StreamReader sr = new StreamReader(fs);
|
||||
//使用StreamReader类来读取文件
|
||||
sr.BaseStream.Seek(0, SeekOrigin.Begin);
|
||||
// 从数据流中读取每一行,直到文件的最后一行
|
||||
string tmp = sr.ReadLine();
|
||||
while (tmp != null)
|
||||
{
|
||||
list.Add(tmp);
|
||||
tmp = sr.ReadLine();
|
||||
}
|
||||
//关闭此StreamReader对象
|
||||
sr.Close();
|
||||
fs.Close();
|
||||
return list;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
309
Frm_Main.Designer.cs
generated
Normal file
309
Frm_Main.Designer.cs
generated
Normal file
@ -0,0 +1,309 @@
|
||||
namespace EnAliKeywordSearch
|
||||
{
|
||||
partial class Frm_Main
|
||||
{
|
||||
/// <summary>
|
||||
/// 必需的设计器变量。
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// 清理所有正在使用的资源。
|
||||
/// </summary>
|
||||
/// <param name="disposing">如果应释放托管资源,为 true;否则为 false。</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows 窗体设计器生成的代码
|
||||
|
||||
/// <summary>
|
||||
/// 设计器支持所需的方法 - 不要
|
||||
/// 使用代码编辑器修改此方法的内容。
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Frm_Main));
|
||||
this.SearchView = new System.Windows.Forms.DataGridView();
|
||||
this.ResultView = new System.Windows.Forms.DataGridView();
|
||||
this.search = new System.Windows.Forms.Button();
|
||||
this.max = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.state = new System.Windows.Forms.Label();
|
||||
this.saveout = new System.Windows.Forms.Button();
|
||||
this.readin = new System.Windows.Forms.Button();
|
||||
this.openFile = new System.Windows.Forms.OpenFileDialog();
|
||||
this.saveFile = new System.Windows.Forms.SaveFileDialog();
|
||||
this.clearresult = new System.Windows.Forms.Button();
|
||||
this.clearsearch = new System.Windows.Forms.Button();
|
||||
this.company = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.百度s = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.必应s = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.搜狗s = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.keyword = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.公司名称 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.关键词 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.百度r = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.必应r = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.搜狗r = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.查询时间 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
((System.ComponentModel.ISupportInitialize)(this.SearchView)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResultView)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// SearchView
|
||||
//
|
||||
this.SearchView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.SearchView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.company,
|
||||
this.百度s,
|
||||
this.必应s,
|
||||
this.搜狗s,
|
||||
this.keyword});
|
||||
this.SearchView.Location = new System.Drawing.Point(11, 58);
|
||||
this.SearchView.Name = "SearchView";
|
||||
this.SearchView.RowTemplate.Height = 23;
|
||||
this.SearchView.Size = new System.Drawing.Size(850, 200);
|
||||
this.SearchView.TabIndex = 0;
|
||||
//
|
||||
// ResultView
|
||||
//
|
||||
this.ResultView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
this.ResultView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
|
||||
this.公司名称,
|
||||
this.关键词,
|
||||
this.百度r,
|
||||
this.必应r,
|
||||
this.搜狗r,
|
||||
this.查询时间});
|
||||
this.ResultView.Location = new System.Drawing.Point(11, 293);
|
||||
this.ResultView.Name = "ResultView";
|
||||
this.ResultView.RowTemplate.Height = 23;
|
||||
this.ResultView.Size = new System.Drawing.Size(850, 300);
|
||||
this.ResultView.TabIndex = 1;
|
||||
//
|
||||
// search
|
||||
//
|
||||
this.search.Location = new System.Drawing.Point(360, 10);
|
||||
this.search.Name = "search";
|
||||
this.search.Size = new System.Drawing.Size(152, 36);
|
||||
this.search.TabIndex = 2;
|
||||
this.search.Text = "查 询 关 键 词";
|
||||
this.search.UseVisualStyleBackColor = true;
|
||||
this.search.Click += new System.EventHandler(this.search_Click);
|
||||
//
|
||||
// max
|
||||
//
|
||||
this.max.Location = new System.Drawing.Point(663, 10);
|
||||
this.max.Name = "max";
|
||||
this.max.Size = new System.Drawing.Size(83, 21);
|
||||
this.max.TabIndex = 3;
|
||||
this.max.Text = "20";
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(592, 13);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(65, 12);
|
||||
this.label1.TabIndex = 7;
|
||||
this.label1.Text = "查询页数: ";
|
||||
//
|
||||
// state
|
||||
//
|
||||
this.state.AutoSize = true;
|
||||
this.state.Font = new System.Drawing.Font("宋体", 10.5F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.state.ForeColor = System.Drawing.SystemColors.ControlText;
|
||||
this.state.Location = new System.Drawing.Point(98, 267);
|
||||
this.state.Name = "state";
|
||||
this.state.Size = new System.Drawing.Size(37, 14);
|
||||
this.state.TabIndex = 8;
|
||||
this.state.Text = "状态";
|
||||
this.state.TextAlign = System.Drawing.ContentAlignment.TopCenter;
|
||||
//
|
||||
// saveout
|
||||
//
|
||||
this.saveout.Location = new System.Drawing.Point(181, 29);
|
||||
this.saveout.Name = "saveout";
|
||||
this.saveout.Size = new System.Drawing.Size(73, 23);
|
||||
this.saveout.TabIndex = 9;
|
||||
this.saveout.Text = "导出关键词";
|
||||
this.saveout.UseVisualStyleBackColor = true;
|
||||
this.saveout.Click += new System.EventHandler(this.saveout_Click);
|
||||
//
|
||||
// readin
|
||||
//
|
||||
this.readin.Location = new System.Drawing.Point(19, 29);
|
||||
this.readin.Name = "readin";
|
||||
this.readin.Size = new System.Drawing.Size(73, 23);
|
||||
this.readin.TabIndex = 10;
|
||||
this.readin.Text = "导入关键词";
|
||||
this.readin.UseVisualStyleBackColor = true;
|
||||
this.readin.Click += new System.EventHandler(this.readin_Click);
|
||||
//
|
||||
// openFile
|
||||
//
|
||||
this.openFile.FileName = "openFileDialog1";
|
||||
//
|
||||
// clearresult
|
||||
//
|
||||
this.clearresult.Location = new System.Drawing.Point(19, 264);
|
||||
this.clearresult.Name = "clearresult";
|
||||
this.clearresult.Size = new System.Drawing.Size(73, 23);
|
||||
this.clearresult.TabIndex = 11;
|
||||
this.clearresult.Text = "清除结果";
|
||||
this.clearresult.UseVisualStyleBackColor = true;
|
||||
this.clearresult.Click += new System.EventHandler(this.clearresult_Click);
|
||||
//
|
||||
// clearsearch
|
||||
//
|
||||
this.clearsearch.Location = new System.Drawing.Point(100, 29);
|
||||
this.clearsearch.Name = "clearsearch";
|
||||
this.clearsearch.Size = new System.Drawing.Size(73, 23);
|
||||
this.clearsearch.TabIndex = 12;
|
||||
this.clearsearch.Text = "清除关键词";
|
||||
this.clearsearch.UseVisualStyleBackColor = true;
|
||||
this.clearsearch.Click += new System.EventHandler(this.clearsearch_Click);
|
||||
//
|
||||
// company
|
||||
//
|
||||
this.company.HeaderText = "公司网址";
|
||||
this.company.Name = "company";
|
||||
this.company.Width = 150;
|
||||
//
|
||||
// 百度s
|
||||
//
|
||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.百度s.DefaultCellStyle = dataGridViewCellStyle1;
|
||||
this.百度s.HeaderText = "百度第一页";
|
||||
this.百度s.Name = "百度s";
|
||||
this.百度s.Width = 90;
|
||||
//
|
||||
// 必应s
|
||||
//
|
||||
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.必应s.DefaultCellStyle = dataGridViewCellStyle2;
|
||||
this.必应s.HeaderText = "必应第一页";
|
||||
this.必应s.Name = "必应s";
|
||||
this.必应s.Width = 90;
|
||||
//
|
||||
// 搜狗s
|
||||
//
|
||||
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.搜狗s.DefaultCellStyle = dataGridViewCellStyle3;
|
||||
this.搜狗s.HeaderText = "搜狗第一页";
|
||||
this.搜狗s.Name = "搜狗s";
|
||||
this.搜狗s.Width = 90;
|
||||
//
|
||||
// keyword
|
||||
//
|
||||
this.keyword.HeaderText = "关键词(用英文逗号隔开)";
|
||||
this.keyword.Name = "keyword";
|
||||
this.keyword.Width = 350;
|
||||
//
|
||||
// 公司名称
|
||||
//
|
||||
this.公司名称.HeaderText = "公司网站";
|
||||
this.公司名称.Name = "公司名称";
|
||||
this.公司名称.Width = 150;
|
||||
//
|
||||
// 关键词
|
||||
//
|
||||
this.关键词.HeaderText = "关键词";
|
||||
this.关键词.Name = "关键词";
|
||||
this.关键词.Width = 200;
|
||||
//
|
||||
// 百度r
|
||||
//
|
||||
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.百度r.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.百度r.HeaderText = "百度";
|
||||
this.百度r.Name = "百度r";
|
||||
//
|
||||
// 必应r
|
||||
//
|
||||
dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.必应r.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.必应r.HeaderText = "必应";
|
||||
this.必应r.Name = "必应r";
|
||||
//
|
||||
// 搜狗r
|
||||
//
|
||||
dataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleCenter;
|
||||
this.搜狗r.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.搜狗r.HeaderText = "搜狗";
|
||||
this.搜狗r.Name = "搜狗r";
|
||||
//
|
||||
// 查询时间
|
||||
//
|
||||
this.查询时间.HeaderText = "查询时间";
|
||||
this.查询时间.Name = "查询时间";
|
||||
this.查询时间.Width = 130;
|
||||
//
|
||||
// Frm_Main
|
||||
//
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
|
||||
this.ClientSize = new System.Drawing.Size(872, 603);
|
||||
this.Controls.Add(this.clearsearch);
|
||||
this.Controls.Add(this.clearresult);
|
||||
this.Controls.Add(this.readin);
|
||||
this.Controls.Add(this.saveout);
|
||||
this.Controls.Add(this.state);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.max);
|
||||
this.Controls.Add(this.search);
|
||||
this.Controls.Add(this.ResultView);
|
||||
this.Controls.Add(this.SearchView);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "Frm_Main";
|
||||
this.Text = "SEO排名查询软件 2015-7-30";
|
||||
this.Load += new System.EventHandler(this.Frm_Main_Load);
|
||||
((System.ComponentModel.ISupportInitialize)(this.SearchView)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.ResultView)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.DataGridView SearchView;
|
||||
private System.Windows.Forms.DataGridView ResultView;
|
||||
private System.Windows.Forms.Button search;
|
||||
private System.Windows.Forms.TextBox max;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label state;
|
||||
private System.Windows.Forms.Button saveout;
|
||||
private System.Windows.Forms.Button readin;
|
||||
private System.Windows.Forms.OpenFileDialog openFile;
|
||||
private System.Windows.Forms.SaveFileDialog saveFile;
|
||||
private System.Windows.Forms.Button clearresult;
|
||||
private System.Windows.Forms.Button clearsearch;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn company;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 百度s;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 必应s;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 搜狗s;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn keyword;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 公司名称;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 关键词;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 百度r;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 必应r;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 搜狗r;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn 查询时间;
|
||||
|
||||
}
|
||||
}
|
||||
|
212
Frm_Main.cs
Normal file
212
Frm_Main.cs
Normal file
@ -0,0 +1,212 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
using AliKeywordSearch;
|
||||
using System.Web;
|
||||
using System.Reflection;
|
||||
|
||||
namespace EnAliKeywordSearch
|
||||
{
|
||||
public partial class Frm_Main : Form
|
||||
{
|
||||
public Frm_Main()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
enum SearchType
|
||||
{
|
||||
[UrlValue("https://www.baidu.com/s?wd={0}&pn={1}0&ie=utf-8")]
|
||||
百度,
|
||||
[UrlValue("http://cn.bing.com/search?q={0}&first={1}1&FORM=PERE1")]
|
||||
必应,
|
||||
[UrlValue("http://www.sogou.com/web?query={0}&page={1}&ie=utf8")]
|
||||
搜狗
|
||||
}
|
||||
//360 Can'tUse url = String.Format("http://www.haosou.com/s?q={0}&pn={1}&client=aff-360daohang&ie=utf-8", HttpUtility.UrlEncode(key), i);
|
||||
//BINGurl = String.Format("http://cn.bing.com/search?q={0}&first={1}1&FORM=PERE1", HttpUtility.UrlEncode(key), i - 1);
|
||||
//搜狗url = String.Format("http://www.sogou.com/web?query={0}&page={1}&ie=utf8", HttpUtility.UrlEncode(key), i);
|
||||
//百度url = String.Format("https://www.baidu.com/s?wd={0}&pn={1}0&ie=utf-8", HttpUtility.UrlEncode(key), i - 1);
|
||||
public class UrlValue : System.Attribute
|
||||
{
|
||||
private string _value;
|
||||
|
||||
public UrlValue(string value)
|
||||
{
|
||||
_value = value;
|
||||
}
|
||||
|
||||
public string Value
|
||||
{
|
||||
get { return _value; }
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static class UrlEnum
|
||||
{
|
||||
public static string GetUrl(Enum value)
|
||||
{
|
||||
string output = null;
|
||||
Type type = value.GetType();
|
||||
|
||||
FieldInfo fi = type.GetField(value.ToString());
|
||||
UrlValue[] attrs =
|
||||
fi.GetCustomAttributes(typeof(UrlValue),
|
||||
false) as UrlValue[];
|
||||
if (attrs.Length > 0)
|
||||
{
|
||||
output = attrs[0].Value;
|
||||
}
|
||||
return output;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
private void search_Click(object sender, EventArgs e)
|
||||
{
|
||||
search.Enabled = false;
|
||||
state.ForeColor = Color.Black;
|
||||
state.ForeColor = Color.Red;
|
||||
HttpHelper httpHelper = new HttpHelper();
|
||||
foreach (DataGridViewRow item in this.SearchView.Rows)
|
||||
{
|
||||
string cpy = item.Cells["company"].Value == null ? "" : item.Cells["company"].Value.ToString();
|
||||
string keys = item.Cells["keyword"].Value == null ? "" : item.Cells["keyword"].Value.ToString();
|
||||
if (cpy != "" && keys != "")
|
||||
{
|
||||
foreach (string key in keys.Split(','))
|
||||
{
|
||||
if (String.IsNullOrEmpty(key))
|
||||
continue;
|
||||
bool maybe = false;
|
||||
int maxpage = this.ToInt(max.Text);
|
||||
int index = this.ResultView.Rows.Add();
|
||||
this.ResultView.FirstDisplayedScrollingRowIndex = index;
|
||||
this.ResultView.Rows[index].Cells["公司名称"].Value = cpy;
|
||||
this.ResultView.Rows[index].Cells["关键词"].Value = key;
|
||||
state.ForeColor = Color.Black;
|
||||
Application.DoEvents();
|
||||
string pageinfo = string.Empty;
|
||||
foreach (SearchType s in Enum.GetValues(typeof(SearchType)))
|
||||
{
|
||||
if (item.Cells[s.ToString() + "s"].Value == null)
|
||||
item.Cells[s.ToString() + "s"].Value = 0;
|
||||
state.Text = "正在 " + s.ToString() + " 查询 " + cpy + " 的关键词 " + key;
|
||||
for (int i = 1; i <= maxpage; i++)
|
||||
{
|
||||
string url = String.Format(UrlEnum.GetUrl(s), HttpUtility.UrlEncode(key), (s.ToString() == "搜狗" ? i : i - 1));
|
||||
this.ResultView.Rows[index].Cells[s.ToString() + "r"].Value = "查询第" + i + "页...";
|
||||
Application.DoEvents();
|
||||
string htmldoc = httpHelper.Get(url);
|
||||
if (string.IsNullOrEmpty(htmldoc))
|
||||
{
|
||||
state.ForeColor = Color.Red;
|
||||
state.Text = "关键词 " + key + " 在 " + s.ToString() + " 第 " + i + " 页 网页抓取失败 错误:" + HttpHelper.ErrMsg;
|
||||
maybe = true;
|
||||
continue;
|
||||
}
|
||||
string encodecpy = HttpUtility.HtmlEncode(cpy);
|
||||
if (htmldoc.Contains(encodecpy))
|
||||
{
|
||||
pageinfo = "第" + i + "页";
|
||||
if (i == 1)
|
||||
item.Cells[s.ToString() + "s"].Value = int.Parse(item.Cells[s.ToString() + "s"].Value.ToString()) + 1;
|
||||
this.ResultView.Rows[index].Cells[s.ToString() + "r"].Style.ForeColor = (i == 1 ? Color.Magenta : Color.Black);
|
||||
break;
|
||||
}
|
||||
if (i == maxpage)
|
||||
{
|
||||
pageinfo = maxpage + "页以后";
|
||||
break;
|
||||
}
|
||||
Application.DoEvents();
|
||||
}
|
||||
this.ResultView.Rows[index].Cells[s.ToString() + "r"].Value = pageinfo + (maybe ? "(可能不准确)" : "");
|
||||
this.ResultView.Rows[index].Cells[s.ToString() + "r"].Style.ForeColor = maybe ? Color.Red : this.ResultView.Rows[index].Cells[s.ToString() + "r"].Style.ForeColor;
|
||||
this.ResultView.Rows[index].Cells["查询时间"].Value = DateTime.Now.ToString();
|
||||
Application.DoEvents();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Application.DoEvents();
|
||||
}
|
||||
state.ForeColor = Color.Green;
|
||||
state.Text = "所有关键词查询完成!";
|
||||
search.Enabled = true;
|
||||
}
|
||||
|
||||
private int ToInt(String str)
|
||||
{
|
||||
int s = 0;
|
||||
int.TryParse(str, out s);
|
||||
return s;
|
||||
}
|
||||
|
||||
private void Frm_Main_Load(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
#region 窗体事件
|
||||
private void saveout_Click(object sender, EventArgs e)
|
||||
{
|
||||
SaveFileDialog cpm = new SaveFileDialog();
|
||||
cpm.Filter = "查排名数据|*.cpm";
|
||||
if (cpm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
List<string> data = new List<string>();
|
||||
foreach (DataGridViewRow item in this.SearchView.Rows)
|
||||
{
|
||||
string cpy = item.Cells["company"].Value == null ? "" : item.Cells["company"].Value.ToString();
|
||||
string keys = item.Cells["keyword"].Value == null ? "" : item.Cells["keyword"].Value.ToString();
|
||||
if (cpy != "" && keys != "")
|
||||
data.Add(cpy + "|" + keys);
|
||||
}
|
||||
Config cfg = new Config(cpm.FileName);
|
||||
cfg.WriteListToTextFile(data);
|
||||
}
|
||||
}
|
||||
|
||||
private void readin_Click(object sender, EventArgs e)
|
||||
{
|
||||
OpenFileDialog cpm = new OpenFileDialog();
|
||||
cpm.Filter = "查排名数据|*.cpm";
|
||||
if (cpm.ShowDialog() == DialogResult.OK)
|
||||
{
|
||||
Config cfg = new Config(cpm.FileName);
|
||||
List<string> data = cfg.ReadTextFileToList();
|
||||
string cpy = string.Empty;
|
||||
string keys = string.Empty;
|
||||
foreach (string item in data)
|
||||
{
|
||||
string[] str = item.Split('|');
|
||||
if (str.Length == 2)
|
||||
{
|
||||
cpy = str[0];
|
||||
keys = str[1];
|
||||
int index = this.SearchView.Rows.Add();
|
||||
this.SearchView.Rows[index].Cells["company"].Value = cpy;
|
||||
this.SearchView.Rows[index].Cells["keyword"].Value = keys;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void clearresult_Click(object sender, EventArgs e)
|
||||
{
|
||||
ResultView.Rows.Clear();
|
||||
}
|
||||
|
||||
private void clearsearch_Click(object sender, EventArgs e)
|
||||
{
|
||||
SearchView.Rows.Clear();
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
}
|
461
Frm_Main.resx
Normal file
461
Frm_Main.resx
Normal file
@ -0,0 +1,461 @@
|
||||
<?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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="company.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="百度s.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="必应s.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="搜狗s.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="keyword.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="公司名称.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="关键词.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="百度r.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="必应r.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="搜狗r.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="查询时间.UserAddedColumn" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="openFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<metadata name="saveFile.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>161, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.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>
|
||||
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
|
||||
AP+iWAH/oVgA/6FZAP+iWAD/oVgA/6JYAP+iWAD/oVgB/6FWAP+cWxH/AAAAAAAAAAAAAAAAAAAAAFqf
|
||||
5P8mgNr/J4Lb/yaC2/8ngtv/J4Hc/yeC3P8ngtz/J4Lb/yeC2/8og9v/KIPc/ymC2/8fguL/Anz0/wB7
|
||||
9f8AfPb/AHz2/wB89v8AfPb/AHz2/wB89v8AfPb/AHz2/wB89v8AfPX/AHz1/wF47/9uk8//tHk+/6JZ
|
||||
Bv+iVwD/olgA/6NYAP+iWQD/o1kA/6NZAP+iWQH/o1gB/6JZAf+jWAD/o1kA/6JYAP+dWxH/AAAAAAAA
|
||||
AAAAAAAAAAAAAD6d9f8Aevb/AHz2/wB89v8AfPf/AHz3/wB89/8AfPf/AHz2/wB89v8AfPb/AHz2/wB9
|
||||
9v8AfPb/AH31/wB99f8Affb/AH32/wB99v8Affb/AH72/wB99v8Affb/AH32/wB+9v8AffX/AX31/wN5
|
||||
7/9uk8//tXo+/6NZBv+jWAD/o1gA/6NYAf+iWAH/olkA/6NZAP+iWQD/olkA/6JYAP+jWAD/o1gB/6JX
|
||||
AP+dWxH/AAAAAAAAAAAAAAAAAAAAAECe9f8AfPT/AH/1/wB/9v8Af/b/AH/2/wB+9v8Af/b/AH72/wB/
|
||||
9v8Af/b/AH/2/wB/9v8Afvb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/
|
||||
9v8Af/X/AH/1/wF77/9ulM7/tno+/6RbBv+lWQD/pFgA/6RZAf+kWQH/pFgB/6RZAf+kWQH/pFkB/6RY
|
||||
Af+kWAH/pFkB/6NYAP+dXBD/AAAAAAAAAAAAAAAAAAAAAECf9f8AfPX/AH/1/wB/9v8Af/b/AH/2/wB/
|
||||
9v8AgPb/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AH/2/wB/9v8Af/b/AID2/wCA9v8Af/b/AH/2/wB/
|
||||
9v8Af/b/AID2/wB/9v8AgPb/AID2/wB87/9tlM7/t3o+/6VbBv+lWQD/pVgA/6RZAP+kWQD/pFkA/6VY
|
||||
AP+lWQD/pVkA/6VZAP+lWQD/pVgA/6VZAP+fXRH/AAAAAAAAAAAAAAAAAAAAAECg9f8Af/X/AIL1/wCC
|
||||
9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC
|
||||
9v8Agvb/AIL2/wCC9v8Agvb/AIL2/wCC9v8AgvX/AYH1/wJ97/9ulc7/t3s+/6ZbBP+lWQD/pVkA/6VZ
|
||||
AP+lWQD/pVkA/6VZAP+mWQD/plkA/6ZZAP+mWQD/pVkA/6VZAP+gXhH/AAAAAAAAAAAAAAAAAAAAAECi
|
||||
9v8AgfT/AIP1/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE
|
||||
9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPb/AIT2/wCE9v8AhPX/AIT1/wF+7/9tlc3/t3s+/6db
|
||||
Bf+mWgD/ploA/6daAP+nWwD/p1sA/6dbAP+nWwD/p1sA/6dbAP+nWwD/p1oA/6haAP+hWwr/AAAAAAAA
|
||||
AAAAAAAAAAAAADaP2v8AhPf/AIX1/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCG
|
||||
9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCA
|
||||
7v9tmM7/uXs+/6hdBP+oXAD/qFwA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6hbAP+oWwD/qFsA/6db
|
||||
AP+nWwD/pFgA/6NWAP+jVgD/oFkL/zOAwv8Ahvj/AIX1/wCF9v8Ahfb/AIX2/wCF9v8Ahvb/AIb2/wCF
|
||||
9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCG9v8Ahfb/AIX2/wCF9v8Ahfb/AIX2/wCF9v8Ahfb/AIb2/wCF
|
||||
9v8Ahfb/AIX2/wCB7v9tmM7/unw9/6ldBP+qXQD/ql0A/6pcAP+qXQD/ql0B/6pdAf+qXQH/ql0B/6pd
|
||||
Af+qXQH/qV0A/6ldAP+rXgD/q14B/6tdAP+rXQD/qV8P/zSCw/8Ah/j/AIb1/wCG9f8Ahvb/AIb2/wCG
|
||||
9v8Ahvb/AIb2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIX2/wCG9v8Ahvb/AIb2/wCF9v8Ahfb/AIX2/wCF
|
||||
9v8Ahfb/AIb2/wCG9v8Ahfb/AIb2/wGB7v9tmc3/un49/6xeBv+sXgH/rF4B/6xeAf+tXgD/rV4A/6xe
|
||||
Af+tXgH/rF8B/61eAP+tXgH/rV4B/61fAf+tXgH/rF4B/61eAf+sXgD/q18P/zWCw/8Ah/j/AIf1/wCH
|
||||
9f8Ah/X/AIf1/wCH9v8Ah/b/AIf2/wCH9v8Ahvb/AIb2/wCG9v8Ah/b/AIb2/wCG9v8Ahvb/AIb2/wCG
|
||||
9v8Ahvb/AIb2/wCG9v8Ahvb/AIb2/wCG9v8Ahvb/AIf2/wGC7v9tmM3/u30+/6xfBv+tXwH/rV4A/61e
|
||||
AP+sXgD/rV4A/61eAf+tXgH/rV4A/61eAf+tXgD/rV4B/61eAP+tXgH/rV4B/61eAf+tXQH/q2AR/zOD
|
||||
xf8Ah/r/AIf3/wCH9/8Ah/f/AIf3/wCH9/8Ah/f/AIf3/wCG9f8AhfX/AIT1/wCE9f8AhfT/AIf1/wCI
|
||||
9v8Ah/b/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPb/AIf2/wCH9v8AiPX/AIn2/wKD7v9tmc7/vH4+/61f
|
||||
Bf+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+tXgD/rV4A/61eAP+uXgD/rV4A/65eAP+tXgD/rl4A/61e
|
||||
AP+uXQH/rGAO/1eEnv80isr/NYnI/zWJyP81icj/NYrI/zSKyP81icf/NI3P/0Gl8P9DpvP/Qqbz/0Sm
|
||||
8v83oPP/BYn0/wCG9f8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPb/AIj2/wCI9v8AiPX/AIj2/wGE
|
||||
7/9tms7/vYA+/7BgBP+wXgD/sF4A/69dAP+vXQD/sF0A/69dAP+wXQD/r10A/69dAP+wXQD/sF0A/7Bd
|
||||
AP+vXQD/sF0A/7BdAP+wXgH/r14C/6piEP+pZRP/qWUT/6plE/+qZRP/qWUT/6llE/+qZBP/pnY//wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAADY/0/wCI9f8Aivb/AIr2/wCL9v8Aivb/AIr2/wCK9v8Aivb/AIr2/wCL
|
||||
9v8AivX/AIr2/wGF7v9tms7/vn4+/7BgBf+wXwD/sF4A/7BfAP+wXwD/sF8A/69fAP+wXwD/sF8A/7Bf
|
||||
AP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXwD/sF8A/7BfAP+wXgD/sF4A/7Bf
|
||||
AP+wXAD/rW8v/wAAAAAAAAAAAAAAAAAAAAAAAAAAC5D0/wCJ9f8Aivb/AIr2/wCL9v8Ai/b/AIr2/wCK
|
||||
9v8Aivb/AIv2/wCK9v8Ai/X/AYr2/wGH7/9tm8//vn4+/7BfBf+xXwD/sV8A/7FgAP+xYAD/sWAA/7Fg
|
||||
AP+wYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7FgAP+xYAD/sWAA/7Fg
|
||||
AP+xYAD/sWAA/7FfAP+wXgD/rXAw/wAAAAAAAAAAAAAAAAAAAAAAAAAADJD0/wCK9f8Ai/b/AIr2/wCL
|
||||
9v8Ai/b/AIr2/wCK9v8Aivb/AIv2/wCK9v8AivX/AIr2/wGI7/9tnM//wIA+/7NgBf+yXgD/sl4A/7Je
|
||||
AP+yXgD/sl4A/7JeAP+yXgD/sl8A/7JfAP+yXgD/sV4A/7FeAP+yXgD/sl4A/7JeAP+yXgD/sl4A/7Je
|
||||
AP+yXwD/sl8A/7JfAP+yXwD/sl4A/7JeAP+wXgD/rnEv/wAAAAAAAAAAAAAAAAAAAAAAAAAADJL0/wCL
|
||||
9f8AjPX/AIz2/wCM9f8AjPX/AIz1/wCM9f8AjPX/AIz2/wCM9v8AjPX/AIz1/wCI7v9tm87/v388/7Jf
|
||||
A/+xXgD/sV0A/7JdAP+yXgD/s10A/7JdAP+zXgD/sl0A/7JdAP+yXgD/sl4A/7JeAP+yXQD/sl4A/7Je
|
||||
AP+zXgD/sl4A/7JdAP+xXQD/sF4A/7FeAP+yXgD/sl0A/7JdAP+xXAD/rnAv/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAACpH0/wCM9P8AjvT/AI70/wCO9f8AjvX/AI71/wCO9f8AjfT/AI70/wCO9P8AjvT/AI30/wCI
|
||||
7f9sm83/y5Vc/8B7Mf+/ey3/wHst/8B7LP/Aey3/wHou/8B6Lf/Beyz/wHss/8F8LP/BfCz/wXws/8B7
|
||||
LP/AfC3/wHwt/8B8LP/Aey3/wHou/8B6Lf/AfC3/wHwt/8B9Lf/AfCz/v3st/797LP+/eCz/vIdR/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAANab0/yuj9f8spPT/LKP0/yuj9f8ro/X/K6L1/yyh9f8rovT/K6Pz/yyk
|
||||
9f8so/X/LKP0/yyf7/9/r9f/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY
|
||||
9P8AmPT/AJj0/wCY9P8AmPT/AJj0/wCY9P8AmPT/AAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AA
|
||||
AAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB//+AAAAAAAH//4AAAAAAAf//gAAAAAAB
|
||||
//+AAAAAAAH//4AAAAAAAf//gAAAAAAB4AAAAAAAAAHgAAAAAAAAAeAAAAAAAAAB4AAAAAAAAAHgAAAA
|
||||
AAAAAeAAAAAAAAAB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
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
|
||||
9vUAfvf5AH32+QB+9/kAfvf5AH73+QB/9/kAfvb6AH72/gB/9v8Af/b/AH/2/wB+9v8Af/X/AH71/wB/
|
||||
9f8Ae/T/XY/Q/6xnHf+kWAH/o1cA/6NZAP+kWAD/pFgA/6RYAP+kWAD/pFcA/6BbCv0AAAAAAAAAAAAA
|
||||
AAAajfT/AH70+QGC9f8AgfT/AIL1/wCC9f8AgvX/AIL1/wCC9f8AgvX/AIL1/wCC9v8AgvX/AIL2/wCB
|
||||
9f8AgfX/AIL1/wB99P9dkND/rWcc/6VZAf+lWAD/plkA/6VaAP+mWQD/ploA/6VaAP+mWQD/oloG/gAA
|
||||
AAAAAAAAAAAAAA6I8/8AgvX9AIX1/wCE9P8AhPb/AIT1/wCF9f8AhPX/AIX1/wCF9f8Ahfb/AIX1/wCF
|
||||
9v8Ahfb/AIX1/wCE9f8AhfX/AID0/1yR0P+uaBv/qFwA/6hbAP+oWgD/qFsA/6hbAP+nWwD/qFsA/6da
|
||||
AP+nWwD/p18K/7RaAf+MZjn/CIXy/wCE9P8AhPP/AIT0/wCE9P8AhfX/AYT2/wGE9f8AhfX/AIX1/wCF
|
||||
9f8AhPb/AIT1/wCE9v8Ahfb/AIX1/wCF9v8AgfT/XJTQ/7BpHP+rXQL/ql0A/6tdAP+rXQD/q10B/6td
|
||||
AP+sXQD/q10A/6tdAP6pXQH7sFkA+4tnPfwHhvL/AIT0/gCE8/8AhfX+AIX1/wCE9P0AgvH6AIT2+gCD
|
||||
9voAhfb+AIX2/wCF9f8Ahfb/AIX2/wCF9f8AhfX/AIX1/wCC9P9dk8//sWod/6xeAv+sXQD/rF0A/6xd
|
||||
AP+sXgD/q14A/61dAP+tXgD/rF0A/6teA/+yWwD/jWk+/w+L8/8HifX/CIn0/wiK9f8HifT/CY35/w2U
|
||||
//8bh/P/FI3z/wCG9P8AhvX/AIb1/wCG9f8Ah/b/AIf1/wCG9f8Ah/X/AIP0/12U0P+0bBz/r14B/65c
|
||||
AP+tXAD/rl0A/65dAP+uXQD/rl0A/69dAP+uXAD/rlwA/7BcAP+mYRL/im9F/4hvRf+Kb0X/iW9F/Ihv
|
||||
SP8AAAAAAAAAAAAAAAAAAAAABYrz/gCH9P8Aifb/AIn0/wCI9f8AiPT/AIn0/wCJ9P8AhfP/XJbR/7Vs
|
||||
Hf+wXwL/sF8A/7BfAP+vXgD/r2AA/7BfAP+wYAD/sGAA/7BgAP+wXwD/sGAA/7FfAP+2XQD/t10A/7Zd
|
||||
AP+3XAD6tV0A/wAAAAAAAAAAAAAAAAAAAAAHjfT9AIn1/wCK9v8AivX/AIn2/wCK9f8AivX/AIr1/wCH
|
||||
9P9dl9L/tWkY+69bAPuvWgD7sFsA+7BbAPuwWwD7sFsA+7BbAPuvWwD7r1sA+7BbAPuvWwD7sFsA+65c
|
||||
APuuXAD7rV0A+65bAPesXQP7AAAAAAAAAAAAAAAAAAAAAAKM9PoAiPT7AIn1+wCI9PsAifT7AIn1+wCI
|
||||
9PsAifT7AIXz+1qV0Pu8div/tmoT/7ZoEv+3aRL/t2kS/7doEv+3aRH/t2kS/7dpEf+3aRL/t2kS/7dp
|
||||
Ev+3aBL/tmgS/7ZpEv+2ahL/t2gR/7VpFv8AAAAAAAAAAAAAAAAAAAAAF5f0/xGW8/8RlvP/EZX0/xGW
|
||||
9P8RlfP/EZbz/xKW9P8PkvH/ZZ/T/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC8ZAD/vGQA/7xkAP+8ZAD/vGQA/7xk
|
||||
AP+8ZAD/vGQA/7xkAP+8ZAD/vGQA/9jGsAPcyrYGv3ssA8B8LQO/fCwDv3orA756MAO8hU8CabDcAGm3
|
||||
4gBqteIQAZbx/gGW8f4BlvH+AZbx/gGW8f4BlvH+AZbx/gGW8f4BlvH+A5bx/rxxH/+3ZAb/t2MF/7dj
|
||||
Bf+3YwX/uWQF/7hjBf+3ZAX/uGIF/7ZpFP+8ZAD/zayHANK0kQMAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
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
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
364
HttpHelper.cs
Normal file
364
HttpHelper.cs
Normal file
@ -0,0 +1,364 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.IO.Compression;
|
||||
using System.Net;
|
||||
using System.Net.Security;
|
||||
using System.Net.Sockets;
|
||||
using System.Security.Authentication;
|
||||
using System.Security.Cryptography.X509Certificates;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading;
|
||||
|
||||
namespace EnAliKeywordSearch
|
||||
{
|
||||
public class HttpArgs
|
||||
{
|
||||
public enum HttpMethod
|
||||
{
|
||||
GET,
|
||||
POST
|
||||
}
|
||||
public string Url { get; set; }
|
||||
public string Host { get; set; }
|
||||
public int Port { get; set; }
|
||||
public string Accept { get; set; }
|
||||
public string Referer { get; set; }
|
||||
public string Cookie { get; set; }
|
||||
public string Data { get; set; }
|
||||
public string UA { get; set; }
|
||||
public HttpMethod Method { get; set; }
|
||||
}
|
||||
|
||||
public class HttpHelper
|
||||
{
|
||||
public static int State = 0;
|
||||
public static string ErrMsg = string.Empty;
|
||||
/// <summary>
|
||||
/// 提交方法
|
||||
/// </summary>
|
||||
#region HttpWebRequest & HttpWebResponse
|
||||
|
||||
/// <summary>
|
||||
/// Get方法
|
||||
/// </summary>
|
||||
/// <param name="geturl">请求地址</param>
|
||||
/// <param name="cookieser">Cookies存储器</param>
|
||||
/// <returns>请求返回的Stream</returns>
|
||||
public string Get(string url)
|
||||
{
|
||||
HttpArgs args = ParseURL(url);
|
||||
args.Method = HttpArgs.HttpMethod.GET;
|
||||
string strhtml = InternalSocketHttp(args);
|
||||
return strhtml;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Post方法
|
||||
/// </summary>
|
||||
/// <param name="posturl">请求地址</param>
|
||||
/// <param name="bytes">Post数据</param>
|
||||
/// <param name="cookieser">Cllkies存储器</param>
|
||||
/// <returns>请求返回的流</returns>
|
||||
public string Post(string url,
|
||||
byte[] bytes,
|
||||
CookieContainer cookies,
|
||||
Encoding encoding)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据Url得到host
|
||||
/// </summary>
|
||||
/// <param name="strUrl">url字符串</param>
|
||||
/// <returns>host字符串</returns>
|
||||
private HttpArgs ParseURL(string strUrl)
|
||||
{
|
||||
HttpArgs args = new HttpArgs();
|
||||
|
||||
args.Host = "";
|
||||
args.Port = 80;
|
||||
args.Referer = "";
|
||||
args.Cookie = "";
|
||||
args.Url = "";
|
||||
args.Accept = "text/html";//,application/xhtml+xml,application/xml,application/json;";
|
||||
args.UA = "Mozilla/5.0+(Compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)";
|
||||
|
||||
//http://www.alibaba.com/products/Egg_Laying_Block_Machine/1.html
|
||||
int iIndex = strUrl.IndexOf(@"//");
|
||||
if (iIndex <= 0)
|
||||
return null;
|
||||
//www.alibaba.com:80/products/Egg_Laying_Block_Machine/1.html
|
||||
string nohttpurl = strUrl.Substring(iIndex + 2);
|
||||
string address = nohttpurl;
|
||||
iIndex = nohttpurl.IndexOf(@"/");
|
||||
if (iIndex > 0)
|
||||
{
|
||||
//www.alibaba.com:80
|
||||
address = nohttpurl.Substring(0, iIndex);
|
||||
args.Url = nohttpurl.Substring(iIndex);
|
||||
}
|
||||
iIndex = nohttpurl.IndexOf(@":");
|
||||
if (iIndex > 0)
|
||||
{
|
||||
string[] tempargs = nohttpurl.Trim().Split(char.Parse(":"));
|
||||
args.Host = tempargs[0];
|
||||
args.Port = int.Parse(tempargs[1]);
|
||||
}
|
||||
else
|
||||
{
|
||||
//www.alibaba.com:80
|
||||
args.Host = address;
|
||||
args.Port = 80;
|
||||
}
|
||||
return args;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Socket
|
||||
|
||||
string InternalSocketHttp(HttpArgs args)
|
||||
{
|
||||
using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
|
||||
{
|
||||
try
|
||||
{
|
||||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.SendTimeout, 1000);
|
||||
socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReceiveTimeout, 5000);
|
||||
socket.Connect(args.Host, args.Port);
|
||||
if (socket.Connected)
|
||||
{
|
||||
byte[] buff = ParseHttpArgs(args);
|
||||
if (socket.Send(buff) > 0)
|
||||
{
|
||||
List<byte> responseBytes = new List<byte>();
|
||||
byte[] buffer = new byte[1024];
|
||||
int iNumber = socket.Receive(buffer, buffer.Length, SocketFlags.None);
|
||||
while (iNumber > 0)//使用了Connection: Close 所以判断长度为0 时停止接受
|
||||
{
|
||||
responseBytes.AddRange(new List<byte>(buffer));//添加数据到List
|
||||
iNumber = socket.Receive(buffer, buffer.Length, SocketFlags.None);//继续接收数据
|
||||
}
|
||||
return ParseResponse(responseBytes.ToArray()/*转换List为数组*/, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
ErrMsg = e.Message;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
|
||||
private string ParseResponse(byte[] responseBytes, HttpArgs args)
|
||||
{
|
||||
string responseStr = Encoding.UTF8.GetString(responseBytes);
|
||||
int splitindex = responseStr.IndexOf("\r\n\r\n");
|
||||
if (splitindex > 0)
|
||||
{
|
||||
string responseHeader = responseStr.Substring(0, splitindex);
|
||||
string responseBody = responseStr.Substring(splitindex + 4);
|
||||
|
||||
if (responseHeader.StartsWith("HTTP/1.1 400 Bad Request"))
|
||||
{
|
||||
State = 400;
|
||||
return string.Empty;
|
||||
}
|
||||
else if (responseHeader.StartsWith("HTTP/1.1 404"))
|
||||
{
|
||||
State = 404;
|
||||
return string.Empty;
|
||||
}
|
||||
else if (responseHeader.StartsWith("HTTP/1.1 302") || responseHeader.StartsWith("HTTP/1.1 301"))
|
||||
{
|
||||
State = 302;
|
||||
int start = responseHeader.ToUpper().IndexOf("LOCATION");
|
||||
if (start > 0)
|
||||
{
|
||||
string temp = responseHeader.Substring(start, responseHeader.Length - start);
|
||||
string[] sArry = Regex.Split(temp, "\r\n");
|
||||
args.Url = sArry[0].Remove(0, 10);
|
||||
if (args.Url == "")
|
||||
return string.Empty;
|
||||
return InternalSocketHttp(args); //注意:302协议需要重定向
|
||||
}
|
||||
}
|
||||
else if (responseHeader.StartsWith("HTTP/1.1 200")) //读取内容
|
||||
{
|
||||
State = 200;
|
||||
DecompressWebPage(ref responseBytes, responseHeader);
|
||||
//转码
|
||||
responseBody = DecodeWebStringByHttpHeader(responseBytes, responseHeader);
|
||||
responseBody = DecodeWebStringByHtmlPageInfo(responseBytes, responseBody);
|
||||
}
|
||||
splitindex = responseBody.IndexOf("\r\n\r\n");
|
||||
if (splitindex > 0)
|
||||
responseBody = responseBody.Substring(splitindex + 4);
|
||||
else
|
||||
responseBody = string.Empty;
|
||||
return responseBody;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
#endregion
|
||||
|
||||
#region Helper
|
||||
|
||||
/// <summary>
|
||||
/// 解压网页
|
||||
/// </summary>
|
||||
/// <param name="responseBytes">网页字节数组含http头</param>
|
||||
/// <param name="iTotalCount">数组长度</param>
|
||||
/// <param name="strHeader">Http头字符串</param>
|
||||
/// <param name="iStart">网页正文开始位置</param>
|
||||
private void DecompressWebPage(ref byte[] responseBytes, string strHeader)
|
||||
{
|
||||
Regex regZip = new Regex(@"Content-Encoding:\s+gzip[^\n]*\r\n", RegexOptions.IgnoreCase);
|
||||
|
||||
if (regZip.IsMatch(strHeader))
|
||||
{
|
||||
responseBytes = Decompress(responseBytes);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 解压gzip网页
|
||||
/// </summary>
|
||||
/// <param name="szSource">压缩过的字符串字节数组</param>
|
||||
/// <returns>解压后的字节数组</returns>
|
||||
private byte[] Decompress(byte[] szSource)
|
||||
{
|
||||
MemoryStream msSource = new MemoryStream(szSource);
|
||||
//DeflateStream 也可以这儿
|
||||
GZipStream stream = new GZipStream(msSource, CompressionMode.Decompress);
|
||||
byte[] szTotal = new byte[40 * 1024];
|
||||
long lTotal = 0;
|
||||
byte[] buffer = new byte[8];
|
||||
int iCount = 0;
|
||||
do
|
||||
{
|
||||
iCount = stream.Read(buffer, 0, 8);
|
||||
if (szTotal.Length <= lTotal + iCount) //放大数组
|
||||
{
|
||||
byte[] temp = new byte[szTotal.Length * 10];
|
||||
szTotal.CopyTo(temp, 0);
|
||||
szTotal = temp;
|
||||
}
|
||||
buffer.CopyTo(szTotal, lTotal);
|
||||
lTotal += iCount;
|
||||
} while (iCount != 0);
|
||||
byte[] szDest = new byte[lTotal];
|
||||
Array.Copy(szTotal, 0, szDest, 0, lTotal);
|
||||
return szDest;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据Http头标记里面的字符编码解析字符串
|
||||
/// </summary>
|
||||
/// <param name="responseBytes">网页内容字节数组(除http头以外的内容)</param>
|
||||
/// <param name="iTotalCount">网页内容字节数组长度</param>
|
||||
/// <param name="strHeader">http头的字符串</param>
|
||||
/// <returns>转好的字符串</returns>
|
||||
private string DecodeWebStringByHttpHeader(byte[] responseBytes, string strHeader)
|
||||
{
|
||||
string strResponse = "";
|
||||
if (strHeader.Contains("charset=GBK") || strHeader.Contains("charset=gb2312"))
|
||||
{
|
||||
strResponse = Encoding.GetEncoding("GBK").GetString(responseBytes);
|
||||
}
|
||||
else
|
||||
strResponse = Encoding.UTF8.GetString(responseBytes);
|
||||
return strResponse;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据网页meta标记里面的字符编码解析字符串
|
||||
/// </summary>
|
||||
/// <param name="responseBytes">网页内容字节数组(除http头以外的内容)</param>
|
||||
/// <param name="iTotalCount">网页内容字节数组长度</param>
|
||||
/// <param name="strResponse">网页内容字符串, 可能已经根据其它转码要求转换过的字符串</param>
|
||||
/// <returns>转好的字符串</returns>
|
||||
private string DecodeWebStringByHtmlPageInfo(byte[] responseBytes, string strResponse)
|
||||
{
|
||||
Regex regGB2312 = new Regex(@"<meta[^>]+Content-Type[^>]+gb2312[^>]*>", RegexOptions.IgnoreCase);
|
||||
Regex regGBK = new Regex(@"<meta[^>]+Content-Type[^>]+gbk[^>]*>", RegexOptions.IgnoreCase);
|
||||
Regex regBig5 = new Regex(@"<meta[^>]+Content-Type[^>]+Big5[^>]*>", RegexOptions.IgnoreCase);
|
||||
if (regGB2312.IsMatch(strResponse) || regGBK.IsMatch(strResponse))
|
||||
strResponse = Encoding.GetEncoding("GBK").GetString(responseBytes);
|
||||
if (regBig5.IsMatch(strResponse))
|
||||
strResponse = Encoding.GetEncoding("Big5").GetString(responseBytes);
|
||||
return strResponse;
|
||||
}
|
||||
|
||||
private byte[] ParseHttpArgs(HttpArgs args)
|
||||
{
|
||||
StringBuilder bulider = new StringBuilder();
|
||||
if (args.Method == HttpArgs.HttpMethod.POST)
|
||||
{
|
||||
bulider.AppendLine(string.Format("POST {0} HTTP/1.1", args.Url));
|
||||
bulider.AppendLine("Content-Type: application/x-www-form-urlencoded");
|
||||
}
|
||||
else
|
||||
{
|
||||
bulider.AppendLine(string.Format("GET {0} HTTP/1.1", args.Url));
|
||||
}
|
||||
|
||||
bulider.AppendLine(string.Format("Host: {0}:{1}", args.Host, args.Port));
|
||||
|
||||
bulider.AppendLine("User-Agent: " + args.UA);
|
||||
//"User-Agent: Mozilla/5.0+(Compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)";Mozilla/5.0 (Windows NT 6.1; IE 9.0)
|
||||
if (!string.IsNullOrEmpty(args.Referer))
|
||||
bulider.AppendLine(string.Format("Referer: {0}", args.Referer));
|
||||
|
||||
//bulider.AppendLine("Connection: close");
|
||||
|
||||
bulider.AppendLine("Connection: Close");
|
||||
|
||||
if (!string.IsNullOrEmpty(args.Accept))
|
||||
bulider.AppendLine(string.Format("Accept: {0}", args.Accept));
|
||||
|
||||
if (!string.IsNullOrEmpty(args.Cookie))
|
||||
bulider.AppendLine(string.Format("Cookie: {0}", args.Cookie));
|
||||
|
||||
if (args.Method == HttpArgs.HttpMethod.POST)
|
||||
{
|
||||
bulider.AppendLine(string.Format("Content-Length: {0}\r\n", Encoding.Default.GetBytes(args.Data).Length));
|
||||
bulider.Append(args.Data);
|
||||
}
|
||||
else
|
||||
{
|
||||
bulider.Append("\r\n");
|
||||
}
|
||||
|
||||
string header = bulider.ToString();
|
||||
return Encoding.Default.GetBytes(header);
|
||||
}
|
||||
#endregion
|
||||
|
||||
}
|
||||
|
||||
public class MilliTimer
|
||||
{
|
||||
private static double times { get; set; }
|
||||
public static void start()
|
||||
{
|
||||
times = getTotalMilliseconds();
|
||||
}
|
||||
|
||||
public static double getTimes()
|
||||
{
|
||||
return getTotalMilliseconds() - times;
|
||||
}
|
||||
|
||||
|
||||
public static double getTotalMilliseconds()
|
||||
{
|
||||
return DateTime.Now.Subtract(DateTime.Parse("1970-1-1")).TotalMilliseconds;
|
||||
}
|
||||
}
|
||||
}
|
20
Program.cs
Normal file
20
Program.cs
Normal file
@ -0,0 +1,20 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace EnAliKeywordSearch
|
||||
{
|
||||
static class Program
|
||||
{
|
||||
/// <summary>
|
||||
/// 应用程序的主入口点。
|
||||
/// </summary>
|
||||
[STAThread]
|
||||
static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Application.Run(new Frm_Main());
|
||||
}
|
||||
}
|
||||
}
|
36
Properties/AssemblyInfo.cs
Normal file
36
Properties/AssemblyInfo.cs
Normal file
@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// 有关程序集的常规信息通过以下
|
||||
// 特性集控制。更改这些特性值可修改
|
||||
// 与程序集关联的信息。
|
||||
[assembly: AssemblyTitle("EnAliKeywordSearch")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("Microsoft")]
|
||||
[assembly: AssemblyProduct("EnAliKeywordSearch")]
|
||||
[assembly: AssemblyCopyright("Copyright © Microsoft 2015")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// 将 ComVisible 设置为 false 使此程序集中的类型
|
||||
// 对 COM 组件不可见。 如果需要从 COM 访问此程序集中的类型,
|
||||
// 则将该类型上的 ComVisible 特性设置为 true。
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
|
||||
[assembly: Guid("d436c66a-3341-44b8-8ef1-c2307ea6cbd8")]
|
||||
|
||||
// 程序集的版本信息由下面四个值组成:
|
||||
//
|
||||
// 主版本
|
||||
// 次版本
|
||||
// 生成号
|
||||
// 修订号
|
||||
//
|
||||
// 可以指定所有这些值,也可以使用“生成号”和“修订号”的默认值,
|
||||
// 方法是按如下所示使用“*”:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
63
Properties/Resources.Designer.cs
generated
Normal file
63
Properties/Resources.Designer.cs
generated
Normal file
@ -0,0 +1,63 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.18444
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace SEOKeywordSearch.Properties {
|
||||
using System;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 一个强类型的资源类,用于查找本地化的字符串等。
|
||||
/// </summary>
|
||||
// 此类是由 StronglyTypedResourceBuilder
|
||||
// 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
|
||||
// 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
|
||||
// (以 /str 作为命令选项),或重新生成 VS 项目。
|
||||
[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>
|
||||
/// 返回此类使用的缓存的 ResourceManager 实例。
|
||||
/// </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("SEOKeywordSearch.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 使用此强类型资源类,为所有资源查找
|
||||
/// 重写当前线程的 CurrentUICulture 属性。
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture {
|
||||
get {
|
||||
return resourceCulture;
|
||||
}
|
||||
set {
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
117
Properties/Resources.resx
Normal file
117
Properties/Resources.resx
Normal file
@ -0,0 +1,117 @@
|
||||
<?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.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: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" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
</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" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
</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=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
26
Properties/Settings.Designer.cs
generated
Normal file
26
Properties/Settings.Designer.cs
generated
Normal file
@ -0,0 +1,26 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// 此代码由工具生成。
|
||||
// 运行时版本:4.0.30319.18444
|
||||
//
|
||||
// 对此文件的更改可能会导致不正确的行为,并且如果
|
||||
// 重新生成代码,这些更改将会丢失。
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace SEOKeywordSearch.Properties {
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
7
Properties/Settings.settings
Normal file
7
Properties/Settings.settings
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)">
|
||||
<Profiles>
|
||||
<Profile Name="(Default)" />
|
||||
</Profiles>
|
||||
<Settings />
|
||||
</SettingsFile>
|
32
SEOCPM.sln
Normal file
32
SEOCPM.sln
Normal file
@ -0,0 +1,32 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 2013
|
||||
VisualStudioVersion = 12.0.21005.1
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SEOKeywordSearch", "SEOKeywordSearch.csproj", "{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|Mixed Platforms = Debug|Mixed Platforms
|
||||
Debug|x86 = Debug|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|Mixed Platforms = Release|Mixed Platforms
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
EndGlobal
|
96
SEOKeywordSearch.csproj
Normal file
96
SEOKeywordSearch.csproj
Normal file
@ -0,0 +1,96 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.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>{118BA2B4-EB09-4A14-A7AA-6C4350B63DC2}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>SEOKeywordSearch</RootNamespace>
|
||||
<AssemblyName>SEOKeywordSearch</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<TargetFrameworkProfile />
|
||||
</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>
|
||||
<StartupObject />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<ApplicationIcon>icon.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Web" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Deployment" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Config.cs" />
|
||||
<Compile Include="Frm_Main.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Frm_Main.Designer.cs">
|
||||
<DependentUpon>Frm_Main.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="HttpHelper.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Frm_Main.resx">
|
||||
<DependentUpon>Frm_Main.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="app.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>
|
||||
<Content Include="icon.ico" />
|
||||
</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>
|
3
app.config
Normal file
3
app.config
Normal file
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<configuration>
|
||||
<startup><supportedRuntime version="v2.0.50727"/></startup></configuration>
|
Loading…
Reference in New Issue
Block a user