DeepMindApi
unknown
csharp
4 years ago
8.9 kB
12
Indexable
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp4
{
public class DeepMindApi
{
string url_service;
string suffix_image_service;
string api_key;
string username_patner;
string password_patner;
public class DeepResponseRaw
{
public int error_code;
public string error;
public string answer;
}
public DeepMindApi(string url_service,string suffiximg, string api_key, string username_patner, string password_patner)
{
this.url_service = url_service;
this.api_key = api_key;
this.username_patner = username_patner;
this.password_patner = password_patner;
this.suffix_image_service = suffiximg;
}
/*
Esempi di risposta
POSITIVA
response_code = 200
steps, direction
NEGATIVE
CONTROLLI LATO CLIENT
response_code = 900
response_message = Descrizione Errore
CONTROLLI LATO SERVICE ( SOLVED BY AI )
response_code >= 400 <= 500
response_message = DESCRIZIONE ERRORE ( NON AUTORIZZATO, CREDITO FINITO, ERRORI NELLA RICHIESTA)
*/
public CaptchaResolutorResponse SolveCaptcha(byte[] img_input,string captcha_id,int imgNumber)
{
CaptchaResolutorResponse res = new CaptchaResolutorResponse();
if (img_input != null)
{
string base64_img = Convert.ToBase64String(img_input);
if (base64_img != null && base64_img.Length > 0)
{
string json = null;
using (var client = new WebClient())
{
json = encode_params_solve_captcha(this.api_key,base64_img,imgNumber,captcha_id);
client.Headers.Add("content-type", "application/json");
try
{
string url = this.url_service + "" + this.suffix_image_service;
string response = Encoding.ASCII.GetString(client.UploadData(url, "POST", Encoding.UTF8.GetBytes(json)));
DeepResponseRaw raw = JsonConvert.DeserializeObject<DeepResponseRaw>(response);
if (raw != null)
{
if(raw.answer!=null && raw.answer.Length > 0)
{
var isNumeric = float.TryParse(raw.answer, out _);
if (isNumeric == true)
{
raw.answer = raw.answer.Replace(".", ",");
var angle = (int)Convert.ToDouble(raw.answer);
res.Steps = (int)angle / 40;
if(res.Steps < (9-res.Steps))
res.Direction = "RIGHT";
else
{
res.Direction = "LEFT";
res.Steps = (9-res.Steps);
}
}
}
else
{
if(raw.error_code!=null && raw.error != null)
{
res.Response_code= raw.error_code;
res.Message = raw.error;
}
else
{
res.Response_code = 900;
res.Message = "NO RESULTS";
}
}
}
else
{
res.Response_code = 900;
res.Message = "NO RESULTS";
}
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
if (ex.GetType().Name == "WebException")
{
WebException we = (WebException)ex;
HttpWebResponse response = (System.Net.HttpWebResponse)we.Response;
res.Response_code = (int)response.StatusCode;
res.Message = response.StatusDescription;
}
else
{
res.Response_code = 402;
res.Message = "BAD RESPONSE";
}
}
}
}
else
{
res.Response_code = 900;
res.Message = "BASE 64 IMAGE CORRUPTED";
}
}
else
{
res.Response_code = 900;
res.Message = "NO IMAGE";
}
return res;
}
public void ValidateResolution(int status, string captcha_id, int n_imges)
{
CaptchaResolutorResponse res = new CaptchaResolutorResponse();
if (status != null && captcha_id!=null && n_imges!=null)
{
string json = null;
using (var client = new WebClient())
{
json = encode_params_validate_resolution(this.api_key,status+"",n_imges,captcha_id);
client.Headers.Add("content-type", "application/json");
try
{
string url = this.url_service;
Encoding.ASCII.GetString(client.UploadData(url, "POST", Encoding.UTF8.GetBytes(json)));
}
catch (Exception ex)
{
Console.WriteLine("{0} Exception caught.", ex);
}
}
}
}
public string encode_params_solve_captcha(string api_key, string base64_image, int img_number, string captcha_id)
{
string json = null;
if (api_key != null && img_number != null && base64_image != null && captcha_id != null)
{
Dictionary<string,object> valuePairs = new Dictionary<string, object>
{
{ "api_key", api_key },
{ "action", "solve" },
{ "user", this.username_patner },
{ "pass", this.password_patner },
{ "image", base64_image },
{ "captchaId", captcha_id },
{ "imgNumber", img_number },
{ "game", 1 },
{ "variant", "wbgs" }
};
json = JsonConvert.SerializeObject(valuePairs, Formatting.Indented);
}
return json;
}
public string encode_params_validate_resolution(string api_key, string status, int n_images, string captcha_id)
{
string json = null;
if (api_key != null && status != null && n_images != null && captcha_id != null)
{
Dictionary<string, object> valuePairs = new Dictionary<string, object>
{
{ "api_key", api_key },
{ "action", "result" },
{ "user", this.username_patner },
{ "pass", this.password_patner },
{ "captchaId", captcha_id },
{ "status", status },
{ "images", n_images }
};
json = JsonConvert.SerializeObject(valuePairs, Formatting.Indented);
}
return json;
}
}
}
Editor is loading...