From 801548af0277fb06bfc3515c61c293c89786ea16 Mon Sep 17 00:00:00 2001 From: Grigory Chudov Date: Wed, 25 Feb 2015 16:34:31 -0500 Subject: [PATCH] EAC CTDB plugin update for new EAC version --- CUETools.CTDB.EACPlugin/FormMetadata.cs | 9 ++++--- .../Interop.HelperFunctionsLib.dll | Bin 28672 -> 28672 bytes CUETools.CTDB.EACPlugin/Metadata.cs | 12 ++++++--- CUETools.CTDB.EACPlugin/Plugin.cs | 20 ++++++++++++++- CUETools.CTDB/CTDBResponseMeta.cs | 15 ++++++----- CUETools.CTDB/CTDBResponseMetaRelease.cs | 24 ++++++++++++++++++ CUETools.CTDB/CUETools.CTDB.csproj | 1 + CUETools.CTDB/CUEToolsDB.cs | 2 +- 8 files changed, 67 insertions(+), 16 deletions(-) create mode 100644 CUETools.CTDB/CTDBResponseMetaRelease.cs diff --git a/CUETools.CTDB.EACPlugin/FormMetadata.cs b/CUETools.CTDB.EACPlugin/FormMetadata.cs index e04d59f..6686e39 100644 --- a/CUETools.CTDB.EACPlugin/FormMetadata.cs +++ b/CUETools.CTDB.EACPlugin/FormMetadata.cs @@ -58,7 +58,7 @@ namespace CUETools.CTDB.EACPlugin private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { #if DEBUG - string server = "hq.cuetools.net"; + string server = "db.cuetools.net"; #else string server = null; #endif @@ -239,12 +239,13 @@ namespace CUETools.CTDB.EACPlugin var discnumber01 = (uint.TryParse(disccount, out td) && uint.TryParse(discnumber, out dn) && td > 9 && dn > 0) ? string.Format("{0:00}", dn) : discnumber; var discnumberandtotal = disccount != "1" ? discnumber01 + "/" + disccount : (discnumber != "1" ? discnumber01 : ""); - var label = metadata.country ?? ""; + var label = ""; + if (metadata.release != null) + foreach (var r in metadata.release) + label = (label == "" ? "" : label + ": ") + (r.country ?? "") + (r.country != null && r.date != null ? " " : "") + (r.date ?? ""); if (metadata.label != null) foreach (var l in metadata.label) label = (label == "" ? "" : label + ": ") + (l.name ?? "") + (l.name != null && l.catno != null ? " " : "") + (l.catno ?? ""); - if (metadata.releasedate != null) - label = (label == "" ? "" : label + ": ") + metadata.releasedate; var text = string.Format("{0}{1} - {2}{3}{4}", metadata.year != null ? metadata.year + ": " : "", metadata.artist == null ? "Unknown Artist" : metadata.artist, metadata.album == "" ? "Unknown Title" : metadata.album, diff --git a/CUETools.CTDB.EACPlugin/Interop.HelperFunctionsLib.dll b/CUETools.CTDB.EACPlugin/Interop.HelperFunctionsLib.dll index 064ab502cdc4b722899355ed96d3afcf2fec45d1..a195177fcdd9062b948261ee01981e325c44e026 100644 GIT binary patch delta 2769 zcmZp8z}WDBaY6?R%k{S*6MJMB?@e48&esyjz!1*Bz`&5ez_5XNqN4C*MaFo>Cz~4? z>-iWDOlA}iW;L;7U|^j5k_kZ&EUkCz^~2V&Dg-N%@D%408Ad>*Jg-id;lgH1hg5_7!|;zgMcZ5rHl&%wHeki9uU-K z*v|L>Ofm>*GaO)40Fw?v+6*Td6NI!GE-^L;X*1krTmU8y2x&7sVSFH@&G43yL0FsN z8>51-Hp72L2Vrdn4yFV!*&wXVAjq@;Odb%{W{_ff045nkv>B9{6h!Jll!J&igAP-I zh&F>MQ-g>$gB{ZXFnK^ko57vwfrvIk0270#HbW$nf~Yn_5|e|dHbXX3f~Yn_2~&fp zHp3pK1)|yvN0|QuVObKGz48NHg#IzY$ zm=}m?Gw?DW5Yw(_5MzEIrp+MF%pk7KpuwyluFYV`>>#eqV8xsuuFc@g+#s&a;KRH? zT$>@3`GB}KLmcx1aczclW(Emuh5}{<32lZ-W(Nsvh9>3&32laM<^~CEhAGSoB(xdk zG9Qr8W?07jKth{gJu`!(Hp32P1xam&gUk+++6Mt`lNNO|OVO}7q&A`uc zKvJ7Qg5`lEI88`_(}WZ_O-O;$gcLYUNP*LY6eu+ukOHNH2U4IEz#t8Zdj)BbUI%HA z-UMlo-Uexq-UZSiy$7U0dLKxG^fJh3Go(2&D#(B|JIH`EC&+*_H^_iAFOUIgJ|F|q z{6GeznL!q$SwR-0*+CX$ae}NiL;hw_t@n)e4Ln5*3=HjHax$1)1SU7}lrb;sc0 zd8!x~7?PMkWG$Gy4i>o&mi-PU8F}j%7#MhXLAu1iqyjHUy&;(G0A_oF$tbW$2AC|X z2MhIsIkR~|PT2$|&wEk=?qK^n;B*@FfnXln9ab%u$5sh0~5nGhWQLk3_BPWGB7dhVpz<;#IT!TDFYM3 z9){%%ObmM&Rx&U#>|u|XBc)eFfp(&yklTuU}N~ez{J48@CoEIE`~1*Obk2>-x!z}_!xdLFfj-){9<5Y z5Mublz{DWJ@Q;CsL5zWck%>Wqfr*icL5hKek%>WufsK)gL5_igk%>Wpfs2ueL5YEf zk%>Wtfsc`iL5)Fxk%>WrL5PuwL5o3zk%>WvL5z`!L61R#k%_^8L5h)y!H7YIv7U*+ zgh7sxiNTCPfsu*9fBA%Ve*k%=LR!H1EFA%($@k%=LVA%KyI zA%h`^k%=LTA%u~MA%`K1k%=LXA%c;Kp@1QZk%^&*A%>BOp@bohk%^&%iJ`uOp@@-*p^Kq} zk%^&)p^TABjJ&a5YR~Ys& zGBI3ZIKarnaD(9xBNM|dh9itj40jk@k1;Ya++#Sw$i(n~;S?hi!y|?>j7$tq7|t;= zF+5|qz{te#g5eS)6T>TpD~wDGZy2sIvNS+iZlGoq1eqFB@TH{+nlB5XtI@KbA-zW7NIqfU`a4>4#ZZNs3^vC fAabIj$mS+bAGXbW0l)Z}9$0P`OnA>f(SRKQ6#x6Y delta 2715 zcmZp8z}WDBaY6@+>(4p96MJMB=S^H0&gT)yz!1#9z`&5ez_5XNqN4C*MaFo>C7T-= z>-iWPCNl~Mv;MGPU|^j5kHwE+9 zHit?CvTZg~Y+~AMrs%>}e}GS$L7njdpEiR5BLlxSgC(N^zczytqXWM-gEwOWzcxb% zV*{96z^}~^%Xk1xKH%48NMmFW0Fep;+6?)O4q!4tK%1e0u>njj5YT35WIO;S9|&kO zbTKjrYBNk`R1nl=n8WA*CKKufwHcN&HVA4ntYcgtsLimQ@c@{7AgIl7fRRB6L@Eer zGn`~}5YlG2#F!wY&2XEs0Zc9s(q?$VctA*-;Vt6>A#H|lj10os4F4GwgtZwsm>j@l zg0MD&AX5XFTp+B?AjNb5Og<3SW>98g5UB@I3L@GJI!q2C+6<;l2_o7Ic1#Uma)F38 zgFDj!5p9M5rUxS043SI>qS_2eObVjf4B1Q$qS_24ObMde411UwM70@?GA$6*W;n-m zKvbLII@1GDZH5O-3}V_0FPRj?v>84zIf!X9{ANlJ(`H~{ZV=OE;ALJQrd`h<#(Y3b zn?auWftWUf1~Y@WHiIFvg19z=6|;l5HiI*Bg19z=4|9XKHbW@$0IIOYT5+6?K; z55%<@3YZxrv>7Uy6(qD7nwT9Vv>CdY6C|`5rZ6{1Xfw=ZULc{(u#EYDgf_!^<_8km z3_F+^B()h1GAl@GGn`^}kkn?Vzs#HB&c7f6Hj z9*_pZkAOq5@AOq6uAOq5zAOq6eAOq68KnA4wfDB0U0~wHJ23e411zBx| zw9V#P?-}cJd5Rbq7)roo1DNawlk<7X7#J8O zcA(MfLp@AWrfsvt}A)A4Tp@|`vfsvt+ zA(w%Pp@kuzfsvt^A)kSXp^c%Cfsvt=p^$-zp^KrIfsvt;p_qY*p^u@Ifsvt?p_GA% zVFE)r10zF!JwrJI6T?J?N(Lr|NetBtObk;PY8e9xrCvefstV`LpuW#!%~J$1}2784BZS& z467M>8JHN>F!VDpF|1{n$iT#~j$twb6T=3E`l$>|3>z7yGcYl1VwlOm#ITuRHUksG z7KXVDOblBY<})xcY-d==z{IeVVKD;}!!CxU3``8W8J06JG3;Sj$-u<0mti#n6T<<9 zwG2!Q2N~8gFfklr*vP=daF}5;0~5nhhOG=t496I@GcYlnX4uKV#K6MvhJlHJjo}>w z69Wgs2awOW7(OvDG4L>aVPIn5WBA6v#2~=%gMo=bh~XCl6N3oD9|k4{F@}E(ObikX z42(<+QVdLtObjv%ER0MHatv&YObiMP9E?m1N(@|#ObjXvJd8{XY7BggObi+f0*p)y zS`0#rObj{u6~3{DJMj7$tJ3_6TV3~mg1j7$t33J(`3_%Q5j7$t63^t5R3}Fm*j7$s>3=WJ;3{ebDj7$tM3@(gJ z^$c+gZj4L}2@D>LObkg3UW`l(DGWZ0OblrZevC{E84Ll8Obl5JL5xfcISe6;ObmGp zVT?=+1q>04ObkT~QH)FsB@8i)OblfVag3lOoWRJ$P{okM2ui{!jG)Au#t2Hb8H}I= zo5cu9syU3HM4HFQ#8BVCP{0UErA3TP3_T1bjG$Cn#t2HE6^x)HS;YuSk~NG>4AU6u z7?~JmFf=fN5@r)4C`q<3f)ZmJBPaoOFfuVLV(4OIVpzh^!^p(2jG>Q_iD3o91V&IY zoWux9fKwPjNpBh>DCx~$WMbG<&oGM-l-%YpGBIppn8(P(u!CU%BPgLQVgx0zC5%iA z`xurnf|A$@Mo{8f#mK~PgkcRMC|RvzWMVkMuz`_@;S|FrMka|zjjq%YR!5J?ZB@ym^Yt2NvFfNU$WB=$kyzQ<|wEa`Pt77`91F W4x9M`e(^Icu-q(|@ScC70XqQk1N5i> diff --git a/CUETools.CTDB.EACPlugin/Metadata.cs b/CUETools.CTDB.EACPlugin/Metadata.cs index dcc5cb4..f08c4d9 100644 --- a/CUETools.CTDB.EACPlugin/Metadata.cs +++ b/CUETools.CTDB.EACPlugin/Metadata.cs @@ -62,10 +62,14 @@ namespace MetadataPlugIn extra += "Info URL: " + meta.infourl + "\r\n"; if (!string.IsNullOrEmpty(meta.barcode)) extra += "Barcode: " + meta.barcode + "\r\n"; - if (!string.IsNullOrEmpty(meta.releasedate)) - extra += "Release date: " + meta.releasedate + "\r\n"; - if (!string.IsNullOrEmpty(meta.country)) - extra += "Release country: " + meta.country + "\r\n"; + if (meta.release != null) + foreach (var release in meta.release) + { + if (!string.IsNullOrEmpty(release.date)) + extra += "Release date: " + release.date + "\r\n"; + if (!string.IsNullOrEmpty(release.country)) + extra += "Release country: " + release.country + "\r\n"; + } if (meta.label != null) foreach (var label in meta.label) { diff --git a/CUETools.CTDB.EACPlugin/Plugin.cs b/CUETools.CTDB.EACPlugin/Plugin.cs index 3acb4e6..09fb542 100644 --- a/CUETools.CTDB.EACPlugin/Plugin.cs +++ b/CUETools.CTDB.EACPlugin/Plugin.cs @@ -27,6 +27,8 @@ namespace AudioDataPlugIn public class AudioDataTransfer : IAudioDataTransfer { int m_start_pos = 0, m_length = 0; + int m_suspicious = 0; + int m_suspiciousTest = 0; bool m_test_mode = false; IMetadataLookup m_data = null; CDImageLayout TOC; @@ -72,6 +74,17 @@ namespace AudioDataPlugIn } + public void SuspiciousPosition() + { + if (this.m_test_mode) + this.m_suspiciousTest++; + else + this.m_suspicious++; +#if DEBUG + var thisAr = m_test_mode ? arTest : ar; + m_trace.WriteLine("Suspicious position: {0} ({1}*588)", thisAr.Position, thisAr.Position/588); +#endif + } // Now to the audio transfer functions, the sequence how // the functions are called is: @@ -133,6 +146,8 @@ namespace AudioDataPlugIn this.sequence_ok = true; this.m_start_pos = 0; this.m_length = 0; + this.m_suspicious = 0; + this.m_suspiciousTest = 0; this.m_test_mode = false; this.is_offset_set = aroffset; this.is_secure_mode = mode >= 2; @@ -266,7 +281,10 @@ namespace AudioDataPlugIn "EAC" + m_data.HostVersion + " CTDB 2.1.6", m_drivename, conf, - (arTest.Position == 0 && this.is_secure_mode) || (arTest.Position != 0 && arTest.CRC32(0) == ar.CRC32(0)) ? 100 : 0, + (arTest.Position != 0 && arTest.CRC32(0) == ar.CRC32(0)) ? 100 : + (arTest.Position == 0 && this.is_secure_mode) ? + (int)(100 * (1.0 - Math.Log(m_suspicious + 1) / Math.Log(TOC.AudioLength + 1))) : + (int)( 49 * (1.0 - Math.Log(m_suspicious + 1) / Math.Log(TOC.AudioLength + 1))), m_data.AlbumArtist, m_data.AlbumTitle); form.ShowDialog(); diff --git a/CUETools.CTDB/CTDBResponseMeta.cs b/CUETools.CTDB/CTDBResponseMeta.cs index 0a6c2bc..7796301 100644 --- a/CUETools.CTDB/CTDBResponseMeta.cs +++ b/CUETools.CTDB/CTDBResponseMeta.cs @@ -19,8 +19,6 @@ namespace CUETools.CTDB this.year = src.year; this.genre = src.genre; this.extra = src.extra; - this.country = src.country; - this.releasedate = src.releasedate; this.discnumber = src.discnumber; this.disccount = src.disccount; this.discname = src.discname; @@ -46,6 +44,13 @@ namespace CUETools.CTDB for (int i = 0; i < src.label.Length; i++) this.label[i] = new CTDBResponseMetaLabel(src.label[i]); } + + if (src.release != null) + { + this.release = new CTDBResponseMetaRelease[src.release.Length]; + for (int i = 0; i < src.release.Length; i++) + this.release[i] = new CTDBResponseMetaRelease(src.release[i]); + } } [XmlAttribute] @@ -63,10 +68,6 @@ namespace CUETools.CTDB [XmlElement] public string extra { get; set; } [XmlAttribute] - public string country { get; set; } - [XmlAttribute] - public string releasedate { get; set; } - [XmlAttribute] public string discnumber { get; set; } [XmlAttribute] public string disccount { get; set; } @@ -82,5 +83,7 @@ namespace CUETools.CTDB public CTDBResponseMetaTrack[] track; [XmlElement] public CTDBResponseMetaLabel[] label; + [XmlElement] + public CTDBResponseMetaRelease[] release; } } diff --git a/CUETools.CTDB/CTDBResponseMetaRelease.cs b/CUETools.CTDB/CTDBResponseMetaRelease.cs new file mode 100644 index 0000000..8911b3c --- /dev/null +++ b/CUETools.CTDB/CTDBResponseMetaRelease.cs @@ -0,0 +1,24 @@ +using System; +using System.Xml.Serialization; + +namespace CUETools.CTDB +{ + [Serializable] + public class CTDBResponseMetaRelease + { + public CTDBResponseMetaRelease() + { + } + + public CTDBResponseMetaRelease(CTDBResponseMetaRelease src) + { + this.date = src.date; + this.country = src.country; + } + + [XmlAttribute] + public string date { get; set; } + [XmlAttribute] + public string country { get; set; } + } +} diff --git a/CUETools.CTDB/CUETools.CTDB.csproj b/CUETools.CTDB/CUETools.CTDB.csproj index a7a22f7..8a08580 100644 --- a/CUETools.CTDB/CUETools.CTDB.csproj +++ b/CUETools.CTDB/CUETools.CTDB.csproj @@ -59,6 +59,7 @@ + diff --git a/CUETools.CTDB/CUEToolsDB.cs b/CUETools.CTDB/CUEToolsDB.cs index 772973b..23a1ae4 100644 --- a/CUETools.CTDB/CUEToolsDB.cs +++ b/CUETools.CTDB/CUEToolsDB.cs @@ -70,7 +70,7 @@ namespace CUETools.CTDB HttpWebRequest req = (HttpWebRequest)WebRequest.Create(urlbase + "/lookup2.php" - + "?version=2" + + "?version=3" + "&ctdb=" + (ctdb ? 1 : 0) + "&fuzzy=" + (fuzzy ? 1 : 0) + "&metadata=" + (metadataSearch == CTDBMetadataSearch.None ? "none" : metadataSearch == CTDBMetadataSearch.Fast ? "fast" : metadataSearch == CTDBMetadataSearch.Default ? "default" : "extensive")