public bool ParseFingerprintRecognition(XmlElement xResult) { try { RecognizeCode = (RecognizeCode)Convert.ToInt32(xResult.GetElementsByTagName("RecognizeResult")[0].Attributes["RecognizeCode"].Value); RecognizeResult = xResult.GetElementsByTagName("RecognizeResult")[0].InnerText; if (!TimeStatistics.ParseTimeStatistics((XmlElement)xResult.GetElementsByTagName("TimeStatistics")[0])) { return(false); } foreach (XmlElement xFingerTrack in xResult.GetElementsByTagName("FingerTrack")) { FingerTrack FingerTrack = new FingerTrack(); if (!FingerTrack.ParseFingerTrack(xFingerTrack)) { return(false); } FingerTracks.Add(FingerTrack); } //foreach return(true); } catch { } return(false); }
public CancellationTokenSource RetrieveMetaDataMuziekweb(string FingerTrackID, object userState = null, REST_ResultMetaDataMuziekweb callback = null) { if (string.IsNullOrEmpty(FingerTrackID)) { return(null); } CancellationTokenSource cancelTokenSource = new CancellationTokenSource(); Task task = Task.Factory.StartNew(() => { // Were we already canceled? cancelTokenSource.Token.ThrowIfCancellationRequested(); DateTime startTime = DateTime.Now; bool succes = true; RecognizeCode RecognizeCode = RecognizeCode.OK; string RecognizeResult = ""; try { RestClient client = CreateWSAPICDRNLClient; // Build search request RestRequest request = new RestRequest("v1/Fingerprint/TrackInfo.xml", Method.GET); request.AddHeader("Accept-Encoding", "gzip,deflate"); request.AddParameter("FingerTrackID", FingerTrackID); // Run and wait for result IRestResponse response = client.Execute(request); cancelTokenSource.Token.ThrowIfCancellationRequested(); if (response.ResponseStatus != ResponseStatus.Completed) { // error! succes = false; } // decode xml on the fly (must be done because xml can get new tags and attributes without notice XmlDocument xmlDoc = null; XmlElement xResult = null; if (succes) { xmlDoc = new XmlDocument(); xmlDoc.LoadXml(response.Content); xResult = xmlDoc.GetElementsByTagName("Result")[0] as XmlElement; if (xResult == null || xResult.Attributes["ErrorCode"].Value != "0") { // error succes = false; } } if (succes) { ResultSongs resultSongs = new ResultSongs(); succes = resultSongs.ParseSongs(xResult); // do something with the result cancelTokenSource.Token.ThrowIfCancellationRequested(); if (callback != null) { DoCallback(callback, this, true, resultSongs, userState); } // we're ready return; } } catch (Exception e) { RecognizeCode = RecognizeCode.EXCEPTION; // exception RecognizeResult = e.ToString(); } // return error result when we get here if (callback != null) { ResultSongs resultSongs = new ResultSongs(); DoCallback(callback, this, false, resultSongs, userState); } }, cancelTokenSource.Token); return(cancelTokenSource); }
public CancellationTokenSource DetectAudioFragmentSlow(FingerprintSignature fingerprint, object userState = null, REST_ResultFingerDetect callback = null) { if (fingerprint == null) { return(null); } CancellationTokenSource cancelTokenSource = new CancellationTokenSource(); Task task = Task.Factory.StartNew(() => { // Were we already canceled? cancelTokenSource.Token.ThrowIfCancellationRequested(); DateTime startTime = DateTime.Now; bool succes = true; RecognizeCode RecognizeCode = RecognizeCode.OK; string RecognizeResult = ""; try { RestClient client = CreateFingerprintClient; // Build search request RestRequest request = new RestRequest("fingerprint/Recognize/Slow", Method.POST); request.AddHeader("Accept-Encoding", "gzip,deflate"); StringBuilder sb = new StringBuilder(200 * 1024); sb.Append("Fingerprint="); sb.Append(RestSharp.Contrib.HttpUtility.UrlEncode(fingerprint.SignatureBase64)); sb.Append("&"); sb.Append("Reliabilities="); sb.Append(RestSharp.Contrib.HttpUtility.UrlEncode(fingerprint.ReliabilitiesBase64)); request.AddParameter("application/x-www-form-urlencoded", sb.ToString(), ParameterType.RequestBody); // Run and wait for result IRestResponse response = client.Execute(request); cancelTokenSource.Token.ThrowIfCancellationRequested(); if (response.ResponseStatus != ResponseStatus.Completed) { // error! succes = false; RecognizeCode = RecognizeCode.EXCEPTION; // exception RecognizeResult = response.ErrorMessage; if (RecognizeResult.ToLower().Contains("timed out")) { RecognizeCode = RecognizeCode.TIMEOUT; } else if (RecognizeResult.ToLower().Contains("unable to connect")) { RecognizeCode = RecognizeCode.SERVERNOTFOUND; } } // decode xml on the fly (must be done because xml can get new tags and attributes without notice XmlDocument xmlDoc = null; XmlElement xResult = null; if (succes) { xmlDoc = new XmlDocument(); xmlDoc.LoadXml(response.Content); xResult = xmlDoc.GetElementsByTagName("Result")[0] as XmlElement; if (xResult == null || xResult.Attributes["ErrorCode"].Value != "0") { // error succes = false; } } if (succes) { ResultFingerprintRecognition resultRecognitions = new ResultFingerprintRecognition(); resultRecognitions.RecognizeCode = 0; resultRecognitions.RecognizeResult = "OK"; succes = resultRecognitions.ParseFingerprintRecognition(xResult); // do something with the result cancelTokenSource.Token.ThrowIfCancellationRequested(); if (callback != null) { DoCallback(callback, this, true, resultRecognitions, userState); } // we're ready return; } } catch (Exception e) { RecognizeCode = RecognizeCode.EXCEPTION; // exception RecognizeResult = e.ToString(); } // return error result when we get here if (callback != null) { ResultFingerprintRecognition resultRecognitions = new ResultFingerprintRecognition(); resultRecognitions.RecognizeCode = RecognizeCode; resultRecognitions.RecognizeResult = RecognizeResult; resultRecognitions.TimeStatistics.TotalQueryTime = DateTime.Now - startTime; DoCallback(callback, this, false, resultRecognitions, userState); } }, cancelTokenSource.Token); return(cancelTokenSource); }