/// <summary> /// Called when metadata request returns (or simulated in SongInfoRetrieve /// to skip metadata request) /// </summary> private void REST_ResultMetaDataMuziekweb(object sender, bool success, ResultSongs resultSongs, object userState = null) { try { ResultFingerprintRecognition resultRecognitions = userState as ResultFingerprintRecognition; Console.WriteLine("Detected: " + resultRecognitions.FingerTracks[0].FingerTrackReference.ToString() + " Q=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000")); if (resultSongs != null && resultSongs.Songs.Count > 0) { Console.WriteLine("MetaData: " + SongInfo(resultSongs.Songs[0])); } Console.Write(" P=" + resultRecognitions.FingerTracks[0].SearchStrategy.SearchName + " (I=" + resultRecognitions.FingerTracks[0].SearchStrategy.SearchIteration.ToString() + ")"); Console.Write(" | BER=" + resultRecognitions.FingerTracks[0].BER.ToString()); Console.Write(" | Index=" + resultRecognitions.FingerTracks[0].SearchStrategy.IndexNumberInMatchList.ToString() + " | HitCount=" + resultRecognitions.FingerTracks[0].SearchStrategy.SubFingerCountHitInFingerprint.ToString()); Console.WriteLine(); } finally { // Release detecttask so new one can be initiated lock (lockObject) { detectTask = null; } } }
private void SongInfoRetrieve(ResultFingerprintRecognition resultRecognitions) { if (RetrieveMetadataFromMuziekweb(resultRecognitions.FingerTracks[0].FingerTrackReference)) { detectTask.RetrieveMetaDataMuziekweb(resultRecognitions.FingerTracks[0].FingerTrackReference, resultRecognitions, REST_ResultMetaDataMuziekweb); } else { // No metadata just show what we got REST_ResultMetaDataMuziekweb(this, false, null, resultRecognitions); } }
private void REST_ResultFingerDetect(object sender, bool success, ResultFingerprintRecognition resultRecognitions, object userState = null) { if (success && resultRecognitions != null && resultRecognitions.FingerTracks.Count > 0) { SongInfoRetrieve(resultRecognitions); // Leave detectTask intact, because we need to do a second call to get the metadata return; } try { if (resultRecognitions != null) { string line = string.Empty; switch (resultRecognitions.RecognizeCode) { case RecognizeCode.EXCEPTION: line = "Error: " + resultRecognitions.RecognizeResult; break; case RecognizeCode.TIMEOUT: line = "Timeout. Waiting 30 seconds before submitting detect query again."; waitUntil = DateTime.Now.AddSeconds(30); break; case RecognizeCode.SERVERNOTFOUND: line = "Server not found. Waiting 30 seconds before submitting detect query again."; waitUntil = DateTime.Now.AddSeconds(30); break; case RecognizeCode.OK: if (resultRecognitions.FingerTracks.Count == 0) { line = "Unknown song. Q=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000"); } break; default: line = "Unknown error (" + resultRecognitions.RecognizeResult + ")."; break; } //switch if (line.Length > 0) { Console.WriteLine(line); } #if TIMEQUERYINFO Console.Write(" QTotal=" + (resultRecognitions.TimeStatistics.TotalQueryTime.TotalMilliseconds / 1000).ToString("#0.000")); Console.Write(" QSubF=" + (resultRecognitions.TimeStatistics.SubFingerQueryTime.TotalMilliseconds / 1000).ToString("#0.000")); Console.Write(" QFinger=" + (resultRecognitions.TimeStatistics.FingerLoadTime.TotalMilliseconds / 1000).ToString("#0.000")); Console.Write(" QMatch=" + (resultRecognitions.TimeStatistics.MatchTime.TotalMilliseconds / 1000).ToString("#0.000")); Console.WriteLine(); #endif Console.WriteLine(); } CleanUpDict(false); } finally { // Release detetctask so new one can be initiated lock (lockObject) { detectTask = null; } } }