CTDB metadata support

This commit is contained in:
chudov
2011-05-15 17:41:14 +00:00
parent a6941bc51b
commit d5fdd19735
20 changed files with 1246 additions and 572 deletions

View File

@@ -2056,7 +2056,7 @@ string status = processor.Go();
Genre = metadata.Genre;
Artist = metadata.Artist;
Title = metadata.Title;
Catalog = metadata.Catalog;
Catalog = metadata.Barcode;
for (int i = 0; i < Tracks.Count; i++)
{
Tracks[i].Title = metadata.Tracks[i].Title;
@@ -2076,7 +2076,7 @@ string status = processor.Go();
metadata.Genre = Genre;
metadata.Artist = Artist;
metadata.Title = Title;
metadata.Catalog = Catalog;
metadata.Barcode = Catalog;
for (int i = 0; i < Tracks.Count; i++)
{
metadata.Tracks[i].Title = Tracks[i].Title;
@@ -2220,7 +2220,7 @@ string status = processor.Go();
_localDB.Save();
}
public List<object> LookupAlbumInfo(bool useFreedb, bool useMusicBrainz, bool useCache, bool useCUE)
public List<object> LookupAlbumInfo(bool useFreedb, bool useMusicBrainz, bool useCTDB, bool useCache, bool useCUE)
{
List<object> Releases = new List<object>();
StringCollection DiscIds = new StringCollection();
@@ -2275,6 +2275,22 @@ string status = processor.Go();
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("CUETools " + CUEToolsVersion, null, true, true);
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, "ctdb"));
ctdbFound = true;
}
}
if (useFreedb)
{
ShowProgress("Looking up album via Freedb...", 0.0, null, null);
@@ -2337,7 +2353,7 @@ string status = processor.Go();
}
}
if (useMusicBrainz)
if (useMusicBrainz && !ctdbFound)
{
ShowProgress("Looking up album via MusicBrainz...", 0.0, null, null);
@@ -3191,13 +3207,13 @@ string status = processor.Go();
_padding += _eacLog.Length;
}
public void UseCUEToolsDB(bool submit, string userAgent, string driveName)
public void UseCUEToolsDB(bool submit, string userAgent, string driveName, bool meta, bool fuzzy)
{
ShowProgress((string)"Contacting CUETools database...", 0, null, null);
_CUEToolsDB = new CUEToolsDB(_toc, proxy);
_CUEToolsDB.UploadHelper.onProgress += new EventHandler<Krystalware.UploadHelper.UploadProgressEventArgs>(UploadProgress);
_CUEToolsDB.ContactDB(userAgent, driveName);
_CUEToolsDB.ContactDB(userAgent, driveName, meta, fuzzy);
if (!_toc[_toc.TrackCount].IsAudio && DataTrackLength == 0)
foreach (DBEntry e in _CUEToolsDB.Entries)
@@ -6318,7 +6334,7 @@ string status = processor.Go();
}
case "repair":
{
UseCUEToolsDB(false, "CUETools " + CUEToolsVersion, null);
UseCUEToolsDB(false, "CUETools " + CUEToolsVersion, null, false, true);
Action = CUEAction.Verify;
if (CTDB.DBStatus != null)
return CTDB.DBStatus;