web-dev-qa-db-fra.com

Comment puis-je obtenir rhythmbox pour voir que différents albums du même nom sont différents?

J'ai les deux Greatest Hits de la progéniture et Greatest Hits de Queen dans ma bibliothèque Rhythmbox. Quand je trie par album, cela ressemble à ceci:

enter image description here

Comment puis-je faire en sorte que Rhythmbox trie par album de manière à ne pas entrelacer des albums d'artistes différents portant le même nom?

8
Dan

Hors de la boîte, rhythmbox n'a pas la capacité de différencier différents albums de "plus grands succès" car il traite les titres des albums comme identifiant unique.

Grâce au plugin rhythmbox coverart-browser , nous traitons à la fois le titre de l'album ET l'artiste de l'album comme identifiant unique.

Imgur

Comme le montre l’image - deux artistes avec les mêmes titres de "plus grands succès", mais les albums sont affichés séparément car les deux albums sont d’artistes différents.

Vous devriez noter - lors de l'extraction de CD, l'artiste de l'album n'est pas déchiré et est laissé vide.

Pire encore, pour les albums multi-artistes (compilations), les champs Artiste-Artiste et Artiste sont également laissés vides. Ainsi, vous pouvez vous retrouver avec deux albums avec exactement le même titre.

L'astuce ici est de sélectionner toutes les pistes d'un album, de cliquer avec le bouton droit de la souris et de choisir les propriétés, puis de renseigner le champ Artiste de l'album pour le rendre unique.

enter image description here

Voir les liens ci-dessous pour les instructions d'installation.

Question liée:

4
fossfreedom

Sélectionnez toutes les pistes de l'album, faites un clic droit, choisissez les propriétés. Ne changez pas l'artiste ni l'étiquette de l'album. Définissez "artiste de l'album" si vous le souhaitez ou cliquez sur l'onglet "Tri". Ici, vous pouvez définir un artiste et une étiquette d’album qui ne seront pas affichés, mais qui seront utilisés spécifiquement pour le tri. Si vous définissez "Ordre de tri des albums" sur "Les plus grands hits 1" par exemple et sur "Les plus grands succès 2" pour l'autre album, ils s'afficheront toujours comme "Greatest Hits" dans la bibliothèque, mais seront triés. comme albums séparés. Une meilleure solution consisterait à remplacer le champ "ordre de tri des artistes" par le nom de l'artiste correspondant. C'est également une bonne solution pour les albums avec plusieurs artistes.

Vous pouvez également l'utiliser si vous aimez que vos albums soient classés par ordre chronologique, car Rhythmbox ne dispose pas de la fonctionnalité "album par année" que je n'ai jamais vue dans iTunes.

Trier votre bibliothèque en utilisant la rubrique "Artiste" plutôt que "Album" résoudrait ce problème beaucoup plus facilement; vos albums seront toujours triés par ordre alphabétique, avec leurs pistes dans l'ordre, et les albums du même artiste seront regroupés. De cette façon, Offspring et Queen ne seraient même pas proches l'un de l'autre, encore moins mélangés comme cela.

Je sais que cette question est assez ancienne, mais personne ne semble avoir posté cette solution. J'espère que j'ai aidé quelqu'un.

2
gordonzed

J'ai vu ce problème sur divers systèmes et avec différents lecteurs et la seule solution que j'ai trouvée consiste à nommer les albums préfixés par l'artiste.

Par exemple:

"Red Hot Chilli Peppers Greatest Hits" au lieu de "Greatest Hits".

Je sais que c'est beaucoup de travail, mais si quelqu'un a une meilleure façon, j'aimerais l'entendre.

2
CoalaWeb

Vous ne pouvez pas faire cela dans Rhythmbox. Cependant, je considérerais comme un bug que cela se produise. Vous devriez ouvrir un bogue à ce sujet en amont, s'il n'en est pas déjà un. Ce que devrait faire, est trié par album, puis artiste de l’album, puis artiste, puis numéro du disque, puis par numéro de piste, lorsque vous triez par album. Cependant, ce n'est pas le cas actuellement.

2
dobey

Je suis développeur et j'ai ajouté 'trier par artiste' à 'rhythmdb_query_model_album_sort_func' - voir ci-dessous.

Si vous êtes un utilisateur final capable de préparer votre système pour la construction de paquets, corrigez le code source, créez de nouveaux paquets, installez, puis avancez! ; -) .

Ce correctif a été réalisé avec rb v2.97. Les versions les plus récentes peuvent avoir des numéros de ligne différents (cela n’a pas encore été vérifié) mais le code doit être identique.

Description: sort albums with same title first by artist, remove unnecesary space and tab
--- rhythmbox-2.97.orig/rhythmdb/rhythmdb-query-model.c
+++ rhythmbox-2.97/rhythmdb/rhythmdb-query-model.c
@@ -2192,7 +2192,7 @@ rhythmdb_query_model_drag_data_received
        return FALSE;
 }

-/* 
+/*
  * determines whether reordering is possible by checking up
  * the chain for a model with a sort function set.
  */
@@ -2921,7 +2921,7 @@
  * @data: nothing
  *
  * Sort function for sorting by album.  Sorts by album, then
- * disc number, then track number, then title.
+ * artist, then disc number, then track number, then title.
  *
  * Returns: result of sort comparison between a and b.
  */
@@ -2959,6 +2959,31 @@ rhythmdb_query_model_album_sort_func (Rh
        if (ret != 0)
                return ret;

+       /* Then by artist */
+        a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ARTIST_SORTNAME_SORT_KEY);
+        if (a_val[0] == '\0') {
+                a_val = rhythmdb_entry_get_string (a, RHYTHMDB_PROP_ARTIST_SORT_KEY);
+        }
+        b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ARTIST_SORTNAME_SORT_KEY);
+        if (b_val[0] == '\0') {
+                b_val = rhythmdb_entry_get_string (b, RHYTHMDB_PROP_ARTIST_SORT_KEY);
+        }
+
+        if (a_val == NULL) {
+                if (b_val == NULL)
+                        ret = 0;
+                else
+                        ret = -1;
+        } else if (b_val == NULL)
+                ret = 1;
+        else
+                ret = strcmp (a_val, b_val);
+
+        if (ret != 0)
+                return ret;
+        /*else
+                return rhythmdb_query_model_album_sort_func (a, b, data); */
+
        /* Then by disc number (assume 1 if non-existent) */
        a_num = rhythmdb_entry_get_ulong (a, RHYTHMDB_PROP_DISC_NUMBER);
        b_num = rhythmdb_entry_get_ulong (b, RHYTHMDB_PROP_DISC_NUMBER);
@@ -3168,7 +3193,7 @@
                                    gpointer data)
 {
        gulong a_val, b_val;
-       
+
        if (rhythmdb_entry_is_lossless (a)) {
                if (rhythmdb_entry_is_lossless (b))
                        return rhythmdb_query_model_location_sort_func (a, b, data);

Autres instructions sur la construction du paquetage ici et ici

0
user526287