Hi,
in Qobuz we have Work and Title, togheter they identify the track
title.
i.e.
inside the Album:
Haydn : Symphonies 78, 79, 80, 81
we have 4 different works:
Symphony No.78 in C Minor, Hob.I:78 - Edited H.C.Robbins Landon
Symphony No.79 in F Major, Hob.I:79 - Edited H.C. Robbins Landon
Symphony No.80 in D Minor, Hob.I:80 - Edited H.C. Robbins Landon
Symphony No.81 in G Major, Hob.I:81 - Edited H.C. Robbins Landon
Each work is composed by four movements, identified by a position and a
Cadenza, i.e. 1.Vivace or 3.Adagio...
I believe we all agree that what it should be displayed for a track is
something like that:
Symphony No.78 in C Minor, Hob.I:78 - Edited H.C.Robbins Landon: I.
Vivace
just because 1.Vicace could refer to either Symphony no, 78 or 81.
Problemi s that in Qobuz data the content of work and title is variable
depending on the vendor.
I solved the problem in a Java application with this code;
Code:
--------------------
In qobuz track class
private String calcTitleOnly(String work, String title){
/*
Work: Cello Sonata in B-Flat Major, RV 46
Title: Cello Sonata in B-Flat Major, RV 46: I. Preludio (Largo)
Title only: I. Preludio (Largo)
Work: Cello Sonata in B-Flat Major, RV 46
Title: Cello Sonata in B-Flat Major, RV 46 : Cello Sonata in
B-Flat Major, RV 46: I. Preludio (Largo)
Title only: I. Preludio (Largo)
*/
if (title == null || "".equals(title)) return "";
if (work == null || "".equals(work)) return title;
String out="";
for (String el : title.split(":")){
if
(!el.trim().toUpperCase().equals(work.trim().toUpperCase())){
if (! out.isEmpty()) out= out.concat(" : ");
out= out.concat(el.trim());
}
}
if (out.isEmpty()) return title;
return out;
}
in the consumer class (track is a qobuz track here).
public String getTitle(){
if (this.track == null) return "";
if ( this.getWork().isEmpty()) return this.getTitleOnly();
if ( this.getTitleOnly().isEmpty()) return this.track.getTitle();
return this.getWork().concat(" : ").concat(this.getTitleOnly());
}
public String getWork(){
if (this.track == null) return "";
if (this.track.getWork() == null) return "";
return this.track.getWork();
}
public String getTitleOnly(){
if (this.track == null) return "";
if (this.track.getTitleOnly() == null) return "";
return this.track.getTitleOnly();
}
--------------------
Forgive spacing and feel free to translate it in Perl and use it in the
plugin.
Regards, Marco.
________________________________________________________________________
Author of C-3PO plugin, Squeezelite-R2, Falcon Web interface - See
www.marcoc1712.it
------------------------------------------------------------------------
marcoc1712's Profile: http://forums.slimdevices.com/member.php?userid=34842
View this thread: http://forums.slimdevices.com/showthread.php?t=97146
_______________________________________________
plugins mailing list
[email protected]
http://lists.slimdevices.com/mailman/listinfo/plugins