Exemplo n.º 1
0
        public async Task StringAsync([Remainder] string searchterm)
        {
            //Setup and send search request
            var request = new ImageSearchRequest();

            request.Query          = searchterm;
            request.Key            = Environment.GetEnvironmentVariable("API_KEY");
            request.SearchEngineId = Environment.GetEnvironmentVariable("SEARCH_ENGINE_ID");

            //Gets the search response - contains info about search
            var response =
                await GoogleSearch.ImageSearch.QueryAsync(request);

            //Pick a random search result
            var items  = response.Items.ToArray();
            var random = new Random();
            var item   = items[random.Next(0, items.Length)];

            //Create an embed using that image url
            var builder = new EmbedBuilder();

            builder.WithTitle("Stringsearch!");
            builder.WithImageUrl(item.Link);
            builder.WithColor(3447003);

            //Send message
            await Context.Channel.SendMessageAsync("", false, builder.Build());

            Console.WriteLine("Stringsearch! - " + searchterm + " " + item.Link);

            //Do an image classification prediction for stringsearch images as well
            CommandHandler.MakePrediction(item.Link, Context);
            GC.Collect();
            //Call the prediction method
        }
Exemplo n.º 2
0
        public async Task Execute(SocketMessage message)
        {
            try
            {
                string[] args = message.Content.Split(' ');
                if (args.Length == 0)
                {
                    return;
                }

                string search = string.Join(' ', args.Skip(1));

                if (string.IsNullOrWhiteSpace(search))
                {
                    return;
                }

                string token = await File.ReadAllTextAsync("google-token.txt").ConfigureAwait(false);

                var request = new ImageSearchRequest()
                {
                    Query          = search,
                    Key            = token,
                    SearchEngineId = "005052579021300564037:vtmq_gkuoog"
                };
                var response = await GoogleSearch.ImageSearch.QueryAsync(request).ConfigureAwait(false);

                RootObject result = JsonConvert.DeserializeObject <RootObject>(response.RawJson);


                if (result.items.Count == 0)
                {
                    await message.Channel.SendMessageAsync("Beep bop, sorry could not find anything for your request");

                    return;
                }

                using (var webclient = new WebClient())
                {
                    var item = result.items[0];

                    string path = Path.GetTempPath();

                    string filename = Path.GetFileName(item.link.Split('?')[0]);
                    string filepath = Path.Combine(path, filename);


                    await webclient.DownloadFileTaskAsync(item.link, filepath).ConfigureAwait(false);

                    await message.Channel.SendFileAsync(filepath).ConfigureAwait(false);

                    File.Delete(filepath);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
Exemplo n.º 3
0
        public void GetQueryStringParametersTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = "abc",
                SearchEngineId = "abc",
                Query          = "abc"
            };

            Assert.DoesNotThrow(() => request.GetQueryStringParameters());
        }
Exemplo n.º 4
0
        public void ImageSearchWhenKeyIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key = null
            };

            var exception = Assert.Throws <ArgumentException>(() => GoogleSearch.ImageSearch.Query(request));

            Assert.AreEqual(exception.Message, "Key is required");
        }
Exemplo n.º 5
0
        public void ImageSearchWhenQueryIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                SearchEngineId = this.SearchEngineId,
                Query          = null
            };

            var exception = Assert.Throws <ArgumentException>(() => GoogleSearch.ImageSearch.Query(request));

            Assert.AreEqual(exception.Message, "Query is required.");
        }
Exemplo n.º 6
0
        public void ConstructorDefaultTest()
        {
            var request = new ImageSearchRequest();

            Assert.IsTrue(request.PrettyPrint);
            Assert.AreEqual(request.Alt, AltType.Json);

            Assert.IsNotNull(request.ImageOptions);
            Assert.IsNull(request.ImageOptions.ImageSize);
            Assert.IsNull(request.ImageOptions.ImageType);
            Assert.IsNull(request.ImageOptions.ImageColorType);
            Assert.IsNull(request.ImageOptions.ImageDominantColor);
        }
