Answers:
Rhythmbox不能立即区分不同的“最热门”专辑,因为它将专辑标题视为唯一标识符。
通过rhythmbox插件coverart-browser,我们将专辑标题和专辑艺术家都视为唯一标识符。
如图所示-两位具有相同“最高热门”标题的艺术家,但由于它们是不同的艺术家,所以专辑分开显示。
您应该注意-翻录CD时,专辑歌手通常不会被翻录,而是留空。
更糟糕的是,对于多艺术家专辑(合辑),专辑艺术家和艺术家字段也都留为空白。因此,您可以留下两张标题完全相同的专辑。
这里的技巧是选择专辑的所有曲目,右键单击并选择属性,然后填写专辑艺术家字段以使其独特
链接的问题:
我已经在各种各样的系统上和不同的播放器上看到了这个问题,而我想出的唯一解决方案是为艺术家加前缀的专辑命名。
例如:
“红辣椒最热门”,而不仅仅是“最精选”。
我知道它的工作量很大,但是如果有人有更好的方法,我很想听听。
从专辑中选择所有曲目,右键单击,选择属性。请勿更改艺术家或专辑标签。如果愿意,请设置“专辑艺术家”,或单击“排序”标签。在这里,您可以设置艺术家和专辑标签,这些标签不会显示,但将专门用于排序。例如,如果您将“专辑排序顺序”设置为“最高匹配1”,而将另一张专辑的“专辑排序顺序”设置为“最高匹配2”,则它们在库中仍都将显示为“最高匹配”,但会被排序作为单独的专辑。更好的解决方案是将“艺术家排序顺序”字段更改为相应的艺术家名称。对于有多位艺术家的专辑,这也是一个很好的解决方案。
如果您喜欢按时间顺序对专辑进行排序,也可以使用此功能,因为Rhythmbox不具有我在iTunes中仅见过的“按年专辑”功能。
使用“ Artist”(艺术家)标题而不是“ Album”(专辑)对图书馆进行分类将更容易解决此问题;您的专辑仍将按字母顺序排序,其音轨依序排列,并且同一位艺术家的专辑将被分组在一起。这样,“后代”和“皇后”甚至不会彼此靠近,更不用说像这样混杂在一起了。
我知道这个问题已经很老了,但是似乎没有人发布过这个解决方案。希望我能帮助别人。
我是一名开发人员,并将“按艺术家排序”添加到“ 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);