public void LookupAlbumInfo(bool cache, bool cue, bool ctdb, CTDBMetadataSearch metadataSearch) { this.ctdb = ctdb; this.metadataSearch = metadataSearch; var releases = CUE.LookupAlbumInfo(cache, cue, false, CTDBMetadataSearch.None); this.Choices = releases; if (ctdb || metadataSearch != CTDBMetadataSearch.None) backgroundWorker1.RunWorkerAsync(null); }
public void LookupAlbumInfo(bool cache, bool cue, bool ctdb, CTDBMetadataSearch metadataSearch) { this.ctdb = ctdb; this.metadataSearch = metadataSearch; var releases = CUE.LookupAlbumInfo(cache, cue, false, CTDBMetadataSearch.None); this.Choices = releases; if (ctdb || metadataSearch != CTDBMetadataSearch.None) { backgroundWorker1.RunWorkerAsync(null); } }
public void ContactDB(string server, string userAgent, string driveName, bool ctdb, bool fuzzy, CTDBMetadataSearch metadataSearch) { this.driveName = driveName; this.userAgent = userAgent + " (" + Environment.OSVersion.VersionString + ")" + (driveName != null ? " (" + driveName + ")" : ""); this.urlbase = "http://" + (server ?? defaultServer); this.total = 0; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase + "/lookup2.php" + "?version=3" + "&ctdb=" + (ctdb ? 1 : 0) + "&fuzzy=" + (fuzzy ? 1 : 0) + "&metadata=" + (metadataSearch == CTDBMetadataSearch.None ? "none" : metadataSearch == CTDBMetadataSearch.Fast ? "fast" : metadataSearch == CTDBMetadataSearch.Default ? "default" : "extensive") + "&toc=" + toc.ToString()); req.Method = "GET"; req.Proxy = proxy; req.UserAgent = this.userAgent; req.Timeout = connectTimeout; req.ReadWriteTimeout = socketTimeout; req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; if (uploadHelper.onProgress != null) { uploadHelper.onProgress(this, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, 0)); } this.subResult = null; this.entries = new List <DBEntry>(); this.metadata = new List <CTDBResponseMeta>(); currentReq = req; try { using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) { this.QueryExceptionStatus = WebExceptionStatus.ProtocolError; this.QueryResponseStatus = resp.StatusCode; this.QueryExceptionMessage = resp.StatusDescription; if (this.QueryResponseStatus == HttpStatusCode.OK) { XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse)); this.total = 0; using (Stream responseStream = resp.GetResponseStream()) { CTDBResponse ctdbResp = serializer.Deserialize(responseStream) as CTDBResponse; if (ctdbResp.entry != null) { foreach (var ctdbRespEntry in ctdbResp.entry) { if (ctdbRespEntry.toc == null) { continue; } this.total += ctdbRespEntry.confidence; var entry = new DBEntry(ctdbRespEntry); entries.Add(entry); } } if (ctdbResp.metadata != null && ctdbResp.metadata.Length != 0) { metadata.AddRange(ctdbResp.metadata); } } if (entries.Count == 0) { this.QueryResponseStatus = HttpStatusCode.NotFound; } else { this.QueryExceptionStatus = WebExceptionStatus.Success; } } } } catch (WebException ex) { this.QueryExceptionStatus = ex.Status; this.QueryExceptionMessage = ex.Message; if (this.QueryExceptionStatus == WebExceptionStatus.ProtocolError) { this.QueryResponseStatus = (ex.Response as HttpWebResponse).StatusCode; this.QueryExceptionMessage = (ex.Response as HttpWebResponse).StatusDescription; } } catch (Exception ex) { this.QueryExceptionStatus = WebExceptionStatus.UnknownError; this.QueryExceptionMessage = ex.Message; } finally { currentReq = null; } }
public void ContactDB(bool ctdb, bool fuzzy, CTDBMetadataSearch metadataSearch) { this.ContactDB(this.urlbase.Substring(7), this.userAgent, this.driveName, ctdb, fuzzy, metadataSearch); }
public List<object> LookupAlbumInfo(bool useCache, bool useCUE, bool useCTDB, CTDBMetadataSearch metadataSearch) { List<object> Releases = new List<object>(); CUEMetadata dbmeta = null; if (useCache && _localDB != null) { List<string> fullAudioPaths = this.SourcePaths.ConvertAll(p => CUEToolsLocalDBEntry.NormalizePath(p)); var myEntry = _localDB.Find(e => e.Equals(this.TOC, fullAudioPaths)); if (myEntry != null) dbmeta = myEntry.Metadata; } if (dbmeta != null) Releases.Add(new CUEMetadataEntry(dbmeta, TOC, "local")); //if (useCache) //{ // try // { // CUEMetadata cache = CUEMetadata.Load(TOC.TOCID); // if (cache != null) // Releases.Add(new CUEMetadataEntry(cache, TOC, "local")); // } // catch (Exception ex) // { // System.Diagnostics.Trace.WriteLine(ex.Message); // } //} if (useCUE) { if (dbmeta == null || !dbmeta.Contains(cueMetadata)) { if (cueMetadata.Contains(taglibMetadata) || !taglibMetadata.Contains(cueMetadata)) Releases.Add(new CUEMetadataEntry(new CUEMetadata(cueMetadata), TOC, "cue")); } if (dbmeta == null || !dbmeta.Contains(taglibMetadata)) { if (!cueMetadata.Contains(taglibMetadata)) Releases.Add(new CUEMetadataEntry(new CUEMetadata(taglibMetadata), TOC, "tags")); } } if (useCache && _localDB != null) { foreach (var entry in _localDB) if (entry.DiscID == TOC.TOCID && entry.Metadata != null && (dbmeta == null || !dbmeta.Contains(entry.Metadata))) Releases.Add(new CUEMetadataEntry(entry.Metadata, TOC, "local")); } bool ctdbFound = false; if (useCTDB) { ShowProgress("Looking up album via CTDB...", 0.0, null, null); var ctdb = new CUEToolsDB(TOC, proxy); ctdb.ContactDB(_config.advanced.CTDBServer, "CUETools " + CUEToolsVersion, null, false, false, metadataSearch); foreach (var meta in ctdb.Metadata) { CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); metadata.FillFromCtdb(meta, TOC.FirstAudio - 1); CDImageLayout toc = TOC; // TocFromCDEntry(meta); Releases.Add(new CUEMetadataEntry(metadata, toc, meta.source)); ctdbFound = true; } } if (!ctdbFound && metadataSearch == CTDBMetadataSearch.Extensive) { ShowProgress("Looking up album via Freedb...", 0.0, null, null); FreedbHelper m_freedb = new FreedbHelper(); m_freedb.Proxy = proxy; m_freedb.UserName = _config.advanced.FreedbUser; m_freedb.Hostname = _config.advanced.FreedbDomain; m_freedb.ClientName = "CUETools"; m_freedb.Version = CUEToolsVersion; m_freedb.SetDefaultSiteAddress("freedb.org"); QueryResult queryResult; QueryResultCollection coll; string code = string.Empty; try { CDEntry cdEntry = null; code = m_freedb.Query(AccurateRipVerify.CalculateCDDBQuery(_toc), out queryResult, out coll); if (code == FreedbHelper.ResponseCodes.CODE_200) { ShowProgress("Looking up album via Freedb... " + queryResult.Discid, 0.5, null, null); code = m_freedb.Read(queryResult, out cdEntry); if (code == FreedbHelper.ResponseCodes.CODE_210) { CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1); CDImageLayout toc = TocFromCDEntry(cdEntry); Releases.Add(new CUEMetadataEntry(metadata, toc, "freedb")); } } else if (code == FreedbHelper.ResponseCodes.CODE_210 || code == FreedbHelper.ResponseCodes.CODE_211) { int i = 0; foreach (QueryResult qr in coll) { ShowProgress("Looking up album via freedb... " + qr.Discid, (++i + 0.0) / coll.Count, null, null); CheckStop(); code = m_freedb.Read(qr, out cdEntry); if (code == FreedbHelper.ResponseCodes.CODE_210) { CUEMetadata metadata = new CUEMetadata(TOC.TOCID, (int)TOC.AudioTracks); metadata.FillFromFreedb(cdEntry, TOC.FirstAudio - 1); CDImageLayout toc = TocFromCDEntry(cdEntry); Releases.Add(new CUEMetadataEntry(metadata, toc, "freedb")); } } } } catch (Exception ex) { if (ex is StopException) throw ex; } } ShowProgress("", 0, null, null); return Releases; }
public void UseCUEToolsDB(string userAgent, string driveName, bool fuzzy, CTDBMetadataSearch metadataSearch) { ShowProgress((string)"Contacting CUETools database...", 0, null, null); _CUEToolsDB = new CUEToolsDB(_toc, proxy); _CUEToolsDB.UploadHelper.onProgress += new EventHandler<Krystalware.UploadHelper.UploadProgressEventArgs>(UploadProgress); _CUEToolsDB.ContactDB(_config.advanced.CTDBServer, userAgent, driveName, true, fuzzy, metadataSearch); if (!_isCD && !_toc[_toc.TrackCount].IsAudio && DataTrackLength == 0) foreach (DBEntry e in _CUEToolsDB.Entries) if (e.toc.TrackCount == _toc.TrackCount && e.toc.AudioLength == _toc.AudioLength && !e.toc[e.toc.TrackCount].IsAudio) { DataTrackLength = e.toc[e.toc.TrackCount].Length; break; } ShowProgress("", 0.0, null, null); isUsingCUEToolsDB = true; }
public void ContactDB(string server, string userAgent, string driveName, bool ctdb, bool fuzzy, CTDBMetadataSearch metadataSearch) { this.driveName = driveName; this.userAgent = userAgent + " (" + Environment.OSVersion.VersionString + ")" + (driveName != null ? " (" + driveName + ")" : ""); this.urlbase = "http://" + (server ?? defaultServer); this.total = 0; HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase + "/lookup2.php" + "?version=2" + "&ctdb=" + (ctdb ? 1 : 0) + "&fuzzy=" + (fuzzy ? 1 : 0) + "&metadata=" + (metadataSearch == CTDBMetadataSearch.None ? "none" : metadataSearch == CTDBMetadataSearch.Fast ? "fast" : metadataSearch == CTDBMetadataSearch.Default ? "default" : "extensive") + "&toc=" + toc.ToString()); req.Method = "GET"; req.Proxy = proxy; req.UserAgent = this.userAgent; req.Timeout = connectTimeout; req.ReadWriteTimeout = socketTimeout; req.AutomaticDecompression = DecompressionMethods.Deflate | DecompressionMethods.GZip; if (uploadHelper.onProgress != null) uploadHelper.onProgress(this, new UploadProgressEventArgs(req.RequestUri.AbsoluteUri, 0)); this.entries = new List<DBEntry>(); this.metadata = new List<CTDBResponseMeta>(); currentReq = req; try { using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse()) { this.QueryExceptionStatus = WebExceptionStatus.ProtocolError; this.QueryResponseStatus = resp.StatusCode; this.QueryExceptionMessage = resp.StatusDescription; if (this.QueryResponseStatus == HttpStatusCode.OK) { XmlSerializer serializer = new XmlSerializer(typeof(CTDBResponse)); this.total = 0; using (Stream responseStream = resp.GetResponseStream()) { CTDBResponse ctdbResp = serializer.Deserialize(responseStream) as CTDBResponse; if (ctdbResp.entry != null) foreach (var ctdbRespEntry in ctdbResp.entry) { if (ctdbRespEntry.toc == null) continue; this.total += ctdbRespEntry.confidence; var entry = new DBEntry(ctdbRespEntry); entries.Add(entry); } if (ctdbResp.metadata != null && ctdbResp.metadata.Length != 0) metadata.AddRange(ctdbResp.metadata); } if (entries.Count == 0) this.QueryResponseStatus = HttpStatusCode.NotFound; else this.QueryExceptionStatus = WebExceptionStatus.Success; } } } catch (WebException ex) { this.QueryExceptionStatus = ex.Status; this.QueryExceptionMessage = ex.Message; if (this.QueryExceptionStatus == WebExceptionStatus.ProtocolError) { this.QueryResponseStatus = (ex.Response as HttpWebResponse).StatusCode; this.QueryExceptionMessage = (ex.Response as HttpWebResponse).StatusDescription; } } catch (Exception ex) { this.QueryExceptionStatus = WebExceptionStatus.UnknownError; this.QueryExceptionMessage = ex.Message; } finally { currentReq = null; } }