Exemplo n.º 7
0
        public void GetUriTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = "abc",
                SearchEngineId = "abc",
                Query          = "abc"
            };

            var uri = request.GetUri();

            Assert.IsNotNull(uri);
            Assert.AreEqual($"/customsearch/v1?key={request.Key}&q={request.Query}&cx={request.SearchEngineId}&alt={request.Alt.ToString().ToLower()}&prettyPrint={request.PrettyPrint.ToString().ToLower()}&userIp={request.UserIp}&quotaUser={request.QuotaUser}&c2coff=1&fileType={string.Join(",", request.Options.FileTypes)}&filter=0&hl={request.Options.InterfaceLanguage.ToHl()}&num={request.Options.Number}&rights={string.Join(",", request.Options.Rights)}&safe={request.Options.SafetyLevel.ToString().ToLower()}&searchType=image&start={request.Options.StartIndex.ToString()}", uri.PathAndQuery);
        }
Exemplo n.º 8
0
        /// <summary>
        /// Perform a bing image search and return the top image.
        /// </summary>
        /// <param name="celebrity">The celebrity to search for.</param>
        /// <returns>The description of the celebrity.</returns>
        private async Task <Image> SearchForImage(string searchText)
        {
            var client = new ImageSearchClient(SEARCH_KEY);

            client.Url = SEARCH_API; // force use of v7 api

            var request = new ImageSearchRequest()
            {
                Query = searchText
            };
            var response = await client.GetImagesAsync(request);

            return(response.Images.FirstOrDefault());
        }
Exemplo n.º 9
0
        public void GetQueryStringParametersWhenKeyIsStringEmptyTest()
        {
            var request = new ImageSearchRequest
            {
                Key = string.Empty
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.AreEqual(exception.Message, "Key is required");
        }
Exemplo n.º 10
0
        public void ImageSearchAsyncTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                SearchEngineId = this.SearchEngineId,
                Query          = "google"
            };

            var response = GoogleSearch.ImageSearch.QueryAsync(request).Result;

            Assert.IsNotNull(response);
            Assert.IsNotEmpty(response.Items);
            Assert.AreEqual(response.Kind, "customsearch#search");
            Assert.AreEqual(response.Status, Status.Ok);
        }
Exemplo n.º 11
0
        public void GetQueryStringParametersWhenQueryIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key   = "abc",
                Query = null
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.AreEqual(exception.Message, "Query is required");
        }
        public void GetImagesTest()
        {
            var request = new ImageSearchRequest();

            request.Query      = "cats";
            request.Count      = 10;
            request.Offset     = 0;
            request.Market     = "en-US";
            request.SafeSearch = SafeSearch.Moderate;

            var client = new ImageSearchClient(this.apiKey);

            var response = client.GetImages(request);

            Assert.IsTrue(response.Images.Count > 0);
        }
Exemplo n.º 13
0
        public void ImageSearchWhenKeyIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key = null
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleSearch.ImageSearch.QueryAsync(request).Wait());

            Assert.IsNotNull(exception);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Key is required");
        }
Exemplo n.º 14
0
        public void GetQueryStringParametersWhenSearchEngineIdIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                Query          = "google",
                SearchEngineId = null
            };

            var exception = Assert.Throws <ArgumentException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.AreEqual(exception.Message, "SearchEngineId is required");
        }
Exemplo n.º 15
0
        public void ImageSearchWhenQueryIsNullTest()
        {
            var request = new ImageSearchRequest
            {
                Key   = this.ApiKey,
                Query = null
            };

            var exception = Assert.Throws <AggregateException>(() => GoogleSearch.ImageSearch.Query(request));

            Assert.IsNotNull(exception);
            Assert.AreEqual("One or more errors occurred.", exception.Message);

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(typeof(GoogleApiException), innerException.GetType());
            Assert.AreEqual(innerException.Message, "Query is required");
        }
Exemplo n.º 16
0
        public void ImageSearchWhenAsyncAndCancelledTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                SearchEngineId = this.SearchEngineId,
                Query          = "google"
            };

            var cancellationTokenSource = new CancellationTokenSource();
            var task = GoogleSearch.ImageSearch.QueryAsync(request, cancellationTokenSource.Token);

            cancellationTokenSource.Cancel();

            var exception = Assert.Throws <OperationCanceledException>(() => task.Wait(cancellationTokenSource.Token));

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "The operation was canceled.");
        }
