如何让rhythmbox看到同名的不同专辑有所不同?

在我的Rhythmbox图书馆中,我拥有后代的精选和女王的精选。 当我按专辑排序时,它看起来像这样:

在此处输入图像描述

我怎么能告诉rhythmbox按专辑排序,以便它不会使用同名的不同艺术家交错专辑?

在开箱即用的情况下,rhythmbox无法区分不同的“最佳点击”专辑,因为它将专辑标题视为唯一标识符。

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

Imgur

如图所示 – 两位艺术家拥有相同的“最佳点击”头衔,但由于这两张专辑是由不同的艺术家分别展示的。

你应该注意 – 当翻录CD时,通常专辑艺术家不会被翻录并留空。

更糟糕的是,对于多艺术家专辑(编辑),专辑 – 艺术家和艺术家领域也都是空的。 因此,您可以留下两张具有完全相同标题的专辑。

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

在此处输入图像描述

有关安装说明,请参阅以下链接。

相关问题:

  • 如何在rhythmbox中按专辑封面浏览?
  • 如何安装第三方rhythmbox插件?

我已经在各种系统和不同的播放器上看到了这个问题,我提出的唯一解决方案是命名以艺术家为前缀的专辑。

例如:

“Red Hot Chilli Peppers Greatest Hits”而不仅仅是“Greatest Hits”。

我知道它有很多工作,但如果有人有更好的方法,我很乐意听到它。

你不能在Rhythmbox中做到这一点。 但是,我认为这是一个错误。 你应该在上游打开一个关于它的错误,如果还没有打开它。 它该做什么,按照专辑排序,然后是专辑艺术家,然后是艺术家,然后是光盘编号,然后按专辑排序。 但是,它目前没有这样做。

从相册中选择所有曲目,右键单击,选择属性。 请勿更改艺术家或专辑标签。 如果您愿意,可以设置“专辑艺术家”,或单击“排序”选项卡。 在这里,您可以设置不会显示的艺术家和专辑标签,但专门用于排序。 例如,如果您将“专辑排序顺序”设置为“最高命中1”,并将其设置为另一个专辑的“最高命中2”,它们仍然会在库中显示为“最佳命中”,但会被排序作为单独的专辑。 更好的解决方案是将“艺术家排序顺序”字段更改为相应的艺术家姓名。 这对于有多位艺术家的专辑来说也是一个很好的解决方案。

如果您喜欢按时间顺序排序的专辑,也可以使用此function,因为Rhythmbox没有我在iTunes中见过的“逐年专辑”function。

使用“艺术家”标题而不是“专辑”对图书馆进行排序可以更轻松地解决这个问题; 您的相册仍将按字母顺序排序,其顺序排列,同一位艺术家的相册将组合在一起。 那样,后代和女王甚至不会彼此靠近,更不用说像这样混淆了。

我知道这个问题很老了,但似乎没有人发布这个解决方案。 希望我能帮助别人。

我是一名开发人员,并将’按艺术家排序’添加到’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); 

关于包装在这里和这里建立的进一步说明