diff options
author | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-01-25 15:05:13 +0300 |
---|---|---|
committer | Alexey 'Cluster' Avdyukhin <clusterrr@clusterrr.com> | 2017-01-25 15:05:13 +0300 |
commit | c2a66b5b7a52df7f387a51d1edd9d5ee4a69596f (patch) | |
tree | b67849dab7386c7ade35bb8c5c68a75b0a1d87d7 /ImageGooglerForm.cs | |
parent | 5dc67c2d6c0aa1c156abcce8bbf37cce09ad6421 (diff) |
Mass cover downloading
Diffstat (limited to 'ImageGooglerForm.cs')
-rw-r--r-- | ImageGooglerForm.cs | 290 |
1 files changed, 145 insertions, 145 deletions
diff --git a/ImageGooglerForm.cs b/ImageGooglerForm.cs index edbbca01..425aacb8 100644 --- a/ImageGooglerForm.cs +++ b/ImageGooglerForm.cs @@ -1,44 +1,45 @@ -using com.clusterrr.hakchi_gui.Properties; -using System; -using System.Collections.Generic; -using System.ComponentModel; -using System.Data; -using System.Drawing; -using System.IO; -using System.Linq; -using System.Net; -using System.Text; -using System.Text.RegularExpressions; -using System.Threading; -using System.Web; -using System.Windows.Forms; - -namespace com.clusterrr.hakchi_gui -{ - public partial class ImageGooglerForm : Form - { - Thread searchThread; - Image result; - public Image Result - { - get { return result; } - } - - public ImageGooglerForm(string query) - { - InitializeComponent(); - Text = "Google Images - " + query; - searchThread = new Thread(SearchThread); - searchThread.Start(query); - } - - string[] GetImageUrls(string query) - { - var url = string.Format("https://www.google.com/search?q={0}&source=lnms&tbm=isch", HttpUtility.UrlEncode(query)); - var request = WebRequest.Create(url); - request.Credentials = CredentialCache.DefaultCredentials; - (request as HttpWebRequest).UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"; - request.Timeout = 10000; +using com.clusterrr.hakchi_gui.Properties;
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.IO;
+using System.Linq;
+using System.Net;
+using System.Text;
+using System.Text.RegularExpressions;
+using System.Threading;
+using System.Web;
+using System.Windows.Forms;
+
+namespace com.clusterrr.hakchi_gui
+{
+ public partial class ImageGooglerForm : Form
+ {
+ public const string Suffix = " nes box art";
+ Thread searchThread;
+ Image result;
+ public Image Result
+ {
+ get { return result; }
+ }
+
+ public ImageGooglerForm(string query)
+ {
+ InitializeComponent();
+ Text = "Google Images - " + query;
+ searchThread = new Thread(SearchThread);
+ searchThread.Start(query);
+ }
+
+ public static string[] GetImageUrls(string query)
+ {
+ var url = string.Format("https://www.google.com/search?q={0}&source=lnms&tbm=isch", HttpUtility.UrlEncode(query));
+ var request = WebRequest.Create(url);
+ request.Credentials = CredentialCache.DefaultCredentials;
+ (request as HttpWebRequest).UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
+ request.Timeout = 10000;
var response = request.GetResponse();
Stream dataStream = response.GetResponseStream();
StreamReader reader = new StreamReader(dataStream);
@@ -61,108 +62,107 @@ namespace com.clusterrr.hakchi_gui urls.Add(match.Groups[1].Value);
}
- return urls.ToArray(); - } - - void SearchThread(object o) - { - try - { - var urls = GetImageUrls(o as string); - foreach (var url in urls) - { - //new Thread(DownloadImageThread).Start(url); - try - { - var image = DownloadImage(url); - ShowImage(image); - } - catch { } - } - - } - catch (ThreadAbortException) - { - } - catch (Exception ex) - { - MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); - } - finally - { - searchThread = null; - } - } - - void DownloadImageThread(object o) - { - try - { - var image = DownloadImage(o as string); - ShowImage(image); - } - catch { } - } - - protected void ShowImage(Image image) - { - try - { - if (this.Disposing) return; - if (InvokeRequired) - { - Invoke(new Action<Image>(ShowImage), new object[] { image }); - return; - } - int i = imageList.Images.Count; - const int side = 204; - var imageRect = new Bitmap(side, side, System.Drawing.Imaging.PixelFormat.Format24bppRgb); - var gr = Graphics.FromImage(imageRect); - gr.Clear(Color.White); - if (image.Height > image.Width) - gr.DrawImage(image, new Rectangle((side - side * image.Width / image.Height) / 2, 0, side * image.Width / image.Height, side), - new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel); - else - gr.DrawImage(image, new Rectangle(0, (side - side * image.Height / image.Width) / 2, side, side * image.Height / image.Width), - new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel); - gr.Flush(); - imageList.Images.Add(imageRect); - var item = new ListViewItem(image.Width + "x" + image.Height); - item.ImageIndex = i; - item.Tag = image; - listView.Items.Add(item); - } - catch { } - } - - - Image DownloadImage(string url) - { - var request = HttpWebRequest.Create(url); - request.Credentials = CredentialCache.DefaultCredentials; - request.Timeout = 5000; - ((HttpWebRequest)request).UserAgent = - "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"; - ((HttpWebRequest)request).KeepAlive = false; - var response = (HttpWebResponse)request.GetResponse(); - Stream dataStream = response.GetResponseStream(); - var image = Image.FromStream(dataStream); - dataStream.Dispose(); - response.Close(); - return image; - } - - private void listView_DoubleClick(object sender, EventArgs e) - { - if (listView.SelectedItems.Count == 0) return; - DialogResult = System.Windows.Forms.DialogResult.OK; - result = listView.SelectedItems[0].Tag as Image; - Close(); - } - - private void ImageGooglerForm_FormClosing(object sender, FormClosingEventArgs e) - { + return urls.ToArray();
+ }
+
+ void SearchThread(object o)
+ {
+ try
+ {
+ var urls = GetImageUrls(o as string);
+ foreach (var url in urls)
+ {
+ //new Thread(DownloadImageThread).Start(url);
+ try
+ {
+ var image = DownloadImage(url);
+ ShowImage(image);
+ }
+ catch { }
+ }
+
+ }
+ catch (ThreadAbortException)
+ {
+ }
+ catch (Exception ex)
+ {
+ MessageBox.Show(ex.Message, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error);
+ }
+ finally
+ {
+ searchThread = null;
+ }
+ }
+
+ void DownloadImageThread(object o)
+ {
+ try
+ {
+ var image = DownloadImage(o as string);
+ ShowImage(image);
+ }
+ catch { }
+ }
+
+ protected void ShowImage(Image image)
+ {
+ try
+ {
+ if (this.Disposing) return;
+ if (InvokeRequired)
+ {
+ Invoke(new Action<Image>(ShowImage), new object[] { image });
+ return;
+ }
+ int i = imageList.Images.Count;
+ const int side = 204;
+ var imageRect = new Bitmap(side, side, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
+ var gr = Graphics.FromImage(imageRect);
+ gr.Clear(Color.White);
+ if (image.Height > image.Width)
+ gr.DrawImage(image, new Rectangle((side - side * image.Width / image.Height) / 2, 0, side * image.Width / image.Height, side),
+ new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
+ else
+ gr.DrawImage(image, new Rectangle(0, (side - side * image.Height / image.Width) / 2, side, side * image.Height / image.Width),
+ new Rectangle(0, 0, image.Width, image.Height), GraphicsUnit.Pixel);
+ gr.Flush();
+ imageList.Images.Add(imageRect);
+ var item = new ListViewItem(image.Width + "x" + image.Height);
+ item.ImageIndex = i;
+ item.Tag = image;
+ listView.Items.Add(item);
+ }
+ catch { }
+ }
+
+ public static Image DownloadImage(string url)
+ {
+ var request = HttpWebRequest.Create(url);
+ request.Credentials = CredentialCache.DefaultCredentials;
+ request.Timeout = 5000;
+ ((HttpWebRequest)request).UserAgent =
+ "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4";
+ ((HttpWebRequest)request).KeepAlive = false;
+ var response = (HttpWebResponse)request.GetResponse();
+ Stream dataStream = response.GetResponseStream();
+ var image = Image.FromStream(dataStream);
+ dataStream.Dispose();
+ response.Close();
+ return image;
+ }
+
+ private void listView_DoubleClick(object sender, EventArgs e)
+ {
+ if (listView.SelectedItems.Count == 0) return;
+ DialogResult = System.Windows.Forms.DialogResult.OK;
+ result = listView.SelectedItems[0].Tag as Image;
+ Close();
+ }
+
+ private void ImageGooglerForm_FormClosing(object sender, FormClosingEventArgs e)
+ {
if (searchThread != null) searchThread.Abort();
- } - } -} + }
+ }
+}
|