Exemplo n.º 17
0
        public void ImageSearchTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                SearchEngineId = this.SearchEngineId,
                Query          = "google"
            };

            var response = GoogleSearch.ImageSearch.Query(request);

            Assert.IsNotNull(response);
            Assert.IsNotEmpty(response.Items);
            Assert.AreEqual(response.Kind, "customsearch#search");
            Assert.AreEqual(response.Status, Status.Ok);

            Assert.IsNotNull(response.Url);
            Assert.AreEqual(response.Url.Type, "application/json");
            Assert.AreEqual(response.Url.Template, "https://www.googleapis.com/customsearch/v1?q={searchTerms}&num={count?}&start={startIndex?}&lr={language?}&safe={safe?}&cx={cx?}&sort={sort?}&filter={filter?}&gl={gl?}&cr={cr?}&googlehost={googleHost?}&c2coff={disableCnTwTranslation?}&hq={hq?}&hl={hl?}&siteSearch={siteSearch?}&siteSearchFilter={siteSearchFilter?}&exactTerms={exactTerms?}&excludeTerms={excludeTerms?}&linkSite={linkSite?}&orTerms={orTerms?}&relatedSite={relatedSite?}&dateRestrict={dateRestrict?}&lowRange={lowRange?}&highRange={highRange?}&searchType={searchType}&fileType={fileType?}&rights={rights?}&imgSize={imgSize?}&imgType={imgType?}&imgColorType={imgColorType?}&imgDominantColor={imgDominantColor?}&alt=json");

            Assert.IsNotNull(response.Search);
            Assert.Greater(response.Search.SearchTime, 0.00);
            Assert.IsNotEmpty(response.Search.SearchTimeFormatted);
            Assert.Greater(response.Search.TotalResults, 0);
            Assert.IsNotEmpty(response.Search.TotalResultsFormatted);

            var context = response.Context;

            Assert.IsNotNull(context);
            Assert.AreEqual(context.Title, "Google Web");

            var items = response.Items;

            Assert.IsNotNull(items);

            var item = response.Items.FirstOrDefault();

            Assert.IsNotNull(item);
            Assert.IsNotNull(item.Link);
            Assert.IsNotNull(item.Title);
            Assert.IsNotNull(item.DisplayLink);
        }
Exemplo n.º 18
0
        public void GetQueryStringParametersWhenOptionsNumberIsGreaterThanNineTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = "abc",
                Query          = "google",
                SearchEngineId = "abc",
                Options        =
                {
                    Number = 11
                }
            };

            var exception = Assert.Throws <InvalidOperationException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.AreEqual(exception.Message, "Number must be between 1 and 10");
        }
Exemplo n.º 19
0
        public async Task StringAsync()
        {
            //Setup and send search request
            ImageSearchRequest request = new ImageSearchRequest();
            Random             random  = new Random(); //Nice

            request.Options.StartIndex =
                random.Next(0, 190); //Max limit may change and result in 400 Bad Request responses
            request.Query          = "Ball of String";
            request.Key            = Environment.GetEnvironmentVariable("API_KEY");
            request.SearchEngineId = Environment.GetEnvironmentVariable("SEARCH_ENGINE_ID");

            //Gets the search response - contains info about search
            BaseSearchResponse response;

            try {
                response =
                    await GoogleSearch.ImageSearch.QueryAsync(request);
            } catch (Exception e) {
                Console.WriteLine("Error: " + e.Message);
                return;
            }

            //Pick a random search result
            var items = response.Items.ToArray();
            var index = random.Next(0, items.Length);
            var item  = items[index];

            //Create an embed using that image url
            EmbedBuilder builder = new EmbedBuilder();

            builder.WithTitle("String!");
            builder.WithImageUrl(item.Link);
            builder.WithColor(3447003);

            //Send message
            await Context.Channel.SendMessageAsync("", false, builder.Build());

            Console.WriteLine("String! - " + item.Link + " " + (response.Query.StartIndex + index));
        }
