我怎样才能让 rhythmbox 看到同名的不同专辑有何不同?

我怎样才能让 rhythmbox 看到同名的不同专辑有何不同?

我的 Rhythmbox 库里有 The Offspring 的 Greatest Hits 和 Queen 的 Greatest Hits。按专辑排序时,结果如下:

在此处输入图片描述

我怎样才能让 rhythmbox 按专辑排序,以致于它不会交错不同艺术家创作的同名专辑?

答案1

开箱即用,rhythmbox 无法区分不同的“最热门歌曲”专辑,因为它将专辑标题视为唯一标识符。

通过 rhythmbox 插件coverart-浏览器,我们将专辑标题和专辑艺术家都视为唯一标识符。

图片

如图所示 - 两位艺术家拥有相同的“最热门歌曲”标题,但由于两张专辑出自不同的艺术家之手,因此专辑是分开显示的。

您应该注意 - 当翻录 CD 时,通常不会翻录专辑艺术家而是留空。

更糟糕的是,对于多位艺术家的专辑(合辑),专辑艺术家和艺术家字段也都留空。因此,您可能会得到两张标题完全相同的专辑。

这里的技巧是选择一张专辑的所有曲目,右键单击并选择属性,然后填写专辑艺术家字段以使其唯一

在此处输入图片描述

请参阅下面的链接以获取安装说明。

相关问题:

答案2

我在各种系统和不同的播放器上都看到过这个问题,我想到唯一的解决方案就是用艺术家作为前缀来命名专辑。

例如:

“Red Hot Chilli Peppers 最佳热门歌曲”,而不仅仅是“最佳热门歌曲”。

我知道这需要大量工作,但如果有人有更好的方法,我很乐意听到。

答案3

您无法在 Rhythmbox 中执行此操作。但是,我认为这种情况发生是一个错误。您应该在上游打开一个有关此问题的错误(如果尚未打开)。应该其做法是,按专辑排序,然后按专辑艺术家排序,然后按艺术家排序,然后按唱片编号排序,最后按曲目编号排序。但是,目前它还没有这样做。

答案4

我是一名开发人员,并将“按艺术家排序”添加到“rhythmdb_query_model_album_sort_func” - 见下文。

如果您是最终用户,能够为系统做好软件包构建准备,修补源,构建新软件包,安装,然后继续!;-)

此补丁使用 rb v2.97 完成,较新的版本可能有不同的行号(尚未检查)但基本上代码应该是相同的。

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);

关于构建软件包的更多说明这里这里

相关内容