Exemplo n.º 20
0
        public void GetQueryStringParametersWhenSafetyLevelInterfaceLanguageIsNotSupportedTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = "abc",
                Query          = "google",
                SearchEngineId = "abc",
                Options        =
                {
                    SafetyLevel       = SafetyLevel.Medium,
                    InterfaceLanguage = Language.Afrikaans
                }
            };

            var exception = Assert.Throws <InvalidOperationException>(() =>
            {
                var parameters = request.GetQueryStringParameters();
                Assert.IsNull(parameters);
            });

            Assert.AreEqual(exception.Message, $"SafetyLevel is not allowed for specified InterfaceLanguage: {request.Options.InterfaceLanguage}");
        }
Exemplo n.º 21
0
        public void ImageSearchWhenAsyncAndTimeoutTest()
        {
            var request = new ImageSearchRequest
            {
                Key            = this.ApiKey,
                SearchEngineId = this.SearchEngineId,
                Query          = "google"
            };

            var exception = Assert.Throws <AggregateException>(() =>
            {
                var result = GoogleSearch.ImageSearch.QueryAsync(request, TimeSpan.FromMilliseconds(1)).Result;
                Assert.IsNull(result);
            });

            Assert.IsNotNull(exception);
            Assert.AreEqual(exception.Message, "One or more errors occurred.");

            var innerException = exception.InnerException;

            Assert.IsNotNull(innerException);
            Assert.AreEqual(innerException.GetType(), typeof(TaskCanceledException));
            Assert.AreEqual(innerException.Message, "A task was canceled.");
        }
Exemplo n.º 22
0
        /// <summary>
        /// Main entry point for ImageVerifier application
        /// </summary>
        /// <param name="args">Represents path to tab delimited file or a single ImageID GUID</param>
        /// **TBD** Needs to be refactored to several classes. Option to compare images for a single imageId
        ///
        static void Main(string[] args)
        {
            List <string> imageIDs = new List <string>();
            string        line     = null;

            //using (StreamReader file = new StreamReader(@"C:\Users\V-saeld\Desktop\Image\ImageID.txt"))
            using (StreamReader file = new StreamReader(@"..\..\999.txt"))
            {
                while ((line = file.ReadLine()) != null)
                {
                    char[]   delimiters = new char[] { '\t' };
                    string[] parts      = line.Split(delimiters, StringSplitOptions.RemoveEmptyEntries);
                    for (int i = 0; i < parts.Length; i++)
                    {
                        imageIDs.Add(parts[i]);
                    }
                }
                file.Close();
            }
            string results = @"C:\Users\v-saeld\Desktop\results.log";

            using (StreamWriter logWriter = new StreamWriter(results))
            {
                foreach (string imageID in imageIDs)
                {
                    logWriter.WriteLine("ImageID: {0}", imageID);
                    Console.WriteLine("ImageID: {0}", imageID);
                    CatalogServices    cs = Constants.Proxy;
                    ImageSearchRequest imageSearchRequest      = new ImageSearchRequest();
                    List <ImageVerifier.ImInstDisplay> list    = new List <ImageVerifier.ImInstDisplay>();
                    Dictionary <Guid, string>          dictUrl = new Dictionary <Guid, string>();
                    ImageVerifier.MVAProxy.Image       image   = null;
                    ImageVerifier.ImInstDisplay        im      = new ImageVerifier.ImInstDisplay();
                    im.ImageID = new Guid(imageID);
                    image      = cs.GetImage(im.ImageID);
                    int OriginalImageSizeID  = 0;
                    int ThumbnailImageSizeID = 4;
                    List <ImageVerifier.MVAProxy.ImageSize> imageSizes = ImageVerifier.MVAProxy.ImageSize.Get();
                    ImageVerifier.ImInstDisplay             imInstDisplay = new ImageVerifier.ImInstDisplay();
                    int    originalImageFileWidth = 0, originalImageFileHeight = 0, originalImageFileSize = 0;
                    string originalImageFileExtension = string.Empty;
                    bool   originalFileAvailable = false;
                    bool   originalFileinSanAvailable = true;
                    foreach (ImageInstance iminst in image.Instances)
                    {
                        if (iminst.ImageSizeId == OriginalImageSizeID)
                        {
                            im.OriginalFileGuid = iminst.Id;
                            ImageFileHandler.GetImageFileProperty(iminst.Id, out originalImageFileWidth, out originalImageFileHeight, out originalImageFileSize, out originalImageFileExtension);
                            if (originalImageFileWidth == 0 && originalImageFileHeight == 0 && originalImageFileSize == 0)
                            {
                                Console.WriteLine("ImageID: {0} - There is no image in San folder-{1}.", imageID, originalImageFileExtension);
                                logWriter.WriteLine("ImageID: {0} - There is no image in San folder-{1}.", imageID, originalImageFileExtension);
                                originalFileinSanAvailable = false;
                                break;
                            }
                            else
                            {
                                originalFileAvailable = true;
                                continue;
                            }
                        }
                        else if (iminst.ImageSizeId == ThumbnailImageSizeID)
                        {
                            continue;
                        }
                        else
                        {
                            imInstDisplay.LiveURL = iminst.FileUrl;
                            dictUrl.Add(iminst.Id, imInstDisplay.LiveURL.ToString());
                        }
                    }
                    Hashtable propImageList = new Hashtable();
                    foreach (ImageInstance iminst in image.Instances)
                    {
                        if (!originalFileinSanAvailable)
                        {
                            break;
                        }
                        string sourceImageFileExtension = string.Empty;
                        int    sourceImageFileWidth = 0, sourceImageFileHeight = 0, sourceImageFileSize = 0;
                        int    thumbNailImageSizeID = 4;
                        if (!originalFileAvailable)
                        {
                            logWriter.WriteLine("ImageID: {0}-There is no original image.", imageID);
                            Console.WriteLine("ImageID: {0}-There is no original image.", imageID);
                            break;
                        }
                        ImageFileHandler.GetImageFileProperty(iminst.Id, out sourceImageFileWidth, out sourceImageFileHeight, out sourceImageFileSize, out sourceImageFileExtension);
                        if (iminst.ImageSizeId == OriginalImageSizeID || iminst.ImageSizeId == thumbNailImageSizeID)
                        {
                            continue;
                        }
                        ImageSize imSize1 = new ImageSize();
                        imSize1.Id     = iminst.ImageSizeId;
                        imSize1.Width  = sourceImageFileWidth;
                        imSize1.Height = sourceImageFileHeight;
                        propImageList.Add(iminst.Id, imSize1);
                    }
                    if (originalFileAvailable && originalFileinSanAvailable)
                    {
                        Dictionary <Guid, System.Drawing.Image> dictDestImages = ImageFileHandler.PropImage(image, propImageList, im.OriginalFileGuid);
                        Dictionary <Guid, System.Drawing.Image> dictImages     = new Dictionary <Guid, System.Drawing.Image>();
                        foreach (var pair in dictUrl)
                        {
                            System.Drawing.Image ima = ImageUtil.DownloadImage(pair.Value);
                            dictImages.Add(pair.Key, ima);
                        }
                        foreach (KeyValuePair <Guid, System.Drawing.Image> Origkvp in dictImages)
                        {
                            foreach (KeyValuePair <Guid, System.Drawing.Image> kvp in dictDestImages)
                            {
                                if (Origkvp.Key == kvp.Key)
                                {
                                    bool IsImageSame = ImageUtil.DiffImages(kvp.Value, Origkvp.Value);
                                    if (!IsImageSame)
                                    {
                                        logWriter.WriteLine("InstanceID: {0} Different image.", kvp.Key);
                                        Console.WriteLine("InstanceID: {0} Different image.", kvp.Key);
                                    }
                                    else
                                    {
                                        logWriter.WriteLine("InstanceID: {0} Same image.", kvp.Key);
                                        Console.WriteLine("InstanceID: {0} Same image.", kvp.Key);
                                    }
                                }
                            }
                        }
                    }
                }
                Console.ReadLine();
            }
        }
        public void ValidateTest_QueryNotSpecified()
        {
            var request = new ImageSearchRequest();

            request.Validate();
        }